{"version":3,"file":"ds.umd.cjs","sources":["../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/@mui/material/styles/identifier.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/prop-types/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/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../node_modules/@mui/styled-engine/index.js","../node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/responsivePropType.js","../node_modules/@mui/system/esm/merge.js","../node_modules/@mui/system/esm/breakpoints.js","../node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/system/esm/style.js","../node_modules/@mui/system/esm/memoize.js","../node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/compose.js","../node_modules/@mui/system/esm/borders.js","../node_modules/@mui/system/esm/cssGrid.js","../node_modules/@mui/system/esm/palette.js","../node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/useTheme.js","../node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/@mui/system/esm/createBox.js","../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../node_modules/react-is/cjs/react-is.production.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/@mui/utils/esm/getDisplayName/getDisplayName.js","../node_modules/@mui/system/esm/createStyled.js","../node_modules/@mui/system/esm/styled.js","../node_modules/@mui/utils/esm/resolveProps/resolveProps.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../node_modules/@mui/system/esm/useMediaQuery/useMediaQuery.js","../node_modules/@mui/utils/esm/clamp/clamp.js","../node_modules/@mui/system/esm/colorManipulator.js","../node_modules/@mui/utils/esm/chainPropTypes/chainPropTypes.js","../node_modules/@mui/utils/esm/elementAcceptingRef/elementAcceptingRef.js","../node_modules/@mui/utils/esm/elementTypeAcceptingRef/elementTypeAcceptingRef.js","../node_modules/@mui/utils/esm/exactProp/exactProp.js","../node_modules/@mui/utils/esm/HTMLElementType/HTMLElementType.js","../node_modules/@mui/utils/esm/refType/refType.js","../node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js","../node_modules/@mui/utils/esm/debounce/debounce.js","../node_modules/@mui/utils/esm/isMuiElement/isMuiElement.js","../node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","../node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","../node_modules/@mui/utils/esm/requirePropFactory/requirePropFactory.js","../node_modules/@mui/utils/esm/setRef/setRef.js","../node_modules/@mui/utils/esm/useId/useId.js","../node_modules/@mui/utils/esm/unsupportedProp/unsupportedProp.js","../node_modules/@mui/utils/esm/useControlled/useControlled.js","../node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../node_modules/@mui/utils/esm/useOnMount/useOnMount.js","../node_modules/@mui/utils/esm/useTimeout/useTimeout.js","../node_modules/@mui/utils/esm/useIsFocusVisible/useIsFocusVisible.js","../node_modules/@mui/utils/esm/getScrollbarSize/getScrollbarSize.js","../node_modules/@mui/utils/esm/scrollLeft/scrollLeft.js","../node_modules/@mui/utils/esm/usePreviousProps/usePreviousProps.js","../node_modules/@mui/utils/esm/integerPropType/integerPropType.js","../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","../node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","../node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","../node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","../node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","../node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","../node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","../node_modules/@mui/utils/esm/getReactElementRef/getReactElementRef.js","../node_modules/@mui/private-theming/useTheme/ThemeContext.js","../node_modules/@mui/private-theming/useTheme/useTheme.js","../node_modules/@mui/private-theming/ThemeProvider/nested.js","../node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../node_modules/@mui/system/esm/RtlProvider/index.js","../node_modules/@mui/system/esm/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/system/esm/ThemeProvider/useLayerOrder.js","../node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","../node_modules/@mui/system/esm/Container/createContainer.js","../node_modules/@mui/system/esm/Stack/createStack.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@mui/system/colorManipulator.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/material/styles/cssUtils.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/@mui/material/styles/useTheme.js","../node_modules/@mui/material/styles/useThemeProps.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@mui/system/createStyled.js","../node_modules/@mui/material/styles/slotShouldForwardProp.js","../node_modules/@mui/material/styles/rootShouldForwardProp.js","../node_modules/@mui/material/styles/styled.js","../node_modules/@mui/material/styles/ThemeProvider.js","../node_modules/@mui/material/styles/getOverlayAlpha.js","../node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../node_modules/@mui/material/SvgIcon/SvgIcon.js","../node_modules/@mui/material/utils/createSvgIcon.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.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/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@mui/material/transitions/utils.js","../node_modules/@mui/material/Collapse/collapseClasses.js","../node_modules/@mui/material/Collapse/Collapse.js","../node_modules/@mui/material/Paper/paperClasses.js","../node_modules/@mui/material/Paper/Paper.js","../node_modules/@mui/material/utils/useSlot.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/@mui/material/Alert/alertClasses.js","../node_modules/@mui/material/IconButton/iconButtonClasses.js","../node_modules/@mui/material/IconButton/IconButton.js","../node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","../node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","../node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","../node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/Alert/Alert.js","../node_modules/@mui/material/Typography/typographyClasses.js","../node_modules/@mui/material/Typography/Typography.js","../node_modules/@mui/material/AppBar/appBarClasses.js","../node_modules/@mui/material/AppBar/AppBar.js","../node_modules/@mui/material/useAutocomplete/useAutocomplete.js","../node_modules/@mui/system/useThemeWithoutDefault.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@mui/material/Portal/Portal.js","../node_modules/@mui/material/Popper/popperClasses.js","../node_modules/@mui/material/Popper/BasePopper.js","../node_modules/@mui/material/Popper/Popper.js","../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../node_modules/@mui/material/ListSubheader/ListSubheader.js","../node_modules/@mui/material/internal/svg-icons/Cancel.js","../node_modules/@mui/material/Chip/chipClasses.js","../node_modules/@mui/material/Chip/Chip.js","../node_modules/@mui/material/TextareaAutosize/TextareaAutosize.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/InputBase/utils.js","../node_modules/@mui/material/InputBase/inputBaseClasses.js","../node_modules/@mui/material/InputBase/InputBase.js","../node_modules/@mui/material/Input/inputClasses.js","../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../node_modules/@mui/material/FilledInput/filledInputClasses.js","../node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","../node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../node_modules/@mui/material/Autocomplete/Autocomplete.js","../node_modules/@mui/material/internal/svg-icons/Person.js","../node_modules/@mui/material/Avatar/avatarClasses.js","../node_modules/@mui/material/Avatar/Avatar.js","../node_modules/@mui/material/Fade/Fade.js","../node_modules/@mui/material/Backdrop/backdropClasses.js","../node_modules/@mui/material/Backdrop/Backdrop.js","../node_modules/@mui/material/Box/boxClasses.js","../node_modules/@mui/material/Box/Box.js","../node_modules/@mui/material/Button/buttonClasses.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js","../node_modules/@mui/material/Button/Button.js","../node_modules/@mui/material/Card/cardClasses.js","../node_modules/@mui/material/Card/Card.js","../node_modules/@mui/material/CardActions/cardActionsClasses.js","../node_modules/@mui/material/CardActions/CardActions.js","../node_modules/@mui/material/CardContent/cardContentClasses.js","../node_modules/@mui/material/CardContent/CardContent.js","../node_modules/@mui/material/CardHeader/cardHeaderClasses.js","../node_modules/@mui/material/CardHeader/CardHeader.js","../node_modules/@mui/material/internal/switchBaseClasses.js","../node_modules/@mui/material/internal/SwitchBase.js","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../node_modules/@mui/material/CircularProgress/CircularProgress.js","../node_modules/@mui/material/Container/Container.js","../node_modules/@mui/material/CssBaseline/CssBaseline.js","../node_modules/@mui/material/Modal/ModalManager.js","../node_modules/@mui/material/Unstable_TrapFocus/FocusTrap.js","../node_modules/@mui/material/Modal/useModal.js","../node_modules/@mui/material/Modal/modalClasses.js","../node_modules/@mui/material/Modal/Modal.js","../node_modules/@mui/material/Dialog/dialogClasses.js","../node_modules/@mui/material/Dialog/DialogContext.js","../node_modules/@mui/material/Dialog/Dialog.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/material/DialogContent/dialogContentClasses.js","../node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","../node_modules/@mui/material/DialogContent/DialogContent.js","../node_modules/@mui/material/DialogTitle/DialogTitle.js","../node_modules/@mui/material/Divider/dividerClasses.js","../node_modules/@mui/material/Divider/Divider.js","../node_modules/@mui/material/Slide/Slide.js","../node_modules/@mui/material/Drawer/drawerClasses.js","../node_modules/@mui/material/Drawer/Drawer.js","../node_modules/@mui/material/FilledInput/FilledInput.js","../node_modules/@mui/material/FormControl/formControlClasses.js","../node_modules/@mui/material/FormControl/FormControl.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js","../node_modules/@mui/material/FormControlLabel/FormControlLabel.js","../node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","../node_modules/@mui/material/FormHelperText/FormHelperText.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/Grid/GridContext.js","../node_modules/@mui/material/Grid/gridClasses.js","../node_modules/@mui/material/Grid/Grid.js","../node_modules/@mui/material/Grow/Grow.js","../node_modules/@mui/material/Input/Input.js","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/material/LinearProgress/linearProgressClasses.js","../node_modules/@mui/material/LinearProgress/LinearProgress.js","../node_modules/@mui/material/List/ListContext.js","../node_modules/@mui/material/List/listClasses.js","../node_modules/@mui/material/List/List.js","../node_modules/@mui/material/ListItem/listItemClasses.js","../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../node_modules/@mui/material/ListItemButton/ListItemButton.js","../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../node_modules/@mui/material/ListItem/ListItem.js","../node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","../node_modules/@mui/material/ListItemIcon/ListItemIcon.js","../node_modules/@mui/material/ListItemText/listItemTextClasses.js","../node_modules/@mui/material/ListItemText/ListItemText.js","../node_modules/@mui/material/MenuList/MenuList.js","../node_modules/@mui/material/Popover/popoverClasses.js","../node_modules/@mui/material/Popover/Popover.js","../node_modules/@mui/material/Menu/menuClasses.js","../node_modules/@mui/material/Menu/Menu.js","../node_modules/@mui/material/MenuItem/menuItemClasses.js","../node_modules/@mui/material/MenuItem/MenuItem.js","../node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","../node_modules/@mui/material/NativeSelect/NativeSelectInput.js","../node_modules/@mui/material/OutlinedInput/NotchedOutline.js","../node_modules/@mui/material/OutlinedInput/OutlinedInput.js","../node_modules/@mui/material/Select/selectClasses.js","../node_modules/@mui/material/Select/SelectInput.js","../node_modules/@mui/material/Select/Select.js","../node_modules/@mui/material/Skeleton/skeletonClasses.js","../node_modules/@mui/material/Skeleton/Skeleton.js","../node_modules/@mui/material/Tooltip/tooltipClasses.js","../node_modules/@mui/material/Tooltip/Tooltip.js","../node_modules/@mui/material/Switch/switchClasses.js","../node_modules/@mui/material/Switch/Switch.js","../node_modules/@mui/material/Tab/tabClasses.js","../node_modules/@mui/material/Tab/Tab.js","../node_modules/@mui/material/Toolbar/toolbarClasses.js","../node_modules/@mui/material/Toolbar/Toolbar.js","../node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js","../node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js","../node_modules/@mui/material/internal/animate.js","../node_modules/@mui/material/Tabs/ScrollbarSize.js","../node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js","../node_modules/@mui/material/TabScrollButton/TabScrollButton.js","../node_modules/@mui/material/Tabs/tabsClasses.js","../node_modules/@mui/material/Tabs/Tabs.js","../node_modules/@mui/material/TextField/textFieldClasses.js","../node_modules/@mui/material/TextField/TextField.js","../node_modules/@mui/material/ToggleButton/toggleButtonClasses.js","../node_modules/@mui/material/ToggleButtonGroup/ToggleButtonGroupContext.js","../node_modules/@mui/material/ToggleButtonGroup/ToggleButtonGroupButtonContext.js","../node_modules/@mui/material/ToggleButtonGroup/isValueSelected.js","../node_modules/@mui/material/ToggleButton/ToggleButton.js","../node_modules/@mui/material/version/index.js","../src/hooks/useDebounce.ts","../src/hooks/useExtendedTheme.ts","../node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js","../src/components/data-display/Icons/BinIcon.tsx","../src/components/data-display/Icons/CloseIcon.tsx","../src/components/data-display/Icons/XIcon.tsx","../src/components/data-display/Icons/DataServiceIcon.tsx","../src/components/data-display/Icons/DataSetIcon.tsx","../src/components/data-display/Icons/DragHandleIcon.tsx","../src/components/data-display/Icons/FloppyDiskIcon.tsx","../src/components/data-display/Icons/GridIcon.tsx","../src/components/data-display/Icons/InfoIcon.tsx","../src/components/data-display/Icons/MapIcon.tsx","../src/components/data-display/Icons/MinusCircleIcon.tsx","../src/components/data-display/Icons/PlayIcon.tsx","../src/components/data-display/Icons/PlusCircleIcon.tsx","../src/components/surfaces/AppBar/TelicentBrand.tsx","../src/components/surfaces/AppBar/AppBar.tsx","../src/components/layout/AppChrome.tsx","../src/components/layout/Box/Box.tsx","../src/components/layout/Container/Container.tsx","../src/components/layout/FlexBox.tsx","../src/components/layout/FlexGrid.tsx","../src/components/data-display/Icons/TelicentMark.tsx","../src/components/data-display/Icons/TelicentHorizontalSVG.tsx","../src/components/data-display/Icons/UserIcon.tsx","../node_modules/@telicent-oss/mui-icons-material/generated/esm/Add.js","../node_modules/@telicent-oss/mui-icons-material/generated/esm/Check.js","../node_modules/@telicent-oss/mui-icons-material/generated/esm/ChevronLeft.js","../node_modules/@telicent-oss/mui-icons-material/generated/esm/ChevronRight.js","../node_modules/@telicent-oss/mui-icons-material/generated/esm/Clear.js","../node_modules/@telicent-oss/mui-icons-material/generated/esm/Edit.js","../node_modules/@telicent-oss/mui-icons-material/generated/esm/List.js","../node_modules/@telicent-oss/mui-icons-material/generated/esm/LocationOn.js","../node_modules/@telicent-oss/mui-icons-material/generated/esm/Remove.js","../node_modules/@fortawesome/fontawesome-svg-core/index.mjs","../node_modules/@fortawesome/react-fontawesome/index.es.js","../node_modules/@fortawesome/free-regular-svg-icons/index.mjs","../src/components/data-display/FontAwesomeIcons/ClockIcon.tsx","../node_modules/@fortawesome/free-solid-svg-icons/index.mjs","../src/components/data-display/FontAwesomeIcons/DownArrowIcon.tsx","../src/components/data-display/FontAwesomeIcons/DownloadIcon.tsx","../src/components/data-display/FontAwesomeIcons/SearchIcon.tsx","../src/components/data-display/Text/Text.tsx","../src/components/data-display/List/List.tsx","../node_modules/zod/v3/helpers/util.js","../node_modules/zod/v3/ZodError.js","../node_modules/zod/v3/locales/en.js","../node_modules/zod/v3/errors.js","../node_modules/zod/v3/helpers/parseUtil.js","../node_modules/zod/v3/helpers/errorUtil.js","../node_modules/zod/v3/types.js","../src/components/buttons/Button/IconButton.tsx","../src/components/data-display/AppSwitch/AppSwitch.tsx","../src/components/data-display/Chip/Chip.tsx","../src/components/data-display/Divider/Divider.tsx","../src/components/data-display/IESType/IESType.tsx","../node_modules/@mui/x-tree-view/node_modules/@mui/base/node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","../node_modules/@mui/x-tree-view/node_modules/@mui/base/node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","../node_modules/@mui/x-tree-view/node_modules/@mui/base/node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","../node_modules/@mui/x-tree-view/node_modules/@mui/base/utils/resolveComponentProps.js","../node_modules/@mui/x-tree-view/node_modules/@mui/base/node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../node_modules/@mui/x-tree-view/node_modules/@mui/base/node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","../node_modules/@mui/x-tree-view/node_modules/@mui/base/node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","../node_modules/@mui/x-tree-view/node_modules/@mui/base/node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","../node_modules/@mui/x-tree-view/node_modules/@mui/base/node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","../node_modules/@mui/x-tree-view/internals/useTreeView/useTreeViewModels.js","../node_modules/@mui/x-tree-view/internals/utils/EventManager.js","../node_modules/@mui/x-tree-view/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js","../node_modules/@mui/x-tree-view/internals/corePlugins/corePlugins.js","../node_modules/@mui/x-tree-view/internals/useTreeView/useTreeView.js","../node_modules/@mui/x-tree-view/internals/TreeViewProvider/TreeViewContext.js","../node_modules/@mui/x-tree-view/internals/TreeViewProvider/TreeViewProvider.js","../node_modules/@mui/x-tree-view/internals/plugins/useTreeViewId/useTreeViewId.js","../node_modules/@mui/x-tree-view/internals/utils/publishTreeViewEvent.js","../node_modules/@mui/x-tree-view/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js","../node_modules/@mui/x-tree-view/internals/plugins/useTreeViewItems/useTreeViewItems.js","../node_modules/@mui/x-tree-view/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js","../node_modules/@mui/x-tree-view/internals/utils/tree.js","../node_modules/@mui/x-tree-view/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js","../node_modules/@mui/x-tree-view/internals/plugins/useTreeViewSelection/useTreeViewSelection.js","../node_modules/@mui/x-tree-view/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js","../node_modules/@mui/x-tree-view/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js","../node_modules/@mui/x-tree-view/internals/hooks/useInstanceEventHandler.js","../node_modules/@mui/x-tree-view/internals/utils/utils.js","../node_modules/@mui/x-tree-view/internals/plugins/useTreeViewFocus/useTreeViewFocus.js","../node_modules/@mui/x-tree-view/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js","../node_modules/@mui/x-tree-view/internals/plugins/useTreeViewIcons/useTreeViewIcons.js","../node_modules/@mui/x-tree-view/internals/plugins/defaultPlugins.js","../node_modules/@mui/x-tree-view/internals/TreeViewProvider/useTreeViewContext.js","../node_modules/@mui/x-tree-view/internals/utils/warning.js","../node_modules/@mui/x-tree-view/internals/utils/extractPluginParamsFromProps.js","../node_modules/@mui/x-tree-view/RichTreeView/richTreeViewClasses.js","../node_modules/@mui/x-tree-view/node_modules/@mui/base/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/x-tree-view/TreeItem/useTreeItemState.js","../node_modules/@mui/x-tree-view/TreeItem/TreeItemContent.js","../node_modules/@mui/x-tree-view/TreeItem/treeItemClasses.js","../node_modules/@mui/x-tree-view/icons/icons.js","../node_modules/@mui/x-tree-view/TreeItem2Provider/TreeItem2Provider.js","../node_modules/@mui/x-tree-view/TreeItem/TreeItem.js","../node_modules/@mui/x-tree-view/RichTreeView/RichTreeView.js","../src/components/data-display/TreeView/TreeView.tsx","../src/components/data-display/UserProfile/UserProfile.tsx","../src/components/data-display/UserProfile/UserProfileContent/UserProfileContent.tsx","../src/components/data-display/Text/TitleAndContent/TitleAndContent.tsx","../src/components/data-display/UserProfile/UserProfileContent/UserStatus.tsx","../src/components/data-display/DropdownButton/DropdownButton.tsx","../src/components/feedback/LinearProgress/LinearProgress.tsx","../src/components/feedback/Spinner/Spinner.tsx","../src/components/feedback/Dialog/Dialog.tsx","../src/components/feedback/Skeleton/Skeleton.tsx","../src/components/inputs/TooltipToggleButton.tsx","../src/components/buttons/Button/PrimaryButton.tsx","../src/components/buttons/Button/SecondaryButton.tsx","../src/components/buttons/Button/TertiaryButton.tsx","../src/components/buttons/Button/TextButton.tsx","../src/components/buttons/Button/Button.tsx","../src/components/buttons/Link/LinkButton.tsx","../src/components/inputs/EditableTextField/EditableTextField.tsx","../src/components/inputs/TextField/TextField.tsx","../src/components/inputs/Select/Select.tsx","../src/components/inputs/Autocomplete/Autocomplete.tsx","../src/components/inputs/Switch/Switch.tsx","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/refType/refType.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","../node_modules/@mui/x-date-pickers/esm/internals/utils/views.js","../node_modules/@mui/x-date-pickers/esm/internals/utils/date-utils.js","../node_modules/@mui/x-date-pickers/esm/internals/utils/time-utils.js","../node_modules/@mui/x-date-pickers/esm/internals/utils/getDefaultReferenceDate.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useField.utils.js","../node_modules/@mui/x-date-pickers/esm/internals/utils/valueManagers.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/x-date-pickers/esm/internals/components/pickersToolbarClasses.js","../node_modules/@mui/x-date-pickers/esm/LocalizationProvider/LocalizationProvider.js","../node_modules/@mui/x-date-pickers/esm/hooks/useIsValidValue.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useNullableFieldPrivateContext.js","../node_modules/@mui/x-date-pickers/esm/hooks/usePickerContext.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickerProvider.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/usePickerPrivateContext.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useToolbarOwnerState.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickersToolbar.js","../node_modules/@mui/x-date-pickers/esm/locales/utils/getPickersLocalization.js","../node_modules/@mui/x-date-pickers/esm/locales/enUS.js","../node_modules/@mui/x-date-pickers/esm/hooks/usePickerAdapter.js","../node_modules/@mui/x-date-pickers/esm/hooks/usePickerTranslations.js","../node_modules/@mui/x-date-pickers/esm/validation/extractValidationProps.js","../node_modules/@mui/x-date-pickers/esm/hooks/useSplitFieldProps.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/buildSectionsFromFormat.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useNullablePickerContext.js","../node_modules/@mui/x-date-pickers/esm/hooks/usePickerActionsContext.js","../node_modules/@mui/x-date-pickers/esm/DatePicker/datePickerToolbarClasses.js","../node_modules/@mui/x-date-pickers/esm/DatePicker/DatePickerToolbar.js","../node_modules/@mui/x-date-pickers/esm/validation/validateDate.js","../node_modules/@mui/x-date-pickers/esm/validation/validateTime.js","../node_modules/@mui/x-date-pickers/esm/validation/validateDateTime.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../node_modules/@mui/x-date-pickers/esm/validation/useValidation.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useUtils.js","../node_modules/@mui/x-date-pickers/esm/managers/useDateManager.js","../node_modules/@mui/x-date-pickers/esm/DatePicker/shared.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickerPopper/pickerPopperClasses.js","../node_modules/@mui/x-date-pickers/esm/internals/utils/utils.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickerPopper/PickerPopper.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useId/useId.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useReduceAnimations.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useControlled/useControlled.js","../node_modules/@mui/x-date-pickers/esm/internals/utils/createStepNavigation.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useViews.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/usePicker/hooks/useOrientation.js","../node_modules/@mui/x-internals/esm/warning/warning.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useControlledValue.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/usePicker/hooks/useValueAndOpenStates.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/usePicker/usePicker.js","../node_modules/@mui/x-date-pickers/esm/PickersLayout/pickersLayoutClasses.js","../node_modules/@mui/x-date-pickers/esm/PickersActionBar/PickersActionBar.js","../node_modules/@mui/x-date-pickers/esm/internals/constants/dimensions.js","../node_modules/@mui/x-date-pickers/esm/PickersShortcuts/PickersShortcuts.js","../node_modules/@mui/x-date-pickers/esm/PickersLayout/usePickerLayout.js","../node_modules/@mui/x-date-pickers/esm/PickersLayout/PickersLayout.js","../node_modules/@mui/x-date-pickers/esm/internals/utils/createNonRangePickerStepNavigation.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useDesktopPicker/useDesktopPicker.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useFieldCharacterEditing.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useOnMount/useOnMount.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useTimeout/useTimeout.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useFieldState.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useFieldInternalPropsWithDefaults.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/syncSelectionToDOM.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useFieldRootHandleKeyDown.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useFieldRootProps.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useFieldHiddenInputProps.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useFieldSectionContainerProps.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useFieldSectionContentProps.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useFieldV7TextField.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useFieldV6TextField.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useField/useField.js","../node_modules/@mui/x-date-pickers/esm/managers/useDateTimeManager.js","../node_modules/@mui/x-date-pickers/esm/DateField/useDateField.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useFieldOwnerState.js","../node_modules/@mui/x-date-pickers/esm/icons/index.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/pickersTextFieldClasses.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/visuallyHidden/visuallyHidden.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/PickersInputBase/pickersInputBaseClasses.js","../node_modules/@mui/x-date-pickers/esm/PickersSectionList/pickersSectionListClasses.js","../node_modules/@mui/x-date-pickers/esm/PickersSectionList/PickersSectionList.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/usePickerTextFieldOwnerState.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/PickersInputBase/PickersInputBase.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/PickersOutlinedInput/pickersOutlinedInputClasses.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/PickersOutlinedInput/Outline.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/PickersFilledInput/pickersFilledInputClasses.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/PickersFilledInput/PickersFilledInput.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/PickersInput/pickersInputClasses.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/PickersInput/PickersInput.js","../node_modules/@mui/x-date-pickers/esm/PickersTextField/PickersTextField.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickerFieldUI.js","../node_modules/@mui/x-date-pickers/esm/DateField/DateField.js","../node_modules/@mui/x-date-pickers/esm/DateCalendar/useIsDateDisabled.js","../node_modules/@mui/x-date-pickers/esm/DateCalendar/useCalendarState.js","../node_modules/@mui/x-date-pickers/esm/DateCalendar/pickersFadeTransitionGroupClasses.js","../node_modules/@mui/x-date-pickers/esm/DateCalendar/PickersFadeTransitionGroup.js","../node_modules/@mui/x-date-pickers/esm/PickersDay/pickersDayClasses.js","../node_modules/@mui/x-date-pickers/esm/PickersDay/usePickerDayOwnerState.js","../node_modules/@mui/x-date-pickers/esm/PickersDay/PickersDay.js","../node_modules/@mui/x-date-pickers/esm/DateCalendar/pickersSlideTransitionClasses.js","../node_modules/@mui/x-date-pickers/esm/DateCalendar/PickersSlideTransition.js","../node_modules/@mui/x-date-pickers/esm/DateCalendar/dayCalendarClasses.js","../node_modules/@mui/x-date-pickers/esm/DateCalendar/DayCalendar.js","../node_modules/@mui/x-date-pickers/esm/MonthCalendar/monthCalendarClasses.js","../node_modules/@mui/x-date-pickers/esm/MonthCalendar/MonthCalendarButton.js","../node_modules/@mui/x-date-pickers/esm/MonthCalendar/MonthCalendar.js","../node_modules/@mui/x-date-pickers/esm/YearCalendar/yearCalendarClasses.js","../node_modules/@mui/x-date-pickers/esm/YearCalendar/YearCalendarButton.js","../node_modules/@mui/x-date-pickers/esm/YearCalendar/YearCalendar.js","../node_modules/@mui/x-date-pickers/esm/PickersCalendarHeader/pickersCalendarHeaderClasses.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/date-helpers-hooks.js","../node_modules/@mui/x-date-pickers/esm/PickersCalendarHeader/PickersCalendarHeader.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickerViewRoot/PickerViewRoot.js","../node_modules/@mui/x-date-pickers/esm/DateCalendar/dateCalendarClasses.js","../node_modules/@mui/x-date-pickers/esm/DateCalendar/DateCalendar.js","../node_modules/@mui/x-date-pickers/esm/dateViewRenderers/dateViewRenderers.js","../node_modules/@mui/x-date-pickers/esm/DesktopDatePicker/DesktopDatePicker.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickersModalDialog.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useMobilePicker/useMobilePicker.js","../node_modules/@mui/x-date-pickers/esm/MobileDatePicker/MobileDatePicker.js","../node_modules/@mui/x-date-pickers/esm/DatePicker/DatePicker.js","../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/weekOfYear.js","../node_modules/dayjs/plugin/customParseFormat.js","../node_modules/dayjs/plugin/localizedFormat.js","../node_modules/dayjs/plugin/isBetween.js","../node_modules/dayjs/plugin/advancedFormat.js","../node_modules/@mui/x-date-pickers/esm/AdapterDayjs/AdapterDayjs.js","../src/components/inputs/DatePicker/DatePicker.tsx","../node_modules/@mui/x-date-pickers/esm/DateTimeField/useDateTimeField.js","../node_modules/@mui/x-date-pickers/esm/DateTimeField/DateTimeField.js","../node_modules/@mui/x-date-pickers/esm/DateTimePicker/dateTimePickerTabsClasses.js","../node_modules/@mui/x-date-pickers/esm/DateTimePicker/DateTimePickerTabs.js","../node_modules/@mui/x-date-pickers/esm/internals/components/pickersToolbarTextClasses.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickersToolbarText.js","../node_modules/@mui/x-date-pickers/esm/internals/components/PickersToolbarButton.js","../node_modules/@mui/x-date-pickers/esm/DateTimePicker/dateTimePickerToolbarClasses.js","../node_modules/@mui/x-date-pickers/esm/DateTimePicker/DateTimePickerToolbar.js","../node_modules/@mui/x-date-pickers/esm/internals/utils/date-time-utils.js","../node_modules/@mui/x-date-pickers/esm/DateTimePicker/shared.js","../node_modules/@mui/x-date-pickers/esm/internals/hooks/useClockReferenceDate.js","../node_modules/@mui/x-date-pickers/esm/DigitalClock/digitalClockClasses.js","../node_modules/@mui/x-date-pickers/esm/DigitalClock/DigitalClock.js","../node_modules/@mui/x-date-pickers/esm/MultiSectionDigitalClock/multiSectionDigitalClockClasses.js","../node_modules/@mui/x-date-pickers/esm/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js","../node_modules/@mui/x-date-pickers/esm/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js","../node_modules/@mui/x-date-pickers/esm/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js","../node_modules/@mui/x-date-pickers/esm/MultiSectionDigitalClock/MultiSectionDigitalClock.js","../node_modules/@mui/x-date-pickers/esm/timeViewRenderers/timeViewRenderers.js","../node_modules/@mui/x-date-pickers/esm/DesktopDateTimePicker/DesktopDateTimePickerLayout.js","../node_modules/@mui/x-date-pickers/esm/DesktopDateTimePicker/DesktopDateTimePicker.js","../node_modules/@mui/x-date-pickers/esm/MobileDateTimePicker/MobileDateTimePicker.js","../node_modules/@mui/x-date-pickers/esm/DateTimePicker/DateTimePicker.js","../src/components/inputs/DateAndTimePicker/DateTimePicker.tsx","../src/components/inputs/Checkbox/Checkbox.tsx","../src/components/buttons/CopyToClipboard/CopyToClipboard.tsx","../src/components/inputs/SearchBox/MiniSearchBox.tsx","../src/components/inputs/SearchBox/MiniSearchAutocomplete.tsx","../src/components/inputs/SearchBox/SearchBox.tsx","../src/components/surfaces/Card/Card.tsx","../src/components/surfaces/Card/CardContent.tsx","../src/components/surfaces/Card/CardActions.tsx","../node_modules/react-draggable/node_modules/clsx/dist/clsx.m.js","../node_modules/react-draggable/build/cjs/utils/shims.js","../node_modules/react-draggable/build/cjs/utils/getPrefix.js","../node_modules/react-draggable/build/cjs/utils/domFns.js","../node_modules/react-draggable/build/cjs/utils/positionFns.js","../node_modules/react-draggable/build/cjs/utils/log.js","../node_modules/react-draggable/build/cjs/DraggableCore.js","../node_modules/react-draggable/build/cjs/Draggable.js","../node_modules/react-draggable/build/cjs/cjs.js","../node_modules/re-resizable/lib/resizer.js","../node_modules/re-resizable/lib/index.js","../node_modules/react-rnd/lib/index.js","../src/components/surfaces/FloatingPanel/FloatingPanelProvider.tsx","../src/components/surfaces/FloatingPanel/useFloatingPanelContext.ts","../src/components/surfaces/FloatingPanel/Panel.tsx","../src/components/surfaces/FloatingPanel/DraggableFloatingPanel.tsx","../src/components/surfaces/FloatingPanel/FloatingPanelToggleButton.tsx","../src/components/surfaces/FloatingPanel/useFloatingPanels.ts","../src/components/surfaces/FloatingPanel/index.ts","../src/components/surfaces/FixedPanel/FixedPanel.tsx","../src/components/surfaces/PopOver/Popover.tsx","../src/components/surfaces/Toolbar/Toolbar.tsx","../src/components/surfaces/Paper/Paper.tsx","../src/theme/colors/DataNavy.ts","../src/theme/colors/DocumentPink.ts","../src/theme/colors/GraphOrange.ts","../src/theme/colors/AdminBlue.ts","../src/theme/colors/BlankTheme.ts","../src/theme/colors/theme-colors.ts","../src/theme/style-overrides/component-overrides/avatar-overrides.ts","../src/theme/style-overrides/component-overrides/button-overrides.ts","../src/theme/style-overrides/component-overrides/card-overrides.ts","../src/tokens/typography.ts","../src/tokens/breakpoints.ts","../src/assets/fonts/space-grotesk/space-grotesk-regular.woff2","../src/assets/fonts/space-grotesk/space-grotesk-medium.woff2","../src/assets/fonts/figtree/figtree-regular.woff2","../src/assets/fonts/figtree/figtree-medium.woff2","../src/assets/fonts/figtree/figtree-bold.woff2","../src/theme/style-overrides/typography.ts","../src/theme/style-overrides/components.ts","../node_modules/lodash.merge/index.js","../src/theme/colors/palette/basePalette.ts","../src/theme/colors/palette/createLightPalette.ts","../src/theme/colors/palette/createDarkPalette.ts","../src/theme/createTheme.ts","../src/theme/UIThemeProvider.tsx","../src/schema/reactElementsSchema.ts","../src/components/utils/Modal/schema.tsx","../src/components/utils/Modal/Modal.tsx","../src/components/utils/ErrorFallback/ErrorFallbackText.tsx","../src/components/utils/ErrorFallback/ErrorFallbackWrapper.tsx","../src/components/utils/ErrorFallback/ErrorFallback.tsx","../src/components/Brand/Brand.tsx","../src/components/SearchAutocompleteDialog/RecentSearches.tsx","../src/components/SearchAutocomplete/SearchAutocomplete.tsx","../src/components/SearchAutocompleteDialog/SearchAutocompleteDialog.tsx","../src/components/SearchAutocompleteDialog/SearchResults.tsx","../src/components/TypeIcon/type-icon-utils.ts","../src/components/TypeIcon/TypeIcon.tsx","../node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../node_modules/maplibre-gl/dist/maplibre-gl.js","../src/feature-components/Map/utils/strings.ts","../src/feature-components/Map/utils/geohash/geohash.ts","../src/feature-components/Map/utils/helper/helper.ts","../node_modules/lodash.debounce/index.js","../src/feature-components/Map/primitives/MapCanvas/useMapCanvas.tsx","../node_modules/react-map-gl/dist/esm/components/use-map.js","../node_modules/react-map-gl/dist/esm/utils/deep-equal.js","../node_modules/react-map-gl/dist/esm/utils/transform.js","../node_modules/react-map-gl/dist/esm/utils/style-utils.js","../node_modules/react-map-gl/dist/esm/mapbox/mapbox.js","../node_modules/react-map-gl/dist/esm/mapbox/create-ref.js","../node_modules/react-map-gl/dist/esm/utils/use-isomorphic-layout-effect.js","../node_modules/react-map-gl/dist/esm/utils/set-globals.js","../node_modules/react-map-gl/dist/esm/components/map.js","../node_modules/react-map-gl/dist/esm/utils/apply-react-style.js","../node_modules/react-map-gl/dist/esm/components/marker.js","../node_modules/react-map-gl/dist/esm/components/popup.js","../node_modules/react-map-gl/dist/esm/components/use-control.js","../node_modules/react-map-gl/dist/esm/components/attribution-control.js","../node_modules/react-map-gl/dist/esm/components/fullscreen-control.js","../node_modules/react-map-gl/dist/esm/components/geolocate-control.js","../node_modules/react-map-gl/dist/esm/components/navigation-control.js","../node_modules/react-map-gl/dist/esm/components/scale-control.js","../node_modules/react-map-gl/dist/esm/utils/assert.js","../node_modules/react-map-gl/dist/esm/components/layer.js","../node_modules/react-map-gl/dist/esm/components/source.js","../node_modules/react-map-gl/dist/esm/exports-maplibre.js","../node_modules/classnames/index.js","../src/feature-components/Map/primitives/ResultsMarkers/ResultsMarkers.tsx","../node_modules/react-map-gl/dist/esm/exports-mapbox.js","../src/feature-components/Map/utils/polygonStyles.ts","../src/feature-components/Map/primitives/Polygons.tsx","../src/feature-components/Map/primitives/MapCanvas/MapCanvasProvider.tsx","../src/feature-components/Map/primitives/MapCanvas/MapCanvas.tsx","../src/feature-components/Map/constants.ts","../src/feature-components/Map/composites/BasicMap/BasicMap.tsx","../src/feature-components/Map/primitives/LayerSelector/primitives/Image.tsx","../src/feature-components/Map/primitives/LayerSelector/primitives/LayerSelectorPresentational.tsx","../src/feature-components/Map/primitives/LayerSelector/primitives/useLayerSelector.tsx","../src/feature-components/Map/primitives/LayerSelector/composites/LayerSelector/LayerSelector.tsx","../src/feature-components/Map/composites/FeatureMap/FeatureMap.tsx","../src/feature-components/Map/primitives/LayerSelector/composites/LayerSelectorInsetInMap/LayerSelectorInsetInMap.tsx","../src/feature-components/Map/primitives/controls/ButtonZoomIn.tsx","../src/feature-components/Map/primitives/controls/ButtonZoomOut.tsx","../src/feature-components/Map/primitives/controls/MapToggleButtonPresentational.tsx","../src/feature-components/Drawer/primitives/constants.ts","../src/feature-components/Drawer/primitives/TabButton.tsx","../src/feature-components/Drawer/primitives/DrawerPresentational.tsx","../src/feature-components/Drawer/primitives/useDrawer.ts","../src/feature-components/Drawer/composites/Drawer.tsx","../src/feature-components/InsetInMap/components/components.tsx","../src/feature-components/InsetInMap/InsetInMap.tsx","../node_modules/ol/extent/Relationship.js","../node_modules/ol/extent.js","../node_modules/ol/math.js","../node_modules/ol/util.js","../node_modules/ol/ObjectEventType.js","../node_modules/ol/events/EventType.js","../node_modules/ol/Disposable.js","../node_modules/ol/array.js","../node_modules/ol/functions.js","../node_modules/ol/obj.js","../node_modules/ol/events/Event.js","../node_modules/ol/events/Target.js","../node_modules/ol/events.js","../node_modules/ol/Observable.js","../node_modules/ol/Object.js","../node_modules/ol/console.js","../node_modules/ol/coordinate.js","../node_modules/ol/proj/Units.js","../node_modules/ol/proj/Projection.js","../node_modules/ol/proj/epsg3857.js","../node_modules/ol/proj/epsg4326.js","../node_modules/ol/proj/projections.js","../node_modules/ol/proj/transforms.js","../node_modules/ol/proj/utm.js","../node_modules/ol/sphere.js","../node_modules/ol/proj.js","../node_modules/ol/asserts.js","../node_modules/ol/transform.js","../node_modules/ol/geom/flat/transform.js","../node_modules/ol/geom/Geometry.js","../node_modules/ol/geom/SimpleGeometry.js","../node_modules/ol/geom/flat/deflate.js","../node_modules/ol/geom/Point.js","../src/feature-components/Map/v2/composites/BasicMap/interactions/addPanToFeature.ts","../node_modules/ol/CollectionEventType.js","../node_modules/ol/Collection.js","../node_modules/ol/Feature.js","../node_modules/ol/MapBrowserEventType.js","../node_modules/ol/has.js","../node_modules/ol/events/condition.js","../node_modules/ol/ViewHint.js","../node_modules/ol/dom.js","../node_modules/ol/render/EventType.js","../node_modules/ol/ImageState.js","../node_modules/ol/color.js","../node_modules/ol/Image.js","../node_modules/ol/style/IconImageCache.js","../node_modules/ol/style/IconImage.js","../node_modules/ol/colorlike.js","../node_modules/ol/geom/flat/inflate.js","../node_modules/ol/render/VectorContext.js","../node_modules/ol/css.js","../node_modules/ol/render/canvas.js","../node_modules/ol/render/canvas/Instruction.js","../node_modules/ol/render/canvas/Builder.js","../node_modules/ol/render/canvas/ImageBuilder.js","../node_modules/ol/render/canvas/LineStringBuilder.js","../node_modules/ol/geom/flat/simplify.js","../node_modules/ol/render/canvas/PolygonBuilder.js","../node_modules/ol/geom/flat/linechunk.js","../node_modules/ol/geom/flat/straightchunk.js","../node_modules/ol/render/canvas/TextBuilder.js","../node_modules/ol/render/canvas/BuilderGroup.js","../node_modules/ol/geom/flat/length.js","../node_modules/ol/geom/flat/lineoffset.js","../node_modules/ol/geom/flat/textpath.js","../node_modules/ol/render/canvas/ZIndexContext.js","../node_modules/ol/render/canvas/Executor.js","../node_modules/ol/render/canvas/ExecutorGroup.js","../node_modules/ol/size.js","../node_modules/ol/style/Image.js","../node_modules/ol/style/RegularShape.js","../node_modules/ol/style/Circle.js","../node_modules/ol/style/Fill.js","../node_modules/ol/style/Icon.js","../node_modules/ol/style/Stroke.js","../node_modules/ol/style/Style.js","../node_modules/ol/style/Text.js","../node_modules/ol/render/canvas/Immediate.js","../node_modules/ol/render/canvas/hitdetect.js","../node_modules/ol/renderer/vector.js","../node_modules/ol/render/Event.js","../node_modules/ol/renderer/Layer.js","../node_modules/ol/renderer/canvas/Layer.js","../node_modules/ol/renderer/canvas/VectorLayer.js","../node_modules/quickselect/index.js","../node_modules/rbush/index.js","../node_modules/ol/expr/expression.js","../node_modules/ol/expr/cpu.js","../node_modules/ol/render/canvas/style.js","../node_modules/ol/ViewProperty.js","../node_modules/ol/centerconstraint.js","../node_modules/ol/easing.js","../node_modules/ol/geom/flat/area.js","../node_modules/ol/geom/flat/closest.js","../node_modules/ol/geom/LinearRing.js","../node_modules/ol/geom/flat/contains.js","../node_modules/ol/geom/flat/interiorpoint.js","../node_modules/ol/geom/flat/segments.js","../node_modules/ol/geom/flat/intersectsextent.js","../node_modules/ol/geom/flat/reverse.js","../node_modules/ol/geom/flat/orient.js","../node_modules/ol/geom/Polygon.js","../node_modules/ol/resolutionconstraint.js","../node_modules/ol/rotationconstraint.js","../node_modules/ol/tilegrid/common.js","../node_modules/ol/View.js","../node_modules/ol/layer/Property.js","../node_modules/ol/layer/Base.js","../node_modules/ol/layer/Layer.js","../node_modules/ol/layer/BaseVector.js","../node_modules/ol/layer/Vector.js","../node_modules/ol/interaction/Property.js","../node_modules/ol/interaction/Interaction.js","../node_modules/ol/interaction/Select.js","../src/feature-components/Map/v2/composites/BasicMap/interactions/addSelectInteraction.ts","../src/feature-components/Map/v2/styles/defaults.ts","../src/feature-components/Map/v2/utils/feature.ts","../node_modules/ol-mapbox-style/node_modules/@maplibre/maplibre-gl-style-spec/dist/index.mjs","../node_modules/mapbox-to-css-font/index.js","../node_modules/ol/MapEvent.js","../node_modules/ol/MapBrowserEvent.js","../node_modules/ol/pointer/EventType.js","../node_modules/ol/MapBrowserEventHandler.js","../node_modules/ol/MapEventType.js","../node_modules/ol/MapProperty.js","../node_modules/ol/TileState.js","../node_modules/ol/structs/PriorityQueue.js","../node_modules/ol/TileQueue.js","../node_modules/ol/control/Control.js","../node_modules/ol/control/Attribution.js","../node_modules/ol/control/Rotate.js","../node_modules/ol/control/Zoom.js","../node_modules/ol/control/defaults.js","../node_modules/ol/Kinetic.js","../node_modules/ol/interaction/DoubleClickZoom.js","../node_modules/ol/interaction/Pointer.js","../node_modules/ol/interaction/DragPan.js","../node_modules/ol/interaction/DragRotate.js","../node_modules/ol/render/Box.js","../node_modules/ol/interaction/DragBox.js","../node_modules/ol/interaction/DragZoom.js","../node_modules/ol/events/Key.js","../node_modules/ol/interaction/KeyboardPan.js","../node_modules/ol/interaction/KeyboardZoom.js","../node_modules/ol/interaction/MouseWheelZoom.js","../node_modules/ol/interaction/PinchRotate.js","../node_modules/ol/interaction/PinchZoom.js","../node_modules/ol/interaction/defaults.js","../node_modules/ol/layer/Group.js","../node_modules/ol/renderer/Map.js","../node_modules/ol/renderer/Composite.js","../node_modules/ol/Map.js","../node_modules/ol/geom/flat/center.js","../node_modules/ol/geom/flat/interpolate.js","../node_modules/ol/geom/GeometryCollection.js","../node_modules/ol/geom/LineString.js","../node_modules/ol/geom/MultiLineString.js","../node_modules/ol/geom/MultiPoint.js","../node_modules/ol/geom/MultiPolygon.js","../node_modules/ol/render/Feature.js","../node_modules/ol/featureloader.js","../node_modules/ol/loadingstrategy.js","../node_modules/ol/structs/RBush.js","../node_modules/ol/source/Source.js","../node_modules/ol/source/VectorEventType.js","../node_modules/ol/source/Vector.js","../node_modules/ol/ImageCanvas.js","../node_modules/ol/Tile.js","../node_modules/ol/ImageTile.js","../node_modules/ol/TileRange.js","../node_modules/ol/VectorRenderTile.js","../node_modules/ol/VectorTile.js","../node_modules/ol-mapbox-style/src/mapbox.js","../node_modules/ol-mapbox-style/src/util.js","../node_modules/ol-mapbox-style/src/text.js","../node_modules/ol-mapbox-style/src/stylefunction.js","../node_modules/ol/format/Feature.js","../node_modules/ol/format/JSONFeature.js","../node_modules/ol/format/GeoJSON.js","../node_modules/ol/node_modules/pbf/index.js","../node_modules/ol/format/MVT.js","../node_modules/ol/renderer/canvas/ImageLayer.js","../node_modules/ol/layer/BaseImage.js","../node_modules/ol/layer/Image.js","../node_modules/ol/DataTile.js","../node_modules/ol/reproj.js","../node_modules/ol/reproj/Triangulation.js","../node_modules/ol/reproj/common.js","../node_modules/ol/reproj/Tile.js","../node_modules/ol/structs/LRUCache.js","../node_modules/ol/tilecoord.js","../node_modules/ol/renderer/canvas/TileLayer.js","../node_modules/ol/layer/TileProperty.js","../node_modules/ol/layer/BaseTile.js","../node_modules/ol/layer/Tile.js","../node_modules/ol/renderer/canvas/VectorTileLayer.js","../node_modules/ol/layer/VectorTile.js","../node_modules/ol/resolution.js","../node_modules/ol/reproj/Image.js","../node_modules/ol/source/common.js","../node_modules/ol/source/Image.js","../node_modules/ol/tilegrid/TileGrid.js","../node_modules/ol/tilegrid.js","../node_modules/ol/source/Tile.js","../node_modules/ol/source/Raster.js","../node_modules/ol/net.js","../node_modules/ol/uri.js","../node_modules/ol/tileurlfunction.js","../node_modules/ol/source/TileEventType.js","../node_modules/ol/source/UrlTile.js","../node_modules/ol/source/TileImage.js","../node_modules/ol/source/TileJSON.js","../node_modules/ol/source/VectorTile.js","../node_modules/ol-mapbox-style/src/shaders.js","../node_modules/ol-mapbox-style/src/apply.js","../node_modules/ol/source/XYZ.js","../src/feature-components/Map/v2/utils/layers.ts","../src/feature-components/Map/v2/utils/ensureView.ts","../node_modules/ol/control/FullScreen.js","../src/feature-components/Map/v2/utils/buildControls.ts","../src/feature-components/Map/v2/utils/mapFactory.ts","../src/feature-components/Map/v2/primitives/MapCanvas/MapCanvas.tsx","../src/components/Navigation/Menu/Menu.tsx","../src/feature-components/Map/v2/primitives/LayerSelector/LayerSelector.tsx","../src/feature-components/Map/v2/utils/faIconResolver.ts","../node_modules/svg-path-parser/parser.js","../node_modules/svg-path-parser/index.js","../src/feature-components/Map/v2/styles/markers.ts","../src/feature-components/Map/v2/utils/markers.ts","../src/feature-components/Map/v2/utils/ensureLayers.ts","../src/feature-components/Map/v2/utils/polygons.ts","../src/feature-components/Map/v2/utils/legacy.ts","../src/feature-components/Map/v2/utils/markerIconLoader.ts","../src/feature-components/Map/v2/composites/BasicMap/BasicMap.tsx","../src/feature-components/Map/v2/types/markers.ts","../src/utils/authorize-flow/services/broadcastChannelService.ts","../node_modules/@telicent-oss/fe-auth-lib/src/schemas.js","../node_modules/@telicent-oss/fe-auth-lib/src/AuthServerOAuth2Client.js","../src/utils/authorize-flow/context/AuthContext.tsx","../src/utils/authorize-flow/services/setupOAuthEventListeners.ts","../src/utils/authorize-flow/utils/normalizePathname.ts","../src/utils/authorize-flow/utils/parseAbsoluteUrl.ts","../src/utils/authorize-flow/utils/matchCurrentUrl.ts","../src/utils/authorize-flow/utils/isAuthRedirectUri.ts","../src/utils/authorize-flow/utils/index.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/utils/authorize-flow/services/withSessionHandling.ts","../src/utils/authorize-flow/index.ts","../src/utils/authorize-flow/context/AuthProvider.tsx","../src/utils/authorize-flow/context/useAuth.ts","../src/utils/authorize-flow/pages/AuthRedirectUri.tsx","../src/utils/authorize-flow/pages/Callback.tsx","../src/utils/authorize-flow/components/AuthModal.tsx","../src/utils/split-uri-base-and-term/index.ts","../src/utils/preferred-label-lib/index.ts","../src/utils/utils-lib/src/getCodec/getCodec.ts","../src/utils/utils-lib/src/getCodec/schemaAndTypes.ts","../node_modules/@remix-run/router/dist/router.js","../node_modules/react-router/dist/index.js","../node_modules/react-router-dom/dist/index.js","../src/utils/utils-lib/src/getCodec/toStringEncoded.ts","../src/utils/utils-lib/src/Logger/Logger.ts","../src/utils/utils-lib/src/GraphApp/constants.ts","../src/utils/renderErrorToHtml/renderErrorToHtml.ts","../src/utils/utils-lib/src/parseOrThrowWithInput/parseOrThrowWithInput.ts","../src/export.ts","../__vite-optional-peer-dep:mapbox-gl:react-map-gl"],"sourcesContent":["const common = {\n  black: '#000',\n  white: '#fff'\n};\nexport default common;","const red = {\n  50: '#ffebee',\n  100: '#ffcdd2',\n  200: '#ef9a9a',\n  300: '#e57373',\n  400: '#ef5350',\n  500: '#f44336',\n  600: '#e53935',\n  700: '#d32f2f',\n  800: '#c62828',\n  900: '#b71c1c',\n  A100: '#ff8a80',\n  A200: '#ff5252',\n  A400: '#ff1744',\n  A700: '#d50000'\n};\nexport default red;","const purple = {\n  50: '#f3e5f5',\n  100: '#e1bee7',\n  200: '#ce93d8',\n  300: '#ba68c8',\n  400: '#ab47bc',\n  500: '#9c27b0',\n  600: '#8e24aa',\n  700: '#7b1fa2',\n  800: '#6a1b9a',\n  900: '#4a148c',\n  A100: '#ea80fc',\n  A200: '#e040fb',\n  A400: '#d500f9',\n  A700: '#aa00ff'\n};\nexport default purple;","const blue = {\n  50: '#e3f2fd',\n  100: '#bbdefb',\n  200: '#90caf9',\n  300: '#64b5f6',\n  400: '#42a5f5',\n  500: '#2196f3',\n  600: '#1e88e5',\n  700: '#1976d2',\n  800: '#1565c0',\n  900: '#0d47a1',\n  A100: '#82b1ff',\n  A200: '#448aff',\n  A400: '#2979ff',\n  A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n  50: '#e1f5fe',\n  100: '#b3e5fc',\n  200: '#81d4fa',\n  300: '#4fc3f7',\n  400: '#29b6f6',\n  500: '#03a9f4',\n  600: '#039be5',\n  700: '#0288d1',\n  800: '#0277bd',\n  900: '#01579b',\n  A100: '#80d8ff',\n  A200: '#40c4ff',\n  A400: '#00b0ff',\n  A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n  50: '#e8f5e9',\n  100: '#c8e6c9',\n  200: '#a5d6a7',\n  300: '#81c784',\n  400: '#66bb6a',\n  500: '#4caf50',\n  600: '#43a047',\n  700: '#388e3c',\n  800: '#2e7d32',\n  900: '#1b5e20',\n  A100: '#b9f6ca',\n  A200: '#69f0ae',\n  A400: '#00e676',\n  A700: '#00c853'\n};\nexport default green;","const orange = {\n  50: '#fff3e0',\n  100: '#ffe0b2',\n  200: '#ffcc80',\n  300: '#ffb74d',\n  400: '#ffa726',\n  500: '#ff9800',\n  600: '#fb8c00',\n  700: '#f57c00',\n  800: '#ef6c00',\n  900: '#e65100',\n  A100: '#ffd180',\n  A200: '#ffab40',\n  A400: '#ff9100',\n  A700: '#ff6d00'\n};\nexport default orange;","const grey = {\n  50: '#fafafa',\n  100: '#f5f5f5',\n  200: '#eeeeee',\n  300: '#e0e0e0',\n  400: '#bdbdbd',\n  500: '#9e9e9e',\n  600: '#757575',\n  700: '#616161',\n  800: '#424242',\n  900: '#212121',\n  A100: '#f5f5f5',\n  A200: '#eeeeee',\n  A400: '#bdbdbd',\n  A700: '#616161'\n};\nexport default grey;","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n  // Apply babel-plugin-transform-template-literals in loose mode\n  // loose mode is safe if we're concatenating primitives\n  // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n  /* eslint-disable prefer-template */\n  let url = 'https://mui.com/production-error/?code=' + code;\n  for (let i = 1; i < arguments.length; i += 1) {\n    // rest params over-transpile for this case\n    // eslint-disable-next-line prefer-rest-params\n    url += '&args[]=' + encodeURIComponent(arguments[i]);\n  }\n  return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n  /* eslint-enable prefer-template */\n}","export default '$$material';","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 };","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      return document.styleSheets[i];\n    }\n  } // this function should always return with a value\n  // TS can't understand it though so we make it stop complaining here\n\n\n  return undefined;\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    this.tags.forEach(function (tag) {\n      var _tag$parentNode;\n\n      return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value;\n  var parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if (key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  var inserted = {};\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport { createCache as default };\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React 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","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else if (className) {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  scale: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  var componentSelector = interpolation;\n\n  if (componentSelector.__emotion_styles !== undefined) {\n\n    return componentSelector;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        var keyframes = interpolation;\n\n        if (keyframes.anim === 1) {\n          cursor = {\n            name: keyframes.name,\n            styles: keyframes.styles,\n            next: cursor\n          };\n          return keyframes.name;\n        }\n\n        var serializedStyles = interpolation;\n\n        if (serializedStyles.styles !== undefined) {\n          var next = serializedStyles.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = serializedStyles.styles + \";\";\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        }\n\n        break;\n      }\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  var asString = interpolation;\n\n  if (registered == null) {\n    return asString;\n  }\n\n  var cached = registered[asString];\n  return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var key in obj) {\n      var value = obj[key];\n\n      if (typeof value !== 'object') {\n        var asString = value;\n\n        if (registered != null && registered[asString] !== undefined) {\n          string += key + \"{\" + registered[asString] + \"}\";\n        } else if (isProcessableValue(asString)) {\n          string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n        }\n      } else {\n        if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n\n                string += key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    var asTemplateStringsArr = strings;\n\n    styles += asTemplateStringsArr[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      var templateStringsArr = strings;\n\n      styles += templateStringsArr[i];\n    }\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n}\n\nexport { serializeStyles };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n  return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    return mergedTheme;\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = React.useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n  var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n    var theme = React.useContext(ThemeContext);\n    return /*#__PURE__*/React.createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  });\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n  var newProps = {};\n\n  for (var _key in props) {\n    if (hasOwn.call(props, _key)) {\n      newProps[_key] = props[_key];\n    }\n  }\n\n  newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var _key2 in props) {\n    if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n      newProps[_key2] = props[_key2];\n    }\n  }\n\n  newProps.className = className;\n\n  if (ref) {\n    newProps.ref = ref;\n  }\n\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-f0de968e.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-f0de968e.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx = function jsx(type, props) {\n  // eslint-disable-next-line prefer-rest-params\n  var args = arguments;\n\n  if (props == null || !hasOwn.call(props, 'css')) {\n    return React.createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  }\n\n  return React.createElement.apply(null, createElementArgArray);\n};\n\n(function (_jsx) {\n  var JSX;\n\n  (function (_JSX) {})(JSX || (JSX = _jsx.JSX || (_jsx.JSX = {})));\n})(jsx || (jsx = {}));\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = React.useRef();\n  useInsertionEffectWithLayoutFallback(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false;\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nfunction keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name;\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n}\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && isDevelopment) {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && isDevelopment) {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: React.useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\n\nvar isDevelopment = false;\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n  return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n  return typeof tag === 'string' && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n  var shouldForwardProp;\n\n  if (options) {\n    var optionsShouldForwardProp = options.shouldForwardProp;\n    shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n      return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n    } : optionsShouldForwardProp;\n  }\n\n  if (typeof shouldForwardProp !== 'function' && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n\n  return shouldForwardProp;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n  var identifierName;\n  var targetClassName;\n\n  if (options !== undefined) {\n    identifierName = options.label;\n    targetClassName = options.target;\n  }\n\n  var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp('as');\n  return function () {\n    // eslint-disable-next-line prefer-rest-params\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n    if (identifierName !== undefined) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n\n    if (args[0] == null || args[0].raw === undefined) {\n      // eslint-disable-next-line prefer-spread\n      styles.push.apply(styles, args);\n    } else {\n      var templateStringsArr = args[0];\n\n      styles.push(templateStringsArr[0]);\n      var len = args.length;\n      var i = 1;\n\n      for (; i < len; i++) {\n\n        styles.push(args[i], templateStringsArr[i]);\n      }\n    }\n\n    var Styled = withEmotionCache(function (props, cache, ref) {\n      var FinalTag = shouldUseAs && props.as || baseTag;\n      var className = '';\n      var classInterpolations = [];\n      var mergedProps = props;\n\n      if (props.theme == null) {\n        mergedProps = {};\n\n        for (var key in props) {\n          mergedProps[key] = props[key];\n        }\n\n        mergedProps.theme = React.useContext(ThemeContext);\n      }\n\n      if (typeof props.className === 'string') {\n        className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n      } else if (props.className != null) {\n        className = props.className + \" \";\n      }\n\n      var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n      className += cache.key + \"-\" + serialized.name;\n\n      if (targetClassName !== undefined) {\n        className += \" \" + targetClassName;\n      }\n\n      var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n      var newProps = {};\n\n      for (var _key in props) {\n        if (shouldUseAs && _key === 'as') continue;\n\n        if (finalShouldForwardProp(_key)) {\n          newProps[_key] = props[_key];\n        }\n      }\n\n      newProps.className = className;\n\n      if (ref) {\n        newProps.ref = ref;\n      }\n\n      return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n        cache: cache,\n        serialized: serialized,\n        isStringTag: typeof FinalTag === 'string'\n      }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n    });\n    Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, 'toString', {\n      value: function value() {\n        if (targetClassName === undefined && isDevelopment) {\n          return 'NO_COMPONENT_SELECTOR';\n        }\n\n        return \".\" + targetClassName;\n      }\n    });\n\n    Styled.withComponent = function (nextTag, nextOptions) {\n      var newStyled = createStyled(nextTag, _extends({}, options, nextOptions, {\n        shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n      }));\n      return newStyled.apply(void 0, styles);\n    };\n\n    return Styled;\n  };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/react';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\nimport '@emotion/utils';\nimport 'react';\nimport '@emotion/is-prop-valid';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// bind it to avoid mutating the original function\nvar styled = createStyled.bind(null);\ntags.forEach(function (tagName) {\n  styled[tagName] = styled(tagName);\n});\n\nexport { styled as default };\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React 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\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function getComponentNameFromType(type) {\n      if (null == type) return null;\n      if (\"function\" === typeof type)\n        return type.$$typeof === REACT_CLIENT_REFERENCE\n          ? null\n          : type.displayName || type.name || null;\n      if (\"string\" === typeof type) return type;\n      switch (type) {\n        case REACT_FRAGMENT_TYPE:\n          return \"Fragment\";\n        case REACT_PROFILER_TYPE:\n          return \"Profiler\";\n        case REACT_STRICT_MODE_TYPE:\n          return \"StrictMode\";\n        case REACT_SUSPENSE_TYPE:\n          return \"Suspense\";\n        case REACT_SUSPENSE_LIST_TYPE:\n          return \"SuspenseList\";\n        case REACT_ACTIVITY_TYPE:\n          return \"Activity\";\n      }\n      if (\"object\" === typeof type)\n        switch (\n          (\"number\" === typeof type.tag &&\n            console.error(\n              \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n            ),\n          type.$$typeof)\n        ) {\n          case REACT_PORTAL_TYPE:\n            return \"Portal\";\n          case REACT_CONTEXT_TYPE:\n            return type.displayName || \"Context\";\n          case REACT_CONSUMER_TYPE:\n            return (type._context.displayName || \"Context\") + \".Consumer\";\n          case REACT_FORWARD_REF_TYPE:\n            var innerType = type.render;\n            type = type.displayName;\n            type ||\n              ((type = innerType.displayName || innerType.name || \"\"),\n              (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n            return type;\n          case REACT_MEMO_TYPE:\n            return (\n              (innerType = type.displayName || null),\n              null !== innerType\n                ? innerType\n                : getComponentNameFromType(type.type) || \"Memo\"\n            );\n          case REACT_LAZY_TYPE:\n            innerType = type._payload;\n            type = type._init;\n            try {\n              return getComponentNameFromType(type(innerType));\n            } catch (x) {}\n        }\n      return null;\n    }\n    function testStringCoercion(value) {\n      return \"\" + value;\n    }\n    function checkKeyStringCoercion(value) {\n      try {\n        testStringCoercion(value);\n        var JSCompiler_inline_result = !1;\n      } catch (e) {\n        JSCompiler_inline_result = !0;\n      }\n      if (JSCompiler_inline_result) {\n        JSCompiler_inline_result = console;\n        var JSCompiler_temp_const = JSCompiler_inline_result.error;\n        var JSCompiler_inline_result$jscomp$0 =\n          (\"function\" === typeof Symbol &&\n            Symbol.toStringTag &&\n            value[Symbol.toStringTag]) ||\n          value.constructor.name ||\n          \"Object\";\n        JSCompiler_temp_const.call(\n          JSCompiler_inline_result,\n          \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n          JSCompiler_inline_result$jscomp$0\n        );\n        return testStringCoercion(value);\n      }\n    }\n    function getTaskName(type) {\n      if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n      if (\n        \"object\" === typeof type &&\n        null !== type &&\n        type.$$typeof === REACT_LAZY_TYPE\n      )\n        return \"<...>\";\n      try {\n        var name = getComponentNameFromType(type);\n        return name ? \"<\" + name + \">\" : \"<...>\";\n      } catch (x) {\n        return \"<...>\";\n      }\n    }\n    function getOwner() {\n      var dispatcher = ReactSharedInternals.A;\n      return null === dispatcher ? null : dispatcher.getOwner();\n    }\n    function UnknownOwner() {\n      return Error(\"react-stack-top-frame\");\n    }\n    function hasValidKey(config) {\n      if (hasOwnProperty.call(config, \"key\")) {\n        var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n        if (getter && getter.isReactWarning) return !1;\n      }\n      return void 0 !== config.key;\n    }\n    function defineKeyPropWarningGetter(props, displayName) {\n      function warnAboutAccessingKey() {\n        specialPropKeyWarningShown ||\n          ((specialPropKeyWarningShown = !0),\n          console.error(\n            \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n            displayName\n          ));\n      }\n      warnAboutAccessingKey.isReactWarning = !0;\n      Object.defineProperty(props, \"key\", {\n        get: warnAboutAccessingKey,\n        configurable: !0\n      });\n    }\n    function elementRefGetterWithDeprecationWarning() {\n      var componentName = getComponentNameFromType(this.type);\n      didWarnAboutElementRef[componentName] ||\n        ((didWarnAboutElementRef[componentName] = !0),\n        console.error(\n          \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n        ));\n      componentName = this.props.ref;\n      return void 0 !== componentName ? componentName : null;\n    }\n    function ReactElement(type, key, props, owner, debugStack, debugTask) {\n      var refProp = props.ref;\n      type = {\n        $$typeof: REACT_ELEMENT_TYPE,\n        type: type,\n        key: key,\n        props: props,\n        _owner: owner\n      };\n      null !== (void 0 !== refProp ? refProp : null)\n        ? Object.defineProperty(type, \"ref\", {\n            enumerable: !1,\n            get: elementRefGetterWithDeprecationWarning\n          })\n        : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n      type._store = {};\n      Object.defineProperty(type._store, \"validated\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: 0\n      });\n      Object.defineProperty(type, \"_debugInfo\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: null\n      });\n      Object.defineProperty(type, \"_debugStack\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugStack\n      });\n      Object.defineProperty(type, \"_debugTask\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugTask\n      });\n      Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n      return type;\n    }\n    function jsxDEVImpl(\n      type,\n      config,\n      maybeKey,\n      isStaticChildren,\n      debugStack,\n      debugTask\n    ) {\n      var children = config.children;\n      if (void 0 !== children)\n        if (isStaticChildren)\n          if (isArrayImpl(children)) {\n            for (\n              isStaticChildren = 0;\n              isStaticChildren < children.length;\n              isStaticChildren++\n            )\n              validateChildKeys(children[isStaticChildren]);\n            Object.freeze && Object.freeze(children);\n          } else\n            console.error(\n              \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n            );\n        else validateChildKeys(children);\n      if (hasOwnProperty.call(config, \"key\")) {\n        children = getComponentNameFromType(type);\n        var keys = Object.keys(config).filter(function (k) {\n          return \"key\" !== k;\n        });\n        isStaticChildren =\n          0 < keys.length\n            ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n            : \"{key: someKey}\";\n        didWarnAboutKeySpread[children + isStaticChildren] ||\n          ((keys =\n            0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n          console.error(\n            'A props object containing a \"key\" prop is being spread into JSX:\\n  let props = %s;\\n  <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n  let props = %s;\\n  <%s key={someKey} {...props} />',\n            isStaticChildren,\n            children,\n            keys,\n            children\n          ),\n          (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n      }\n      children = null;\n      void 0 !== maybeKey &&\n        (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n      hasValidKey(config) &&\n        (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n      if (\"key\" in config) {\n        maybeKey = {};\n        for (var propName in config)\n          \"key\" !== propName && (maybeKey[propName] = config[propName]);\n      } else maybeKey = config;\n      children &&\n        defineKeyPropWarningGetter(\n          maybeKey,\n          \"function\" === typeof type\n            ? type.displayName || type.name || \"Unknown\"\n            : type\n        );\n      return ReactElement(\n        type,\n        children,\n        maybeKey,\n        getOwner(),\n        debugStack,\n        debugTask\n      );\n    }\n    function validateChildKeys(node) {\n      isValidElement(node)\n        ? node._store && (node._store.validated = 1)\n        : \"object\" === typeof node &&\n          null !== node &&\n          node.$$typeof === REACT_LAZY_TYPE &&\n          (\"fulfilled\" === node._payload.status\n            ? isValidElement(node._payload.value) &&\n              node._payload.value._store &&\n              (node._payload.value._store.validated = 1)\n            : node._store && (node._store.validated = 1));\n    }\n    function isValidElement(object) {\n      return (\n        \"object\" === typeof object &&\n        null !== object &&\n        object.$$typeof === REACT_ELEMENT_TYPE\n      );\n    }\n    var React = require(\"react\"),\n      REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n      REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n      REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n      REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n      REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n      REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n      REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n      REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n      REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n      REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n      REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n      REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n      REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n      REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n      ReactSharedInternals =\n        React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n      hasOwnProperty = Object.prototype.hasOwnProperty,\n      isArrayImpl = Array.isArray,\n      createTask = console.createTask\n        ? console.createTask\n        : function () {\n            return null;\n          };\n    React = {\n      react_stack_bottom_frame: function (callStackForError) {\n        return callStackForError();\n      }\n    };\n    var specialPropKeyWarningShown;\n    var didWarnAboutElementRef = {};\n    var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n      React,\n      UnknownOwner\n    )();\n    var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n    var didWarnAboutKeySpread = {};\n    exports.Fragment = REACT_FRAGMENT_TYPE;\n    exports.jsx = function (type, config, maybeKey) {\n      var trackActualOwner =\n        1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return jsxDEVImpl(\n        type,\n        config,\n        maybeKey,\n        !1,\n        trackActualOwner\n          ? Error(\"react-stack-top-frame\")\n          : unknownOwnerDebugStack,\n        trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n    exports.jsxs = function (type, config, maybeKey) {\n      var trackActualOwner =\n        1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return jsxDEVImpl(\n        type,\n        config,\n        maybeKey,\n        !0,\n        trackActualOwner\n          ? Error(\"react-stack-top-frame\")\n          : unknownOwnerDebugStack,\n        trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n// prepend: true moves MUI styles to the top of the <head> so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getCache(injectFirst, enableCssLayer) {\n  const emotionCache = createCache({\n    key: 'css',\n    prepend: injectFirst\n  });\n  if (enableCssLayer) {\n    const prevInsert = emotionCache.insert;\n    emotionCache.insert = (...args) => {\n      if (!args[1].styles.match(/^@layer\\s+[^{]*$/)) {\n        // avoid nested @layer\n        args[1].styles = `@layer mui {${args[1].styles}}`;\n      }\n      return prevInsert(...args);\n    };\n  }\n  return emotionCache;\n}\nconst cacheMap = new Map();\nexport default function StyledEngineProvider(props) {\n  const {\n    injectFirst,\n    enableCssLayer,\n    children\n  } = props;\n  const cache = React.useMemo(() => {\n    const cacheKey = `${injectFirst}-${enableCssLayer}`;\n    if (typeof document === 'object' && cacheMap.has(cacheKey)) {\n      return cacheMap.get(cacheKey);\n    }\n    const fresh = getCache(injectFirst, enableCssLayer);\n    cacheMap.set(cacheKey, fresh);\n    return fresh;\n  }, [injectFirst, enableCssLayer]);\n  if (injectFirst || enableCssLayer) {\n    return /*#__PURE__*/_jsx(CacheProvider, {\n      value: cache,\n      children: children\n    });\n  }\n  return children;\n}\nprocess.env.NODE_ENV !== \"production\" ? StyledEngineProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * If true, MUI styles are wrapped in CSS `@layer mui` rule.\n   * It helps to override MUI styles when using CSS Modules, Tailwind CSS, plain CSS, or any other styling solution.\n   */\n  enableCssLayer: PropTypes.bool,\n  /**\n   * By default, the styles are injected last in the <head> element of the page.\n   * As a result, they gain more specificity than any other style sheet.\n   * If you want to override MUI's styles, set this prop.\n   */\n  injectFirst: PropTypes.bool\n} : void 0;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n  return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n  const {\n    styles,\n    defaultTheme = {}\n  } = props;\n  const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n  return /*#__PURE__*/_jsx(Global, {\n    styles: globalStyles\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n  defaultTheme: PropTypes.object,\n  styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","/**\n * @mui/styled-engine v5.18.0\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nimport { serializeStyles as emSerializeStyles } from '@emotion/serialize';\nexport default function styled(tag, options) {\n  const stylesFactory = emStyled(tag, options);\n  if (process.env.NODE_ENV !== 'production') {\n    return (...styles) => {\n      const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n      if (styles.length === 0) {\n        console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n      } else if (styles.some(style => style === undefined)) {\n        console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n      }\n      return stylesFactory(...styles);\n    };\n  }\n  return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n  // Emotion attaches all the styles as `__emotion_styles`.\n  // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n  if (Array.isArray(tag.__emotion_styles)) {\n    tag.__emotion_styles = processor(tag.__emotion_styles);\n  }\n};\n\n// Emotion only accepts an array, but we want to avoid allocations\nconst wrapper = [];\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_serializeStyles(styles) {\n  wrapper[0] = styles;\n  return emSerializeStyles(wrapper);\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\n\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n  if (typeof item !== 'object' || item === null) {\n    return false;\n  }\n  const prototype = Object.getPrototypeOf(item);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n  if ( /*#__PURE__*/React.isValidElement(source) || !isPlainObject(source)) {\n    return source;\n  }\n  const output = {};\n  Object.keys(source).forEach(key => {\n    output[key] = deepClone(source[key]);\n  });\n  return output;\n}\nexport default function deepmerge(target, source, options = {\n  clone: true\n}) {\n  const output = options.clone ? _extends({}, target) : target;\n  if (isPlainObject(target) && isPlainObject(source)) {\n    Object.keys(source).forEach(key => {\n      if ( /*#__PURE__*/React.isValidElement(source[key])) {\n        output[key] = source[key];\n      } else if (isPlainObject(source[key]) &&\n      // Avoid prototype pollution\n      Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n        // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n        output[key] = deepmerge(target[key], source[key], options);\n      } else if (options.clone) {\n        output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n      } else {\n        output[key] = source[key];\n      }\n    });\n  }\n  return output;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n  const breakpointsAsArray = Object.keys(values).map(key => ({\n    key,\n    val: values[key]\n  })) || [];\n  // Sort in ascending order\n  breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n  return breakpointsAsArray.reduce((acc, obj) => {\n    return _extends({}, acc, {\n      [obj.key]: obj.val\n    });\n  }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n  const {\n      // The breakpoint **start** at this value.\n      // For instance with the first breakpoint xs: [xs, sm).\n      values = {\n        xs: 0,\n        // phone\n        sm: 600,\n        // tablet\n        md: 900,\n        // small laptop\n        lg: 1200,\n        // desktop\n        xl: 1536 // large screen\n      },\n      unit = 'px',\n      step = 5\n    } = breakpoints,\n    other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n  const sortedValues = sortBreakpointsValues(values);\n  const keys = Object.keys(sortedValues);\n  function up(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (min-width:${value}${unit})`;\n  }\n  function down(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (max-width:${value - step / 100}${unit})`;\n  }\n  function between(start, end) {\n    const endIndex = keys.indexOf(end);\n    return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n  }\n  function only(key) {\n    if (keys.indexOf(key) + 1 < keys.length) {\n      return between(key, keys[keys.indexOf(key) + 1]);\n    }\n    return up(key);\n  }\n  function not(key) {\n    // handle first and last key separately, for better readability\n    const keyIndex = keys.indexOf(key);\n    if (keyIndex === 0) {\n      return up(keys[1]);\n    }\n    if (keyIndex === keys.length - 1) {\n      return down(keys[keyIndex]);\n    }\n    return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n  }\n  return _extends({\n    keys,\n    values: sortedValues,\n    up,\n    down,\n    between,\n    only,\n    not,\n    unit\n  }, other);\n}","const shape = {\n  borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n  if (!item) {\n    return acc;\n  }\n  return deepmerge(acc, item, {\n    clone: false // No need to clone deep, it's way faster.\n  });\n}\nexport default merge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n  xs: 0,\n  // phone\n  sm: 600,\n  // tablet\n  md: 900,\n  // small laptop\n  lg: 1200,\n  // desktop\n  xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n  // Sorted ASC by size. That's important.\n  // It can't be configured as it's used statically for propTypes.\n  keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n  up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n  const theme = props.theme || {};\n  if (Array.isArray(propValue)) {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return propValue.reduce((acc, item, index) => {\n      acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n      return acc;\n    }, {});\n  }\n  if (typeof propValue === 'object') {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return Object.keys(propValue).reduce((acc, breakpoint) => {\n      // key is breakpoint\n      if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n        const mediaKey = themeBreakpoints.up(breakpoint);\n        acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n      } else {\n        const cssKey = breakpoint;\n        acc[cssKey] = propValue[cssKey];\n      }\n      return acc;\n    }, {});\n  }\n  const output = styleFromPropValue(propValue);\n  return output;\n}\nfunction breakpoints(styleFunction) {\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const newStyleFunction = props => {\n    const theme = props.theme || {};\n    const base = styleFunction(props);\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    const extended = themeBreakpoints.keys.reduce((acc, key) => {\n      if (props[key]) {\n        acc = acc || {};\n        acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n          theme\n        }, props[key]));\n      }\n      return acc;\n    }, null);\n    return merge(base, extended);\n  };\n  newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n    xs: PropTypes.object,\n    sm: PropTypes.object,\n    md: PropTypes.object,\n    lg: PropTypes.object,\n    xl: PropTypes.object\n  }) : {};\n  newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n  return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n  var _breakpointsInput$key;\n  const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n    const breakpointStyleKey = breakpointsInput.up(key);\n    acc[breakpointStyleKey] = {};\n    return acc;\n  }, {});\n  return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n  return breakpointKeys.reduce((acc, key) => {\n    const breakpointOutput = acc[key];\n    const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n    if (isBreakpointUnused) {\n      delete acc[key];\n    }\n    return acc;\n  }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n  const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n  const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n  return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n  // fixed value\n  if (typeof breakpointValues !== 'object') {\n    return {};\n  }\n  const base = {};\n  const breakpointsKeys = Object.keys(themeBreakpoints);\n  if (Array.isArray(breakpointValues)) {\n    breakpointsKeys.forEach((breakpoint, i) => {\n      if (i < breakpointValues.length) {\n        base[breakpoint] = true;\n      }\n    });\n  } else {\n    breakpointsKeys.forEach(breakpoint => {\n      if (breakpointValues[breakpoint] != null) {\n        base[breakpoint] = true;\n      }\n    });\n  }\n  return base;\n}\nexport function resolveBreakpointValues({\n  values: breakpointValues,\n  breakpoints: themeBreakpoints,\n  base: customBase\n}) {\n  const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n  const keys = Object.keys(base);\n  if (keys.length === 0) {\n    return breakpointValues;\n  }\n  let previous;\n  return keys.reduce((acc, breakpoint, i) => {\n    if (Array.isArray(breakpointValues)) {\n      acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n      previous = i;\n    } else if (typeof breakpointValues === 'object') {\n      acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n      previous = breakpoint;\n    } else {\n      acc[breakpoint] = breakpointValues;\n    }\n    return acc;\n  }, {});\n}\nexport default breakpoints;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n  if (typeof string !== 'string') {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n  if (!path || typeof path !== 'string') {\n    return null;\n  }\n\n  // Check if CSS variables are used\n  if (obj && obj.vars && checkVars) {\n    const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n    if (val != null) {\n      return val;\n    }\n  }\n  return path.split('.').reduce((acc, item) => {\n    if (acc && acc[item] != null) {\n      return acc[item];\n    }\n    return null;\n  }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n  let value;\n  if (typeof themeMapping === 'function') {\n    value = themeMapping(propValueFinal);\n  } else if (Array.isArray(themeMapping)) {\n    value = themeMapping[propValueFinal] || userValue;\n  } else {\n    value = getPath(themeMapping, propValueFinal) || userValue;\n  }\n  if (transform) {\n    value = transform(value, userValue, themeMapping);\n  }\n  return value;\n}\nfunction style(options) {\n  const {\n    prop,\n    cssProperty = options.prop,\n    themeKey,\n    transform\n  } = options;\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    if (props[prop] == null) {\n      return null;\n    }\n    const propValue = props[prop];\n    const theme = props.theme;\n    const themeMapping = getPath(theme, themeKey) || {};\n    const styleFromPropValue = propValueFinal => {\n      let value = getStyleValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, propValue, styleFromPropValue);\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n    [prop]: responsivePropType\n  } : {};\n  fn.filterProps = [prop];\n  return fn;\n}\nexport default style;","export default function memoize(fn) {\n  const cache = {};\n  return arg => {\n    if (cache[arg] === undefined) {\n      cache[arg] = fn(arg);\n    }\n    return cache[arg];\n  };\n}","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n  m: 'margin',\n  p: 'padding'\n};\nconst directions = {\n  t: 'Top',\n  r: 'Right',\n  b: 'Bottom',\n  l: 'Left',\n  x: ['Left', 'Right'],\n  y: ['Top', 'Bottom']\n};\nconst aliases = {\n  marginX: 'mx',\n  marginY: 'my',\n  paddingX: 'px',\n  paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n  // It's not a shorthand notation.\n  if (prop.length > 2) {\n    if (aliases[prop]) {\n      prop = aliases[prop];\n    } else {\n      return [prop];\n    }\n  }\n  const [a, b] = prop.split('');\n  const property = properties[a];\n  const direction = directions[b] || '';\n  return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n  var _getPath;\n  const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n  if (typeof themeSpacing === 'number') {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof abs !== 'number') {\n          console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n        }\n      }\n      return themeSpacing * abs;\n    };\n  }\n  if (Array.isArray(themeSpacing)) {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (!Number.isInteger(abs)) {\n          console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n        } else if (abs > themeSpacing.length - 1) {\n          console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n        }\n      }\n      return themeSpacing[abs];\n    };\n  }\n  if (typeof themeSpacing === 'function') {\n    return themeSpacing;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n  }\n  return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n  return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n  if (typeof propValue === 'string' || propValue == null) {\n    return propValue;\n  }\n  const abs = Math.abs(propValue);\n  const transformed = transformer(abs);\n  if (propValue >= 0) {\n    return transformed;\n  }\n  if (typeof transformed === 'number') {\n    return -transformed;\n  }\n  return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n  return propValue => cssProperties.reduce((acc, cssProperty) => {\n    acc[cssProperty] = getValue(transformer, propValue);\n    return acc;\n  }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n  // Using a hash computation over an array iteration could be faster, but with only 28 items,\n  // it's doesn't worth the bundle size.\n  if (keys.indexOf(prop) === -1) {\n    return null;\n  }\n  const cssProperties = getCssProperties(prop);\n  const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n  const propValue = props[prop];\n  return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n  const transformer = createUnarySpacing(props.theme);\n  return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n  return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n  return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n  return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n  // Already transformed.\n  if (spacingInput.mui) {\n    return spacingInput;\n  }\n\n  // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n  // Smaller components, such as icons, can align to a 4dp grid.\n  // https://m2.material.io/design/layout/understanding-layout.html\n  const transform = createUnarySpacing({\n    spacing: spacingInput\n  });\n  const spacing = (...argsInput) => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(argsInput.length <= 4)) {\n        console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n      }\n    }\n    const args = argsInput.length === 0 ? [1] : argsInput;\n    return args.map(argument => {\n      const output = transform(argument);\n      return typeof output === 'number' ? `${output}px` : output;\n    }).join(' ');\n  };\n  spacing.mui = true;\n  return spacing;\n}","import merge from './merge';\nfunction compose(...styles) {\n  const handlers = styles.reduce((acc, style) => {\n    style.filterProps.forEach(prop => {\n      acc[prop] = style;\n    });\n    return acc;\n  }, {});\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    return Object.keys(props).reduce((acc, prop) => {\n      if (handlers[prop]) {\n        return merge(acc, handlers[prop](props));\n      }\n      return acc;\n    }, {});\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n  fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n  return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n  return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n  return style({\n    prop,\n    themeKey: 'borders',\n    transform\n  });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n  if (props.borderRadius !== undefined && props.borderRadius !== null) {\n    const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n    const styleFromPropValue = propValue => ({\n      borderRadius: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n  }\n  return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n  borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n  if (props.gap !== undefined && props.gap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n    const styleFromPropValue = propValue => ({\n      gap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.gap, styleFromPropValue);\n  }\n  return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n  if (props.columnGap !== undefined && props.columnGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n    const styleFromPropValue = propValue => ({\n      columnGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n  }\n  return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n  if (props.rowGap !== undefined && props.rowGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n    const styleFromPropValue = propValue => ({\n      rowGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n  }\n  return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n  prop: 'gridColumn'\n});\nexport const gridRow = style({\n  prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n  prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n  prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n  prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n  prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n  prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n  prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n  prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n  if (userValue === 'grey') {\n    return userValue;\n  }\n  return value;\n}\nexport const color = style({\n  prop: 'color',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const bgcolor = style({\n  prop: 'bgcolor',\n  cssProperty: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const backgroundColor = style({\n  prop: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n  return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n  prop: 'width',\n  transform: sizingTransform\n});\nexport const maxWidth = props => {\n  if (props.maxWidth !== undefined && props.maxWidth !== null) {\n    const styleFromPropValue = propValue => {\n      var _props$theme, _props$theme2;\n      const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n      if (!breakpoint) {\n        return {\n          maxWidth: sizingTransform(propValue)\n        };\n      }\n      if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n        return {\n          maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n        };\n      }\n      return {\n        maxWidth: breakpoint\n      };\n    };\n    return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n  }\n  return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n  prop: 'minWidth',\n  transform: sizingTransform\n});\nexport const height = style({\n  prop: 'height',\n  transform: sizingTransform\n});\nexport const maxHeight = style({\n  prop: 'maxHeight',\n  transform: sizingTransform\n});\nexport const minHeight = style({\n  prop: 'minHeight',\n  transform: sizingTransform\n});\nexport const sizeWidth = style({\n  prop: 'size',\n  cssProperty: 'width',\n  transform: sizingTransform\n});\nexport const sizeHeight = style({\n  prop: 'size',\n  cssProperty: 'height',\n  transform: sizingTransform\n});\nexport const boxSizing = style({\n  prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n  // borders\n  border: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderTop: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderRight: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderBottom: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderLeft: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderColor: {\n    themeKey: 'palette'\n  },\n  borderTopColor: {\n    themeKey: 'palette'\n  },\n  borderRightColor: {\n    themeKey: 'palette'\n  },\n  borderBottomColor: {\n    themeKey: 'palette'\n  },\n  borderLeftColor: {\n    themeKey: 'palette'\n  },\n  outline: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  outlineColor: {\n    themeKey: 'palette'\n  },\n  borderRadius: {\n    themeKey: 'shape.borderRadius',\n    style: borderRadius\n  },\n  // palette\n  color: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  bgcolor: {\n    themeKey: 'palette',\n    cssProperty: 'backgroundColor',\n    transform: paletteTransform\n  },\n  backgroundColor: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  // spacing\n  p: {\n    style: padding\n  },\n  pt: {\n    style: padding\n  },\n  pr: {\n    style: padding\n  },\n  pb: {\n    style: padding\n  },\n  pl: {\n    style: padding\n  },\n  px: {\n    style: padding\n  },\n  py: {\n    style: padding\n  },\n  padding: {\n    style: padding\n  },\n  paddingTop: {\n    style: padding\n  },\n  paddingRight: {\n    style: padding\n  },\n  paddingBottom: {\n    style: padding\n  },\n  paddingLeft: {\n    style: padding\n  },\n  paddingX: {\n    style: padding\n  },\n  paddingY: {\n    style: padding\n  },\n  paddingInline: {\n    style: padding\n  },\n  paddingInlineStart: {\n    style: padding\n  },\n  paddingInlineEnd: {\n    style: padding\n  },\n  paddingBlock: {\n    style: padding\n  },\n  paddingBlockStart: {\n    style: padding\n  },\n  paddingBlockEnd: {\n    style: padding\n  },\n  m: {\n    style: margin\n  },\n  mt: {\n    style: margin\n  },\n  mr: {\n    style: margin\n  },\n  mb: {\n    style: margin\n  },\n  ml: {\n    style: margin\n  },\n  mx: {\n    style: margin\n  },\n  my: {\n    style: margin\n  },\n  margin: {\n    style: margin\n  },\n  marginTop: {\n    style: margin\n  },\n  marginRight: {\n    style: margin\n  },\n  marginBottom: {\n    style: margin\n  },\n  marginLeft: {\n    style: margin\n  },\n  marginX: {\n    style: margin\n  },\n  marginY: {\n    style: margin\n  },\n  marginInline: {\n    style: margin\n  },\n  marginInlineStart: {\n    style: margin\n  },\n  marginInlineEnd: {\n    style: margin\n  },\n  marginBlock: {\n    style: margin\n  },\n  marginBlockStart: {\n    style: margin\n  },\n  marginBlockEnd: {\n    style: margin\n  },\n  // display\n  displayPrint: {\n    cssProperty: false,\n    transform: value => ({\n      '@media print': {\n        display: value\n      }\n    })\n  },\n  display: {},\n  overflow: {},\n  textOverflow: {},\n  visibility: {},\n  whiteSpace: {},\n  // flexbox\n  flexBasis: {},\n  flexDirection: {},\n  flexWrap: {},\n  justifyContent: {},\n  alignItems: {},\n  alignContent: {},\n  order: {},\n  flex: {},\n  flexGrow: {},\n  flexShrink: {},\n  alignSelf: {},\n  justifyItems: {},\n  justifySelf: {},\n  // grid\n  gap: {\n    style: gap\n  },\n  rowGap: {\n    style: rowGap\n  },\n  columnGap: {\n    style: columnGap\n  },\n  gridColumn: {},\n  gridRow: {},\n  gridAutoFlow: {},\n  gridAutoColumns: {},\n  gridAutoRows: {},\n  gridTemplateColumns: {},\n  gridTemplateRows: {},\n  gridTemplateAreas: {},\n  gridArea: {},\n  // positions\n  position: {},\n  zIndex: {\n    themeKey: 'zIndex'\n  },\n  top: {},\n  right: {},\n  bottom: {},\n  left: {},\n  // shadows\n  boxShadow: {\n    themeKey: 'shadows'\n  },\n  // sizing\n  width: {\n    transform: sizingTransform\n  },\n  maxWidth: {\n    style: maxWidth\n  },\n  minWidth: {\n    transform: sizingTransform\n  },\n  height: {\n    transform: sizingTransform\n  },\n  maxHeight: {\n    transform: sizingTransform\n  },\n  minHeight: {\n    transform: sizingTransform\n  },\n  boxSizing: {},\n  // typography\n  fontFamily: {\n    themeKey: 'typography'\n  },\n  fontSize: {\n    themeKey: 'typography'\n  },\n  fontStyle: {\n    themeKey: 'typography'\n  },\n  fontWeight: {\n    themeKey: 'typography'\n  },\n  letterSpacing: {},\n  textTransform: {},\n  lineHeight: {},\n  textAlign: {},\n  typography: {\n    cssProperty: false,\n    themeKey: 'typography'\n  }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n  const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n  const union = new Set(allKeys);\n  return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n  return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n  function getThemeValue(prop, val, theme, config) {\n    const props = {\n      [prop]: val,\n      theme\n    };\n    const options = config[prop];\n    if (!options) {\n      return {\n        [prop]: val\n      };\n    }\n    const {\n      cssProperty = prop,\n      themeKey,\n      transform,\n      style\n    } = options;\n    if (val == null) {\n      return null;\n    }\n\n    // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n    if (themeKey === 'typography' && val === 'inherit') {\n      return {\n        [prop]: val\n      };\n    }\n    const themeMapping = getPath(theme, themeKey) || {};\n    if (style) {\n      return style(props);\n    }\n    const styleFromPropValue = propValueFinal => {\n      let value = getValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, val, styleFromPropValue);\n  }\n  function styleFunctionSx(props) {\n    var _theme$unstable_sxCon;\n    const {\n      sx,\n      theme = {},\n      nested\n    } = props || {};\n    if (!sx) {\n      return null; // Emotion & styled-components will neglect null\n    }\n    const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n    /*\n     * Receive `sxInput` as object or callback\n     * and then recursively check keys & values to create media query object styles.\n     * (the result will be used in `styled`)\n     */\n    function traverse(sxInput) {\n      let sxObject = sxInput;\n      if (typeof sxInput === 'function') {\n        sxObject = sxInput(theme);\n      } else if (typeof sxInput !== 'object') {\n        // value\n        return sxInput;\n      }\n      if (!sxObject) {\n        return null;\n      }\n      const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n      const breakpointsKeys = Object.keys(emptyBreakpoints);\n      let css = emptyBreakpoints;\n      Object.keys(sxObject).forEach(styleKey => {\n        const value = callIfFn(sxObject[styleKey], theme);\n        if (value !== null && value !== undefined) {\n          if (typeof value === 'object') {\n            if (config[styleKey]) {\n              css = merge(css, getThemeValue(styleKey, value, theme, config));\n            } else {\n              const breakpointsValues = handleBreakpoints({\n                theme\n              }, value, x => ({\n                [styleKey]: x\n              }));\n              if (objectsHaveSameKeys(breakpointsValues, value)) {\n                css[styleKey] = styleFunctionSx({\n                  sx: value,\n                  theme,\n                  nested: true\n                });\n              } else {\n                css = merge(css, breakpointsValues);\n              }\n            }\n          } else {\n            css = merge(css, getThemeValue(styleKey, value, theme, config));\n          }\n        }\n      });\n      if (!nested && theme.modularCssLayers) {\n        return {\n          '@layer sx': removeUnusedBreakpoints(breakpointsKeys, css)\n        };\n      }\n      return removeUnusedBreakpoints(breakpointsKeys, css);\n    }\n    return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n  }\n  return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n *  - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n *  - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n *  - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n *   const Component = styled('div')(({ theme }) => [\n *     { background: '#e5e5e5' },\n *     theme.applyStyles('dark', {\n *       background: '#1c1c1c',\n *       color: '#fff',\n *     }),\n *   ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n *   <Box sx={theme => [\n *     { background: '#e5e5e5' },\n *     theme.applyStyles('dark', {\n *        background: '#1c1c1c',\n *        color: '#fff',\n *      }),\n *     ]}\n *   />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n *   extendTheme({\n *     components: {\n *       MuiButton: {\n *         styleOverrides: {\n *           root: ({ theme }) => [\n *             { background: '#e5e5e5' },\n *             theme.applyStyles('dark', {\n *               background: '#1c1c1c',\n *               color: '#fff',\n *             }),\n *           ],\n *         },\n *       }\n *     }\n *   })\n *```\n */\nexport default function applyStyles(key, styles) {\n  // @ts-expect-error this is 'any' type\n  const theme = this;\n  if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n    // If CssVarsProvider is used as a provider,\n    // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n    const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n    return {\n      [selector]: styles\n    };\n  }\n  if (theme.palette.mode === key) {\n    return styles;\n  }\n  return {};\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n  const {\n      breakpoints: breakpointsInput = {},\n      palette: paletteInput = {},\n      spacing: spacingInput,\n      shape: shapeInput = {}\n    } = options,\n    other = _objectWithoutPropertiesLoose(options, _excluded);\n  const breakpoints = createBreakpoints(breakpointsInput);\n  const spacing = createSpacing(spacingInput);\n  let muiTheme = deepmerge({\n    breakpoints,\n    direction: 'ltr',\n    components: {},\n    // Inject component definitions.\n    palette: _extends({\n      mode: 'light'\n    }, paletteInput),\n    spacing,\n    shape: _extends({}, shape, shapeInput)\n  }, other);\n  muiTheme.applyStyles = applyStyles;\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nexport default createTheme;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n  const contextTheme = React.useContext(ThemeContext);\n  return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n  return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as MuiGlobalStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';\nimport useTheme from '../useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction wrapGlobalLayer(styles) {\n  const serialized = serializeStyles(styles);\n  if (styles !== serialized && serialized.styles) {\n    if (!serialized.styles.match(/^@layer\\s+[^{]*$/)) {\n      // If the styles are not already wrapped in a layer, wrap them in a global layer.\n      serialized.styles = `@layer global{${serialized.styles}}`;\n    }\n    return serialized;\n  }\n  return styles;\n}\nfunction GlobalStyles({\n  styles,\n  themeId,\n  defaultTheme = {}\n}) {\n  const upperTheme = useTheme(defaultTheme);\n  const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;\n  let globalStyles = typeof styles === 'function' ? styles(resolvedTheme) : styles;\n  if (resolvedTheme.modularCssLayers) {\n    if (Array.isArray(globalStyles)) {\n      globalStyles = globalStyles.map(styleArg => {\n        if (typeof styleArg === 'function') {\n          return wrapGlobalLayer(styleArg(resolvedTheme));\n        }\n        return wrapGlobalLayer(styleArg);\n      });\n    } else {\n      globalStyles = wrapGlobalLayer(globalStyles);\n    }\n  }\n  return /*#__PURE__*/_jsx(MuiGlobalStyles, {\n    styles: globalStyles\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  defaultTheme: PropTypes.object,\n  /**\n   * @ignore\n   */\n  styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool]),\n  /**\n   * @ignore\n   */\n  themeId: PropTypes.string\n} : void 0;\nexport default GlobalStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from './defaultSxConfig';\nconst splitProps = props => {\n  var _props$theme$unstable, _props$theme;\n  const result = {\n    systemProps: {},\n    otherProps: {}\n  };\n  const config = (_props$theme$unstable = props == null || (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : defaultSxConfig;\n  Object.keys(props).forEach(prop => {\n    if (config[prop]) {\n      result.systemProps[prop] = props[prop];\n    } else {\n      result.otherProps[prop] = props[prop];\n    }\n  });\n  return result;\n};\nexport default function extendSxProp(props) {\n  const {\n      sx: inSx\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    systemProps,\n    otherProps\n  } = splitProps(other);\n  let finalSx;\n  if (Array.isArray(inSx)) {\n    finalSx = [systemProps, ...inSx];\n  } else if (typeof inSx === 'function') {\n    finalSx = (...args) => {\n      const result = inSx(...args);\n      if (!isPlainObject(result)) {\n        return systemProps;\n      }\n      return _extends({}, systemProps, result);\n    };\n  } else {\n    finalSx = _extends({}, systemProps, inSx);\n  }\n  return _extends({}, otherProps, {\n    sx: finalSx\n  });\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n  let generate = defaultGenerator;\n  return {\n    configure(generator) {\n      generate = generator;\n    },\n    generate(componentName) {\n      return generate(componentName);\n    },\n    reset() {\n      generate = defaultGenerator;\n    }\n  };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from './styleFunctionSx';\nimport useTheme from './useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n  const {\n    themeId,\n    defaultTheme,\n    defaultClassName = 'MuiBox-root',\n    generateClassName\n  } = options;\n  const BoxRoot = styled('div', {\n    shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n  })(styleFunctionSx);\n  const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n    const theme = useTheme(defaultTheme);\n    const _extendSxProp = extendSxProp(inProps),\n      {\n        className,\n        component = 'div'\n      } = _extendSxProp,\n      other = _objectWithoutPropertiesLoose(_extendSxProp, _excluded);\n    return /*#__PURE__*/_jsx(BoxRoot, _extends({\n      as: component,\n      ref: ref,\n      className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n      theme: themeId ? theme[themeId] || theme : theme\n    }, other));\n  });\n  return Box;\n}","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n  active: 'active',\n  checked: 'checked',\n  completed: 'completed',\n  disabled: 'disabled',\n  error: 'error',\n  expanded: 'expanded',\n  focused: 'focused',\n  focusVisible: 'focusVisible',\n  open: 'open',\n  readOnly: 'readOnly',\n  required: 'required',\n  selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n  const globalStateClass = globalStateClasses[slot];\n  return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n  return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n  const result = {};\n  slots.forEach(slot => {\n    result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n  });\n  return result;\n}","/**\n * @license React\n * react-is.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n  REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n  if (\"object\" === typeof object && null !== object) {\n    var $$typeof = object.$$typeof;\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        switch (((object = object.type), object)) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n          case REACT_VIEW_TRANSITION_TYPE:\n            return object;\n          default:\n            switch (((object = object && object.$$typeof), object)) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n                return object;\n              case REACT_CONSUMER_TYPE:\n                return object;\n              default:\n                return $$typeof;\n            }\n        }\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n  return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n};\nexports.isForwardRef = function (object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n  return \"string\" === typeof type ||\n    \"function\" === typeof type ||\n    type === REACT_FRAGMENT_TYPE ||\n    type === REACT_PROFILER_TYPE ||\n    type === REACT_STRICT_MODE_TYPE ||\n    type === REACT_SUSPENSE_TYPE ||\n    type === REACT_SUSPENSE_LIST_TYPE ||\n    (\"object\" === typeof type &&\n      null !== type &&\n      (type.$$typeof === REACT_LAZY_TYPE ||\n        type.$$typeof === REACT_MEMO_TYPE ||\n        type.$$typeof === REACT_CONTEXT_TYPE ||\n        type.$$typeof === REACT_CONSUMER_TYPE ||\n        type.$$typeof === REACT_FORWARD_REF_TYPE ||\n        type.$$typeof === REACT_CLIENT_REFERENCE ||\n        void 0 !== type.getModuleId))\n    ? !0\n    : !1;\n};\nexports.typeOf = typeOf;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function typeOf(object) {\n      if (\"object\" === typeof object && null !== object) {\n        var $$typeof = object.$$typeof;\n        switch ($$typeof) {\n          case REACT_ELEMENT_TYPE:\n            switch (((object = object.type), object)) {\n              case REACT_FRAGMENT_TYPE:\n              case REACT_PROFILER_TYPE:\n              case REACT_STRICT_MODE_TYPE:\n              case REACT_SUSPENSE_TYPE:\n              case REACT_SUSPENSE_LIST_TYPE:\n              case REACT_VIEW_TRANSITION_TYPE:\n                return object;\n              default:\n                switch (((object = object && object.$$typeof), object)) {\n                  case REACT_CONTEXT_TYPE:\n                  case REACT_FORWARD_REF_TYPE:\n                  case REACT_LAZY_TYPE:\n                  case REACT_MEMO_TYPE:\n                    return object;\n                  case REACT_CONSUMER_TYPE:\n                    return object;\n                  default:\n                    return $$typeof;\n                }\n            }\n          case REACT_PORTAL_TYPE:\n            return $$typeof;\n        }\n      }\n    }\n    var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n      REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n      REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n      REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n      REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n      REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n      REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n      REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n      REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n      REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n      REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n      REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n      REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n      REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n    exports.ContextConsumer = REACT_CONSUMER_TYPE;\n    exports.ContextProvider = REACT_CONTEXT_TYPE;\n    exports.Element = REACT_ELEMENT_TYPE;\n    exports.ForwardRef = REACT_FORWARD_REF_TYPE;\n    exports.Fragment = REACT_FRAGMENT_TYPE;\n    exports.Lazy = REACT_LAZY_TYPE;\n    exports.Memo = REACT_MEMO_TYPE;\n    exports.Portal = REACT_PORTAL_TYPE;\n    exports.Profiler = REACT_PROFILER_TYPE;\n    exports.StrictMode = REACT_STRICT_MODE_TYPE;\n    exports.Suspense = REACT_SUSPENSE_TYPE;\n    exports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n    exports.isContextConsumer = function (object) {\n      return typeOf(object) === REACT_CONSUMER_TYPE;\n    };\n    exports.isContextProvider = function (object) {\n      return typeOf(object) === REACT_CONTEXT_TYPE;\n    };\n    exports.isElement = function (object) {\n      return (\n        \"object\" === typeof object &&\n        null !== object &&\n        object.$$typeof === REACT_ELEMENT_TYPE\n      );\n    };\n    exports.isForwardRef = function (object) {\n      return typeOf(object) === REACT_FORWARD_REF_TYPE;\n    };\n    exports.isFragment = function (object) {\n      return typeOf(object) === REACT_FRAGMENT_TYPE;\n    };\n    exports.isLazy = function (object) {\n      return typeOf(object) === REACT_LAZY_TYPE;\n    };\n    exports.isMemo = function (object) {\n      return typeOf(object) === REACT_MEMO_TYPE;\n    };\n    exports.isPortal = function (object) {\n      return typeOf(object) === REACT_PORTAL_TYPE;\n    };\n    exports.isProfiler = function (object) {\n      return typeOf(object) === REACT_PROFILER_TYPE;\n    };\n    exports.isStrictMode = function (object) {\n      return typeOf(object) === REACT_STRICT_MODE_TYPE;\n    };\n    exports.isSuspense = function (object) {\n      return typeOf(object) === REACT_SUSPENSE_TYPE;\n    };\n    exports.isSuspenseList = function (object) {\n      return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n    };\n    exports.isValidElementType = function (type) {\n      return \"string\" === typeof type ||\n        \"function\" === typeof type ||\n        type === REACT_FRAGMENT_TYPE ||\n        type === REACT_PROFILER_TYPE ||\n        type === REACT_STRICT_MODE_TYPE ||\n        type === REACT_SUSPENSE_TYPE ||\n        type === REACT_SUSPENSE_LIST_TYPE ||\n        (\"object\" === typeof type &&\n          null !== type &&\n          (type.$$typeof === REACT_LAZY_TYPE ||\n            type.$$typeof === REACT_MEMO_TYPE ||\n            type.$$typeof === REACT_CONTEXT_TYPE ||\n            type.$$typeof === REACT_CONSUMER_TYPE ||\n            type.$$typeof === REACT_FORWARD_REF_TYPE ||\n            type.$$typeof === REACT_CLIENT_REFERENCE ||\n            void 0 !== type.getModuleId))\n        ? !0\n        : !1;\n    };\n    exports.typeOf = typeOf;\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n  const match = `${fn}`.match(fnNameMatchRegex);\n  const name = match && match[1];\n  return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n  return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  const functionName = getFunctionComponentName(innerType);\n  return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n  if (Component == null) {\n    return undefined;\n  }\n  if (typeof Component === 'string') {\n    return Component;\n  }\n  if (typeof Component === 'function') {\n    return getFunctionComponentName(Component, 'Component');\n  }\n\n  // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n  if (typeof Component === 'object') {\n    switch (Component.$$typeof) {\n      case ForwardRef:\n        return getWrappedName(Component, Component.render, 'ForwardRef');\n      case Memo:\n        return getWrappedName(Component, Component.type, 'memo');\n      default:\n        return undefined;\n    }\n  }\n  return undefined;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ownerState\"],\n  _excluded2 = [\"variants\"],\n  _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from './createTheme';\nimport styleFunctionSx from './styleFunctionSx';\nfunction isEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n  return typeof tag === 'string' &&\n  // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nfunction shallowLayer(serialized, layerName) {\n  if (layerName && serialized && typeof serialized === 'object' && serialized.styles && !serialized.styles.startsWith('@layer') // only add the layer if it is not already there.\n  ) {\n    serialized.styles = `@layer ${layerName}{${String(serialized.styles)}}`;\n  }\n  return serialized;\n}\nexport const systemDefaultTheme = createTheme();\nconst lowercaseFirstLetter = string => {\n  if (!string) {\n    return string;\n  }\n  return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n  defaultTheme,\n  theme,\n  themeId\n}) {\n  return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n  if (!slot) {\n    return null;\n  }\n  return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref, layerName) {\n  let {\n      ownerState\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends({\n    ownerState\n  }, props)) : callableStyle;\n  if (Array.isArray(resolvedStylesArg)) {\n    return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, _extends({\n      ownerState\n    }, props), layerName));\n  }\n  if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n    const {\n        variants = []\n      } = resolvedStylesArg,\n      otherStyles = _objectWithoutPropertiesLoose(resolvedStylesArg, _excluded2);\n    let result = otherStyles;\n    variants.forEach(variant => {\n      let isMatch = true;\n      if (typeof variant.props === 'function') {\n        isMatch = variant.props(_extends({\n          ownerState\n        }, props, ownerState));\n      } else {\n        Object.keys(variant.props).forEach(key => {\n          if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n            isMatch = false;\n          }\n        });\n      }\n      if (isMatch) {\n        if (!Array.isArray(result)) {\n          result = [result];\n        }\n        const variantStyle = typeof variant.style === 'function' ? variant.style(_extends({\n          ownerState\n        }, props, ownerState)) : variant.style;\n        result.push(layerName ? shallowLayer(serializeStyles(variantStyle), layerName) : variantStyle);\n      }\n    });\n    return result;\n  }\n  return layerName ? shallowLayer(serializeStyles(resolvedStylesArg), layerName) : resolvedStylesArg;\n}\nexport default function createStyled(input = {}) {\n  const {\n    themeId,\n    defaultTheme = systemDefaultTheme,\n    rootShouldForwardProp = shouldForwardProp,\n    slotShouldForwardProp = shouldForwardProp\n  } = input;\n  const systemSx = props => {\n    return styleFunctionSx(_extends({}, props, {\n      theme: resolveTheme(_extends({}, props, {\n        defaultTheme,\n        themeId\n      }))\n    }));\n  };\n  systemSx.__mui_systemSx = true;\n  return (tag, inputOptions = {}) => {\n    // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n    processStyles(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n    const {\n        name: componentName,\n        slot: componentSlot,\n        skipVariantsResolver: inputSkipVariantsResolver,\n        skipSx: inputSkipSx,\n        // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n        // For more details: https://github.com/mui/material-ui/pull/37908\n        overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n      } = inputOptions,\n      options = _objectWithoutPropertiesLoose(inputOptions, _excluded3);\n    const layerName = componentName && componentName.startsWith('Mui') || !!componentSlot ? 'components' : 'custom';\n\n    // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n    const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n    const skipSx = inputSkipSx || false;\n    let label;\n    if (process.env.NODE_ENV !== 'production') {\n      if (componentName) {\n        // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n        // For more details: https://github.com/mui/material-ui/pull/37908\n        label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n      }\n    }\n    let shouldForwardPropOption = shouldForwardProp;\n\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    if (componentSlot === 'Root' || componentSlot === 'root') {\n      shouldForwardPropOption = rootShouldForwardProp;\n    } else if (componentSlot) {\n      // any other slot specified\n      shouldForwardPropOption = slotShouldForwardProp;\n    } else if (isStringTag(tag)) {\n      // for string (html) tag, preserve the behavior in emotion & styled-components.\n      shouldForwardPropOption = undefined;\n    }\n    const defaultStyledResolver = styledEngineStyled(tag, _extends({\n      shouldForwardProp: shouldForwardPropOption,\n      label\n    }, options));\n    const transformStyleArg = stylesArg => {\n      // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n      // component stays as a function. This condition makes sure that we do not interpolate functions\n      // which are basically components used as a selectors.\n      if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {\n        return props => {\n          const theme = resolveTheme({\n            theme: props.theme,\n            defaultTheme,\n            themeId\n          });\n          return processStyleArg(stylesArg, _extends({}, props, {\n            theme\n          }), theme.modularCssLayers ? layerName : undefined);\n        };\n      }\n      return stylesArg;\n    };\n    const muiStyledResolver = (styleArg, ...expressions) => {\n      let transformedStyleArg = transformStyleArg(styleArg);\n      const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n      if (componentName && overridesResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = resolveTheme(_extends({}, props, {\n            defaultTheme,\n            themeId\n          }));\n          if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n            return null;\n          }\n          const styleOverrides = theme.components[componentName].styleOverrides;\n          const resolvedStyleOverrides = {};\n          // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n          Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n            resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {\n              theme\n            }), theme.modularCssLayers ? 'theme' : undefined);\n          });\n          return overridesResolver(props, resolvedStyleOverrides);\n        });\n      }\n      if (componentName && !skipVariantsResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          var _theme$components;\n          const theme = resolveTheme(_extends({}, props, {\n            defaultTheme,\n            themeId\n          }));\n          const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n          return processStyleArg({\n            variants: themeVariants\n          }, _extends({}, props, {\n            theme\n          }), theme.modularCssLayers ? 'theme' : undefined);\n        });\n      }\n      if (!skipSx) {\n        expressionsWithDefaultTheme.push(systemSx);\n      }\n      const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n      if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n        const placeholders = new Array(numOfCustomFnsApplied).fill('');\n        // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n        transformedStyleArg = [...styleArg, ...placeholders];\n        transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n      }\n      const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n      if (process.env.NODE_ENV !== 'production') {\n        let displayName;\n        if (componentName) {\n          displayName = `${componentName}${capitalize(componentSlot || '')}`;\n        }\n        if (displayName === undefined) {\n          displayName = `Styled(${getDisplayName(tag)})`;\n        }\n        Component.displayName = displayName;\n      }\n      if (tag.muiName) {\n        Component.muiName = tag.muiName;\n      }\n      return Component;\n    };\n    if (defaultStyledResolver.withConfig) {\n      muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n    }\n    return muiStyledResolver;\n  };\n}","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n  const output = _extends({}, props);\n  Object.keys(defaultProps).forEach(propName => {\n    if (propName.toString().match(/^(components|slots)$/)) {\n      output[propName] = _extends({}, defaultProps[propName], output[propName]);\n    } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n      const defaultSlotProps = defaultProps[propName] || {};\n      const slotProps = props[propName];\n      output[propName] = {};\n      if (!slotProps || !Object.keys(slotProps)) {\n        // Reduce the iteration if the slot props is empty\n        output[propName] = defaultSlotProps;\n      } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n        // Reduce the iteration if the default slot props is empty\n        output[propName] = slotProps;\n      } else {\n        output[propName] = _extends({}, slotProps);\n        Object.keys(defaultSlotProps).forEach(slotPropName => {\n          output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n        });\n      }\n    } else if (output[propName] === undefined) {\n      output[propName] = defaultProps[propName];\n    }\n  });\n  return output;\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n  const {\n    theme,\n    name,\n    props\n  } = params;\n  if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n    return props;\n  }\n  return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n  props,\n  name,\n  defaultTheme,\n  themeId\n}) {\n  let theme = useTheme(defaultTheme);\n  if (themeId) {\n    theme = theme[themeId] || theme;\n  }\n  const mergedProps = getThemeProps({\n    theme,\n    name,\n    props\n  });\n  return mergedProps;\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { getThemeProps } from '../useThemeProps';\nimport useTheme from '../useThemeWithoutDefault';\n\n/**\n * @deprecated Not used internally. Use `MediaQueryListEvent` from lib.dom.d.ts instead.\n */\n\n/**\n * @deprecated Not used internally. Use `MediaQueryList` from lib.dom.d.ts instead.\n */\n\n/**\n * @deprecated Not used internally. Use `(event: MediaQueryListEvent) => void` instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n  const [match, setMatch] = React.useState(() => {\n    if (noSsr && matchMedia) {\n      return matchMedia(query).matches;\n    }\n    if (ssrMatchMedia) {\n      return ssrMatchMedia(query).matches;\n    }\n\n    // Once the component is mounted, we rely on the\n    // event listeners to return the correct matches value.\n    return defaultMatches;\n  });\n  useEnhancedEffect(() => {\n    let active = true;\n    if (!matchMedia) {\n      return undefined;\n    }\n    const queryList = matchMedia(query);\n    const updateMatch = () => {\n      // Workaround Safari wrong implementation of matchMedia\n      // TODO can we remove it?\n      // https://github.com/mui/material-ui/pull/17315#issuecomment-528286677\n      if (active) {\n        setMatch(queryList.matches);\n      }\n    };\n    updateMatch();\n    // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n    queryList.addListener(updateMatch);\n    return () => {\n      active = false;\n      queryList.removeListener(updateMatch);\n    };\n  }, [query, matchMedia]);\n  return match;\n}\n\n// eslint-disable-next-line no-useless-concat -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseSyncExternalStore = React['useSyncExternalStore' + ''];\nfunction useMediaQueryNew(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n  const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n  const getServerSnapshot = React.useMemo(() => {\n    if (noSsr && matchMedia) {\n      return () => matchMedia(query).matches;\n    }\n    if (ssrMatchMedia !== null) {\n      const {\n        matches\n      } = ssrMatchMedia(query);\n      return () => matches;\n    }\n    return getDefaultSnapshot;\n  }, [getDefaultSnapshot, query, ssrMatchMedia, noSsr, matchMedia]);\n  const [getSnapshot, subscribe] = React.useMemo(() => {\n    if (matchMedia === null) {\n      return [getDefaultSnapshot, () => () => {}];\n    }\n    const mediaQueryList = matchMedia(query);\n    return [() => mediaQueryList.matches, notify => {\n      // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n      mediaQueryList.addListener(notify);\n      return () => {\n        mediaQueryList.removeListener(notify);\n      };\n    }];\n  }, [getDefaultSnapshot, matchMedia, query]);\n  const match = maybeReactUseSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n  return match;\n}\nexport default function useMediaQuery(queryInput, options = {}) {\n  const theme = useTheme();\n  // Wait for jsdom to support the match media feature.\n  // All the browsers MUI support have this built-in.\n  // This defensive check is here for simplicity.\n  // Most of the time, the match media logic isn't central to people tests.\n  const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n  const {\n    defaultMatches = false,\n    matchMedia = supportMatchMedia ? window.matchMedia : null,\n    ssrMatchMedia = null,\n    noSsr = false\n  } = getThemeProps({\n    name: 'MuiUseMediaQuery',\n    props: options,\n    theme\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof queryInput === 'function' && theme === null) {\n      console.error(['MUI: The `query` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n    }\n  }\n  let query = typeof queryInput === 'function' ? queryInput(theme) : queryInput;\n  query = query.replace(/^@media( ?)/m, '');\n\n  // TODO: Drop `useMediaQueryOld` and use  `use-sync-external-store` shim in `useMediaQueryNew` once the package is stable\n  const useMediaQueryImplementation = maybeReactUseSyncExternalStore !== undefined ? useMediaQueryNew : useMediaQueryOld;\n  const match = useMediaQueryImplementation(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue({\n      query,\n      match\n    });\n  }\n  return match;\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n  return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (value < min || value > max) {\n      console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n    }\n  }\n  return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n  color = color.slice(1);\n  const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n  let colors = color.match(re);\n  if (colors && colors[0].length === 1) {\n    colors = colors.map(n => n + n);\n  }\n  return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n    return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n  }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n  const hex = int.toString(16);\n  return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n  // Idempotent\n  if (color.type) {\n    return color;\n  }\n  if (color.charAt(0) === '#') {\n    return decomposeColor(hexToRgb(color));\n  }\n  const marker = color.indexOf('(');\n  const type = color.substring(0, marker);\n  if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n  }\n  let values = color.substring(marker + 1, color.length - 1);\n  let colorSpace;\n  if (type === 'color') {\n    values = values.split(' ');\n    colorSpace = values.shift();\n    if (values.length === 4 && values[3].charAt(0) === '/') {\n      values[3] = values[3].slice(1);\n    }\n    if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n    }\n  } else {\n    values = values.split(',');\n  }\n  values = values.map(value => parseFloat(value));\n  return {\n    type,\n    values,\n    colorSpace\n  };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n  const decomposedColor = decomposeColor(color);\n  return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n  try {\n    return colorChannel(color);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n  const {\n    type,\n    colorSpace\n  } = color;\n  let {\n    values\n  } = color;\n  if (type.indexOf('rgb') !== -1) {\n    // Only convert the first 3 values to int (i.e. not alpha)\n    values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n  } else if (type.indexOf('hsl') !== -1) {\n    values[1] = `${values[1]}%`;\n    values[2] = `${values[2]}%`;\n  }\n  if (type.indexOf('color') !== -1) {\n    values = `${colorSpace} ${values.join(' ')}`;\n  } else {\n    values = `${values.join(', ')}`;\n  }\n  return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n  // Idempotent\n  if (color.indexOf('#') === 0) {\n    return color;\n  }\n  const {\n    values\n  } = decomposeColor(color);\n  return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n  color = decomposeColor(color);\n  const {\n    values\n  } = color;\n  const h = values[0];\n  const s = values[1] / 100;\n  const l = values[2] / 100;\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  let type = 'rgb';\n  const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n  if (color.type === 'hsla') {\n    type += 'a';\n    rgb.push(values[3]);\n  }\n  return recomposeColor({\n    type,\n    values: rgb\n  });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n  color = decomposeColor(color);\n  let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n  rgb = rgb.map(val => {\n    if (color.type !== 'color') {\n      val /= 255; // normalized\n    }\n    return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n  });\n\n  // Truncate at 3 digits\n  return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n  const lumA = getLuminance(foreground);\n  const lumB = getLuminance(background);\n  return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n  color = decomposeColor(color);\n  value = clampWrapper(value);\n  if (color.type === 'rgb' || color.type === 'hsl') {\n    color.type += 'a';\n  }\n  if (color.type === 'color') {\n    color.values[3] = `/${value}`;\n  } else {\n    color.values[3] = value;\n  }\n  return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n  try {\n    return alpha(color, value);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] *= 1 - coefficient;\n  } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] *= 1 - coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n  try {\n    return darken(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] += (100 - color.values[2]) * coefficient;\n  } else if (color.type.indexOf('rgb') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (255 - color.values[i]) * coefficient;\n    }\n  } else if (color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (1 - color.values[i]) * coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n  try {\n    return lighten(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n  return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n  try {\n    return emphasize(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n  const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n  const backgroundColor = decomposeColor(background);\n  const overlayColor = decomposeColor(overlay);\n  const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n  return recomposeColor({\n    type: 'rgb',\n    values: rgb\n  });\n}","export default function chainPropTypes(propType1, propType2) {\n  if (process.env.NODE_ENV === 'production') {\n    return () => null;\n  }\n  return function validate(...args) {\n    return propType1(...args) || propType2(...args);\n  };\n}","import PropTypes from 'prop-types';\nimport chainPropTypes from '../chainPropTypes';\nfunction isClassComponent(elementType) {\n  // elementType.prototype?.isReactComponent\n  const {\n    prototype = {}\n  } = elementType;\n  return Boolean(prototype.isReactComponent);\n}\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n  const element = props[propName];\n  const safePropName = propFullName || propName;\n  if (element == null ||\n  // When server-side rendering React doesn't warn either.\n  // This is not an accurate check for SSR.\n  // This is only in place for Emotion compat.\n  // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n  typeof window === 'undefined') {\n    return null;\n  }\n  let warningHint;\n  const elementType = element.type;\n  /**\n   * Blacklisting instead of whitelisting\n   *\n   * Blacklisting will miss some components, such as React.Fragment. Those will at least\n   * trigger a warning in React.\n   * We can't whitelist because there is no safe way to detect React.forwardRef\n   * or class components. \"Safe\" means there's no public API.\n   *\n   */\n  if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n    warningHint = 'Did you accidentally use a plain function component for an element instead?';\n  }\n  if (warningHint !== undefined) {\n    return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n  }\n  return null;\n}\nconst elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;","import PropTypes from 'prop-types';\nimport chainPropTypes from '../chainPropTypes';\nfunction isClassComponent(elementType) {\n  // elementType.prototype?.isReactComponent\n  const {\n    prototype = {}\n  } = elementType;\n  return Boolean(prototype.isReactComponent);\n}\nfunction elementTypeAcceptingRef(props, propName, componentName, location, propFullName) {\n  const propValue = props[propName];\n  const safePropName = propFullName || propName;\n  if (propValue == null ||\n  // When server-side rendering React doesn't warn either.\n  // This is not an accurate check for SSR.\n  // This is only in place for emotion compat.\n  // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n  typeof window === 'undefined') {\n    return null;\n  }\n  let warningHint;\n\n  /**\n   * Blacklisting instead of whitelisting\n   *\n   * Blacklisting will miss some components, such as React.Fragment. Those will at least\n   * trigger a warning in React.\n   * We can't whitelist because there is no safe way to detect React.forwardRef\n   * or class components. \"Safe\" means there's no public API.\n   *\n   */\n  if (typeof propValue === 'function' && !isClassComponent(propValue)) {\n    warningHint = 'Did you accidentally provide a plain function component instead?';\n  }\n  if (warningHint !== undefined) {\n    return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element type that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n  }\n  return null;\n}\nexport default chainPropTypes(PropTypes.elementType, elementTypeAcceptingRef);","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\n\nconst specialProperty = 'exact-prop: \\u200b';\nexport default function exactProp(propTypes) {\n  if (process.env.NODE_ENV === 'production') {\n    return propTypes;\n  }\n  return _extends({}, propTypes, {\n    [specialProperty]: props => {\n      const unsupportedProps = Object.keys(props).filter(prop => !propTypes.hasOwnProperty(prop));\n      if (unsupportedProps.length > 0) {\n        return new Error(`The following props are not supported: ${unsupportedProps.map(prop => `\\`${prop}\\``).join(', ')}. Please remove them.`);\n      }\n      return null;\n    }\n  });\n}","export default function HTMLElementType(props, propName, componentName, location, propFullName) {\n  if (process.env.NODE_ENV === 'production') {\n    return null;\n  }\n  const propValue = props[propName];\n  const safePropName = propFullName || propName;\n  if (propValue == null) {\n    return null;\n  }\n  if (propValue && propValue.nodeType !== 1) {\n    return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an HTMLElement.`);\n  }\n  return null;\n}","import PropTypes from 'prop-types';\nconst refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n  return funcs.reduce((acc, func) => {\n    if (func == null) {\n      return acc;\n    }\n    return function chainedFunction(...args) {\n      acc.apply(this, args);\n      func.apply(this, args);\n    };\n  }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n  let timeout;\n  function debounced(...args) {\n    const later = () => {\n      // @ts-ignore\n      func.apply(this, args);\n    };\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n  }\n  debounced.clear = () => {\n    clearTimeout(timeout);\n  };\n  return debounced;\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n  var _muiName, _element$type;\n  return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n  // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n  // eslint-disable-next-line no-underscore-dangle\n  (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n  const doc = ownerDocument(node);\n  return doc.defaultView || window;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n  if (process.env.NODE_ENV === 'production') {\n    return () => null;\n  }\n\n  // eslint-disable-next-line react/forbid-foreign-prop-types\n  const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n  const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n    const propFullNameSafe = propFullName || propName;\n    const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n    if (defaultTypeChecker) {\n      const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n      if (typeCheckerResult) {\n        return typeCheckerResult;\n      }\n    }\n    if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n      return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n    }\n    return null;\n  };\n  return requireProp;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n  const [defaultId, setDefaultId] = React.useState(idOverride);\n  const id = idOverride || defaultId;\n  React.useEffect(() => {\n    if (defaultId == null) {\n      // Fallback to this default id when possible.\n      // Use the incrementing value for client-side rendering only.\n      // We can't use it server-side.\n      // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n      globalId += 1;\n      setDefaultId(`mui-${globalId}`);\n    }\n  }, [defaultId]);\n  return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n  if (maybeReactUseId !== undefined) {\n    const reactId = maybeReactUseId();\n    return idOverride != null ? idOverride : reactId;\n  }\n  // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n  return useGlobalId(idOverride);\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n  if (process.env.NODE_ENV === 'production') {\n    return null;\n  }\n  const propFullNameSafe = propFullName || propName;\n  if (typeof props[propName] !== 'undefined') {\n    return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n  }\n  return null;\n}","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n  controlled,\n  default: defaultProp,\n  name,\n  state = 'value'\n}) {\n  // isControlled is ignored in the hook dependency lists as it should never change.\n  const {\n    current: isControlled\n  } = React.useRef(controlled !== undefined);\n  const [valueState, setValue] = React.useState(defaultProp);\n  const value = isControlled ? controlled : valueState;\n  if (process.env.NODE_ENV !== 'production') {\n    React.useEffect(() => {\n      if (isControlled !== (controlled !== undefined)) {\n        console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n      }\n    }, [state, name, controlled]);\n    const {\n      current: defaultValue\n    } = React.useRef(defaultProp);\n    React.useEffect(() => {\n      if (!isControlled && !Object.is(defaultValue, defaultProp)) {\n        console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n      }\n    }, [JSON.stringify(defaultProp)]);\n  }\n  const setValueIfUncontrolled = React.useCallback(newValue => {\n    if (!isControlled) {\n      setValue(newValue);\n    }\n  }, []);\n  return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n  const ref = React.useRef(fn);\n  useEnhancedEffect(() => {\n    ref.current = fn;\n  });\n  return React.useRef((...args) =>\n  // @ts-expect-error hide `this`\n  (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n  /**\n   * This will create a new function if the refs passed to this hook change and are all defined.\n   * This means react will call the old forkRef with `null` and the new forkRef\n   * with the ref. Cleanup naturally emerges from this behavior.\n   */\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return instance => {\n      refs.forEach(ref => {\n        setRef(ref, instance);\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n *   const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n  const ref = React.useRef(UNINITIALIZED);\n  if (ref.current === UNINITIALIZED) {\n    ref.current = init(initArg);\n  }\n  return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n  /* eslint-disable react-hooks/exhaustive-deps */\n  React.useEffect(fn, EMPTY);\n  /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n  constructor() {\n    this.currentId = null;\n    this.clear = () => {\n      if (this.currentId !== null) {\n        clearTimeout(this.currentId);\n        this.currentId = null;\n      }\n    };\n    this.disposeEffect = () => {\n      return this.clear;\n    };\n  }\n  static create() {\n    return new Timeout();\n  }\n  /**\n   * Executes `fn` after `delay`, clearing any previously scheduled call.\n   */\n  start(delay, fn) {\n    this.clear();\n    this.currentId = setTimeout(() => {\n      this.currentId = null;\n      fn();\n    }, delay);\n  }\n}\nexport default function useTimeout() {\n  const timeout = useLazyRef(Timeout.create).current;\n  useOnMount(timeout.disposeEffect);\n  return timeout;\n}","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n  text: true,\n  search: true,\n  url: true,\n  tel: true,\n  email: true,\n  password: true,\n  number: true,\n  date: true,\n  month: true,\n  week: true,\n  time: true,\n  datetime: true,\n  'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n  const {\n    type,\n    tagName\n  } = node;\n  if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n    return true;\n  }\n  if (tagName === 'TEXTAREA' && !node.readOnly) {\n    return true;\n  }\n  if (node.isContentEditable) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n  if (event.metaKey || event.altKey || event.ctrlKey) {\n    return;\n  }\n  hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n  hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n  if (this.visibilityState === 'hidden') {\n    // If the tab becomes active again, the browser will handle calling focus\n    // on the element (Safari actually calls it twice).\n    // If this tab change caused a blur on an element with focus-visible,\n    // re-apply the class when the user switches back to the tab.\n    if (hadFocusVisibleRecently) {\n      hadKeyboardEvent = true;\n    }\n  }\n}\nfunction prepare(doc) {\n  doc.addEventListener('keydown', handleKeyDown, true);\n  doc.addEventListener('mousedown', handlePointerDown, true);\n  doc.addEventListener('pointerdown', handlePointerDown, true);\n  doc.addEventListener('touchstart', handlePointerDown, true);\n  doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n  doc.removeEventListener('keydown', handleKeyDown, true);\n  doc.removeEventListener('mousedown', handlePointerDown, true);\n  doc.removeEventListener('pointerdown', handlePointerDown, true);\n  doc.removeEventListener('touchstart', handlePointerDown, true);\n  doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n  const {\n    target\n  } = event;\n  try {\n    return target.matches(':focus-visible');\n  } catch (error) {\n    // Browsers not implementing :focus-visible will throw a SyntaxError.\n    // We use our own heuristic for those browsers.\n    // Rethrow might be better if it's not the expected error but do we really\n    // want to crash if focus-visible malfunctioned?\n  }\n\n  // No need for validFocusTarget check. The user does that by attaching it to\n  // focusable events only.\n  return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n  const ref = React.useCallback(node => {\n    if (node != null) {\n      prepare(node.ownerDocument);\n    }\n  }, []);\n  const isFocusVisibleRef = React.useRef(false);\n\n  /**\n   * Should be called if a blur event is fired\n   */\n  function handleBlurVisible() {\n    // checking against potential state variable does not suffice if we focus and blur synchronously.\n    // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n    // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n    // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n    // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n    if (isFocusVisibleRef.current) {\n      // To detect a tab/window switch, we look for a blur event followed\n      // rapidly by a visibility change.\n      // If we don't see a visibility change within 100ms, it's probably a\n      // regular focus change.\n      hadFocusVisibleRecently = true;\n      hadFocusVisibleRecentlyTimeout.start(100, () => {\n        hadFocusVisibleRecently = false;\n      });\n      isFocusVisibleRef.current = false;\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Should be called if a blur event is fired\n   */\n  function handleFocusVisible(event) {\n    if (isFocusVisible(event)) {\n      isFocusVisibleRef.current = true;\n      return true;\n    }\n    return false;\n  }\n  return {\n    isFocusVisibleRef,\n    onFocus: handleFocusVisible,\n    onBlur: handleBlurVisible,\n    ref\n  };\n}","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/488fd8afc535ca3a6ad4dc581f5e89217b6a36ac/js/src/util/scrollbar.js#L14-L18\nexport default function getScrollbarSize(doc) {\n  // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n  const documentWidth = doc.documentElement.clientWidth;\n  return Math.abs(window.innerWidth - documentWidth);\n}","// Source from https://github.com/alitaheri/normalize-scroll-left\nlet cachedType;\n\n/**\n * Based on the jquery plugin https://github.com/othree/jquery.rtl-scroll-type\n *\n * Types of scrollLeft, assuming scrollWidth=100 and direction is rtl.\n *\n * Type             | <- Most Left | Most Right -> | Initial\n * ---------------- | ------------ | ------------- | -------\n * default          | 0            | 100           | 100\n * negative (spec*) | -100         | 0             | 0\n * reverse          | 100          | 0             | 0\n *\n * Edge 85: default\n * Safari 14: negative\n * Chrome 85: negative\n * Firefox 81: negative\n * IE11: reverse\n *\n * spec* https://drafts.csswg.org/cssom-view/#dom-window-scroll\n */\nexport function detectScrollType() {\n  if (cachedType) {\n    return cachedType;\n  }\n  const dummy = document.createElement('div');\n  const container = document.createElement('div');\n  container.style.width = '10px';\n  container.style.height = '1px';\n  dummy.appendChild(container);\n  dummy.dir = 'rtl';\n  dummy.style.fontSize = '14px';\n  dummy.style.width = '4px';\n  dummy.style.height = '1px';\n  dummy.style.position = 'absolute';\n  dummy.style.top = '-1000px';\n  dummy.style.overflow = 'scroll';\n  document.body.appendChild(dummy);\n  cachedType = 'reverse';\n  if (dummy.scrollLeft > 0) {\n    cachedType = 'default';\n  } else {\n    dummy.scrollLeft = 1;\n    if (dummy.scrollLeft === 0) {\n      cachedType = 'negative';\n    }\n  }\n  document.body.removeChild(dummy);\n  return cachedType;\n}\n\n// Based on https://stackoverflow.com/a/24394376\nexport function getNormalizedScrollLeft(element, direction) {\n  const scrollLeft = element.scrollLeft;\n\n  // Perform the calculations only when direction is rtl to avoid messing up the ltr behavior\n  if (direction !== 'rtl') {\n    return scrollLeft;\n  }\n  const type = detectScrollType();\n  switch (type) {\n    case 'negative':\n      return element.scrollWidth - element.clientWidth + scrollLeft;\n    case 'reverse':\n      return element.scrollWidth - element.clientWidth - scrollLeft;\n    default:\n      return scrollLeft;\n  }\n}","'use client';\n\nimport * as React from 'react';\nconst usePreviousProps = value => {\n  const ref = React.useRef({});\n  React.useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\nexport default usePreviousProps;","export function getTypeByValue(value) {\n  const valueType = typeof value;\n  switch (valueType) {\n    case 'number':\n      if (Number.isNaN(value)) {\n        return 'NaN';\n      }\n      if (!Number.isFinite(value)) {\n        return 'Infinity';\n      }\n      if (value !== Math.floor(value)) {\n        return 'float';\n      }\n      return 'number';\n    case 'object':\n      if (value === null) {\n        return 'null';\n      }\n      return value.constructor.name;\n    default:\n      return valueType;\n  }\n}\n\n// IE 11 support\nfunction ponyfillIsInteger(x) {\n  // eslint-disable-next-line no-restricted-globals\n  return typeof x === 'number' && isFinite(x) && Math.floor(x) === x;\n}\nconst isInteger = Number.isInteger || ponyfillIsInteger;\nfunction requiredInteger(props, propName, componentName, location) {\n  const propValue = props[propName];\n  if (propValue == null || !isInteger(propValue)) {\n    const propType = getTypeByValue(propValue);\n    return new RangeError(`Invalid ${location} \\`${propName}\\` of type \\`${propType}\\` supplied to \\`${componentName}\\`, expected \\`integer\\`.`);\n  }\n  return null;\n}\nfunction validator(props, propName, ...other) {\n  const propValue = props[propName];\n  if (propValue === undefined) {\n    return null;\n  }\n  return requiredInteger(props, propName, ...other);\n}\nfunction validatorNoop() {\n  return null;\n}\nvalidator.isRequired = requiredInteger;\nvalidatorNoop.isRequired = validatorNoop;\nexport default process.env.NODE_ENV === 'production' ? validatorNoop : validator;","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n  const output = {};\n  Object.keys(slots).forEach(\n  // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n  // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n  slot => {\n    output[slot] = slots[slot].reduce((acc, key) => {\n      if (key) {\n        const utilityClass = getUtilityClass(key);\n        if (utilityClass !== '') {\n          acc.push(utilityClass);\n        }\n        if (classes && classes[key]) {\n          acc.push(classes[key]);\n        }\n      }\n      return acc;\n    }, []).join(' ');\n  });\n  return output;\n}","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n  return typeof element === 'string';\n}\nexport default isHostComponent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport isHostComponent from '../isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nfunction appendOwnerState(elementType, otherProps, ownerState) {\n  if (elementType === undefined || isHostComponent(elementType)) {\n    return otherProps;\n  }\n  return _extends({}, otherProps, {\n    ownerState: _extends({}, otherProps.ownerState, ownerState)\n  });\n}\nexport default appendOwnerState;","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nfunction extractEventHandlers(object, excludeKeys = []) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}\nexport default extractEventHandlers;","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nfunction omitEventHandlers(object) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}\nexport default omitEventHandlers;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport clsx from 'clsx';\nimport extractEventHandlers from '../extractEventHandlers';\nimport omitEventHandlers from '../omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nfunction mergeSlotProps(parameters) {\n  const {\n    getSlotProps,\n    additionalProps,\n    externalSlotProps,\n    externalForwardedProps,\n    className\n  } = parameters;\n  if (!getSlotProps) {\n    // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n    // so we can simply merge all the props without having to worry about extracting event handlers.\n    const joinedClasses = clsx(additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n    const mergedStyle = _extends({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n    const props = _extends({}, additionalProps, externalForwardedProps, externalSlotProps);\n    if (joinedClasses.length > 0) {\n      props.className = joinedClasses;\n    }\n    if (Object.keys(mergedStyle).length > 0) {\n      props.style = mergedStyle;\n    }\n    return {\n      props,\n      internalRef: undefined\n    };\n  }\n\n  // In this case, getSlotProps is responsible for calling the external event handlers.\n  // We don't need to include them in the merged props because of this.\n\n  const eventHandlers = extractEventHandlers(_extends({}, externalForwardedProps, externalSlotProps));\n  const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n  const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n  const internalSlotProps = getSlotProps(eventHandlers);\n\n  // The order of classes is important here.\n  // Emotion (that we use in libraries consuming Base UI) depends on this order\n  // to properly override style. It requires the most important classes to be last\n  // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n  const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n  const mergedStyle = _extends({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n  const props = _extends({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n  if (joinedClasses.length > 0) {\n    props.className = joinedClasses;\n  }\n  if (Object.keys(mergedStyle).length > 0) {\n    props.style = mergedStyle;\n  }\n  return {\n    props,\n    internalRef: internalSlotProps.ref\n  };\n}\nexport default mergeSlotProps;","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nfunction resolveComponentProps(componentProps, ownerState, slotState) {\n  if (typeof componentProps === 'function') {\n    return componentProps(ownerState, slotState);\n  }\n  return componentProps;\n}\nexport default resolveComponentProps;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\", \"skipResolvingSlotProps\"];\nimport useForkRef from '../useForkRef';\nimport appendOwnerState from '../appendOwnerState';\nimport mergeSlotProps from '../mergeSlotProps';\nimport resolveComponentProps from '../resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nfunction useSlotProps(parameters) {\n  var _parameters$additiona;\n  const {\n      elementType,\n      externalSlotProps,\n      ownerState,\n      skipResolvingSlotProps = false\n    } = parameters,\n    rest = _objectWithoutPropertiesLoose(parameters, _excluded);\n  const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n  const {\n    props: mergedProps,\n    internalRef\n  } = mergeSlotProps(_extends({}, rest, {\n    externalSlotProps: resolvedComponentsProps\n  }));\n  const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n  const props = appendOwnerState(elementType, _extends({}, mergedProps, {\n    ref\n  }), ownerState);\n  return props;\n}\nexport default useSlotProps;","import * as React from 'react';\n\n/**\n * Returns the ref of a React element handling differences between React 19 and older versions.\n * It will throw runtime error if the element is not a valid React element.\n *\n * @param element React.ReactElement\n * @returns React.Ref<any> | null\n */\nexport default function getReactElementRef(element) {\n  // 'ref' is passed as prop in React 19, whereas 'ref' is directly attached to children in older versions\n  if (parseInt(React.version, 10) >= 19) {\n    var _element$props;\n    return (element == null || (_element$props = element.props) == null ? void 0 : _element$props.ref) || null;\n  }\n  // @ts-expect-error element.ref is not included in the ReactElement type\n  // https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/70189\n  return (element == null ? void 0 : element.ref) || null;\n}","import * as React from 'react';\nconst ThemeContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n  ThemeContext.displayName = 'ThemeContext';\n}\nexport default ThemeContext;","import * as React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n  const theme = React.useContext(ThemeContext);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue(theme);\n  }\n  return theme;\n}","const hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@mui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested';\n\n// To support composition of theme.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n  if (typeof localTheme === 'function') {\n    const mergedTheme = localTheme(outerTheme);\n    if (process.env.NODE_ENV !== 'production') {\n      if (!mergedTheme) {\n        console.error(['MUI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n      }\n    }\n    return mergedTheme;\n  }\n  return _extends({}, outerTheme, localTheme);\n}\n\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\nfunction ThemeProvider(props) {\n  const {\n    children,\n    theme: localTheme\n  } = props;\n  const outerTheme = useTheme();\n  if (process.env.NODE_ENV !== 'production') {\n    if (outerTheme === null && typeof localTheme === 'function') {\n      console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n    }\n  }\n  const theme = React.useMemo(() => {\n    const output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n    if (output != null) {\n      output[nested] = outerTheme !== null;\n    }\n    return output;\n  }, [localTheme, outerTheme]);\n  return /*#__PURE__*/_jsx(ThemeContext.Provider, {\n    value: theme,\n    children: children\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RtlContext = /*#__PURE__*/React.createContext();\nfunction RtlProvider(_ref) {\n  let {\n      value\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  return /*#__PURE__*/_jsx(RtlContext.Provider, _extends({\n    value: value != null ? value : true\n  }, props));\n}\nprocess.env.NODE_ENV !== \"production\" ? RtlProvider.propTypes = {\n  children: PropTypes.node,\n  value: PropTypes.bool\n} : void 0;\nexport const useRtl = () => {\n  const value = React.useContext(RtlContext);\n  return value != null ? value : false;\n};\nexport default RtlProvider;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n  value,\n  children\n}) {\n  return /*#__PURE__*/_jsx(PropsContext.Provider, {\n    value: value,\n    children: children\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n  const {\n    theme,\n    name,\n    props\n  } = params;\n  if (!theme || !theme.components || !theme.components[name]) {\n    return props;\n  }\n  const config = theme.components[name];\n  if (config.defaultProps) {\n    // compatible with v5 signature\n    return resolveProps(config.defaultProps, props);\n  }\n  if (!config.styleOverrides && !config.variants) {\n    // v6 signature, no property 'defaultProps'\n    return resolveProps(config, props);\n  }\n  return props;\n}\nexport function useDefaultProps({\n  props,\n  name\n}) {\n  const ctx = React.useContext(PropsContext);\n  return getThemeProps({\n    props,\n    name,\n    theme: {\n      components: ctx\n    }\n  });\n}\nexport default DefaultPropsProvider;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport useId from '@mui/utils/useId';\nimport GlobalStyles from '../GlobalStyles';\nimport useThemeWithoutDefault from '../useThemeWithoutDefault';\n\n/**\n * This hook returns a `GlobalStyles` component that sets the CSS layer order (for server-side rendering).\n * Then on client-side, it injects the CSS layer order into the document head to ensure that the layer order is always present first before other Emotion styles.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function useLayerOrder(theme) {\n  const upperTheme = useThemeWithoutDefault();\n  const id = useId() || '';\n  const {\n    modularCssLayers\n  } = theme;\n  let layerOrder = 'mui.global, mui.components, mui.theme, mui.custom, mui.sx';\n  if (!modularCssLayers || upperTheme !== null) {\n    // skip this hook if upper theme exists.\n    layerOrder = '';\n  } else if (typeof modularCssLayers === 'string') {\n    layerOrder = modularCssLayers.replace(/mui(?!\\.)/g, layerOrder);\n  } else {\n    layerOrder = `@layer ${layerOrder};`;\n  }\n  useEnhancedEffect(() => {\n    const head = document.querySelector('head');\n    if (!head) {\n      return;\n    }\n    const firstChild = head.firstChild;\n    if (layerOrder) {\n      var _firstChild$hasAttrib;\n      // Only insert if first child doesn't have data-mui-layer-order attribute\n      if (firstChild && (_firstChild$hasAttrib = firstChild.hasAttribute) != null && _firstChild$hasAttrib.call(firstChild, 'data-mui-layer-order') && firstChild.getAttribute('data-mui-layer-order') === id) {\n        return;\n      }\n      const styleElement = document.createElement('style');\n      styleElement.setAttribute('data-mui-layer-order', id);\n      styleElement.textContent = layerOrder;\n      head.prepend(styleElement);\n    } else {\n      var _head$querySelector;\n      (_head$querySelector = head.querySelector(`style[data-mui-layer-order=\"${id}\"]`)) == null || _head$querySelector.remove();\n    }\n  }, [layerOrder, id]);\n  if (!layerOrder) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(GlobalStyles, {\n    styles: layerOrder\n  });\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as MuiThemeProvider, useTheme as usePrivateTheme } from '@mui/private-theming';\nimport exactProp from '@mui/utils/exactProp';\nimport { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';\nimport useThemeWithoutDefault from '../useThemeWithoutDefault';\nimport RtlProvider from '../RtlProvider';\nimport DefaultPropsProvider from '../DefaultPropsProvider';\nimport useLayerOrder from './useLayerOrder';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst EMPTY_THEME = {};\nfunction useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {\n  return React.useMemo(() => {\n    const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;\n    if (typeof localTheme === 'function') {\n      const mergedTheme = localTheme(resolvedTheme);\n      const result = themeId ? _extends({}, upperTheme, {\n        [themeId]: mergedTheme\n      }) : mergedTheme;\n      // must return a function for the private theme to NOT merge with the upper theme.\n      // see the test case \"use provided theme from a callback\" in ThemeProvider.test.js\n      if (isPrivate) {\n        return () => result;\n      }\n      return result;\n    }\n    return themeId ? _extends({}, upperTheme, {\n      [themeId]: localTheme\n    }) : _extends({}, upperTheme, localTheme);\n  }, [themeId, upperTheme, localTheme, isPrivate]);\n}\n\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n *\n * <ThemeProvider theme={theme}> // existing use case\n * <ThemeProvider theme={{ id: theme }}> // theme scoping\n */\nfunction ThemeProvider(props) {\n  const {\n    children,\n    theme: localTheme,\n    themeId\n  } = props;\n  const upperTheme = useThemeWithoutDefault(EMPTY_THEME);\n  const upperPrivateTheme = usePrivateTheme() || EMPTY_THEME;\n  if (process.env.NODE_ENV !== 'production') {\n    if (upperTheme === null && typeof localTheme === 'function' || themeId && upperTheme && !upperTheme[themeId] && typeof localTheme === 'function') {\n      console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n    }\n  }\n  const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);\n  const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);\n  const rtlValue = engineTheme.direction === 'rtl';\n  const layerOrder = useLayerOrder(engineTheme);\n  return /*#__PURE__*/_jsx(MuiThemeProvider, {\n    theme: privateTheme,\n    children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {\n      value: engineTheme,\n      children: /*#__PURE__*/_jsx(RtlProvider, {\n        value: rtlValue,\n        children: /*#__PURE__*/_jsxs(DefaultPropsProvider, {\n          value: engineTheme == null ? void 0 : engineTheme.components,\n          children: [layerOrder, children]\n        })\n      })\n    })\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n  /**\n   * The design system's unique id for getting the corresponded theme when there are multiple design systems.\n   */\n  themeId: PropTypes.string\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"disableGutters\", \"fixed\", \"maxWidth\", \"classes\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from '../useThemeProps';\nimport systemStyled from '../styled';\nimport createTheme from '../createTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n  }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n  props: inProps,\n  name: 'MuiContainer',\n  defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n  const getContainerUtilityClass = slot => {\n    return generateUtilityClass(componentName, slot);\n  };\n  const {\n    classes,\n    fixed,\n    disableGutters,\n    maxWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiContainer'\n  } = options;\n  const ContainerRoot = createStyledComponent(({\n    theme,\n    ownerState\n  }) => _extends({\n    width: '100%',\n    marginLeft: 'auto',\n    boxSizing: 'border-box',\n    marginRight: 'auto',\n    display: 'block'\n  }, !ownerState.disableGutters && {\n    paddingLeft: theme.spacing(2),\n    paddingRight: theme.spacing(2),\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    [theme.breakpoints.up('sm')]: {\n      paddingLeft: theme.spacing(3),\n      paddingRight: theme.spacing(3)\n    }\n  }), ({\n    theme,\n    ownerState\n  }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n    const breakpoint = breakpointValueKey;\n    const value = theme.breakpoints.values[breakpoint];\n    if (value !== 0) {\n      // @ts-ignore\n      acc[theme.breakpoints.up(breakpoint)] = {\n        maxWidth: `${value}${theme.breakpoints.unit}`\n      };\n    }\n    return acc;\n  }, {}), ({\n    theme,\n    ownerState\n  }) => _extends({}, ownerState.maxWidth === 'xs' && {\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    [theme.breakpoints.up('xs')]: {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n    }\n  }, ownerState.maxWidth &&\n  // @ts-ignore module augmentation fails if custom breakpoints are used\n  ownerState.maxWidth !== 'xs' && {\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    [theme.breakpoints.up(ownerState.maxWidth)]: {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n    }\n  }));\n  const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n    const props = useThemeProps(inProps);\n    const {\n        className,\n        component = 'div',\n        disableGutters = false,\n        fixed = false,\n        maxWidth = 'lg'\n      } = props,\n      other = _objectWithoutPropertiesLoose(props, _excluded);\n    const ownerState = _extends({}, props, {\n      component,\n      disableGutters,\n      fixed,\n      maxWidth\n    });\n\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    const classes = useUtilityClasses(ownerState, componentName);\n    return (\n      /*#__PURE__*/\n      // @ts-ignore theme is injected by the styled util\n      _jsx(ContainerRoot, _extends({\n        as: component\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        ,\n        ownerState: ownerState,\n        className: clsx(classes.root, className),\n        ref: ref\n      }, other))\n    );\n  });\n  process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    classes: PropTypes.object,\n    className: PropTypes.string,\n    component: PropTypes.elementType,\n    disableGutters: PropTypes.bool,\n    fixed: PropTypes.bool,\n    maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Container;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport deepmerge from '@mui/utils/deepmerge';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiStack',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n  return useThemePropsSystem({\n    props,\n    name: 'MuiStack',\n    defaultTheme\n  });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n  const childrenArray = React.Children.toArray(children).filter(Boolean);\n  return childrenArray.reduce((output, child, index) => {\n    output.push(child);\n    if (index < childrenArray.length - 1) {\n      output.push( /*#__PURE__*/React.cloneElement(separator, {\n        key: `separator-${index}`\n      }));\n    }\n    return output;\n  }, []);\n}\nconst getSideFromDirection = direction => {\n  return {\n    row: 'Left',\n    'row-reverse': 'Right',\n    column: 'Top',\n    'column-reverse': 'Bottom'\n  }[direction];\n};\nexport const style = ({\n  ownerState,\n  theme\n}) => {\n  let styles = _extends({\n    display: 'flex',\n    flexDirection: 'column'\n  }, handleBreakpoints({\n    theme\n  }, resolveBreakpointValues({\n    values: ownerState.direction,\n    breakpoints: theme.breakpoints.values\n  }), propValue => ({\n    flexDirection: propValue\n  })));\n  if (ownerState.spacing) {\n    const transformer = createUnarySpacing(theme);\n    const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n      if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n        acc[breakpoint] = true;\n      }\n      return acc;\n    }, {});\n    const directionValues = resolveBreakpointValues({\n      values: ownerState.direction,\n      base\n    });\n    const spacingValues = resolveBreakpointValues({\n      values: ownerState.spacing,\n      base\n    });\n    if (typeof directionValues === 'object') {\n      Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n        const directionValue = directionValues[breakpoint];\n        if (!directionValue) {\n          const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n          directionValues[breakpoint] = previousDirectionValue;\n        }\n      });\n    }\n    const styleFromPropValue = (propValue, breakpoint) => {\n      if (ownerState.useFlexGap) {\n        return {\n          gap: getValue(transformer, propValue)\n        };\n      }\n      return {\n        // The useFlexGap={false} implement relies on each child to give up control of the margin.\n        // We need to reset the margin to avoid double spacing.\n        '& > :not(style):not(style)': {\n          margin: 0\n        },\n        '& > :not(style) ~ :not(style)': {\n          [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n        }\n      };\n    };\n    styles = deepmerge(styles, handleBreakpoints({\n      theme\n    }, spacingValues, styleFromPropValue));\n  }\n  styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n  return styles;\n};\nexport default function createStack(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiStack'\n  } = options;\n  const useUtilityClasses = () => {\n    const slots = {\n      root: ['root']\n    };\n    return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n  };\n  const StackRoot = createStyledComponent(style);\n  const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n    const themeProps = useThemeProps(inProps);\n    const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n    const {\n        component = 'div',\n        direction = 'column',\n        spacing = 0,\n        divider,\n        children,\n        className,\n        useFlexGap = false\n      } = props,\n      other = _objectWithoutPropertiesLoose(props, _excluded);\n    const ownerState = {\n      direction,\n      spacing,\n      useFlexGap\n    };\n    const classes = useUtilityClasses();\n    return /*#__PURE__*/_jsx(StackRoot, _extends({\n      as: component,\n      ownerState: ownerState,\n      ref: ref,\n      className: clsx(classes.root, className)\n    }, other, {\n      children: divider ? joinChildren(children, divider) : children\n    }));\n  });\n  process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n    divider: PropTypes.node,\n    spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Stack;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n  return _extends({\n    toolbar: {\n      minHeight: 56,\n      [breakpoints.up('xs')]: {\n        '@media (orientation: landscape)': {\n          minHeight: 48\n        }\n      },\n      [breakpoints.up('sm')]: {\n        minHeight: 64\n      }\n    }\n  }, mixins);\n}","function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.alpha = alpha;\nexports.blend = blend;\nexports.colorChannel = void 0;\nexports.darken = darken;\nexports.decomposeColor = decomposeColor;\nexports.emphasize = emphasize;\nexports.getContrastRatio = getContrastRatio;\nexports.getLuminance = getLuminance;\nexports.hexToRgb = hexToRgb;\nexports.hslToRgb = hslToRgb;\nexports.lighten = lighten;\nexports.private_safeAlpha = private_safeAlpha;\nexports.private_safeColorChannel = void 0;\nexports.private_safeDarken = private_safeDarken;\nexports.private_safeEmphasize = private_safeEmphasize;\nexports.private_safeLighten = private_safeLighten;\nexports.recomposeColor = recomposeColor;\nexports.rgbToHex = rgbToHex;\nvar _formatMuiErrorMessage2 = _interopRequireDefault(require(\"@mui/utils/formatMuiErrorMessage\"));\nvar _clamp = _interopRequireDefault(require(\"@mui/utils/clamp\"));\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (value < min || value > max) {\n      console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n    }\n  }\n  return (0, _clamp.default)(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nfunction hexToRgb(color) {\n  color = color.slice(1);\n  const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n  let colors = color.match(re);\n  if (colors && colors[0].length === 1) {\n    colors = colors.map(n => n + n);\n  }\n  return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n    return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n  }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n  const hex = int.toString(16);\n  return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nfunction decomposeColor(color) {\n  // Idempotent\n  if (color.type) {\n    return color;\n  }\n  if (color.charAt(0) === '#') {\n    return decomposeColor(hexToRgb(color));\n  }\n  const marker = color.indexOf('(');\n  const type = color.substring(0, marker);\n  if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : (0, _formatMuiErrorMessage2.default)(9, color));\n  }\n  let values = color.substring(marker + 1, color.length - 1);\n  let colorSpace;\n  if (type === 'color') {\n    values = values.split(' ');\n    colorSpace = values.shift();\n    if (values.length === 4 && values[3].charAt(0) === '/') {\n      values[3] = values[3].slice(1);\n    }\n    if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : (0, _formatMuiErrorMessage2.default)(10, colorSpace));\n    }\n  } else {\n    values = values.split(',');\n  }\n  values = values.map(value => parseFloat(value));\n  return {\n    type,\n    values,\n    colorSpace\n  };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nconst colorChannel = color => {\n  const decomposedColor = decomposeColor(color);\n  return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexports.colorChannel = colorChannel;\nconst private_safeColorChannel = (color, warning) => {\n  try {\n    return colorChannel(color);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexports.private_safeColorChannel = private_safeColorChannel;\nfunction recomposeColor(color) {\n  const {\n    type,\n    colorSpace\n  } = color;\n  let {\n    values\n  } = color;\n  if (type.indexOf('rgb') !== -1) {\n    // Only convert the first 3 values to int (i.e. not alpha)\n    values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n  } else if (type.indexOf('hsl') !== -1) {\n    values[1] = `${values[1]}%`;\n    values[2] = `${values[2]}%`;\n  }\n  if (type.indexOf('color') !== -1) {\n    values = `${colorSpace} ${values.join(' ')}`;\n  } else {\n    values = `${values.join(', ')}`;\n  }\n  return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nfunction rgbToHex(color) {\n  // Idempotent\n  if (color.indexOf('#') === 0) {\n    return color;\n  }\n  const {\n    values\n  } = decomposeColor(color);\n  return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nfunction hslToRgb(color) {\n  color = decomposeColor(color);\n  const {\n    values\n  } = color;\n  const h = values[0];\n  const s = values[1] / 100;\n  const l = values[2] / 100;\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  let type = 'rgb';\n  const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n  if (color.type === 'hsla') {\n    type += 'a';\n    rgb.push(values[3]);\n  }\n  return recomposeColor({\n    type,\n    values: rgb\n  });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nfunction getLuminance(color) {\n  color = decomposeColor(color);\n  let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n  rgb = rgb.map(val => {\n    if (color.type !== 'color') {\n      val /= 255; // normalized\n    }\n    return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n  });\n\n  // Truncate at 3 digits\n  return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nfunction getContrastRatio(foreground, background) {\n  const lumA = getLuminance(foreground);\n  const lumB = getLuminance(background);\n  return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction alpha(color, value) {\n  color = decomposeColor(color);\n  value = clampWrapper(value);\n  if (color.type === 'rgb' || color.type === 'hsl') {\n    color.type += 'a';\n  }\n  if (color.type === 'color') {\n    color.values[3] = `/${value}`;\n  } else {\n    color.values[3] = value;\n  }\n  return recomposeColor(color);\n}\nfunction private_safeAlpha(color, value, warning) {\n  try {\n    return alpha(color, value);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction darken(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] *= 1 - coefficient;\n  } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] *= 1 - coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nfunction private_safeDarken(color, coefficient, warning) {\n  try {\n    return darken(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction lighten(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] += (100 - color.values[2]) * coefficient;\n  } else if (color.type.indexOf('rgb') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (255 - color.values[i]) * coefficient;\n    }\n  } else if (color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (1 - color.values[i]) * coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nfunction private_safeLighten(color, coefficient, warning) {\n  try {\n    return lighten(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction emphasize(color, coefficient = 0.15) {\n  return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nfunction private_safeEmphasize(color, coefficient, warning) {\n  try {\n    return emphasize(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nfunction blend(background, overlay, opacity, gamma = 1.0) {\n  const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n  const backgroundColor = decomposeColor(background);\n  const overlayColor = decomposeColor(overlay);\n  const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n  return recomposeColor({\n    type: 'rgb',\n    values: rgb\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n  // The colors used to style the text.\n  text: {\n    // The most important text.\n    primary: 'rgba(0, 0, 0, 0.87)',\n    // Secondary text.\n    secondary: 'rgba(0, 0, 0, 0.6)',\n    // Disabled text have even lower visual prominence.\n    disabled: 'rgba(0, 0, 0, 0.38)'\n  },\n  // The color used to divide different elements.\n  divider: 'rgba(0, 0, 0, 0.12)',\n  // The background colors used to style the surfaces.\n  // Consistency between these values is important.\n  background: {\n    paper: common.white,\n    default: common.white\n  },\n  // The colors used to style the action elements.\n  action: {\n    // The color of an active action like an icon button.\n    active: 'rgba(0, 0, 0, 0.54)',\n    // The color of an hovered action.\n    hover: 'rgba(0, 0, 0, 0.04)',\n    hoverOpacity: 0.04,\n    // The color of a selected action.\n    selected: 'rgba(0, 0, 0, 0.08)',\n    selectedOpacity: 0.08,\n    // The color of a disabled action.\n    disabled: 'rgba(0, 0, 0, 0.26)',\n    // The background color of a disabled action.\n    disabledBackground: 'rgba(0, 0, 0, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(0, 0, 0, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.12\n  }\n};\nexport const dark = {\n  text: {\n    primary: common.white,\n    secondary: 'rgba(255, 255, 255, 0.7)',\n    disabled: 'rgba(255, 255, 255, 0.5)',\n    icon: 'rgba(255, 255, 255, 0.5)'\n  },\n  divider: 'rgba(255, 255, 255, 0.12)',\n  background: {\n    paper: '#121212',\n    default: '#121212'\n  },\n  action: {\n    active: common.white,\n    hover: 'rgba(255, 255, 255, 0.08)',\n    hoverOpacity: 0.08,\n    selected: 'rgba(255, 255, 255, 0.16)',\n    selectedOpacity: 0.16,\n    disabled: 'rgba(255, 255, 255, 0.3)',\n    disabledBackground: 'rgba(255, 255, 255, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(255, 255, 255, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.24\n  }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n  const tonalOffsetLight = tonalOffset.light || tonalOffset;\n  const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n  if (!intent[direction]) {\n    if (intent.hasOwnProperty(shade)) {\n      intent[direction] = intent[shade];\n    } else if (direction === 'light') {\n      intent.light = lighten(intent.main, tonalOffsetLight);\n    } else if (direction === 'dark') {\n      intent.dark = darken(intent.main, tonalOffsetDark);\n    }\n  }\n}\nfunction getDefaultPrimary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: blue[200],\n      light: blue[50],\n      dark: blue[400]\n    };\n  }\n  return {\n    main: blue[700],\n    light: blue[400],\n    dark: blue[800]\n  };\n}\nfunction getDefaultSecondary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: purple[200],\n      light: purple[50],\n      dark: purple[400]\n    };\n  }\n  return {\n    main: purple[500],\n    light: purple[300],\n    dark: purple[700]\n  };\n}\nfunction getDefaultError(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: red[500],\n      light: red[300],\n      dark: red[700]\n    };\n  }\n  return {\n    main: red[700],\n    light: red[400],\n    dark: red[800]\n  };\n}\nfunction getDefaultInfo(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: lightBlue[400],\n      light: lightBlue[300],\n      dark: lightBlue[700]\n    };\n  }\n  return {\n    main: lightBlue[700],\n    light: lightBlue[500],\n    dark: lightBlue[900]\n  };\n}\nfunction getDefaultSuccess(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: green[400],\n      light: green[300],\n      dark: green[700]\n    };\n  }\n  return {\n    main: green[800],\n    light: green[500],\n    dark: green[900]\n  };\n}\nfunction getDefaultWarning(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: orange[400],\n      light: orange[300],\n      dark: orange[700]\n    };\n  }\n  return {\n    main: '#ed6c02',\n    // closest to orange[800] that pass 3:1.\n    light: orange[500],\n    dark: orange[900]\n  };\n}\nexport default function createPalette(palette) {\n  const {\n      mode = 'light',\n      contrastThreshold = 3,\n      tonalOffset = 0.2\n    } = palette,\n    other = _objectWithoutPropertiesLoose(palette, _excluded);\n  const primary = palette.primary || getDefaultPrimary(mode);\n  const secondary = palette.secondary || getDefaultSecondary(mode);\n  const error = palette.error || getDefaultError(mode);\n  const info = palette.info || getDefaultInfo(mode);\n  const success = palette.success || getDefaultSuccess(mode);\n  const warning = palette.warning || getDefaultWarning(mode);\n\n  // Use the same logic as\n  // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n  // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n  function getContrastText(background) {\n    const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n    if (process.env.NODE_ENV !== 'production') {\n      const contrast = getContrastRatio(background, contrastText);\n      if (contrast < 3) {\n        console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n      }\n    }\n    return contrastText;\n  }\n  const augmentColor = ({\n    color,\n    name,\n    mainShade = 500,\n    lightShade = 300,\n    darkShade = 700\n  }) => {\n    color = _extends({}, color);\n    if (!color.main && color[mainShade]) {\n      color.main = color[mainShade];\n    }\n    if (!color.hasOwnProperty('main')) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n    }\n    if (typeof color.main !== 'string') {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n  primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n  primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n    }\n    addLightOrDark(color, 'light', lightShade, tonalOffset);\n    addLightOrDark(color, 'dark', darkShade, tonalOffset);\n    if (!color.contrastText) {\n      color.contrastText = getContrastText(color.main);\n    }\n    return color;\n  };\n  const modes = {\n    dark,\n    light\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    if (!modes[mode]) {\n      console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n    }\n  }\n  const paletteOutput = deepmerge(_extends({\n    // A collection of common colors.\n    common: _extends({}, common),\n    // prevent mutable object.\n    // The palette mode, can be light or dark.\n    mode,\n    // The colors used to represent primary interface elements for a user.\n    primary: augmentColor({\n      color: primary,\n      name: 'primary'\n    }),\n    // The colors used to represent secondary interface elements for a user.\n    secondary: augmentColor({\n      color: secondary,\n      name: 'secondary',\n      mainShade: 'A400',\n      lightShade: 'A200',\n      darkShade: 'A700'\n    }),\n    // The colors used to represent interface elements that the user should be made aware of.\n    error: augmentColor({\n      color: error,\n      name: 'error'\n    }),\n    // The colors used to represent potentially dangerous actions or important messages.\n    warning: augmentColor({\n      color: warning,\n      name: 'warning'\n    }),\n    // The colors used to present information to the user that is neutral and not necessarily important.\n    info: augmentColor({\n      color: info,\n      name: 'info'\n    }),\n    // The colors used to indicate the successful completion of an action that user triggered.\n    success: augmentColor({\n      color: success,\n      name: 'success'\n    }),\n    // The grey colors.\n    grey,\n    // Used by `getContrastText()` to maximize the contrast between\n    // the background and the text.\n    contrastThreshold,\n    // Takes a background color and returns the text color that maximizes the contrast.\n    getContrastText,\n    // Generate a rich color object.\n    augmentColor,\n    // Used by the functions below to shift a color's luminance by approximately\n    // two indexes within its tonal palette.\n    // E.g., shift from Red 500 to Red 300 or Red 700.\n    tonalOffset\n  }, modes[mode]), other);\n  return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n  textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n  const _ref = typeof typography === 'function' ? typography(palette) : typography,\n    {\n      fontFamily = defaultFontFamily,\n      // The default font size of the Material Specification.\n      fontSize = 14,\n      // px\n      fontWeightLight = 300,\n      fontWeightRegular = 400,\n      fontWeightMedium = 500,\n      fontWeightBold = 700,\n      // Tell MUI what's the font-size on the html element.\n      // 16px is the default font-size used by browsers.\n      htmlFontSize = 16,\n      // Apply the CSS properties to all the variants.\n      allVariants,\n      pxToRem: pxToRem2\n    } = _ref,\n    other = _objectWithoutPropertiesLoose(_ref, _excluded);\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof fontSize !== 'number') {\n      console.error('MUI: `fontSize` is required to be a number.');\n    }\n    if (typeof htmlFontSize !== 'number') {\n      console.error('MUI: `htmlFontSize` is required to be a number.');\n    }\n  }\n  const coef = fontSize / 14;\n  const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n  const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n    fontFamily,\n    fontWeight,\n    fontSize: pxToRem(size),\n    // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n    lineHeight\n  }, fontFamily === defaultFontFamily ? {\n    letterSpacing: `${round(letterSpacing / size)}em`\n  } : {}, casing, allVariants);\n  const variants = {\n    h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n    h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n    h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n    h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n    h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n    h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n    subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n    subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n    body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n    body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n    button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n    caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n    overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n    // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n    inherit: {\n      fontFamily: 'inherit',\n      fontWeight: 'inherit',\n      fontSize: 'inherit',\n      lineHeight: 'inherit',\n      letterSpacing: 'inherit'\n    }\n  };\n  return deepmerge(_extends({\n    htmlFontSize,\n    pxToRem,\n    fontFamily,\n    fontSize,\n    fontWeightLight,\n    fontWeightRegular,\n    fontWeightMedium,\n    fontWeightBold\n  }, variants), other, {\n    clone: false // No need to clone deep\n  });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n  return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n  // This is the most common easing curve.\n  easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n  // Objects enter the screen at full velocity from off-screen and\n  // slowly decelerate to a resting point.\n  easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n  // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n  easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n  // The sharp curve is used by objects that may return to the screen at any time.\n  sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n  shortest: 150,\n  shorter: 200,\n  short: 250,\n  // most basic recommended timing\n  standard: 300,\n  // this is to be used in complex animations\n  complex: 375,\n  // recommended when something is entering screen\n  enteringScreen: 225,\n  // recommended when something is leaving screen\n  leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n  return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n  if (!height) {\n    return 0;\n  }\n  const constant = height / 36;\n\n  // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n  return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n  const mergedEasing = _extends({}, easing, inputTransitions.easing);\n  const mergedDuration = _extends({}, duration, inputTransitions.duration);\n  const create = (props = ['all'], options = {}) => {\n    const {\n        duration: durationOption = mergedDuration.standard,\n        easing: easingOption = mergedEasing.easeInOut,\n        delay = 0\n      } = options,\n      other = _objectWithoutPropertiesLoose(options, _excluded);\n    if (process.env.NODE_ENV !== 'production') {\n      const isString = value => typeof value === 'string';\n      // IE11 support, replace with Number.isNaN\n      // eslint-disable-next-line no-restricted-globals\n      const isNumber = value => !isNaN(parseFloat(value));\n      if (!isString(props) && !Array.isArray(props)) {\n        console.error('MUI: Argument \"props\" must be a string or Array.');\n      }\n      if (!isNumber(durationOption) && !isString(durationOption)) {\n        console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n      }\n      if (!isString(easingOption)) {\n        console.error('MUI: Argument \"easing\" must be a string.');\n      }\n      if (!isNumber(delay) && !isString(delay)) {\n        console.error('MUI: Argument \"delay\" must be a number or a string.');\n      }\n      if (typeof options !== 'object') {\n        console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n      }\n      if (Object.keys(other).length !== 0) {\n        console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n      }\n    }\n    return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n  };\n  return _extends({\n    getAutoHeightDuration,\n    create\n  }, inputTransitions, {\n    easing: mergedEasing,\n    duration: mergedDuration\n  });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n  mobileStepper: 1000,\n  fab: 1050,\n  speedDial: 1050,\n  appBar: 1100,\n  drawer: 1200,\n  modal: 1300,\n  snackbar: 1400,\n  tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n  const {\n      mixins: mixinsInput = {},\n      palette: paletteInput = {},\n      transitions: transitionsInput = {},\n      typography: typographyInput = {}\n    } = options,\n    other = _objectWithoutPropertiesLoose(options, _excluded);\n  if (options.vars &&\n  // The error should throw only for the root theme creation because user is not allowed to use a custom node `vars`.\n  // `generateCssVars` is the closest identifier for checking that the `options` is a result of `extendTheme` with CSS variables so that user can create new theme for nested ThemeProvider.\n  options.generateCssVars === undefined) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n  }\n  const palette = createPalette(paletteInput);\n  const systemTheme = systemCreateTheme(options);\n  let muiTheme = deepmerge(systemTheme, {\n    mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n    palette,\n    // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n    shadows: shadows.slice(),\n    typography: createTypography(palette, typographyInput),\n    transitions: createTransitions(transitionsInput),\n    zIndex: _extends({}, zIndex)\n  });\n  muiTheme = deepmerge(muiTheme, other);\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n    const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n    const traverse = (node, component) => {\n      let key;\n\n      // eslint-disable-next-line guard-for-in, no-restricted-syntax\n      for (key in node) {\n        const child = node[key];\n        if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n          if (process.env.NODE_ENV !== 'production') {\n            const stateClass = generateUtilityClass('', key);\n            console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n              root: {\n                [`&.${stateClass}`]: child\n              }\n            }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n          }\n          // Remove the style to prevent global conflicts.\n          node[key] = {};\n        }\n      }\n    };\n    Object.keys(muiTheme.components).forEach(component => {\n      const styleOverrides = muiTheme.components[component].styleOverrides;\n      if (styleOverrides && component.indexOf('Mui') === 0) {\n        traverse(styleOverrides, component);\n      }\n    });\n  }\n  muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!warnedOnce) {\n      warnedOnce = true;\n      console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n    }\n  }\n  return createTheme(...args);\n}\nexport default createTheme;","export function isUnitless(value) {\n  return String(parseFloat(value)).length === String(value).length;\n}\n\n// Ported from Compass\n// https://github.com/Compass/compass/blob/master/core/stylesheets/compass/typography/_units.scss\n// Emulate the sass function \"unit\"\nexport function getUnit(input) {\n  return String(input).match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n}\n\n// Emulate the sass function \"unitless\"\nexport function toUnitless(length) {\n  return parseFloat(length);\n}\n\n// Convert any CSS <length> or <percentage> value to any another.\n// From https://github.com/KyleAMathews/convert-css-length\nexport function convertLength(baseFontSize) {\n  return (length, toUnit) => {\n    const fromUnit = getUnit(length);\n\n    // Optimize for cases where `from` and `to` units are accidentally the same.\n    if (fromUnit === toUnit) {\n      return length;\n    }\n\n    // Convert input length to pixels.\n    let pxLength = toUnitless(length);\n    if (fromUnit !== 'px') {\n      if (fromUnit === 'em') {\n        pxLength = toUnitless(length) * toUnitless(baseFontSize);\n      } else if (fromUnit === 'rem') {\n        pxLength = toUnitless(length) * toUnitless(baseFontSize);\n      }\n    }\n\n    // Convert length in pixels to the output unit\n    let outputLength = pxLength;\n    if (toUnit !== 'px') {\n      if (toUnit === 'em') {\n        outputLength = pxLength / toUnitless(baseFontSize);\n      } else if (toUnit === 'rem') {\n        outputLength = pxLength / toUnitless(baseFontSize);\n      } else {\n        return length;\n      }\n    }\n    return parseFloat(outputLength.toFixed(5)) + toUnit;\n  };\n}\nexport function alignProperty({\n  size,\n  grid\n}) {\n  const sizeBelow = size - size % grid;\n  const sizeAbove = sizeBelow + grid;\n  return size - sizeBelow < sizeAbove - size ? sizeBelow : sizeAbove;\n}\n\n// fontGrid finds a minimal grid (in rem) for the fontSize values so that the\n// lineHeight falls under a x pixels grid, 4px in the case of Material Design,\n// without changing the relative line height\nexport function fontGrid({\n  lineHeight,\n  pixels,\n  htmlFontSize\n}) {\n  return pixels / (lineHeight * htmlFontSize);\n}\n\n/**\n * generate a responsive version of a given CSS property\n * @example\n * responsiveProperty({\n *   cssProperty: 'fontSize',\n *   min: 15,\n *   max: 20,\n *   unit: 'px',\n *   breakpoints: [300, 600],\n * })\n *\n * // this returns\n *\n * {\n *   fontSize: '15px',\n *   '@media (min-width:300px)': {\n *     fontSize: '17.5px',\n *   },\n *   '@media (min-width:600px)': {\n *     fontSize: '20px',\n *   },\n * }\n * @param {Object} params\n * @param {string} params.cssProperty - The CSS property to be made responsive\n * @param {number} params.min - The smallest value of the CSS property\n * @param {number} params.max - The largest value of the CSS property\n * @param {string} [params.unit] - The unit to be used for the CSS property\n * @param {Array.number} [params.breakpoints]  - An array of breakpoints\n * @param {number} [params.alignStep] - Round scaled value to fall under this grid\n * @returns {Object} responsive styles for {params.cssProperty}\n */\nexport function responsiveProperty({\n  cssProperty,\n  min,\n  max,\n  unit = 'rem',\n  breakpoints = [600, 900, 1200],\n  transform = null\n}) {\n  const output = {\n    [cssProperty]: `${min}${unit}`\n  };\n  const factor = (max - min) / breakpoints[breakpoints.length - 1];\n  breakpoints.forEach(breakpoint => {\n    let value = min + factor * breakpoint;\n    if (transform !== null) {\n      value = transform(value);\n    }\n    output[`@media (min-width:${breakpoint}px)`] = {\n      [cssProperty]: `${Math.round(value * 10000) / 10000}${unit}`\n    };\n  });\n  return output;\n}","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useTheme() {\n  const theme = useThemeSystem(defaultTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue(theme);\n  }\n  return theme[THEME_ID] || theme;\n}","'use client';\n\nimport systemUseThemeProps from '@mui/system/useThemeProps';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useThemeProps({\n  props,\n  name\n}) {\n  return systemUseThemeProps({\n    props,\n    name,\n    defaultTheme,\n    themeId: THEME_ID\n  });\n}","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}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createStyled;\nexports.shouldForwardProp = shouldForwardProp;\nexports.systemDefaultTheme = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\nvar _styledEngine = _interopRequireWildcard(require(\"@mui/styled-engine\"));\nvar _deepmerge = require(\"@mui/utils/deepmerge\");\nvar _capitalize = _interopRequireDefault(require(\"@mui/utils/capitalize\"));\nvar _getDisplayName = _interopRequireDefault(require(\"@mui/utils/getDisplayName\"));\nvar _createTheme = _interopRequireDefault(require(\"./createTheme\"));\nvar _styleFunctionSx = _interopRequireDefault(require(\"./styleFunctionSx\"));\nconst _excluded = [\"ownerState\"],\n  _excluded2 = [\"variants\"],\n  _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction isEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n  return typeof tag === 'string' &&\n  // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nfunction shouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nfunction shallowLayer(serialized, layerName) {\n  if (layerName && serialized && typeof serialized === 'object' && serialized.styles && !serialized.styles.startsWith('@layer') // only add the layer if it is not already there.\n  ) {\n    serialized.styles = `@layer ${layerName}{${String(serialized.styles)}}`;\n  }\n  return serialized;\n}\nconst systemDefaultTheme = exports.systemDefaultTheme = (0, _createTheme.default)();\nconst lowercaseFirstLetter = string => {\n  if (!string) {\n    return string;\n  }\n  return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n  defaultTheme,\n  theme,\n  themeId\n}) {\n  return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n  if (!slot) {\n    return null;\n  }\n  return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref, layerName) {\n  let {\n      ownerState\n    } = _ref,\n    props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);\n  const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle((0, _extends2.default)({\n    ownerState\n  }, props)) : callableStyle;\n  if (Array.isArray(resolvedStylesArg)) {\n    return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, (0, _extends2.default)({\n      ownerState\n    }, props), layerName));\n  }\n  if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n    const {\n        variants = []\n      } = resolvedStylesArg,\n      otherStyles = (0, _objectWithoutPropertiesLoose2.default)(resolvedStylesArg, _excluded2);\n    let result = otherStyles;\n    variants.forEach(variant => {\n      let isMatch = true;\n      if (typeof variant.props === 'function') {\n        isMatch = variant.props((0, _extends2.default)({\n          ownerState\n        }, props, ownerState));\n      } else {\n        Object.keys(variant.props).forEach(key => {\n          if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n            isMatch = false;\n          }\n        });\n      }\n      if (isMatch) {\n        if (!Array.isArray(result)) {\n          result = [result];\n        }\n        const variantStyle = typeof variant.style === 'function' ? variant.style((0, _extends2.default)({\n          ownerState\n        }, props, ownerState)) : variant.style;\n        result.push(layerName ? shallowLayer((0, _styledEngine.internal_serializeStyles)(variantStyle), layerName) : variantStyle);\n      }\n    });\n    return result;\n  }\n  return layerName ? shallowLayer((0, _styledEngine.internal_serializeStyles)(resolvedStylesArg), layerName) : resolvedStylesArg;\n}\nfunction createStyled(input = {}) {\n  const {\n    themeId,\n    defaultTheme = systemDefaultTheme,\n    rootShouldForwardProp = shouldForwardProp,\n    slotShouldForwardProp = shouldForwardProp\n  } = input;\n  const systemSx = props => {\n    return (0, _styleFunctionSx.default)((0, _extends2.default)({}, props, {\n      theme: resolveTheme((0, _extends2.default)({}, props, {\n        defaultTheme,\n        themeId\n      }))\n    }));\n  };\n  systemSx.__mui_systemSx = true;\n  return (tag, inputOptions = {}) => {\n    // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n    (0, _styledEngine.internal_processStyles)(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n    const {\n        name: componentName,\n        slot: componentSlot,\n        skipVariantsResolver: inputSkipVariantsResolver,\n        skipSx: inputSkipSx,\n        // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n        // For more details: https://github.com/mui/material-ui/pull/37908\n        overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n      } = inputOptions,\n      options = (0, _objectWithoutPropertiesLoose2.default)(inputOptions, _excluded3);\n    const layerName = componentName && componentName.startsWith('Mui') || !!componentSlot ? 'components' : 'custom';\n\n    // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n    const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n    const skipSx = inputSkipSx || false;\n    let label;\n    if (process.env.NODE_ENV !== 'production') {\n      if (componentName) {\n        // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n        // For more details: https://github.com/mui/material-ui/pull/37908\n        label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n      }\n    }\n    let shouldForwardPropOption = shouldForwardProp;\n\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    if (componentSlot === 'Root' || componentSlot === 'root') {\n      shouldForwardPropOption = rootShouldForwardProp;\n    } else if (componentSlot) {\n      // any other slot specified\n      shouldForwardPropOption = slotShouldForwardProp;\n    } else if (isStringTag(tag)) {\n      // for string (html) tag, preserve the behavior in emotion & styled-components.\n      shouldForwardPropOption = undefined;\n    }\n    const defaultStyledResolver = (0, _styledEngine.default)(tag, (0, _extends2.default)({\n      shouldForwardProp: shouldForwardPropOption,\n      label\n    }, options));\n    const transformStyleArg = stylesArg => {\n      // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n      // component stays as a function. This condition makes sure that we do not interpolate functions\n      // which are basically components used as a selectors.\n      if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || (0, _deepmerge.isPlainObject)(stylesArg)) {\n        return props => {\n          const theme = resolveTheme({\n            theme: props.theme,\n            defaultTheme,\n            themeId\n          });\n          return processStyleArg(stylesArg, (0, _extends2.default)({}, props, {\n            theme\n          }), theme.modularCssLayers ? layerName : undefined);\n        };\n      }\n      return stylesArg;\n    };\n    const muiStyledResolver = (styleArg, ...expressions) => {\n      let transformedStyleArg = transformStyleArg(styleArg);\n      const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n      if (componentName && overridesResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = resolveTheme((0, _extends2.default)({}, props, {\n            defaultTheme,\n            themeId\n          }));\n          if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n            return null;\n          }\n          const styleOverrides = theme.components[componentName].styleOverrides;\n          const resolvedStyleOverrides = {};\n          // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n          Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n            resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, (0, _extends2.default)({}, props, {\n              theme\n            }), theme.modularCssLayers ? 'theme' : undefined);\n          });\n          return overridesResolver(props, resolvedStyleOverrides);\n        });\n      }\n      if (componentName && !skipVariantsResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          var _theme$components;\n          const theme = resolveTheme((0, _extends2.default)({}, props, {\n            defaultTheme,\n            themeId\n          }));\n          const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n          return processStyleArg({\n            variants: themeVariants\n          }, (0, _extends2.default)({}, props, {\n            theme\n          }), theme.modularCssLayers ? 'theme' : undefined);\n        });\n      }\n      if (!skipSx) {\n        expressionsWithDefaultTheme.push(systemSx);\n      }\n      const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n      if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n        const placeholders = new Array(numOfCustomFnsApplied).fill('');\n        // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n        transformedStyleArg = [...styleArg, ...placeholders];\n        transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n      }\n      const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n      if (process.env.NODE_ENV !== 'production') {\n        let displayName;\n        if (componentName) {\n          displayName = `${componentName}${(0, _capitalize.default)(componentSlot || '')}`;\n        }\n        if (displayName === undefined) {\n          displayName = `Styled(${(0, _getDisplayName.default)(tag)})`;\n        }\n        Component.displayName = displayName;\n      }\n      if (tag.muiName) {\n        Component.muiName = tag.muiName;\n      }\n      return Component;\n    };\n    if (defaultStyledResolver.withConfig) {\n      muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n    }\n    return muiStyledResolver;\n  };\n}","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","import slotShouldForwardProp from './slotShouldForwardProp';\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nimport rootShouldForwardProp from './rootShouldForwardProp';\nexport { default as slotShouldForwardProp } from './slotShouldForwardProp';\nexport { default as rootShouldForwardProp } from './rootShouldForwardProp';\nconst styled = createStyled({\n  themeId: THEME_ID,\n  defaultTheme,\n  rootShouldForwardProp\n});\nexport default styled;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"theme\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as SystemThemeProvider } from '@mui/system';\nimport THEME_ID from './identifier';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function ThemeProvider(_ref) {\n  let {\n      theme: themeInput\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const scopedTheme = themeInput[THEME_ID];\n  let finalTheme = scopedTheme || themeInput;\n  if (typeof themeInput !== 'function') {\n    if (scopedTheme && !scopedTheme.vars) {\n      finalTheme = _extends({}, scopedTheme, {\n        vars: null\n      });\n    } else if (themeInput && !themeInput.vars) {\n      finalTheme = _extends({}, themeInput, {\n        vars: null\n      });\n    }\n  }\n  return /*#__PURE__*/_jsx(SystemThemeProvider, _extends({}, props, {\n    themeId: scopedTheme ? THEME_ID : undefined,\n    theme: finalTheme\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;","// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nconst getOverlayAlpha = elevation => {\n  let alphaValue;\n  if (elevation < 1) {\n    alphaValue = 5.11916 * elevation ** 2;\n  } else {\n    alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n  }\n  return (alphaValue / 100).toFixed(2);\n};\nexport default getOverlayAlpha;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport SystemDefaultPropsProvider, { useDefaultProps as useSystemDefaultProps } from '@mui/system/DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction DefaultPropsProvider(props) {\n  return /*#__PURE__*/_jsx(SystemDefaultPropsProvider, _extends({}, props));\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  value: PropTypes.object.isRequired\n} : void 0;\nexport default DefaultPropsProvider;\nexport function useDefaultProps(params) {\n  return useSystemDefaultProps(params);\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n  return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    fontSize,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n  };\n  return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n  name: 'MuiSvgIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette2, _palette3;\n  return {\n    userSelect: 'none',\n    width: '1em',\n    height: '1em',\n    display: 'inline-block',\n    // the <svg> will define the property that has `currentColor`\n    // for example heroicons uses fill=\"none\" and stroke=\"currentColor\"\n    fill: ownerState.hasSvgAsChild ? undefined : 'currentColor',\n    flexShrink: 0,\n    transition: (_theme$transitions = theme.transitions) == null || (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n      duration: (_theme$transitions2 = theme.transitions) == null || (_theme$transitions2 = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2.shorter\n    }),\n    fontSize: {\n      inherit: 'inherit',\n      small: ((_theme$typography = theme.typography) == null || (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n      medium: ((_theme$typography2 = theme.typography) == null || (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n      large: ((_theme$typography3 = theme.typography) == null || (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n    }[ownerState.fontSize],\n    // TODO v5 deprecate, v6 remove for sx\n    color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null || (_palette = _palette[ownerState.color]) == null ? void 0 : _palette.main) != null ? _palette$ownerState$c : {\n      action: (_palette2 = (theme.vars || theme).palette) == null || (_palette2 = _palette2.action) == null ? void 0 : _palette2.active,\n      disabled: (_palette3 = (theme.vars || theme).palette) == null || (_palette3 = _palette3.action) == null ? void 0 : _palette3.disabled,\n      inherit: undefined\n    }[ownerState.color]\n  };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSvgIcon'\n  });\n  const {\n      children,\n      className,\n      color = 'inherit',\n      component = 'svg',\n      fontSize = 'medium',\n      htmlColor,\n      inheritViewBox = false,\n      titleAccess,\n      viewBox = '0 0 24 24'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    fontSize,\n    instanceFontSize: inProps.fontSize,\n    inheritViewBox,\n    viewBox,\n    hasSvgAsChild\n  });\n  const more = {};\n  if (!inheritViewBox) {\n    more.viewBox = viewBox;\n  }\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    focusable: \"false\",\n    color: htmlColor,\n    \"aria-hidden\": titleAccess ? undefined : true,\n    role: titleAccess ? 'img' : undefined,\n    ref: ref\n  }, more, other, hasSvgAsChild && children.props, {\n    ownerState: ownerState,\n    children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n      children: titleAccess\n    }) : null]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Node passed into the SVG element.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n   * @default 'inherit'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n   * @default 'medium'\n   */\n  fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n  /**\n   * Applies a color attribute to the SVG element.\n   */\n  htmlColor: PropTypes.string,\n  /**\n   * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n   * prop will be ignored.\n   * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n   * `component`'s viewBox to the root node.\n   * @default false\n   */\n  inheritViewBox: PropTypes.bool,\n  /**\n   * The shape-rendering attribute. The behavior of the different options is described on the\n   * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n   * If you are having issues with blurry icons you should investigate this prop.\n   */\n  shapeRendering: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Provides a human-readable title for the element that contains it.\n   * https://www.w3.org/TR/SVG-access/#Equivalent\n   */\n  titleAccess: PropTypes.string,\n  /**\n   * Allows you to redefine what the coordinates without units mean inside an SVG element.\n   * For example, if the SVG element is 500 (width) by 200 (height),\n   * and you pass viewBox=\"0 0 50 20\",\n   * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n   * to bottom right (50,20) and each unit will be worth 10px.\n   * @default '0 0 24 24'\n   */\n  viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n  function Component(props, ref) {\n    return /*#__PURE__*/_jsx(SvgIcon, _extends({\n      \"data-testid\": `${displayName}Icon`,\n      ref: ref\n    }, props, {\n      children: path\n    }));\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // Need to set `displayName` on the inner component for React.memo.\n    // React prior to 16.14 ignores `displayName` on the wrapper.\n    Component.displayName = `${displayName}Icon`;\n  }\n  Component.muiName = SvgIcon.muiName;\n  return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","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 _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","/**\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;","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 };","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && isValidElement(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return cloneElement(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!isValidElement(child)) return;\n    var hasPrev = (key in prevChildMapping);\n    var hasNext = (key in nextChildMapping);\n    var prevChild = prevChildMapping[key];\n    var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = cloneElement(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>`  does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      contextValue: {\n        isMounting: true\n      },\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.mounted = true;\n    this.setState({\n      contextValue: {\n        isMounting: false\n      }\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  } // node is `undefined` when user provided `nodeRef` prop\n  ;\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = getChildMapping(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var contextValue = this.state.contextValue;\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n        value: contextValue\n      }, children);\n    }\n\n    return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n      value: contextValue\n    }, /*#__PURE__*/React.createElement(Component, props, children));\n  };\n\n  return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: PropTypes.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: PropTypes.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n  var _style$transitionDura, _style$transitionTimi;\n  const {\n    timeout,\n    easing,\n    style = {}\n  } = props;\n  return {\n    duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n    easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n    delay: style.transitionDelay\n  };\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCollapseUtilityClass(slot) {\n  return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"addEndListener\", \"children\", \"className\", \"collapsedSize\", \"component\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"orientation\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { duration } from '../styles/createTransitions';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nimport { getCollapseUtilityClass } from './collapseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    orientation,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `${orientation}`],\n    entered: ['entered'],\n    hidden: ['hidden'],\n    wrapper: ['wrapper', `${orientation}`],\n    wrapperInner: ['wrapperInner', `${orientation}`]\n  };\n  return composeClasses(slots, getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  height: 0,\n  overflow: 'hidden',\n  transition: theme.transitions.create('height')\n}, ownerState.orientation === 'horizontal' && {\n  height: 'auto',\n  width: 0,\n  transition: theme.transitions.create('width')\n}, ownerState.state === 'entered' && _extends({\n  height: 'auto',\n  overflow: 'visible'\n}, ownerState.orientation === 'horizontal' && {\n  width: 'auto'\n}), ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && {\n  visibility: 'hidden'\n}));\nconst CollapseWrapper = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'Wrapper',\n  overridesResolver: (props, styles) => styles.wrapper\n})(({\n  ownerState\n}) => _extends({\n  // Hack to get children with a negative margin to not falsify the height computation.\n  display: 'flex',\n  width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n  width: 'auto',\n  height: '100%'\n}));\nconst CollapseWrapperInner = styled('div', {\n  name: 'MuiCollapse',\n  slot: 'WrapperInner',\n  overridesResolver: (props, styles) => styles.wrapperInner\n})(({\n  ownerState\n}) => _extends({\n  width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n  width: 'auto',\n  height: '100%'\n}));\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCollapse'\n  });\n  const {\n      addEndListener,\n      children,\n      className,\n      collapsedSize: collapsedSizeProp = '0px',\n      component,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      orientation = 'vertical',\n      style,\n      timeout = duration.standard,\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = Transition\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    orientation,\n    collapsedSize: collapsedSizeProp\n  });\n  const classes = useUtilityClasses(ownerState);\n  const theme = useTheme();\n  const timer = useTimeout();\n  const wrapperRef = React.useRef(null);\n  const autoTransitionDuration = React.useRef();\n  const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n  const isHorizontal = orientation === 'horizontal';\n  const size = isHorizontal ? 'width' : 'height';\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(ref, nodeRef);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    if (wrapperRef.current && isHorizontal) {\n      // Set absolute position to get the size of collapsed content\n      wrapperRef.current.style.position = 'absolute';\n    }\n    node.style[size] = collapsedSize;\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n    const wrapperSize = getWrapperSize();\n    if (wrapperRef.current && isHorizontal) {\n      // After the size is read reset the position back to default\n      wrapperRef.current.style.position = '';\n    }\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    if (timeout === 'auto') {\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = `${wrapperSize}px`;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onEntering) {\n      onEntering(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n    node.style[size] = 'auto';\n    if (onEntered) {\n      onEntered(node, isAppearing);\n    }\n  });\n  const handleExit = normalizedTransitionCallback(node => {\n    node.style[size] = `${getWrapperSize()}px`;\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleExiting = normalizedTransitionCallback(node => {\n    const wrapperSize = getWrapperSize();\n    const {\n      duration: transitionDuration,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    if (timeout === 'auto') {\n      // TODO: rename getAutoHeightDuration to something more generic (width support)\n      // Actually it just calculates animation duration based on size\n      const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n      node.style.transitionDuration = `${duration2}ms`;\n      autoTransitionDuration.current = duration2;\n    } else {\n      node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n    }\n    node.style[size] = collapsedSize;\n    node.style.transitionTimingFunction = transitionTimingFunction;\n    if (onExiting) {\n      onExiting(node);\n    }\n  });\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.start(autoTransitionDuration.current || 0, next);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    in: inProp,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    nodeRef: nodeRef,\n    timeout: timeout === 'auto' ? null : timeout\n  }, other, {\n    children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, _extends({\n      as: component,\n      className: clsx(classes.root, className, {\n        'entered': classes.entered,\n        'exited': !inProp && collapsedSize === '0px' && classes.hidden\n      }[state]),\n      style: _extends({\n        [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize\n      }, style),\n      ref: handleRef\n    }, childProps, {\n      // `ownerState` is set after `childProps` to override any existing `ownerState` property in `childProps`\n      // that might have been forwarded from the Transition component.\n      ownerState: _extends({}, ownerState, {\n        state\n      }),\n      children: /*#__PURE__*/_jsx(CollapseWrapper, {\n        ownerState: _extends({}, ownerState, {\n          state\n        }),\n        className: classes.wrapper,\n        ref: wrapperRef,\n        children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n          ownerState: _extends({}, ownerState, {\n            state\n          }),\n          className: classes.wrapperInner,\n          children: children\n        })\n      })\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * The content node to be collapsed.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The width (horizontal) or height (vertical) of the container when collapsed.\n   * @default '0px'\n   */\n  collapsedSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * The transition orientation.\n   * @default 'vertical'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default duration.standard\n   */\n  timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default Collapse;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPaperUtilityClass(slot) {\n  return generateUtilityClass('MuiPaper', slot);\n}\nconst paperClasses = generateUtilityClasses('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);\nexport default paperClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"elevation\", \"square\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled from '../styles/styled';\nimport getOverlayAlpha from '../styles/getOverlayAlpha';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport useTheme from '../styles/useTheme';\nimport { getPaperUtilityClass } from './paperClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    square,\n    elevation,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, !square && 'rounded', variant === 'elevation' && `elevation${elevation}`]\n  };\n  return composeClasses(slots, getPaperUtilityClass, classes);\n};\nconst PaperRoot = styled('div', {\n  name: 'MuiPaper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles[`elevation${ownerState.elevation}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$vars$overlays;\n  return _extends({\n    backgroundColor: (theme.vars || theme).palette.background.paper,\n    color: (theme.vars || theme).palette.text.primary,\n    transition: theme.transitions.create('box-shadow')\n  }, !ownerState.square && {\n    borderRadius: theme.shape.borderRadius\n  }, ownerState.variant === 'outlined' && {\n    border: `1px solid ${(theme.vars || theme).palette.divider}`\n  }, ownerState.variant === 'elevation' && _extends({\n    boxShadow: (theme.vars || theme).shadows[ownerState.elevation]\n  }, !theme.vars && theme.palette.mode === 'dark' && {\n    backgroundImage: `linear-gradient(${alpha('#fff', getOverlayAlpha(ownerState.elevation))}, ${alpha('#fff', getOverlayAlpha(ownerState.elevation))})`\n  }, theme.vars && {\n    backgroundImage: (_theme$vars$overlays = theme.vars.overlays) == null ? void 0 : _theme$vars$overlays[ownerState.elevation]\n  }));\n});\nconst Paper = /*#__PURE__*/React.forwardRef(function Paper(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiPaper'\n  });\n  const {\n      className,\n      component = 'div',\n      elevation = 1,\n      square = false,\n      variant = 'elevation'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component,\n    elevation,\n    square,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const theme = useTheme();\n    if (theme.shadows[elevation] === undefined) {\n      console.error([`MUI: The elevation provided <Paper elevation={${elevation}}> is not available in the theme.`, `Please make sure that \\`theme.shadows[${elevation}]\\` is defined.`].join('\\n'));\n    }\n  }\n  return /*#__PURE__*/_jsx(PaperRoot, _extends({\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Shadow depth, corresponds to `dp` in the spec.\n   * It accepts values between 0 and 24 inclusive.\n   * @default 1\n   */\n  elevation: chainPropTypes(integerPropType, props => {\n    const {\n      elevation,\n      variant\n    } = props;\n    if (elevation > 0 && variant === 'outlined') {\n      return new Error(`MUI: Combining \\`elevation={${elevation}}\\` with \\`variant=\"${variant}\"\\` has no effect. Either use \\`elevation={0}\\` or use a different \\`variant\\`.`);\n    }\n    return null;\n  }),\n  /**\n   * If `true`, rounded corners are disabled.\n   * @default false\n   */\n  square: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'elevation'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['elevation', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Paper;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"elementType\", \"ownerState\", \"externalForwardedProps\", \"getSlotOwnerState\", \"internalForwardedProps\"],\n  _excluded2 = [\"component\", \"slots\", \"slotProps\"],\n  _excluded3 = [\"component\"];\nimport useForkRef from '@mui/utils/useForkRef';\nimport appendOwnerState from '@mui/utils/appendOwnerState';\nimport resolveComponentProps from '@mui/utils/resolveComponentProps';\nimport mergeSlotProps from '@mui/utils/mergeSlotProps';\n/**\n * An internal function to create a Material UI slot.\n *\n * This is an advanced version of Base UI `useSlotProps` because Material UI allows leaf component to be customized via `component` prop\n * while Base UI does not need to support leaf component customization.\n *\n * @param {string} name: name of the slot\n * @param {object} parameters\n * @returns {[Slot, slotProps]} The slot's React component and the slot's props\n *\n * Note: the returned slot's props\n * - will never contain `component` prop.\n * - might contain `as` prop.\n */\nexport default function useSlot(\n/**\n * The slot's name. All Material UI components should have `root` slot.\n *\n * If the name is `root`, the logic behaves differently from other slots,\n * e.g. the `externalForwardedProps` are spread to `root` slot but not other slots.\n */\nname, parameters) {\n  const {\n      className,\n      elementType: initialElementType,\n      ownerState,\n      externalForwardedProps,\n      getSlotOwnerState,\n      internalForwardedProps\n    } = parameters,\n    useSlotPropsParams = _objectWithoutPropertiesLoose(parameters, _excluded);\n  const {\n      component: rootComponent,\n      slots = {\n        [name]: undefined\n      },\n      slotProps = {\n        [name]: undefined\n      }\n    } = externalForwardedProps,\n    other = _objectWithoutPropertiesLoose(externalForwardedProps, _excluded2);\n  const elementType = slots[name] || initialElementType;\n\n  // `slotProps[name]` can be a callback that receives the component's ownerState.\n  // `resolvedComponentsProps` is always a plain object.\n  const resolvedComponentsProps = resolveComponentProps(slotProps[name], ownerState);\n  const _mergeSlotProps = mergeSlotProps(_extends({\n      className\n    }, useSlotPropsParams, {\n      externalForwardedProps: name === 'root' ? other : undefined,\n      externalSlotProps: resolvedComponentsProps\n    })),\n    {\n      props: {\n        component: slotComponent\n      },\n      internalRef\n    } = _mergeSlotProps,\n    mergedProps = _objectWithoutPropertiesLoose(_mergeSlotProps.props, _excluded3);\n  const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, parameters.ref);\n  const slotOwnerState = getSlotOwnerState ? getSlotOwnerState(mergedProps) : {};\n  const finalOwnerState = _extends({}, ownerState, slotOwnerState);\n  const LeafComponent = name === 'root' ? slotComponent || rootComponent : slotComponent;\n  const props = appendOwnerState(elementType, _extends({}, name === 'root' && !rootComponent && !slots[name] && internalForwardedProps, name !== 'root' && !slots[name] && internalForwardedProps, mergedProps, LeafComponent && {\n    as: LeafComponent\n  }, {\n    ref\n  }), finalOwnerState);\n  Object.keys(slotOwnerState).forEach(propName => {\n    delete props[propName];\n  });\n  return [elementType, props];\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n  const {\n    className,\n    classes,\n    pulsate = false,\n    rippleX,\n    rippleY,\n    rippleSize,\n    in: inProp,\n    onExited,\n    timeout\n  } = props;\n  const [leaving, setLeaving] = React.useState(false);\n  const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n  const rippleStyles = {\n    width: rippleSize,\n    height: rippleSize,\n    top: -(rippleSize / 2) + rippleY,\n    left: -(rippleSize / 2) + rippleX\n  };\n  const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n  if (!inProp && !leaving) {\n    setLeaving(true);\n  }\n  React.useEffect(() => {\n    if (!inProp && onExited != null) {\n      // react-transition-group#onExited\n      const timeoutId = setTimeout(onExited, timeout);\n      return () => {\n        clearTimeout(timeoutId);\n      };\n    }\n    return undefined;\n  }, [onExited, inProp, timeout]);\n  return /*#__PURE__*/_jsx(\"span\", {\n    className: rippleClassName,\n    style: rippleStyles,\n    children: /*#__PURE__*/_jsx(\"span\", {\n      className: childClassName\n    })\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object.isRequired,\n  className: PropTypes.string,\n  /**\n   * @ignore - injected from TransitionGroup\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore - injected from TransitionGroup\n   */\n  onExited: PropTypes.func,\n  /**\n   * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n   */\n  pulsate: PropTypes.bool,\n  /**\n   * Diameter of the ripple.\n   */\n  rippleSize: PropTypes.number,\n  /**\n   * Horizontal position of the ripple center.\n   */\n  rippleX: PropTypes.number,\n  /**\n   * Vertical position of the ripple center.\n   */\n  rippleY: PropTypes.number,\n  /**\n   * exit delay\n   */\n  timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n  return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport useTimeout from '@mui/utils/useTimeout';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n  0% {\n    transform: scale(0);\n    opacity: 0.1;\n  }\n\n  100% {\n    transform: scale(1);\n    opacity: 0.3;\n  }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n  0% {\n    opacity: 1;\n  }\n\n  100% {\n    opacity: 0;\n  }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n  0% {\n    transform: scale(1);\n  }\n\n  50% {\n    transform: scale(0.92);\n  }\n\n  100% {\n    transform: scale(1);\n  }\n`));\nexport const TouchRippleRoot = styled('span', {\n  name: 'MuiTouchRipple',\n  slot: 'Root'\n})({\n  overflow: 'hidden',\n  pointerEvents: 'none',\n  position: 'absolute',\n  zIndex: 0,\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0,\n  borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n  name: 'MuiTouchRipple',\n  slot: 'Ripple'\n})(_t4 || (_t4 = _`\n  opacity: 0;\n  position: absolute;\n\n  &.${0} {\n    opacity: 0.3;\n    transform: scale(1);\n    animation-name: ${0};\n    animation-duration: ${0}ms;\n    animation-timing-function: ${0};\n  }\n\n  &.${0} {\n    animation-duration: ${0}ms;\n  }\n\n  & .${0} {\n    opacity: 1;\n    display: block;\n    width: 100%;\n    height: 100%;\n    border-radius: 50%;\n    background-color: currentColor;\n  }\n\n  & .${0} {\n    opacity: 0;\n    animation-name: ${0};\n    animation-duration: ${0}ms;\n    animation-timing-function: ${0};\n  }\n\n  & .${0} {\n    position: absolute;\n    /* @noflip */\n    left: 0px;\n    top: 0;\n    animation-name: ${0};\n    animation-duration: 2500ms;\n    animation-timing-function: ${0};\n    animation-iteration-count: infinite;\n    animation-delay: 200ms;\n  }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n  theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n  theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n  theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n  theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTouchRipple'\n  });\n  const {\n      center: centerProp = false,\n      classes = {},\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [ripples, setRipples] = React.useState([]);\n  const nextKey = React.useRef(0);\n  const rippleCallback = React.useRef(null);\n  React.useEffect(() => {\n    if (rippleCallback.current) {\n      rippleCallback.current();\n      rippleCallback.current = null;\n    }\n  }, [ripples]);\n\n  // Used to filter out mouse emulated events on mobile.\n  const ignoringMouseDown = React.useRef(false);\n  // We use a timer in order to only show the ripples for touch \"click\" like events.\n  // We don't want to display the ripple for touch scroll events.\n  const startTimer = useTimeout();\n\n  // This is the hook called once the previous timeout is ready.\n  const startTimerCommit = React.useRef(null);\n  const container = React.useRef(null);\n  const startCommit = React.useCallback(params => {\n    const {\n      pulsate,\n      rippleX,\n      rippleY,\n      rippleSize,\n      cb\n    } = params;\n    setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n      classes: {\n        ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n        rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n        ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n        child: clsx(classes.child, touchRippleClasses.child),\n        childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n        childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n      },\n      timeout: DURATION,\n      pulsate: pulsate,\n      rippleX: rippleX,\n      rippleY: rippleY,\n      rippleSize: rippleSize\n    }, nextKey.current)]);\n    nextKey.current += 1;\n    rippleCallback.current = cb;\n  }, [classes]);\n  const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n    const {\n      pulsate = false,\n      center = centerProp || options.pulsate,\n      fakeElement = false // For test purposes\n    } = options;\n    if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n      ignoringMouseDown.current = false;\n      return;\n    }\n    if ((event == null ? void 0 : event.type) === 'touchstart') {\n      ignoringMouseDown.current = true;\n    }\n    const element = fakeElement ? null : container.current;\n    const rect = element ? element.getBoundingClientRect() : {\n      width: 0,\n      height: 0,\n      left: 0,\n      top: 0\n    };\n\n    // Get the size of the ripple\n    let rippleX;\n    let rippleY;\n    let rippleSize;\n    if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n      rippleX = Math.round(rect.width / 2);\n      rippleY = Math.round(rect.height / 2);\n    } else {\n      const {\n        clientX,\n        clientY\n      } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n      rippleX = Math.round(clientX - rect.left);\n      rippleY = Math.round(clientY - rect.top);\n    }\n    if (center) {\n      rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n      // For some reason the animation is broken on Mobile Chrome if the size is even.\n      if (rippleSize % 2 === 0) {\n        rippleSize += 1;\n      }\n    } else {\n      const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n      const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n      rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n    }\n\n    // Touche devices\n    if (event != null && event.touches) {\n      // check that this isn't another touchstart due to multitouch\n      // otherwise we will only clear a single timer when unmounting while two\n      // are running\n      if (startTimerCommit.current === null) {\n        // Prepare the ripple effect.\n        startTimerCommit.current = () => {\n          startCommit({\n            pulsate,\n            rippleX,\n            rippleY,\n            rippleSize,\n            cb\n          });\n        };\n        // Delay the execution of the ripple effect.\n        // We have to make a tradeoff with this delay value.\n        startTimer.start(DELAY_RIPPLE, () => {\n          if (startTimerCommit.current) {\n            startTimerCommit.current();\n            startTimerCommit.current = null;\n          }\n        });\n      }\n    } else {\n      startCommit({\n        pulsate,\n        rippleX,\n        rippleY,\n        rippleSize,\n        cb\n      });\n    }\n  }, [centerProp, startCommit, startTimer]);\n  const pulsate = React.useCallback(() => {\n    start({}, {\n      pulsate: true\n    });\n  }, [start]);\n  const stop = React.useCallback((event, cb) => {\n    startTimer.clear();\n\n    // The touch interaction occurs too quickly.\n    // We still want to show ripple effect.\n    if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n      startTimerCommit.current();\n      startTimerCommit.current = null;\n      startTimer.start(0, () => {\n        stop(event, cb);\n      });\n      return;\n    }\n    startTimerCommit.current = null;\n    setRipples(oldRipples => {\n      if (oldRipples.length > 0) {\n        return oldRipples.slice(1);\n      }\n      return oldRipples;\n    });\n    rippleCallback.current = cb;\n  }, [startTimer]);\n  React.useImperativeHandle(ref, () => ({\n    pulsate,\n    start,\n    stop\n  }), [pulsate, start, stop]);\n  return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n    className: clsx(touchRippleClasses.root, classes.root, className),\n    ref: container\n  }, other, {\n    children: /*#__PURE__*/_jsx(TransitionGroup, {\n      component: null,\n      exit: true,\n      children: ripples\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n  /**\n   * If `true`, the ripple starts at the center of the component\n   * rather than at the point of interaction.\n   */\n  center: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n  return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    focusVisible,\n    focusVisibleClassName,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n  };\n  const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n  if (focusVisible && focusVisibleClassName) {\n    composedClasses.root += ` ${focusVisibleClassName}`;\n  }\n  return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n  name: 'MuiButtonBase',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'inline-flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  position: 'relative',\n  boxSizing: 'border-box',\n  WebkitTapHighlightColor: 'transparent',\n  backgroundColor: 'transparent',\n  // Reset default value\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  border: 0,\n  margin: 0,\n  // Remove the margin in Safari\n  borderRadius: 0,\n  padding: 0,\n  // Remove the padding in Firefox\n  cursor: 'pointer',\n  userSelect: 'none',\n  verticalAlign: 'middle',\n  MozAppearance: 'none',\n  // Reset\n  WebkitAppearance: 'none',\n  // Reset\n  textDecoration: 'none',\n  // So we take precedent over the style of a native <a /> element.\n  color: 'inherit',\n  '&::-moz-focus-inner': {\n    borderStyle: 'none' // Remove Firefox dotted outline.\n  },\n  [`&.${buttonBaseClasses.disabled}`]: {\n    pointerEvents: 'none',\n    // Disable link interactions\n    cursor: 'default'\n  },\n  '@media print': {\n    colorAdjust: 'exact'\n  }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiButtonBase'\n  });\n  const {\n      action,\n      centerRipple = false,\n      children,\n      className,\n      component = 'button',\n      disabled = false,\n      disableRipple = false,\n      disableTouchRipple = false,\n      focusRipple = false,\n      LinkComponent = 'a',\n      onBlur,\n      onClick,\n      onContextMenu,\n      onDragLeave,\n      onFocus,\n      onFocusVisible,\n      onKeyDown,\n      onKeyUp,\n      onMouseDown,\n      onMouseLeave,\n      onMouseUp,\n      onTouchEnd,\n      onTouchMove,\n      onTouchStart,\n      tabIndex = 0,\n      TouchRippleProps,\n      touchRippleRef,\n      type\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const buttonRef = React.useRef(null);\n  const rippleRef = React.useRef(null);\n  const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n  const {\n    isFocusVisibleRef,\n    onFocus: handleFocusVisible,\n    onBlur: handleBlurVisible,\n    ref: focusVisibleRef\n  } = useIsFocusVisible();\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  if (disabled && focusVisible) {\n    setFocusVisible(false);\n  }\n  React.useImperativeHandle(action, () => ({\n    focusVisible: () => {\n      setFocusVisible(true);\n      buttonRef.current.focus();\n    }\n  }), []);\n  const [mountedState, setMountedState] = React.useState(false);\n  React.useEffect(() => {\n    setMountedState(true);\n  }, []);\n  const enableTouchRipple = mountedState && !disableRipple && !disabled;\n  React.useEffect(() => {\n    if (focusVisible && focusRipple && !disableRipple && mountedState) {\n      rippleRef.current.pulsate();\n    }\n  }, [disableRipple, focusRipple, focusVisible, mountedState]);\n  function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n    return useEventCallback(event => {\n      if (eventCallback) {\n        eventCallback(event);\n      }\n      const ignore = skipRippleAction;\n      if (!ignore && rippleRef.current) {\n        rippleRef.current[rippleAction](event);\n      }\n      return true;\n    });\n  }\n  const handleMouseDown = useRippleHandler('start', onMouseDown);\n  const handleContextMenu = useRippleHandler('stop', onContextMenu);\n  const handleDragLeave = useRippleHandler('stop', onDragLeave);\n  const handleMouseUp = useRippleHandler('stop', onMouseUp);\n  const handleMouseLeave = useRippleHandler('stop', event => {\n    if (focusVisible) {\n      event.preventDefault();\n    }\n    if (onMouseLeave) {\n      onMouseLeave(event);\n    }\n  });\n  const handleTouchStart = useRippleHandler('start', onTouchStart);\n  const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n  const handleTouchMove = useRippleHandler('stop', onTouchMove);\n  const handleBlur = useRippleHandler('stop', event => {\n    handleBlurVisible(event);\n    if (isFocusVisibleRef.current === false) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  }, false);\n  const handleFocus = useEventCallback(event => {\n    // Fix for https://github.com/facebook/react/issues/7769\n    if (!buttonRef.current) {\n      buttonRef.current = event.currentTarget;\n    }\n    handleFocusVisible(event);\n    if (isFocusVisibleRef.current === true) {\n      setFocusVisible(true);\n      if (onFocusVisible) {\n        onFocusVisible(event);\n      }\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  });\n  const isNonNativeButton = () => {\n    const button = buttonRef.current;\n    return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n  };\n\n  /**\n   * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n   */\n  const keydownRef = React.useRef(false);\n  const handleKeyDown = useEventCallback(event => {\n    // Check if key is already down to avoid repeats being counted as multiple activations\n    if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n      keydownRef.current = true;\n      rippleRef.current.stop(event, () => {\n        rippleRef.current.start(event);\n      });\n    }\n    if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n      event.preventDefault();\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n\n    // Keyboard accessibility for non interactive elements\n    if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n      event.preventDefault();\n      if (onClick) {\n        onClick(event);\n      }\n    }\n  });\n  const handleKeyUp = useEventCallback(event => {\n    // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n    // https://codesandbox.io/p/sandbox/button-keyup-preventdefault-dn7f0\n    if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n      keydownRef.current = false;\n      rippleRef.current.stop(event, () => {\n        rippleRef.current.pulsate(event);\n      });\n    }\n    if (onKeyUp) {\n      onKeyUp(event);\n    }\n\n    // Keyboard accessibility for non interactive elements\n    if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n      onClick(event);\n    }\n  });\n  let ComponentProp = component;\n  if (ComponentProp === 'button' && (other.href || other.to)) {\n    ComponentProp = LinkComponent;\n  }\n  const buttonProps = {};\n  if (ComponentProp === 'button') {\n    buttonProps.type = type === undefined ? 'button' : type;\n    buttonProps.disabled = disabled;\n  } else {\n    if (!other.href && !other.to) {\n      buttonProps.role = 'button';\n    }\n    if (disabled) {\n      buttonProps['aria-disabled'] = disabled;\n    }\n  }\n  const handleRef = useForkRef(ref, focusVisibleRef, buttonRef);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (enableTouchRipple && !rippleRef.current) {\n        console.error(['MUI: The `component` prop provided to ButtonBase is invalid.', 'Please make sure the children prop is rendered in this custom component.'].join('\\n'));\n      }\n    }, [enableTouchRipple]);\n  }\n  const ownerState = _extends({}, props, {\n    centerRipple,\n    component,\n    disabled,\n    disableRipple,\n    disableTouchRipple,\n    focusRipple,\n    tabIndex,\n    focusVisible\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(ButtonBaseRoot, _extends({\n    as: ComponentProp,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    onBlur: handleBlur,\n    onClick: onClick,\n    onContextMenu: handleContextMenu,\n    onFocus: handleFocus,\n    onKeyDown: handleKeyDown,\n    onKeyUp: handleKeyUp,\n    onMouseDown: handleMouseDown,\n    onMouseLeave: handleMouseLeave,\n    onMouseUp: handleMouseUp,\n    onDragLeave: handleDragLeave,\n    onTouchEnd: handleTouchEnd,\n    onTouchMove: handleTouchMove,\n    onTouchStart: handleTouchStart,\n    ref: handleRef,\n    tabIndex: disabled ? -1 : tabIndex,\n    type: type\n  }, buttonProps, other, {\n    children: [children, enableTouchRipple ?\n    /*#__PURE__*/\n    /* TouchRipple is only needed client-side, x2 boost on the server. */\n    _jsx(TouchRipple, _extends({\n      ref: handleRippleRef,\n      center: centerRipple\n    }, TouchRippleProps)) : null]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonBase.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A ref for imperative actions.\n   * It currently only supports `focusVisible()` action.\n   */\n  action: refType,\n  /**\n   * If `true`, the ripples are centered.\n   * They won't start at the cursor interaction position.\n   * @default false\n   */\n  centerRipple: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If `true`, the touch ripple effect is disabled.\n   * @default false\n   */\n  disableTouchRipple: PropTypes.bool,\n  /**\n   * If `true`, the base button will have a keyboard focus ripple.\n   * @default false\n   */\n  focusRipple: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  href: PropTypes /* @typescript-to-proptypes-ignore */.any,\n  /**\n   * The component used to render a link when the `href` prop is provided.\n   * @default 'a'\n   */\n  LinkComponent: PropTypes.elementType,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onContextMenu: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onDragLeave: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the component is focused with a keyboard.\n   * We trigger a `onFocus` callback too.\n   */\n  onFocusVisible: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseLeave: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseUp: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchEnd: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchMove: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchStart: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @default 0\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * Props applied to the `TouchRipple` element.\n   */\n  TouchRippleProps: PropTypes.object,\n  /**\n   * A ref that points to the `TouchRipple` element.\n   */\n  touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      pulsate: PropTypes.func.isRequired,\n      start: PropTypes.func.isRequired,\n      stop: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string])\n} : void 0;\nexport default ButtonBase;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAlertUtilityClass(slot) {\n  return generateUtilityClass('MuiAlert', slot);\n}\nconst alertClasses = generateUtilityClasses('MuiAlert', ['root', 'action', 'icon', 'message', 'filled', 'colorSuccess', 'colorInfo', 'colorWarning', 'colorError', 'filledSuccess', 'filledInfo', 'filledWarning', 'filledError', 'outlined', 'outlinedSuccess', 'outlinedInfo', 'outlinedWarning', 'outlinedError', 'standard', 'standardSuccess', 'standardInfo', 'standardWarning', 'standardError']);\nexport default alertClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getIconButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiIconButton', slot);\n}\nconst iconButtonClasses = generateUtilityClasses('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);\nexport default iconButtonClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"edge\", \"children\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"size\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport iconButtonClasses, { getIconButtonUtilityClass } from './iconButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    color,\n    edge,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', color !== 'default' && `color${capitalize(color)}`, edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getIconButtonUtilityClass, classes);\n};\nconst IconButtonRoot = styled(ButtonBase, {\n  name: 'MuiIconButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  textAlign: 'center',\n  flex: '0 0 auto',\n  fontSize: theme.typography.pxToRem(24),\n  padding: 8,\n  borderRadius: '50%',\n  overflow: 'visible',\n  // Explicitly set the default value to solve a bug on IE11.\n  color: (theme.vars || theme).palette.action.active,\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.shortest\n  })\n}, !ownerState.disableRipple && {\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  }\n}, ownerState.edge === 'start' && {\n  marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n  marginRight: ownerState.size === 'small' ? -3 : -12\n}), ({\n  theme,\n  ownerState\n}) => {\n  var _palette;\n  const palette = (_palette = (theme.vars || theme).palette) == null ? void 0 : _palette[ownerState.color];\n  return _extends({}, ownerState.color === 'inherit' && {\n    color: 'inherit'\n  }, ownerState.color !== 'inherit' && ownerState.color !== 'default' && _extends({\n    color: palette == null ? void 0 : palette.main\n  }, !ownerState.disableRipple && {\n    '&:hover': _extends({}, palette && {\n      backgroundColor: theme.vars ? `rgba(${palette.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(palette.main, theme.palette.action.hoverOpacity)\n    }, {\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    })\n  }), ownerState.size === 'small' && {\n    padding: 5,\n    fontSize: theme.typography.pxToRem(18)\n  }, ownerState.size === 'large' && {\n    padding: 12,\n    fontSize: theme.typography.pxToRem(28)\n  }, {\n    [`&.${iconButtonClasses.disabled}`]: {\n      backgroundColor: 'transparent',\n      color: (theme.vars || theme).palette.action.disabled\n    }\n  });\n});\n\n/**\n * Refer to the [Icons](/material-ui/icons/) section of the documentation\n * regarding the available icon options.\n */\nconst IconButton = /*#__PURE__*/React.forwardRef(function IconButton(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiIconButton'\n  });\n  const {\n      edge = false,\n      children,\n      className,\n      color = 'default',\n      disabled = false,\n      disableFocusRipple = false,\n      size = 'medium'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    edge,\n    color,\n    disabled,\n    disableFocusRipple,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(IconButtonRoot, _extends({\n    className: clsx(classes.root, className),\n    centerRipple: true,\n    focusRipple: !disableFocusRipple,\n    disabled: disabled,\n    ref: ref\n  }, other, {\n    ownerState: ownerState,\n    children: children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? IconButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The icon to display.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const found = React.Children.toArray(props.children).some(child => /*#__PURE__*/React.isValidElement(child) && child.props.onClick);\n    if (found) {\n      return new Error(['MUI: You are providing an onClick event listener to a child of a button element.', 'Prefer applying it to the IconButton directly.', 'This guarantees that the whole <button> will be responsive to click events.'].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default IconButton;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z\"\n}), 'SuccessOutlined');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"\n}), 'ReportProblemOutlined');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z\"\n}), 'InfoOutlined');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"action\", \"children\", \"className\", \"closeText\", \"color\", \"components\", \"componentsProps\", \"icon\", \"iconMapping\", \"onClose\", \"role\", \"severity\", \"slotProps\", \"slots\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, lighten } from '@mui/system/colorManipulator';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport useSlot from '../utils/useSlot';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nimport alertClasses, { getAlertUtilityClass } from './alertClasses';\nimport IconButton from '../IconButton';\nimport SuccessOutlinedIcon from '../internal/svg-icons/SuccessOutlined';\nimport ReportProblemOutlinedIcon from '../internal/svg-icons/ReportProblemOutlined';\nimport ErrorOutlineIcon from '../internal/svg-icons/ErrorOutline';\nimport InfoOutlinedIcon from '../internal/svg-icons/InfoOutlined';\nimport CloseIcon from '../internal/svg-icons/Close';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    variant,\n    color,\n    severity,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color || severity)}`, `${variant}${capitalize(color || severity)}`, `${variant}`],\n    icon: ['icon'],\n    message: ['message'],\n    action: ['action']\n  };\n  return composeClasses(slots, getAlertUtilityClass, classes);\n};\nconst AlertRoot = styled(Paper, {\n  name: 'MuiAlert',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color || ownerState.severity)}`]];\n  }\n})(({\n  theme\n}) => {\n  const getColor = theme.palette.mode === 'light' ? darken : lighten;\n  const getBackgroundColor = theme.palette.mode === 'light' ? lighten : darken;\n  return _extends({}, theme.typography.body2, {\n    backgroundColor: 'transparent',\n    display: 'flex',\n    padding: '6px 16px',\n    variants: [...Object.entries(theme.palette).filter(([, value]) => value.main && value.light).map(([color]) => ({\n      props: {\n        colorSeverity: color,\n        variant: 'standard'\n      },\n      style: {\n        color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n        backgroundColor: theme.vars ? theme.vars.palette.Alert[`${color}StandardBg`] : getBackgroundColor(theme.palette[color].light, 0.9),\n        [`& .${alertClasses.icon}`]: theme.vars ? {\n          color: theme.vars.palette.Alert[`${color}IconColor`]\n        } : {\n          color: theme.palette[color].main\n        }\n      }\n    })), ...Object.entries(theme.palette).filter(([, value]) => value.main && value.light).map(([color]) => ({\n      props: {\n        colorSeverity: color,\n        variant: 'outlined'\n      },\n      style: {\n        color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n        border: `1px solid ${(theme.vars || theme).palette[color].light}`,\n        [`& .${alertClasses.icon}`]: theme.vars ? {\n          color: theme.vars.palette.Alert[`${color}IconColor`]\n        } : {\n          color: theme.palette[color].main\n        }\n      }\n    })), ...Object.entries(theme.palette).filter(([, value]) => value.main && value.dark).map(([color]) => ({\n      props: {\n        colorSeverity: color,\n        variant: 'filled'\n      },\n      style: _extends({\n        fontWeight: theme.typography.fontWeightMedium\n      }, theme.vars ? {\n        color: theme.vars.palette.Alert[`${color}FilledColor`],\n        backgroundColor: theme.vars.palette.Alert[`${color}FilledBg`]\n      } : {\n        backgroundColor: theme.palette.mode === 'dark' ? theme.palette[color].dark : theme.palette[color].main,\n        color: theme.palette.getContrastText(theme.palette[color].main)\n      })\n    }))]\n  });\n});\nconst AlertIcon = styled('div', {\n  name: 'MuiAlert',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => styles.icon\n})({\n  marginRight: 12,\n  padding: '7px 0',\n  display: 'flex',\n  fontSize: 22,\n  opacity: 0.9\n});\nconst AlertMessage = styled('div', {\n  name: 'MuiAlert',\n  slot: 'Message',\n  overridesResolver: (props, styles) => styles.message\n})({\n  padding: '8px 0',\n  minWidth: 0,\n  overflow: 'auto'\n});\nconst AlertAction = styled('div', {\n  name: 'MuiAlert',\n  slot: 'Action',\n  overridesResolver: (props, styles) => styles.action\n})({\n  display: 'flex',\n  alignItems: 'flex-start',\n  padding: '4px 0 0 16px',\n  marginLeft: 'auto',\n  marginRight: -8\n});\nconst defaultIconMapping = {\n  success: /*#__PURE__*/_jsx(SuccessOutlinedIcon, {\n    fontSize: \"inherit\"\n  }),\n  warning: /*#__PURE__*/_jsx(ReportProblemOutlinedIcon, {\n    fontSize: \"inherit\"\n  }),\n  error: /*#__PURE__*/_jsx(ErrorOutlineIcon, {\n    fontSize: \"inherit\"\n  }),\n  info: /*#__PURE__*/_jsx(InfoOutlinedIcon, {\n    fontSize: \"inherit\"\n  })\n};\nconst Alert = /*#__PURE__*/React.forwardRef(function Alert(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAlert'\n  });\n  const {\n      action,\n      children,\n      className,\n      closeText = 'Close',\n      color,\n      components = {},\n      componentsProps = {},\n      icon,\n      iconMapping = defaultIconMapping,\n      onClose,\n      role = 'alert',\n      severity = 'success',\n      slotProps = {},\n      slots = {},\n      variant = 'standard'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    severity,\n    variant,\n    colorSeverity: color || severity\n  });\n  const classes = useUtilityClasses(ownerState);\n  const externalForwardedProps = {\n    slots: _extends({\n      closeButton: components.CloseButton,\n      closeIcon: components.CloseIcon\n    }, slots),\n    slotProps: _extends({}, componentsProps, slotProps)\n  };\n  const [CloseButtonSlot, closeButtonProps] = useSlot('closeButton', {\n    elementType: IconButton,\n    externalForwardedProps,\n    ownerState\n  });\n  const [CloseIconSlot, closeIconProps] = useSlot('closeIcon', {\n    elementType: CloseIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  return /*#__PURE__*/_jsxs(AlertRoot, _extends({\n    role: role,\n    elevation: 0,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other, {\n    children: [icon !== false ? /*#__PURE__*/_jsx(AlertIcon, {\n      ownerState: ownerState,\n      className: classes.icon,\n      children: icon || iconMapping[severity] || defaultIconMapping[severity]\n    }) : null, /*#__PURE__*/_jsx(AlertMessage, {\n      ownerState: ownerState,\n      className: classes.message,\n      children: children\n    }), action != null ? /*#__PURE__*/_jsx(AlertAction, {\n      ownerState: ownerState,\n      className: classes.action,\n      children: action\n    }) : null, action == null && onClose ? /*#__PURE__*/_jsx(AlertAction, {\n      ownerState: ownerState,\n      className: classes.action,\n      children: /*#__PURE__*/_jsx(CloseButtonSlot, _extends({\n        size: \"small\",\n        \"aria-label\": closeText,\n        title: closeText,\n        color: \"inherit\",\n        onClick: onClose\n      }, closeButtonProps, {\n        children: /*#__PURE__*/_jsx(CloseIconSlot, _extends({\n          fontSize: \"small\"\n        }, closeIconProps))\n      }))\n    }) : null]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Alert.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The action to display. It renders after the message, at the end of the alert.\n   */\n  action: PropTypes.node,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Override the default label for the *close popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Close'\n   */\n  closeText: PropTypes.string,\n  /**\n   * The color of the component. Unless provided, the value is taken from the `severity` prop.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    CloseButton: PropTypes.elementType,\n    CloseIcon: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    closeButton: PropTypes.object,\n    closeIcon: PropTypes.object\n  }),\n  /**\n   * Override the icon displayed before the children.\n   * Unless provided, the icon is mapped to the value of the `severity` prop.\n   * Set to `false` to remove the `icon`.\n   */\n  icon: PropTypes.node,\n  /**\n   * The component maps the `severity` prop to a range of different icons,\n   * for instance success to `<SuccessOutlined>`.\n   * If you wish to change this mapping, you can provide your own.\n   * Alternatively, you can use the `icon` prop to override the icon displayed.\n   */\n  iconMapping: PropTypes.shape({\n    error: PropTypes.node,\n    info: PropTypes.node,\n    success: PropTypes.node,\n    warning: PropTypes.node\n  }),\n  /**\n   * Callback fired when the component requests to be closed.\n   * When provided and no `action` prop is set, a close icon button is displayed that triggers the callback when clicked.\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * The ARIA role attribute of the element.\n   * @default 'alert'\n   */\n  role: PropTypes.string,\n  /**\n   * The severity of the alert. This defines the color and icon used.\n   * @default 'success'\n   */\n  severity: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    closeButton: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    closeIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    closeButton: PropTypes.elementType,\n    closeIcon: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default Alert;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTypographyUtilityClass(slot) {\n  return generateUtilityClass('MuiTypography', slot);\n}\nconst typographyClasses = generateUtilityClasses('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);\nexport default typographyClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"align\", \"className\", \"component\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { extendSxProp } from '@mui/system/styleFunctionSx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport capitalize from '../utils/capitalize';\nimport { getTypographyUtilityClass } from './typographyClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    align,\n    gutterBottom,\n    noWrap,\n    paragraph,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, ownerState.align !== 'inherit' && `align${capitalize(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']\n  };\n  return composeClasses(slots, getTypographyUtilityClass, classes);\n};\nexport const TypographyRoot = styled('span', {\n  name: 'MuiTypography',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  margin: 0\n}, ownerState.variant === 'inherit' && {\n  // Some elements, like <button> on Chrome have default font that doesn't inherit, reset this.\n  font: 'inherit'\n}, ownerState.variant !== 'inherit' && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && {\n  textAlign: ownerState.align\n}, ownerState.noWrap && {\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  whiteSpace: 'nowrap'\n}, ownerState.gutterBottom && {\n  marginBottom: '0.35em'\n}, ownerState.paragraph && {\n  marginBottom: 16\n}));\nconst defaultVariantMapping = {\n  h1: 'h1',\n  h2: 'h2',\n  h3: 'h3',\n  h4: 'h4',\n  h5: 'h5',\n  h6: 'h6',\n  subtitle1: 'h6',\n  subtitle2: 'h6',\n  body1: 'p',\n  body2: 'p',\n  inherit: 'p'\n};\n\n// TODO v6: deprecate these color values in v5.x and remove the transformation in v6\nconst colorTransformations = {\n  primary: 'primary.main',\n  textPrimary: 'text.primary',\n  secondary: 'secondary.main',\n  textSecondary: 'text.secondary',\n  error: 'error.main'\n};\nconst transformDeprecatedColors = color => {\n  return colorTransformations[color] || color;\n};\nconst Typography = /*#__PURE__*/React.forwardRef(function Typography(inProps, ref) {\n  const themeProps = useDefaultProps({\n    props: inProps,\n    name: 'MuiTypography'\n  });\n  const color = transformDeprecatedColors(themeProps.color);\n  const props = extendSxProp(_extends({}, themeProps, {\n    color\n  }));\n  const {\n      align = 'inherit',\n      className,\n      component,\n      gutterBottom = false,\n      noWrap = false,\n      paragraph = false,\n      variant = 'body1',\n      variantMapping = defaultVariantMapping\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    align,\n    color,\n    className,\n    component,\n    gutterBottom,\n    noWrap,\n    paragraph,\n    variant,\n    variantMapping\n  });\n  const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TypographyRoot, _extends({\n    as: Component,\n    ref: ref,\n    ownerState: ownerState,\n    className: clsx(classes.root, className)\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Set the text-align on the component.\n   * @default 'inherit'\n   */\n  align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the text will have a bottom margin.\n   * @default false\n   */\n  gutterBottom: PropTypes.bool,\n  /**\n   * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n   *\n   * Note that text overflow can only happen with block or inline-block level elements\n   * (the element needs to have a width in order to overflow).\n   * @default false\n   */\n  noWrap: PropTypes.bool,\n  /**\n   * If `true`, the element will be a paragraph element.\n   * @default false\n   */\n  paragraph: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Applies the theme typography styles.\n   * @default 'body1'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string]),\n  /**\n   * The component maps the variant prop to a range of different HTML element types.\n   * For instance, subtitle1 to `<h6>`.\n   * If you wish to change that mapping, you can provide your own.\n   * Alternatively, you can use the `component` prop.\n   * @default {\n   *   h1: 'h1',\n   *   h2: 'h2',\n   *   h3: 'h3',\n   *   h4: 'h4',\n   *   h5: 'h5',\n   *   h6: 'h6',\n   *   subtitle1: 'h6',\n   *   subtitle2: 'h6',\n   *   body1: 'p',\n   *   body2: 'p',\n   *   inherit: 'p',\n   * }\n   */\n  variantMapping: PropTypes /* @typescript-to-proptypes-ignore */.object\n} : void 0;\nexport default Typography;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAppBarUtilityClass(slot) {\n  return generateUtilityClass('MuiAppBar', slot);\n}\nconst appBarClasses = generateUtilityClasses('MuiAppBar', ['root', 'positionFixed', 'positionAbsolute', 'positionSticky', 'positionStatic', 'positionRelative', 'colorDefault', 'colorPrimary', 'colorSecondary', 'colorInherit', 'colorTransparent', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning']);\nexport default appBarClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"enableColorOnDark\", \"position\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nimport { getAppBarUtilityClass } from './appBarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    position,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, `position${capitalize(position)}`]\n  };\n  return composeClasses(slots, getAppBarUtilityClass, classes);\n};\n\n// var2 is the fallback.\n// Ex. var1: 'var(--a)', var2: 'var(--b)'; return: 'var(--a, var(--b))'\nconst joinVars = (var1, var2) => var1 ? `${var1 == null ? void 0 : var1.replace(')', '')}, ${var2})` : var2;\nconst AppBarRoot = styled(Paper, {\n  name: 'MuiAppBar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`position${capitalize(ownerState.position)}`], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const backgroundColorDefault = theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[900];\n  return _extends({\n    display: 'flex',\n    flexDirection: 'column',\n    width: '100%',\n    boxSizing: 'border-box',\n    // Prevent padding issue with the Modal and fixed positioned AppBar.\n    flexShrink: 0\n  }, ownerState.position === 'fixed' && {\n    position: 'fixed',\n    zIndex: (theme.vars || theme).zIndex.appBar,\n    top: 0,\n    left: 'auto',\n    right: 0,\n    '@media print': {\n      // Prevent the app bar to be visible on each printed page.\n      position: 'absolute'\n    }\n  }, ownerState.position === 'absolute' && {\n    position: 'absolute',\n    zIndex: (theme.vars || theme).zIndex.appBar,\n    top: 0,\n    left: 'auto',\n    right: 0\n  }, ownerState.position === 'sticky' && {\n    // ⚠️ sticky is not supported by IE11.\n    position: 'sticky',\n    zIndex: (theme.vars || theme).zIndex.appBar,\n    top: 0,\n    left: 'auto',\n    right: 0\n  }, ownerState.position === 'static' && {\n    position: 'static'\n  }, ownerState.position === 'relative' && {\n    position: 'relative'\n  }, !theme.vars && _extends({}, ownerState.color === 'default' && {\n    backgroundColor: backgroundColorDefault,\n    color: theme.palette.getContrastText(backgroundColorDefault)\n  }, ownerState.color && ownerState.color !== 'default' && ownerState.color !== 'inherit' && ownerState.color !== 'transparent' && {\n    backgroundColor: theme.palette[ownerState.color].main,\n    color: theme.palette[ownerState.color].contrastText\n  }, ownerState.color === 'inherit' && {\n    color: 'inherit'\n  }, theme.palette.mode === 'dark' && !ownerState.enableColorOnDark && {\n    backgroundColor: null,\n    color: null\n  }, ownerState.color === 'transparent' && _extends({\n    backgroundColor: 'transparent',\n    color: 'inherit'\n  }, theme.palette.mode === 'dark' && {\n    backgroundImage: 'none'\n  })), theme.vars && _extends({}, ownerState.color === 'default' && {\n    '--AppBar-background': ownerState.enableColorOnDark ? theme.vars.palette.AppBar.defaultBg : joinVars(theme.vars.palette.AppBar.darkBg, theme.vars.palette.AppBar.defaultBg),\n    '--AppBar-color': ownerState.enableColorOnDark ? theme.vars.palette.text.primary : joinVars(theme.vars.palette.AppBar.darkColor, theme.vars.palette.text.primary)\n  }, ownerState.color && !ownerState.color.match(/^(default|inherit|transparent)$/) && {\n    '--AppBar-background': ownerState.enableColorOnDark ? theme.vars.palette[ownerState.color].main : joinVars(theme.vars.palette.AppBar.darkBg, theme.vars.palette[ownerState.color].main),\n    '--AppBar-color': ownerState.enableColorOnDark ? theme.vars.palette[ownerState.color].contrastText : joinVars(theme.vars.palette.AppBar.darkColor, theme.vars.palette[ownerState.color].contrastText)\n  }, !['inherit', 'transparent'].includes(ownerState.color) && {\n    backgroundColor: 'var(--AppBar-background)'\n  }, {\n    color: ownerState.color === 'inherit' ? 'inherit' : 'var(--AppBar-color)'\n  }, ownerState.color === 'transparent' && {\n    backgroundImage: 'none',\n    backgroundColor: 'transparent',\n    color: 'inherit'\n  }));\n});\nconst AppBar = /*#__PURE__*/React.forwardRef(function AppBar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAppBar'\n  });\n  const {\n      className,\n      color = 'primary',\n      enableColorOnDark = false,\n      position = 'fixed'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    position,\n    enableColorOnDark\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(AppBarRoot, _extends({\n    square: true,\n    component: \"header\",\n    ownerState: ownerState,\n    elevation: 4,\n    className: clsx(classes.root, className, position === 'fixed' && 'mui-fixed'),\n    ref: ref\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AppBar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary', 'transparent', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If true, the `color` prop is applied in dark mode.\n   * @default false\n   */\n  enableColorOnDark: PropTypes.bool,\n  /**\n   * The positioning type. The behavior of the different options is described\n   * [in the MDN web docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).\n   * Note: `sticky` is not universally supported and will fall back to `static` when unavailable.\n   * @default 'fixed'\n   */\n  position: PropTypes.oneOf(['absolute', 'fixed', 'relative', 'static', 'sticky']),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AppBar;","'use client';\n\n/* eslint-disable no-constant-condition */\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_setRef as setRef, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled, unstable_useId as useId, usePreviousProps } from '@mui/utils';\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE11 support for this feature\nfunction stripDiacritics(string) {\n  return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nexport function createFilterOptions(config = {}) {\n  const {\n    ignoreAccents = true,\n    ignoreCase = true,\n    limit,\n    matchFrom = 'any',\n    stringify,\n    trim = false\n  } = config;\n  return (options, {\n    inputValue,\n    getOptionLabel\n  }) => {\n    let input = trim ? inputValue.trim() : inputValue;\n    if (ignoreCase) {\n      input = input.toLowerCase();\n    }\n    if (ignoreAccents) {\n      input = stripDiacritics(input);\n    }\n    const filteredOptions = !input ? options : options.filter(option => {\n      let candidate = (stringify || getOptionLabel)(option);\n      if (ignoreCase) {\n        candidate = candidate.toLowerCase();\n      }\n      if (ignoreAccents) {\n        candidate = stripDiacritics(candidate);\n      }\n      return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n    });\n    return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n  };\n}\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n  for (let i = 0; i < array.length; i += 1) {\n    if (comp(array[i])) {\n      return i;\n    }\n  }\n  return -1;\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => {\n  var _listboxRef$current$p;\n  return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));\n};\nconst MULTIPLE_DEFAULT_VALUE = [];\nfunction useAutocomplete(props) {\n  const {\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    unstable_classNamePrefix = 'Mui',\n    autoComplete = false,\n    autoHighlight = false,\n    autoSelect = false,\n    blurOnSelect = false,\n    clearOnBlur = !props.freeSolo,\n    clearOnEscape = false,\n    componentName = 'useAutocomplete',\n    defaultValue = props.multiple ? MULTIPLE_DEFAULT_VALUE : null,\n    disableClearable = false,\n    disableCloseOnSelect = false,\n    disabled: disabledProp,\n    disabledItemsFocusable = false,\n    disableListWrap = false,\n    filterOptions = defaultFilterOptions,\n    filterSelectedOptions = false,\n    freeSolo = false,\n    getOptionDisabled,\n    getOptionKey,\n    getOptionLabel: getOptionLabelProp = option => {\n      var _option$label;\n      return (_option$label = option.label) != null ? _option$label : option;\n    },\n    groupBy,\n    handleHomeEndKeys = !props.freeSolo,\n    id: idProp,\n    includeInputInList = false,\n    inputValue: inputValueProp,\n    isOptionEqualToValue = (option, value) => option === value,\n    multiple = false,\n    onChange,\n    onClose,\n    onHighlightChange,\n    onInputChange,\n    onOpen,\n    open: openProp,\n    openOnFocus = false,\n    options,\n    readOnly = false,\n    selectOnFocus = !props.freeSolo,\n    value: valueProp\n  } = props;\n  const id = useId(idProp);\n  let getOptionLabel = getOptionLabelProp;\n  getOptionLabel = option => {\n    const optionLabel = getOptionLabelProp(option);\n    if (typeof optionLabel !== 'string') {\n      if (process.env.NODE_ENV !== 'production') {\n        const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n        console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n      }\n      return String(optionLabel);\n    }\n    return optionLabel;\n  };\n  const ignoreFocus = React.useRef(false);\n  const firstFocus = React.useRef(true);\n  const inputRef = React.useRef(null);\n  const listboxRef = React.useRef(null);\n  const [anchorEl, setAnchorEl] = React.useState(null);\n  const [focusedTag, setFocusedTag] = React.useState(-1);\n  const defaultHighlighted = autoHighlight ? 0 : -1;\n  const highlightedIndexRef = React.useRef(defaultHighlighted);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: componentName\n  });\n  const [inputValue, setInputValueState] = useControlled({\n    controlled: inputValueProp,\n    default: '',\n    name: componentName,\n    state: 'inputValue'\n  });\n  const [focused, setFocused] = React.useState(false);\n  const resetInputValue = React.useCallback((event, newValue) => {\n    // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n    // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n    const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n    if (!isOptionSelected && !clearOnBlur) {\n      return;\n    }\n    let newInputValue;\n    if (multiple) {\n      newInputValue = '';\n    } else if (newValue == null) {\n      newInputValue = '';\n    } else {\n      const optionLabel = getOptionLabel(newValue);\n      newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n    }\n    if (inputValue === newInputValue) {\n      return;\n    }\n    setInputValueState(newInputValue);\n    if (onInputChange) {\n      onInputChange(event, newInputValue, 'reset');\n    }\n  }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n  const [open, setOpenState] = useControlled({\n    controlled: openProp,\n    default: false,\n    name: componentName,\n    state: 'open'\n  });\n  const [inputPristine, setInputPristine] = React.useState(true);\n  const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n  const popupOpen = open && !readOnly;\n  const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n    if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n      return false;\n    }\n    return true;\n  }),\n  // we use the empty string to manipulate `filterOptions` to not filter any options\n  // i.e. the filter predicate always returns true\n  {\n    inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n    getOptionLabel\n  }) : [];\n  const previousProps = usePreviousProps({\n    filteredOptions,\n    value,\n    inputValue\n  });\n  React.useEffect(() => {\n    const valueChange = value !== previousProps.value;\n    if (focused && !valueChange) {\n      return;\n    }\n\n    // Only reset the input's value when freeSolo if the component's value changes.\n    if (freeSolo && !valueChange) {\n      return;\n    }\n    resetInputValue(null, value);\n  }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n  const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n  if (process.env.NODE_ENV !== 'production') {\n    if (value !== null && !freeSolo && options.length > 0) {\n      const missingValue = (multiple ? value : [value]).filter(value2 => !options.some(option => isOptionEqualToValue(option, value2)));\n      if (missingValue.length > 0) {\n        console.warn([`MUI: The value provided to ${componentName} is invalid.`, `None of the options match with \\`${missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0])}\\`.`, 'You can use the `isOptionEqualToValue` prop to customize the equality test.'].join('\\n'));\n      }\n    }\n  }\n  const focusTag = useEventCallback(tagToFocus => {\n    if (tagToFocus === -1) {\n      inputRef.current.focus();\n    } else {\n      anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n    }\n  });\n\n  // Ensure the focusedTag is never inconsistent\n  React.useEffect(() => {\n    if (multiple && focusedTag > value.length - 1) {\n      setFocusedTag(-1);\n      focusTag(-1);\n    }\n  }, [value, multiple, focusedTag, focusTag]);\n  function validOptionIndex(index, direction) {\n    if (!listboxRef.current || index < 0 || index >= filteredOptions.length) {\n      return -1;\n    }\n    let nextFocus = index;\n    while (true) {\n      const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n      // Same logic as MenuList.js\n      const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n      if (option && option.hasAttribute('tabindex') && !nextFocusDisabled) {\n        // The next option is available\n        return nextFocus;\n      }\n\n      // The next option is disabled, move to the next element.\n      // with looped index\n      if (direction === 'next') {\n        nextFocus = (nextFocus + 1) % filteredOptions.length;\n      } else {\n        nextFocus = (nextFocus - 1 + filteredOptions.length) % filteredOptions.length;\n      }\n\n      // We end up with initial index, that means we don't have available options.\n      // All of them are disabled\n      if (nextFocus === index) {\n        return -1;\n      }\n    }\n  }\n  const setHighlightedIndex = useEventCallback(({\n    event,\n    index,\n    reason = 'auto'\n  }) => {\n    highlightedIndexRef.current = index;\n\n    // does the index exist?\n    if (index === -1) {\n      inputRef.current.removeAttribute('aria-activedescendant');\n    } else {\n      inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n    }\n    if (onHighlightChange) {\n      onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n    }\n    if (!listboxRef.current) {\n      return;\n    }\n    const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n    if (prev) {\n      prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n      prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n    }\n    let listboxNode = listboxRef.current;\n    if (listboxRef.current.getAttribute('role') !== 'listbox') {\n      listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n    }\n\n    // \"No results\"\n    if (!listboxNode) {\n      return;\n    }\n    if (index === -1) {\n      listboxNode.scrollTop = 0;\n      return;\n    }\n    const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n    if (!option) {\n      return;\n    }\n    option.classList.add(`${unstable_classNamePrefix}-focused`);\n    if (reason === 'keyboard') {\n      option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n    }\n\n    // Scroll active descendant into view.\n    // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n    // In case of mouse clicks and touch (in mobile devices) we avoid scrolling the element and keep both behaviors same.\n    // Consider this API instead once it has a better browser support:\n    // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n    if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse' && reason !== 'touch') {\n      const element = option;\n      const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n      const elementBottom = element.offsetTop + element.offsetHeight;\n      if (elementBottom > scrollBottom) {\n        listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n      } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n        listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n      }\n    }\n  });\n  const changeHighlightedIndex = useEventCallback(({\n    event,\n    diff,\n    direction = 'next',\n    reason = 'auto'\n  }) => {\n    if (!popupOpen) {\n      return;\n    }\n    const getNextIndex = () => {\n      const maxIndex = filteredOptions.length - 1;\n      if (diff === 'reset') {\n        return defaultHighlighted;\n      }\n      if (diff === 'start') {\n        return 0;\n      }\n      if (diff === 'end') {\n        return maxIndex;\n      }\n      const newIndex = highlightedIndexRef.current + diff;\n      if (newIndex < 0) {\n        if (newIndex === -1 && includeInputInList) {\n          return -1;\n        }\n        if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n          return 0;\n        }\n        return maxIndex;\n      }\n      if (newIndex > maxIndex) {\n        if (newIndex === maxIndex + 1 && includeInputInList) {\n          return -1;\n        }\n        if (disableListWrap || Math.abs(diff) > 1) {\n          return maxIndex;\n        }\n        return 0;\n      }\n      return newIndex;\n    };\n    const nextIndex = validOptionIndex(getNextIndex(), direction);\n    setHighlightedIndex({\n      index: nextIndex,\n      reason,\n      event\n    });\n\n    // Sync the content of the input with the highlighted option.\n    if (autoComplete && diff !== 'reset') {\n      if (nextIndex === -1) {\n        inputRef.current.value = inputValue;\n      } else {\n        const option = getOptionLabel(filteredOptions[nextIndex]);\n        inputRef.current.value = option;\n\n        // The portion of the selected suggestion that has not been typed by the user,\n        // a completion string, appears inline after the input cursor in the textbox.\n        const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n        if (index === 0 && inputValue.length > 0) {\n          inputRef.current.setSelectionRange(inputValue.length, option.length);\n        }\n      }\n    }\n  });\n  const getPreviousHighlightedOptionIndex = () => {\n    const isSameValue = (value1, value2) => {\n      const label1 = value1 ? getOptionLabel(value1) : '';\n      const label2 = value2 ? getOptionLabel(value2) : '';\n      return label1 === label2;\n    };\n    if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && previousProps.inputValue === inputValue && (multiple ? value.length === previousProps.value.length && previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : isSameValue(previousProps.value, value))) {\n      const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n      if (previousHighlightedOption) {\n        return findIndex(filteredOptions, option => {\n          return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n        });\n      }\n    }\n    return -1;\n  };\n  const syncHighlightedIndex = React.useCallback(() => {\n    if (!popupOpen) {\n      return;\n    }\n\n    // Check if the previously highlighted option still exists in the updated filtered options list and if the value and inputValue haven't changed\n    // If it exists and the value and the inputValue haven't changed, just update its index, otherwise continue execution\n    const previousHighlightedOptionIndex = getPreviousHighlightedOptionIndex();\n    if (previousHighlightedOptionIndex !== -1) {\n      highlightedIndexRef.current = previousHighlightedOptionIndex;\n      return;\n    }\n    const valueItem = multiple ? value[0] : value;\n\n    // The popup is empty, reset\n    if (filteredOptions.length === 0 || valueItem == null) {\n      changeHighlightedIndex({\n        diff: 'reset'\n      });\n      return;\n    }\n    if (!listboxRef.current) {\n      return;\n    }\n\n    // Synchronize the value with the highlighted index\n    if (valueItem != null) {\n      const currentOption = filteredOptions[highlightedIndexRef.current];\n\n      // Keep the current highlighted index if possible\n      if (multiple && currentOption && findIndex(value, val => isOptionEqualToValue(currentOption, val)) !== -1) {\n        return;\n      }\n      const itemIndex = findIndex(filteredOptions, optionItem => isOptionEqualToValue(optionItem, valueItem));\n      if (itemIndex === -1) {\n        changeHighlightedIndex({\n          diff: 'reset'\n        });\n      } else {\n        setHighlightedIndex({\n          index: itemIndex\n        });\n      }\n      return;\n    }\n\n    // Prevent the highlighted index to leak outside the boundaries.\n    if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n      setHighlightedIndex({\n        index: filteredOptions.length - 1\n      });\n      return;\n    }\n\n    // Restore the focus to the previous index.\n    setHighlightedIndex({\n      index: highlightedIndexRef.current\n    });\n    // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [\n  // Only sync the highlighted index when the option switch between empty and not\n  filteredOptions.length,\n  // Don't sync the highlighted index with the value when multiple\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n  const handleListboxRef = useEventCallback(node => {\n    setRef(listboxRef, node);\n    if (!node) {\n      return;\n    }\n    syncHighlightedIndex();\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n        if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n          console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (for example enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n        } else {\n          console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n        }\n      }\n    }, [componentName]);\n  }\n  React.useEffect(() => {\n    syncHighlightedIndex();\n  }, [syncHighlightedIndex]);\n  const handleOpen = event => {\n    if (open) {\n      return;\n    }\n    setOpenState(true);\n    setInputPristine(true);\n    if (onOpen) {\n      onOpen(event);\n    }\n  };\n  const handleClose = (event, reason) => {\n    if (!open) {\n      return;\n    }\n    setOpenState(false);\n    if (onClose) {\n      onClose(event, reason);\n    }\n  };\n  const handleValue = (event, newValue, reason, details) => {\n    if (multiple) {\n      if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n        return;\n      }\n    } else if (value === newValue) {\n      return;\n    }\n    if (onChange) {\n      onChange(event, newValue, reason, details);\n    }\n    setValueState(newValue);\n  };\n  const isTouch = React.useRef(false);\n  const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n    let reason = reasonProp;\n    let newValue = option;\n    if (multiple) {\n      newValue = Array.isArray(value) ? value.slice() : [];\n      if (process.env.NODE_ENV !== 'production') {\n        const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n        if (matches.length > 1) {\n          console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n        }\n      }\n      const itemIndex = findIndex(newValue, valueItem => isOptionEqualToValue(option, valueItem));\n      if (itemIndex === -1) {\n        newValue.push(option);\n      } else if (origin !== 'freeSolo') {\n        newValue.splice(itemIndex, 1);\n        reason = 'removeOption';\n      }\n    }\n    resetInputValue(event, newValue);\n    handleValue(event, newValue, reason, {\n      option\n    });\n    if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n      handleClose(event, reason);\n    }\n    if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n      inputRef.current.blur();\n    }\n  };\n  function validTagIndex(index, direction) {\n    if (index === -1) {\n      return -1;\n    }\n    let nextFocus = index;\n    while (true) {\n      // Out of range\n      if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n        return -1;\n      }\n      const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n      // Same logic as MenuList.js\n      if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n        nextFocus += direction === 'next' ? 1 : -1;\n      } else {\n        return nextFocus;\n      }\n    }\n  }\n  const handleFocusTag = (event, direction) => {\n    if (!multiple) {\n      return;\n    }\n    if (inputValue === '') {\n      handleClose(event, 'toggleInput');\n    }\n    let nextTag = focusedTag;\n    if (focusedTag === -1) {\n      if (inputValue === '' && direction === 'previous') {\n        nextTag = value.length - 1;\n      }\n    } else {\n      nextTag += direction === 'next' ? 1 : -1;\n      if (nextTag < 0) {\n        nextTag = 0;\n      }\n      if (nextTag === value.length) {\n        nextTag = -1;\n      }\n    }\n    nextTag = validTagIndex(nextTag, direction);\n    setFocusedTag(nextTag);\n    focusTag(nextTag);\n  };\n  const handleClear = event => {\n    ignoreFocus.current = true;\n    setInputValueState('');\n    if (onInputChange) {\n      onInputChange(event, '', 'clear');\n    }\n    handleValue(event, multiple ? [] : null, 'clear');\n  };\n  const handleKeyDown = other => event => {\n    if (other.onKeyDown) {\n      other.onKeyDown(event);\n    }\n    if (event.defaultMuiPrevented) {\n      return;\n    }\n    if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n      setFocusedTag(-1);\n      focusTag(-1);\n    }\n\n    // Wait until IME is settled.\n    if (event.which !== 229) {\n      switch (event.key) {\n        case 'Home':\n          if (popupOpen && handleHomeEndKeys) {\n            // Prevent scroll of the page\n            event.preventDefault();\n            changeHighlightedIndex({\n              diff: 'start',\n              direction: 'next',\n              reason: 'keyboard',\n              event\n            });\n          }\n          break;\n        case 'End':\n          if (popupOpen && handleHomeEndKeys) {\n            // Prevent scroll of the page\n            event.preventDefault();\n            changeHighlightedIndex({\n              diff: 'end',\n              direction: 'previous',\n              reason: 'keyboard',\n              event\n            });\n          }\n          break;\n        case 'PageUp':\n          // Prevent scroll of the page\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: -pageSize,\n            direction: 'previous',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'PageDown':\n          // Prevent scroll of the page\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: pageSize,\n            direction: 'next',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowDown':\n          // Prevent cursor move\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: 1,\n            direction: 'next',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowUp':\n          // Prevent cursor move\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: -1,\n            direction: 'previous',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowLeft':\n          handleFocusTag(event, 'previous');\n          break;\n        case 'ArrowRight':\n          handleFocusTag(event, 'next');\n          break;\n        case 'Enter':\n          if (highlightedIndexRef.current !== -1 && popupOpen) {\n            const option = filteredOptions[highlightedIndexRef.current];\n            const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n            // Avoid early form validation, let the end-users continue filling the form.\n            event.preventDefault();\n            if (disabled) {\n              return;\n            }\n            selectNewValue(event, option, 'selectOption');\n\n            // Move the selection to the end.\n            if (autoComplete) {\n              inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n            }\n          } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n            if (multiple) {\n              // Allow people to add new values before they submit the form.\n              event.preventDefault();\n            }\n            selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n          }\n          break;\n        case 'Escape':\n          if (popupOpen) {\n            // Avoid Opera to exit fullscreen mode.\n            event.preventDefault();\n            // Avoid the Modal to handle the event.\n            event.stopPropagation();\n            handleClose(event, 'escape');\n          } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n            // Avoid Opera to exit fullscreen mode.\n            event.preventDefault();\n            // Avoid the Modal to handle the event.\n            event.stopPropagation();\n            handleClear(event);\n          }\n          break;\n        case 'Backspace':\n          // Remove the value on the left of the \"cursor\"\n          if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n            const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n            const newValue = value.slice();\n            newValue.splice(index, 1);\n            handleValue(event, newValue, 'removeOption', {\n              option: value[index]\n            });\n          }\n          break;\n        case 'Delete':\n          // Remove the value on the right of the \"cursor\"\n          if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n            const index = focusedTag;\n            const newValue = value.slice();\n            newValue.splice(index, 1);\n            handleValue(event, newValue, 'removeOption', {\n              option: value[index]\n            });\n          }\n          break;\n        default:\n      }\n    }\n  };\n  const handleFocus = event => {\n    setFocused(true);\n    if (openOnFocus && !ignoreFocus.current) {\n      handleOpen(event);\n    }\n  };\n  const handleBlur = event => {\n    // Ignore the event when using the scrollbar with IE11\n    if (unstable_isActiveElementInListbox(listboxRef)) {\n      inputRef.current.focus();\n      return;\n    }\n    setFocused(false);\n    firstFocus.current = true;\n    ignoreFocus.current = false;\n    if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n      selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n    } else if (autoSelect && freeSolo && inputValue !== '') {\n      selectNewValue(event, inputValue, 'blur', 'freeSolo');\n    } else if (clearOnBlur) {\n      resetInputValue(event, value);\n    }\n    handleClose(event, 'blur');\n  };\n  const handleInputChange = event => {\n    const newValue = event.target.value;\n    if (inputValue !== newValue) {\n      setInputValueState(newValue);\n      setInputPristine(false);\n      if (onInputChange) {\n        onInputChange(event, newValue, 'input');\n      }\n    }\n    if (newValue === '') {\n      if (!disableClearable && !multiple) {\n        handleValue(event, null, 'clear');\n      }\n    } else {\n      handleOpen(event);\n    }\n  };\n  const handleOptionMouseMove = event => {\n    const index = Number(event.currentTarget.getAttribute('data-option-index'));\n    if (highlightedIndexRef.current !== index) {\n      setHighlightedIndex({\n        event,\n        index,\n        reason: 'mouse'\n      });\n    }\n  };\n  const handleOptionTouchStart = event => {\n    setHighlightedIndex({\n      event,\n      index: Number(event.currentTarget.getAttribute('data-option-index')),\n      reason: 'touch'\n    });\n    isTouch.current = true;\n  };\n  const handleOptionClick = event => {\n    const index = Number(event.currentTarget.getAttribute('data-option-index'));\n    selectNewValue(event, filteredOptions[index], 'selectOption');\n    isTouch.current = false;\n  };\n  const handleTagDelete = index => event => {\n    const newValue = value.slice();\n    newValue.splice(index, 1);\n    handleValue(event, newValue, 'removeOption', {\n      option: value[index]\n    });\n  };\n  const handlePopupIndicator = event => {\n    if (open) {\n      handleClose(event, 'toggleInput');\n    } else {\n      handleOpen(event);\n    }\n  };\n\n  // Prevent input blur when interacting with the combobox\n  const handleMouseDown = event => {\n    // Prevent focusing the input if click is anywhere outside the Autocomplete\n    if (!event.currentTarget.contains(event.target)) {\n      return;\n    }\n    if (event.target.getAttribute('id') !== id) {\n      event.preventDefault();\n    }\n  };\n\n  // Focus the input when interacting with the combobox\n  const handleClick = event => {\n    // Prevent focusing the input if click is anywhere outside the Autocomplete\n    if (!event.currentTarget.contains(event.target)) {\n      return;\n    }\n    inputRef.current.focus();\n    if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n      inputRef.current.select();\n    }\n    firstFocus.current = false;\n  };\n  const handleInputMouseDown = event => {\n    if (!disabledProp && (inputValue === '' || !open)) {\n      handlePopupIndicator(event);\n    }\n  };\n  let dirty = freeSolo && inputValue.length > 0;\n  dirty = dirty || (multiple ? value.length > 0 : value !== null);\n  let groupedOptions = filteredOptions;\n  if (groupBy) {\n    // used to keep track of key and indexes in the result array\n    const indexBy = new Map();\n    let warn = false;\n    groupedOptions = filteredOptions.reduce((acc, option, index) => {\n      const group = groupBy(option);\n      if (acc.length > 0 && acc[acc.length - 1].group === group) {\n        acc[acc.length - 1].options.push(option);\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          if (indexBy.get(group) && !warn) {\n            console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n            warn = true;\n          }\n          indexBy.set(group, true);\n        }\n        acc.push({\n          key: index,\n          index,\n          group,\n          options: [option]\n        });\n      }\n      return acc;\n    }, []);\n  }\n  if (disabledProp && focused) {\n    handleBlur();\n  }\n  return {\n    getRootProps: (other = {}) => _extends({\n      'aria-owns': listboxAvailable ? `${id}-listbox` : null\n    }, other, {\n      onKeyDown: handleKeyDown(other),\n      onMouseDown: handleMouseDown,\n      onClick: handleClick\n    }),\n    getInputLabelProps: () => ({\n      id: `${id}-label`,\n      htmlFor: id\n    }),\n    getInputProps: () => ({\n      id,\n      value: inputValue,\n      onBlur: handleBlur,\n      onFocus: handleFocus,\n      onChange: handleInputChange,\n      onMouseDown: handleInputMouseDown,\n      // if open then this is handled imperatively so don't let react override\n      // only have an opinion about this when closed\n      'aria-activedescendant': popupOpen ? '' : null,\n      'aria-autocomplete': autoComplete ? 'both' : 'list',\n      'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n      'aria-expanded': listboxAvailable,\n      // Disable browser's suggestion that might overlap with the popup.\n      // Handle autocomplete but not autofill.\n      autoComplete: 'off',\n      ref: inputRef,\n      autoCapitalize: 'none',\n      spellCheck: 'false',\n      role: 'combobox',\n      disabled: disabledProp\n    }),\n    getClearProps: () => ({\n      tabIndex: -1,\n      type: 'button',\n      onClick: handleClear\n    }),\n    getPopupIndicatorProps: () => ({\n      tabIndex: -1,\n      type: 'button',\n      onClick: handlePopupIndicator\n    }),\n    getTagProps: ({\n      index\n    }) => _extends({\n      key: index,\n      'data-tag-index': index,\n      tabIndex: -1\n    }, !readOnly && {\n      onDelete: handleTagDelete(index)\n    }),\n    getListboxProps: () => ({\n      role: 'listbox',\n      id: `${id}-listbox`,\n      'aria-labelledby': `${id}-label`,\n      ref: handleListboxRef,\n      onMouseDown: event => {\n        // Prevent blur\n        event.preventDefault();\n      }\n    }),\n    getOptionProps: ({\n      index,\n      option\n    }) => {\n      var _getOptionKey;\n      const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n      const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n      return {\n        key: (_getOptionKey = getOptionKey == null ? void 0 : getOptionKey(option)) != null ? _getOptionKey : getOptionLabel(option),\n        tabIndex: -1,\n        role: 'option',\n        id: `${id}-option-${index}`,\n        onMouseMove: handleOptionMouseMove,\n        onClick: handleOptionClick,\n        onTouchStart: handleOptionTouchStart,\n        'data-option-index': index,\n        'aria-disabled': disabled,\n        'aria-selected': selected\n      };\n    },\n    id,\n    inputValue,\n    value,\n    dirty,\n    expanded: popupOpen && anchorEl,\n    popupOpen,\n    focused: focused || focusedTag !== -1,\n    anchorEl,\n    setAnchorEl,\n    focusedTag,\n    groupedOptions\n  };\n}\nexport default useAutocomplete;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _styledEngine = require(\"@mui/styled-engine\");\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction isObjectEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n  const contextTheme = React.useContext(_styledEngine.ThemeContext);\n  return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nvar _default = exports.default = useTheme;","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef, unstable_getReactElementRef as getReactElementRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/material-ui/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/material-ui/api/portal/)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, forwardedRef) {\n  const {\n    children,\n    container,\n    disablePortal = false\n  } = props;\n  const [mountNode, setMountNode] = React.useState(null);\n  const handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? getReactElementRef(children) : null, forwardedRef);\n  useEnhancedEffect(() => {\n    if (!disablePortal) {\n      setMountNode(getContainer(container) || document.body);\n    }\n  }, [container, disablePortal]);\n  useEnhancedEffect(() => {\n    if (mountNode && !disablePortal) {\n      setRef(forwardedRef, mountNode);\n      return () => {\n        setRef(forwardedRef, null);\n      };\n    }\n    return undefined;\n  }, [forwardedRef, mountNode, disablePortal]);\n  if (disablePortal) {\n    if ( /*#__PURE__*/React.isValidElement(children)) {\n      const newProps = {\n        ref: handleRef\n      };\n      return /*#__PURE__*/React.cloneElement(children, newProps);\n    }\n    return /*#__PURE__*/_jsx(React.Fragment, {\n      children: children\n    });\n  }\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The children to render into the `container`.\n   */\n  children: PropTypes.node,\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport default Portal;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPopperUtilityClass(slot) {\n  return generateUtilityClass('MuiPopper', slot);\n}\nconst popperClasses = generateUtilityClasses('MuiPopper', ['root']);\nexport default popperClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"children\", \"direction\", \"disablePortal\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"slotProps\", \"slots\", \"TransitionProps\", \"ownerState\"],\n  _excluded2 = [\"anchorEl\", \"children\", \"container\", \"direction\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"style\", \"transition\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport Portal from '../Portal';\nimport { getPopperUtilityClass } from './popperClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n  if (direction === 'ltr') {\n    return placement;\n  }\n  switch (placement) {\n    case 'bottom-end':\n      return 'bottom-start';\n    case 'bottom-start':\n      return 'bottom-end';\n    case 'top-end':\n      return 'top-start';\n    case 'top-start':\n      return 'top-end';\n    default:\n      return placement;\n  }\n}\nfunction resolveAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n  return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n  return !isHTMLElement(element);\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getPopperUtilityClass, classes);\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, forwardedRef) {\n  var _slots$root;\n  const {\n      anchorEl,\n      children,\n      direction,\n      disablePortal,\n      modifiers,\n      open,\n      placement: initialPlacement,\n      popperOptions,\n      popperRef: popperRefProp,\n      slotProps = {},\n      slots = {},\n      TransitionProps\n      // @ts-ignore internal logic\n      // prevent from spreading to DOM, it can come from the parent component e.g. Select.\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const tooltipRef = React.useRef(null);\n  const ownRef = useForkRef(tooltipRef, forwardedRef);\n  const popperRef = React.useRef(null);\n  const handlePopperRef = useForkRef(popperRef, popperRefProp);\n  const handlePopperRefRef = React.useRef(handlePopperRef);\n  useEnhancedEffect(() => {\n    handlePopperRefRef.current = handlePopperRef;\n  }, [handlePopperRef]);\n  React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n  const rtlPlacement = flipPlacement(initialPlacement, direction);\n  /**\n   * placement initialized from prop but can change during lifetime if modifiers.flip.\n   * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n   */\n  const [placement, setPlacement] = React.useState(rtlPlacement);\n  const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n  React.useEffect(() => {\n    if (popperRef.current) {\n      popperRef.current.forceUpdate();\n    }\n  });\n  React.useEffect(() => {\n    if (anchorEl) {\n      setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n    }\n  }, [anchorEl]);\n  useEnhancedEffect(() => {\n    if (!resolvedAnchorElement || !open) {\n      return undefined;\n    }\n    const handlePopperUpdate = data => {\n      setPlacement(data.placement);\n    };\n    if (process.env.NODE_ENV !== 'production') {\n      if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n        const box = resolvedAnchorElement.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      }\n    }\n    let popperModifiers = [{\n      name: 'preventOverflow',\n      options: {\n        altBoundary: disablePortal\n      }\n    }, {\n      name: 'flip',\n      options: {\n        altBoundary: disablePortal\n      }\n    }, {\n      name: 'onUpdate',\n      enabled: true,\n      phase: 'afterWrite',\n      fn: ({\n        state\n      }) => {\n        handlePopperUpdate(state);\n      }\n    }];\n    if (modifiers != null) {\n      popperModifiers = popperModifiers.concat(modifiers);\n    }\n    if (popperOptions && popperOptions.modifiers != null) {\n      popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n    }\n    const popper = createPopper(resolvedAnchorElement, tooltipRef.current, _extends({\n      placement: rtlPlacement\n    }, popperOptions, {\n      modifiers: popperModifiers\n    }));\n    handlePopperRefRef.current(popper);\n    return () => {\n      popper.destroy();\n      handlePopperRefRef.current(null);\n    };\n  }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n  const childProps = {\n    placement: placement\n  };\n  if (TransitionProps !== null) {\n    childProps.TransitionProps = TransitionProps;\n  }\n  const classes = useUtilityClasses(props);\n  const Root = (_slots$root = slots.root) != null ? _slots$root : 'div';\n  const rootProps = useSlotProps({\n    elementType: Root,\n    externalSlotProps: slotProps.root,\n    externalForwardedProps: other,\n    additionalProps: {\n      role: 'tooltip',\n      ref: ownRef\n    },\n    ownerState: props,\n    className: classes.root\n  });\n  return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {\n    children: typeof children === 'function' ? children(childProps) : children\n  }));\n});\n\n/**\n * @ignore - internal component.\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(props, forwardedRef) {\n  const {\n      anchorEl,\n      children,\n      container: containerProp,\n      direction = 'ltr',\n      disablePortal = false,\n      keepMounted = false,\n      modifiers,\n      open,\n      placement = 'bottom',\n      popperOptions = defaultPopperOptions,\n      popperRef,\n      style,\n      transition = false,\n      slotProps = {},\n      slots = {}\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const [exited, setExited] = React.useState(true);\n  const handleEnter = () => {\n    setExited(false);\n  };\n  const handleExited = () => {\n    setExited(true);\n  };\n  if (!keepMounted && !open && (!transition || exited)) {\n    return null;\n  }\n\n  // If the container prop is provided, use that\n  // If the anchorEl prop is provided, use its parent body element as the container\n  // If neither are provided let the Modal take care of choosing the container\n  let container;\n  if (containerProp) {\n    container = containerProp;\n  } else if (anchorEl) {\n    const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n    container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n  }\n  const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n  const transitionProps = transition ? {\n    in: open,\n    onEnter: handleEnter,\n    onExited: handleExited\n  } : undefined;\n  return /*#__PURE__*/_jsx(Portal, {\n    disablePortal: disablePortal,\n    container: container,\n    children: /*#__PURE__*/_jsx(PopperTooltip, _extends({\n      anchorEl: anchorEl,\n      direction: direction,\n      disablePortal: disablePortal,\n      modifiers: modifiers,\n      ref: forwardedRef,\n      open: transition ? !exited : open,\n      placement: placement,\n      popperOptions: popperOptions,\n      popperRef: popperRef,\n      slotProps: slotProps,\n      slots: slots\n    }, other, {\n      style: _extends({\n        // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n        position: 'fixed',\n        // Fix Popper.js display issue\n        top: 0,\n        left: 0,\n        display\n      }, style),\n      TransitionProps: transitionProps,\n      children: children\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n   * or a function that returns either.\n   * It's used to set the position of the popper.\n   * The return value will passed as the reference object of the Popper instance.\n   */\n  anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n    if (props.open) {\n      const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n      if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n        const box = resolvedAnchorEl.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n        return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * Popper render function or node.\n   */\n  children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * Direction of the text.\n   * @default 'ltr'\n   */\n  direction: PropTypes.oneOf(['ltr', 'rtl']),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Popper.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Popper.js is based on a \"plugin-like\" architecture,\n   * most of its features are fully encapsulated \"modifiers\".\n   *\n   * A modifier is a function that is called each time Popper.js needs to\n   * compute the position of the popper.\n   * For this reason, modifiers should be very performant to avoid bottlenecks.\n   * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n   */\n  modifiers: PropTypes.arrayOf(PropTypes.shape({\n    data: PropTypes.object,\n    effect: PropTypes.func,\n    enabled: PropTypes.bool,\n    fn: PropTypes.func,\n    name: PropTypes.any,\n    options: PropTypes.object,\n    phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n    requires: PropTypes.arrayOf(PropTypes.string),\n    requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n  })),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Popper placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n   * @default {}\n   */\n  popperOptions: PropTypes.shape({\n    modifiers: PropTypes.array,\n    onFirstUpdate: PropTypes.func,\n    placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n    strategy: PropTypes.oneOf(['absolute', 'fixed'])\n  }),\n  /**\n   * A ref that points to the used popper instance.\n   */\n  popperRef: refType,\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * Help supporting a react-transition-group/Transition component.\n   * @default false\n   */\n  transition: PropTypes.bool\n} : void 0;\nexport default Popper;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"component\", \"components\", \"componentsProps\", \"container\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"transition\", \"slots\", \"slotProps\"];\nimport useTheme from '@mui/system/useThemeWithoutDefault';\nimport refType from '@mui/utils/refType';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport BasePopper from './BasePopper';\nimport { styled } from '../styles';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(BasePopper, {\n  name: 'MuiPopper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n * - [Popper](https://mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n  var _slots$root;\n  const theme = useTheme();\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiPopper'\n  });\n  const {\n      anchorEl,\n      component,\n      components,\n      componentsProps,\n      container,\n      disablePortal,\n      keepMounted,\n      modifiers,\n      open,\n      placement,\n      popperOptions,\n      popperRef,\n      transition,\n      slots,\n      slotProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;\n  const otherProps = _extends({\n    anchorEl,\n    container,\n    disablePortal,\n    keepMounted,\n    modifiers,\n    open,\n    placement,\n    popperOptions,\n    popperRef,\n    transition\n  }, other);\n  return /*#__PURE__*/_jsx(PopperRoot, _extends({\n    as: component,\n    direction: theme == null ? void 0 : theme.direction,\n    slots: {\n      root: RootComponent\n    },\n    slotProps: slotProps != null ? slotProps : componentsProps\n  }, otherProps, {\n    ref: ref\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n   * or a function that returns either.\n   * It's used to set the position of the popper.\n   * The return value will passed as the reference object of the Popper instance.\n   */\n  anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n  /**\n   * Popper render function or node.\n   */\n  children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Popper.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Popper.js is based on a \"plugin-like\" architecture,\n   * most of its features are fully encapsulated \"modifiers\".\n   *\n   * A modifier is a function that is called each time Popper.js needs to\n   * compute the position of the popper.\n   * For this reason, modifiers should be very performant to avoid bottlenecks.\n   * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n   */\n  modifiers: PropTypes.arrayOf(PropTypes.shape({\n    data: PropTypes.object,\n    effect: PropTypes.func,\n    enabled: PropTypes.bool,\n    fn: PropTypes.func,\n    name: PropTypes.any,\n    options: PropTypes.object,\n    phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n    requires: PropTypes.arrayOf(PropTypes.string),\n    requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n  })),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Popper placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n   * @default {}\n   */\n  popperOptions: PropTypes.shape({\n    modifiers: PropTypes.array,\n    onFirstUpdate: PropTypes.func,\n    placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n    strategy: PropTypes.oneOf(['absolute', 'fixed'])\n  }),\n  /**\n   * A ref that points to the used popper instance.\n   */\n  popperRef: refType,\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Help supporting a react-transition-group/Transition component.\n   * @default false\n   */\n  transition: PropTypes.bool\n} : void 0;\nexport default Popper;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListSubheaderUtilityClass(slot) {\n  return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disableGutters,\n    inset,\n    disableSticky\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n  };\n  return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = styled('li', {\n  name: 'MuiListSubheader',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  boxSizing: 'border-box',\n  lineHeight: '48px',\n  listStyle: 'none',\n  color: (theme.vars || theme).palette.text.secondary,\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n  color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n  color: 'inherit'\n}, !ownerState.disableGutters && {\n  paddingLeft: 16,\n  paddingRight: 16\n}, ownerState.inset && {\n  paddingLeft: 72\n}, !ownerState.disableSticky && {\n  position: 'sticky',\n  top: 0,\n  zIndex: 1,\n  backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListSubheader'\n  });\n  const {\n      className,\n      color = 'default',\n      component = 'li',\n      disableGutters = false,\n      disableSticky = false,\n      inset = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    disableGutters,\n    disableSticky,\n    inset\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListSubheaderRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState\n  }, other));\n});\nListSubheader.muiSkipListHighlight = true;\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   * @default 'default'\n   */\n  color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the List Subheader will not have gutters.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, the List Subheader will not stick to the top during scroll.\n   * @default false\n   */\n  disableSticky: PropTypes.bool,\n  /**\n   * If `true`, the List Subheader is indented.\n   * @default false\n   */\n  inset: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getChipUtilityClass(slot) {\n  return generateUtilityClass('MuiChip', slot);\n}\nconst chipClasses = generateUtilityClasses('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'filledPrimary', 'filledSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'deleteIconFilledColorPrimary', 'deleteIconFilledColorSecondary', 'focusVisible']);\nexport default chipClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"avatar\", \"className\", \"clickable\", \"color\", \"component\", \"deleteIcon\", \"disabled\", \"icon\", \"label\", \"onClick\", \"onDelete\", \"onKeyDown\", \"onKeyUp\", \"size\", \"variant\", \"tabIndex\", \"skipFocusWhenDisabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport CancelIcon from '../internal/svg-icons/Cancel';\nimport useForkRef from '../utils/useForkRef';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport capitalize from '../utils/capitalize';\nimport ButtonBase from '../ButtonBase';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport chipClasses, { getChipUtilityClass } from './chipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    size,\n    color,\n    iconColor,\n    onDelete,\n    clickable,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, disabled && 'disabled', `size${capitalize(size)}`, `color${capitalize(color)}`, clickable && 'clickable', clickable && `clickableColor${capitalize(color)}`, onDelete && 'deletable', onDelete && `deletableColor${capitalize(color)}`, `${variant}${capitalize(color)}`],\n    label: ['label', `label${capitalize(size)}`],\n    avatar: ['avatar', `avatar${capitalize(size)}`, `avatarColor${capitalize(color)}`],\n    icon: ['icon', `icon${capitalize(size)}`, `iconColor${capitalize(iconColor)}`],\n    deleteIcon: ['deleteIcon', `deleteIcon${capitalize(size)}`, `deleteIconColor${capitalize(color)}`, `deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getChipUtilityClass, classes);\n};\nconst ChipRoot = styled('div', {\n  name: 'MuiChip',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      color,\n      iconColor,\n      clickable,\n      onDelete,\n      size,\n      variant\n    } = ownerState;\n    return [{\n      [`& .${chipClasses.avatar}`]: styles.avatar\n    }, {\n      [`& .${chipClasses.avatar}`]: styles[`avatar${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.avatar}`]: styles[`avatarColor${capitalize(color)}`]\n    }, {\n      [`& .${chipClasses.icon}`]: styles.icon\n    }, {\n      [`& .${chipClasses.icon}`]: styles[`icon${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.icon}`]: styles[`iconColor${capitalize(iconColor)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles.deleteIcon\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIconColor${capitalize(color)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n    }, styles.root, styles[`size${capitalize(size)}`], styles[`color${capitalize(color)}`], clickable && styles.clickable, clickable && color !== 'default' && styles[`clickableColor${capitalize(color)})`], onDelete && styles.deletable, onDelete && color !== 'default' && styles[`deletableColor${capitalize(color)}`], styles[variant], styles[`${variant}${capitalize(color)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const textColor = theme.palette.mode === 'light' ? theme.palette.grey[700] : theme.palette.grey[300];\n  return _extends({\n    maxWidth: '100%',\n    fontFamily: theme.typography.fontFamily,\n    fontSize: theme.typography.pxToRem(13),\n    display: 'inline-flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    height: 32,\n    color: (theme.vars || theme).palette.text.primary,\n    backgroundColor: (theme.vars || theme).palette.action.selected,\n    borderRadius: 32 / 2,\n    whiteSpace: 'nowrap',\n    transition: theme.transitions.create(['background-color', 'box-shadow']),\n    // reset cursor explicitly in case ButtonBase is used\n    cursor: 'unset',\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 0,\n    textDecoration: 'none',\n    border: 0,\n    // Remove `button` border\n    padding: 0,\n    // Remove `button` padding\n    verticalAlign: 'middle',\n    boxSizing: 'border-box',\n    [`&.${chipClasses.disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity,\n      pointerEvents: 'none'\n    },\n    [`& .${chipClasses.avatar}`]: {\n      marginLeft: 5,\n      marginRight: -6,\n      width: 24,\n      height: 24,\n      color: theme.vars ? theme.vars.palette.Chip.defaultAvatarColor : textColor,\n      fontSize: theme.typography.pxToRem(12)\n    },\n    [`& .${chipClasses.avatarColorPrimary}`]: {\n      color: (theme.vars || theme).palette.primary.contrastText,\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    },\n    [`& .${chipClasses.avatarColorSecondary}`]: {\n      color: (theme.vars || theme).palette.secondary.contrastText,\n      backgroundColor: (theme.vars || theme).palette.secondary.dark\n    },\n    [`& .${chipClasses.avatarSmall}`]: {\n      marginLeft: 4,\n      marginRight: -4,\n      width: 18,\n      height: 18,\n      fontSize: theme.typography.pxToRem(10)\n    },\n    [`& .${chipClasses.icon}`]: _extends({\n      marginLeft: 5,\n      marginRight: -6\n    }, ownerState.size === 'small' && {\n      fontSize: 18,\n      marginLeft: 4,\n      marginRight: -4\n    }, ownerState.iconColor === ownerState.color && _extends({\n      color: theme.vars ? theme.vars.palette.Chip.defaultIconColor : textColor\n    }, ownerState.color !== 'default' && {\n      color: 'inherit'\n    })),\n    [`& .${chipClasses.deleteIcon}`]: _extends({\n      WebkitTapHighlightColor: 'transparent',\n      color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.26)` : alpha(theme.palette.text.primary, 0.26),\n      fontSize: 22,\n      cursor: 'pointer',\n      margin: '0 5px 0 -6px',\n      '&:hover': {\n        color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, ownerState.size === 'small' && {\n      fontSize: 16,\n      marginRight: 4,\n      marginLeft: -4\n    }, ownerState.color !== 'default' && {\n      color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].contrastTextChannel} / 0.7)` : alpha(theme.palette[ownerState.color].contrastText, 0.7),\n      '&:hover, &:active': {\n        color: (theme.vars || theme).palette[ownerState.color].contrastText\n      }\n    })\n  }, ownerState.size === 'small' && {\n    height: 24\n  }, ownerState.color !== 'default' && {\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n    color: (theme.vars || theme).palette[ownerState.color].contrastText\n  }, ownerState.onDelete && {\n    [`&.${chipClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  }, ownerState.onDelete && ownerState.color !== 'default' && {\n    [`&.${chipClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n    }\n  });\n}, ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.clickable && {\n  userSelect: 'none',\n  WebkitTapHighlightColor: 'transparent',\n  cursor: 'pointer',\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n  },\n  [`&.${chipClasses.focusVisible}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n  },\n  '&:active': {\n    boxShadow: (theme.vars || theme).shadows[1]\n  }\n}, ownerState.clickable && ownerState.color !== 'default' && {\n  [`&:hover, &.${chipClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n  }\n}), ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.variant === 'outlined' && {\n  backgroundColor: 'transparent',\n  border: theme.vars ? `1px solid ${theme.vars.palette.Chip.defaultBorder}` : `1px solid ${theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[700]}`,\n  [`&.${chipClasses.clickable}:hover`]: {\n    backgroundColor: (theme.vars || theme).palette.action.hover\n  },\n  [`&.${chipClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`& .${chipClasses.avatar}`]: {\n    marginLeft: 4\n  },\n  [`& .${chipClasses.avatarSmall}`]: {\n    marginLeft: 2\n  },\n  [`& .${chipClasses.icon}`]: {\n    marginLeft: 4\n  },\n  [`& .${chipClasses.iconSmall}`]: {\n    marginLeft: 2\n  },\n  [`& .${chipClasses.deleteIcon}`]: {\n    marginRight: 5\n  },\n  [`& .${chipClasses.deleteIconSmall}`]: {\n    marginRight: 3\n  }\n}, ownerState.variant === 'outlined' && ownerState.color !== 'default' && {\n  color: (theme.vars || theme).palette[ownerState.color].main,\n  border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7)}`,\n  [`&.${chipClasses.clickable}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity)\n  },\n  [`&.${chipClasses.focusVisible}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.focusOpacity)\n  },\n  [`& .${chipClasses.deleteIcon}`]: {\n    color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7),\n    '&:hover, &:active': {\n      color: (theme.vars || theme).palette[ownerState.color].main\n    }\n  }\n}));\nconst ChipLabel = styled('span', {\n  name: 'MuiChip',\n  slot: 'Label',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      size\n    } = ownerState;\n    return [styles.label, styles[`label${capitalize(size)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  paddingLeft: 12,\n  paddingRight: 12,\n  whiteSpace: 'nowrap'\n}, ownerState.variant === 'outlined' && {\n  paddingLeft: 11,\n  paddingRight: 11\n}, ownerState.size === 'small' && {\n  paddingLeft: 8,\n  paddingRight: 8\n}, ownerState.size === 'small' && ownerState.variant === 'outlined' && {\n  paddingLeft: 7,\n  paddingRight: 7\n}));\nfunction isDeleteKeyboardEvent(keyboardEvent) {\n  return keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete';\n}\n\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n */\nconst Chip = /*#__PURE__*/React.forwardRef(function Chip(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiChip'\n  });\n  const {\n      avatar: avatarProp,\n      className,\n      clickable: clickableProp,\n      color = 'default',\n      component: ComponentProp,\n      deleteIcon: deleteIconProp,\n      disabled = false,\n      icon: iconProp,\n      label,\n      onClick,\n      onDelete,\n      onKeyDown,\n      onKeyUp,\n      size = 'medium',\n      variant = 'filled',\n      tabIndex,\n      skipFocusWhenDisabled = false // TODO v6: Rename to `focusableWhenDisabled`.\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const chipRef = React.useRef(null);\n  const handleRef = useForkRef(chipRef, ref);\n  const handleDeleteIconClick = event => {\n    // Stop the event from bubbling up to the `Chip`\n    event.stopPropagation();\n    if (onDelete) {\n      onDelete(event);\n    }\n  };\n  const handleKeyDown = event => {\n    // Ignore events from children of `Chip`.\n    if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {\n      // Will be handled in keyUp, otherwise some browsers\n      // might init navigation\n      event.preventDefault();\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleKeyUp = event => {\n    // Ignore events from children of `Chip`.\n    if (event.currentTarget === event.target) {\n      if (onDelete && isDeleteKeyboardEvent(event)) {\n        onDelete(event);\n      } else if (event.key === 'Escape' && chipRef.current) {\n        chipRef.current.blur();\n      }\n    }\n    if (onKeyUp) {\n      onKeyUp(event);\n    }\n  };\n  const clickable = clickableProp !== false && onClick ? true : clickableProp;\n  const component = clickable || onDelete ? ButtonBase : ComponentProp || 'div';\n  const ownerState = _extends({}, props, {\n    component,\n    disabled,\n    size,\n    color,\n    iconColor: /*#__PURE__*/React.isValidElement(iconProp) ? iconProp.props.color || color : color,\n    onDelete: !!onDelete,\n    clickable,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const moreProps = component === ButtonBase ? _extends({\n    component: ComponentProp || 'div',\n    focusVisibleClassName: classes.focusVisible\n  }, onDelete && {\n    disableRipple: true\n  }) : {};\n  let deleteIcon = null;\n  if (onDelete) {\n    deleteIcon = deleteIconProp && /*#__PURE__*/React.isValidElement(deleteIconProp) ? ( /*#__PURE__*/React.cloneElement(deleteIconProp, {\n      className: clsx(deleteIconProp.props.className, classes.deleteIcon),\n      onClick: handleDeleteIconClick\n    })) : /*#__PURE__*/_jsx(CancelIcon, {\n      className: clsx(classes.deleteIcon),\n      onClick: handleDeleteIconClick\n    });\n  }\n  let avatar = null;\n  if (avatarProp && /*#__PURE__*/React.isValidElement(avatarProp)) {\n    avatar = /*#__PURE__*/React.cloneElement(avatarProp, {\n      className: clsx(classes.avatar, avatarProp.props.className)\n    });\n  }\n  let icon = null;\n  if (iconProp && /*#__PURE__*/React.isValidElement(iconProp)) {\n    icon = /*#__PURE__*/React.cloneElement(iconProp, {\n      className: clsx(classes.icon, iconProp.props.className)\n    });\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    if (avatar && icon) {\n      console.error('MUI: The Chip component can not handle the avatar ' + 'and the icon prop at the same time. Pick one.');\n    }\n  }\n  return /*#__PURE__*/_jsxs(ChipRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    disabled: clickable && disabled ? true : undefined,\n    onClick: onClick,\n    onKeyDown: handleKeyDown,\n    onKeyUp: handleKeyUp,\n    ref: handleRef,\n    tabIndex: skipFocusWhenDisabled && disabled ? -1 : tabIndex,\n    ownerState: ownerState\n  }, moreProps, other, {\n    children: [avatar || icon, /*#__PURE__*/_jsx(ChipLabel, {\n      className: clsx(classes.label),\n      ownerState: ownerState,\n      children: label\n    }), deleteIcon]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Chip.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Avatar element to display.\n   */\n  avatar: PropTypes.element,\n  /**\n   * This prop isn't supported.\n   * Use the `component` prop if you need to change the children structure.\n   */\n  children: unsupportedProp,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the chip will appear clickable, and will raise when pressed,\n   * even if the onClick prop is not defined.\n   * If `false`, the chip will not appear clickable, even if onClick prop is defined.\n   * This can be used, for example,\n   * along with the component prop to indicate an anchor Chip is clickable.\n   * Note: this controls the UI and does not affect the onClick event.\n   */\n  clickable: PropTypes.bool,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Override the default delete icon element. Shown only if `onDelete` is set.\n   */\n  deleteIcon: PropTypes.element,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Icon element.\n   */\n  icon: PropTypes.element,\n  /**\n   * The content of the component.\n   */\n  label: PropTypes.node,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * Callback fired when the delete icon is clicked.\n   * If set, the delete icon will be shown.\n   */\n  onDelete: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * If `true`, allows the disabled chip to escape focus.\n   * If `false`, allows the disabled chip to receive focus.\n   * @default false\n   */\n  skipFocusWhenDisabled: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * The variant to use.\n   * @default 'filled'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Chip;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"maxRows\", \"minRows\", \"style\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_debounce as debounce, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, unstable_ownerWindow as ownerWindow } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getStyleValue(value) {\n  return parseInt(value, 10) || 0;\n}\nconst styles = {\n  shadow: {\n    // Visibility needed to hide the extra text area on iPads\n    visibility: 'hidden',\n    // Remove from the content flow\n    position: 'absolute',\n    // Ignore the scrollbar width\n    overflow: 'hidden',\n    height: 0,\n    top: 0,\n    left: 0,\n    // Create a new layer, increase the isolation of the computed values\n    transform: 'translateZ(0)'\n  }\n};\nfunction isObjectEmpty(object) {\n  // eslint-disable-next-line\n  for (const _ in object) {\n    return false;\n  }\n  return true;\n}\nfunction isEmpty(obj) {\n  return isObjectEmpty(obj) || obj.outerHeightStyle === 0 && !obj.overflowing;\n}\n\n/**\n *\n * Demos:\n *\n * - [Textarea Autosize](https://mui.com/material-ui/react-textarea-autosize/)\n *\n * API:\n *\n * - [TextareaAutosize API](https://mui.com/material-ui/api/textarea-autosize/)\n */\nconst TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, forwardedRef) {\n  const {\n      onChange,\n      maxRows,\n      minRows = 1,\n      style,\n      value\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    current: isControlled\n  } = React.useRef(value != null);\n  const textareaRef = React.useRef(null);\n  const handleRef = useForkRef(forwardedRef, textareaRef);\n  const heightRef = React.useRef(null);\n  const hiddenTextareaRef = React.useRef(null);\n  const calculateTextareaStyles = React.useCallback(() => {\n    const textarea = textareaRef.current;\n    const hiddenTextarea = hiddenTextareaRef.current;\n    if (!textarea || !hiddenTextarea) {\n      return undefined;\n    }\n    const containerWindow = ownerWindow(textarea);\n    const computedStyle = containerWindow.getComputedStyle(textarea);\n\n    // If input's width is shrunk and it's not visible, don't sync height.\n    if (computedStyle.width === '0px') {\n      return {\n        outerHeightStyle: 0,\n        overflowing: false\n      };\n    }\n    hiddenTextarea.style.width = computedStyle.width;\n    hiddenTextarea.value = textarea.value || props.placeholder || 'x';\n    if (hiddenTextarea.value.slice(-1) === '\\n') {\n      // Certain fonts which overflow the line height will cause the textarea\n      // to report a different scrollHeight depending on whether the last line\n      // is empty. Make it non-empty to avoid this issue.\n      hiddenTextarea.value += ' ';\n    }\n    const boxSizing = computedStyle.boxSizing;\n    const padding = getStyleValue(computedStyle.paddingBottom) + getStyleValue(computedStyle.paddingTop);\n    const border = getStyleValue(computedStyle.borderBottomWidth) + getStyleValue(computedStyle.borderTopWidth);\n\n    // The height of the inner content\n    const innerHeight = hiddenTextarea.scrollHeight;\n\n    // Measure height of a textarea with a single row\n    hiddenTextarea.value = 'x';\n    const singleRowHeight = hiddenTextarea.scrollHeight;\n\n    // The height of the outer content\n    let outerHeight = innerHeight;\n    if (minRows) {\n      outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n    }\n    if (maxRows) {\n      outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n    }\n    outerHeight = Math.max(outerHeight, singleRowHeight);\n\n    // Take the box sizing into account for applying this value as a style.\n    const outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n    const overflowing = Math.abs(outerHeight - innerHeight) <= 1;\n    return {\n      outerHeightStyle,\n      overflowing\n    };\n  }, [maxRows, minRows, props.placeholder]);\n  const didHeightChange = useEventCallback(() => {\n    const textarea = textareaRef.current;\n    const textareaStyles = calculateTextareaStyles();\n    if (!textarea || !textareaStyles || isEmpty(textareaStyles)) {\n      return false;\n    }\n    const outerHeightStyle = textareaStyles.outerHeightStyle;\n    return heightRef.current != null && heightRef.current !== outerHeightStyle;\n  });\n  const syncHeight = React.useCallback(() => {\n    const textarea = textareaRef.current;\n    const textareaStyles = calculateTextareaStyles();\n    if (!textarea || !textareaStyles || isEmpty(textareaStyles)) {\n      return;\n    }\n    const outerHeightStyle = textareaStyles.outerHeightStyle;\n    if (heightRef.current !== outerHeightStyle) {\n      heightRef.current = outerHeightStyle;\n      textarea.style.height = `${outerHeightStyle}px`;\n    }\n    textarea.style.overflow = textareaStyles.overflowing ? 'hidden' : '';\n  }, [calculateTextareaStyles]);\n  const frameRef = React.useRef(-1);\n  useEnhancedEffect(() => {\n    const debouncedHandleResize = debounce(syncHeight);\n    const textarea = textareaRef == null ? void 0 : textareaRef.current;\n    if (!textarea) {\n      return undefined;\n    }\n    const containerWindow = ownerWindow(textarea);\n    containerWindow.addEventListener('resize', debouncedHandleResize);\n    let resizeObserver;\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(() => {\n        if (didHeightChange()) {\n          // avoid \"ResizeObserver loop completed with undelivered notifications\" error\n          // by temporarily unobserving the textarea element while manipulating the height\n          // and reobserving one frame later\n          resizeObserver.unobserve(textarea);\n          cancelAnimationFrame(frameRef.current);\n          syncHeight();\n          frameRef.current = requestAnimationFrame(() => {\n            resizeObserver.observe(textarea);\n          });\n        }\n      });\n      resizeObserver.observe(textarea);\n    }\n    return () => {\n      debouncedHandleResize.clear();\n      cancelAnimationFrame(frameRef.current);\n      containerWindow.removeEventListener('resize', debouncedHandleResize);\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n      }\n    };\n  }, [calculateTextareaStyles, syncHeight, didHeightChange]);\n  useEnhancedEffect(() => {\n    syncHeight();\n  });\n  const handleChange = event => {\n    if (!isControlled) {\n      syncHeight();\n    }\n    if (onChange) {\n      onChange(event);\n    }\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"textarea\", _extends({\n      value: value,\n      onChange: handleChange,\n      ref: handleRef\n      // Apply the rows prop to get a \"correct\" first SSR paint\n      ,\n      rows: minRows,\n      style: style\n    }, other)), /*#__PURE__*/_jsx(\"textarea\", {\n      \"aria-hidden\": true,\n      className: props.className,\n      readOnly: true,\n      ref: hiddenTextareaRef,\n      tabIndex: -1,\n      style: _extends({}, styles.shadow, style, {\n        paddingTop: 0,\n        paddingBottom: 0\n      })\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Maximum number of rows to display.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display.\n   * @default 1\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  placeholder: PropTypes.string,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * @ignore\n   */\n  value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.number, PropTypes.string])\n} : void 0;\nexport default TextareaAutosize;","export default function formControlState({\n  props,\n  states,\n  muiFormControl\n}) {\n  return states.reduce((acc, state) => {\n    acc[state] = props[state];\n    if (muiFormControl) {\n      if (typeof props[state] === 'undefined') {\n        acc[state] = muiFormControl[state];\n      }\n    }\n    return acc;\n  }, {});\n}","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","'use client';\n\nimport * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n  return React.useContext(FormControlContext);\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as SystemGlobalStyles } from '@mui/system';\nimport defaultTheme from '../styles/defaultTheme';\nimport THEME_ID from '../styles/identifier';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles(props) {\n  return /*#__PURE__*/_jsx(SystemGlobalStyles, _extends({}, props, {\n    defaultTheme: defaultTheme,\n    themeId: THEME_ID\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The styles you want to apply globally.\n   */\n  styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool])\n} : void 0;\nexport default GlobalStyles;","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n  return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n//                    True when any number or string with length.\nexport function isFilled(obj, SSR = false) {\n  return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n}\n\n// Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n//                    True when adorned at the start.\nexport function isAdornedStart(obj) {\n  return obj.startAdornment;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputBaseUtilityClass(slot) {\n  return generateUtilityClass('MuiInputBase', slot);\n}\nconst inputBaseClasses = generateUtilityClasses('MuiInputBase', ['root', 'formControl', 'focused', 'disabled', 'adornedStart', 'adornedEnd', 'error', 'sizeSmall', 'multiline', 'colorSecondary', 'fullWidth', 'hiddenLabel', 'readOnly', 'input', 'inputSizeSmall', 'inputMultiline', 'inputTypeSearch', 'inputAdornedStart', 'inputAdornedEnd', 'inputHiddenLabel']);\nexport default inputBaseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"aria-describedby\", \"autoComplete\", \"autoFocus\", \"className\", \"color\", \"components\", \"componentsProps\", \"defaultValue\", \"disabled\", \"disableInjectingGlobalStyles\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onClick\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"renderSuffix\", \"rows\", \"size\", \"slotProps\", \"slots\", \"startAdornment\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isHostComponent from '@mui/utils/isHostComponent';\nimport TextareaAutosize from '../TextareaAutosize';\nimport formControlState from '../FormControl/formControlState';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport GlobalStyles from '../GlobalStyles';\nimport { isFilled } from './utils';\nimport inputBaseClasses, { getInputBaseUtilityClass } from './inputBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const rootOverridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.formControl && styles.formControl, ownerState.startAdornment && styles.adornedStart, ownerState.endAdornment && styles.adornedEnd, ownerState.error && styles.error, ownerState.size === 'small' && styles.sizeSmall, ownerState.multiline && styles.multiline, ownerState.color && styles[`color${capitalize(ownerState.color)}`], ownerState.fullWidth && styles.fullWidth, ownerState.hiddenLabel && styles.hiddenLabel];\n};\nexport const inputOverridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.input, ownerState.size === 'small' && styles.inputSizeSmall, ownerState.multiline && styles.inputMultiline, ownerState.type === 'search' && styles.inputTypeSearch, ownerState.startAdornment && styles.inputAdornedStart, ownerState.endAdornment && styles.inputAdornedEnd, ownerState.hiddenLabel && styles.inputHiddenLabel];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disabled,\n    error,\n    endAdornment,\n    focused,\n    formControl,\n    fullWidth,\n    hiddenLabel,\n    multiline,\n    readOnly,\n    size,\n    startAdornment,\n    type\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', focused && 'focused', formControl && 'formControl', size && size !== 'medium' && `size${capitalize(size)}`, multiline && 'multiline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', hiddenLabel && 'hiddenLabel', readOnly && 'readOnly'],\n    input: ['input', disabled && 'disabled', type === 'search' && 'inputTypeSearch', multiline && 'inputMultiline', size === 'small' && 'inputSizeSmall', hiddenLabel && 'inputHiddenLabel', startAdornment && 'inputAdornedStart', endAdornment && 'inputAdornedEnd', readOnly && 'readOnly']\n  };\n  return composeClasses(slots, getInputBaseUtilityClass, classes);\n};\nexport const InputBaseRoot = styled('div', {\n  name: 'MuiInputBase',\n  slot: 'Root',\n  overridesResolver: rootOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({}, theme.typography.body1, {\n  color: (theme.vars || theme).palette.text.primary,\n  lineHeight: '1.4375em',\n  // 23px\n  boxSizing: 'border-box',\n  // Prevent padding issue with fullWidth.\n  position: 'relative',\n  cursor: 'text',\n  display: 'inline-flex',\n  alignItems: 'center',\n  [`&.${inputBaseClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled,\n    cursor: 'default'\n  }\n}, ownerState.multiline && _extends({\n  padding: '4px 0 5px'\n}, ownerState.size === 'small' && {\n  paddingTop: 1\n}), ownerState.fullWidth && {\n  width: '100%'\n}));\nexport const InputBaseComponent = styled('input', {\n  name: 'MuiInputBase',\n  slot: 'Input',\n  overridesResolver: inputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => {\n  const light = theme.palette.mode === 'light';\n  const placeholder = _extends({\n    color: 'currentColor'\n  }, theme.vars ? {\n    opacity: theme.vars.opacity.inputPlaceholder\n  } : {\n    opacity: light ? 0.42 : 0.5\n  }, {\n    transition: theme.transitions.create('opacity', {\n      duration: theme.transitions.duration.shorter\n    })\n  });\n  const placeholderHidden = {\n    opacity: '0 !important'\n  };\n  const placeholderVisible = theme.vars ? {\n    opacity: theme.vars.opacity.inputPlaceholder\n  } : {\n    opacity: light ? 0.42 : 0.5\n  };\n  return _extends({\n    font: 'inherit',\n    letterSpacing: 'inherit',\n    color: 'currentColor',\n    padding: '4px 0 5px',\n    border: 0,\n    boxSizing: 'content-box',\n    background: 'none',\n    height: '1.4375em',\n    // Reset 23pxthe native input line-height\n    margin: 0,\n    // Reset for Safari\n    WebkitTapHighlightColor: 'transparent',\n    display: 'block',\n    // Make the flex item shrink with Firefox\n    minWidth: 0,\n    width: '100%',\n    // Fix IE11 width issue\n    animationName: 'mui-auto-fill-cancel',\n    animationDuration: '10ms',\n    '&::-webkit-input-placeholder': placeholder,\n    '&::-moz-placeholder': placeholder,\n    // Firefox 19+\n    '&:-ms-input-placeholder': placeholder,\n    // IE11\n    '&::-ms-input-placeholder': placeholder,\n    // Edge\n    '&:focus': {\n      outline: 0\n    },\n    // Reset Firefox invalid required input style\n    '&:invalid': {\n      boxShadow: 'none'\n    },\n    '&::-webkit-search-decoration': {\n      // Remove the padding when type=search.\n      WebkitAppearance: 'none'\n    },\n    // Show and hide the placeholder logic\n    [`label[data-shrink=false] + .${inputBaseClasses.formControl} &`]: {\n      '&::-webkit-input-placeholder': placeholderHidden,\n      '&::-moz-placeholder': placeholderHidden,\n      // Firefox 19+\n      '&:-ms-input-placeholder': placeholderHidden,\n      // IE11\n      '&::-ms-input-placeholder': placeholderHidden,\n      // Edge\n      '&:focus::-webkit-input-placeholder': placeholderVisible,\n      '&:focus::-moz-placeholder': placeholderVisible,\n      // Firefox 19+\n      '&:focus:-ms-input-placeholder': placeholderVisible,\n      // IE11\n      '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n    },\n    [`&.${inputBaseClasses.disabled}`]: {\n      opacity: 1,\n      // Reset iOS opacity\n      WebkitTextFillColor: (theme.vars || theme).palette.text.disabled // Fix opacity Safari bug\n    },\n    '&:-webkit-autofill': {\n      animationDuration: '5000s',\n      animationName: 'mui-auto-fill'\n    }\n  }, ownerState.size === 'small' && {\n    paddingTop: 1\n  }, ownerState.multiline && {\n    height: 'auto',\n    resize: 'none',\n    padding: 0,\n    paddingTop: 0\n  }, ownerState.type === 'search' && {\n    // Improve type search style.\n    MozAppearance: 'textfield'\n  });\n});\nconst inputGlobalStyles = /*#__PURE__*/_jsx(GlobalStyles, {\n  styles: {\n    '@keyframes mui-auto-fill': {\n      from: {\n        display: 'block'\n      }\n    },\n    '@keyframes mui-auto-fill-cancel': {\n      from: {\n        display: 'block'\n      }\n    }\n  }\n});\n\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\nconst InputBase = /*#__PURE__*/React.forwardRef(function InputBase(inProps, ref) {\n  var _slotProps$input;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiInputBase'\n  });\n  const {\n      'aria-describedby': ariaDescribedby,\n      autoComplete,\n      autoFocus,\n      className,\n      components = {},\n      componentsProps = {},\n      defaultValue,\n      disabled,\n      disableInjectingGlobalStyles,\n      endAdornment,\n      fullWidth = false,\n      id,\n      inputComponent = 'input',\n      inputProps: inputPropsProp = {},\n      inputRef: inputRefProp,\n      maxRows,\n      minRows,\n      multiline = false,\n      name,\n      onBlur,\n      onChange,\n      onClick,\n      onFocus,\n      onKeyDown,\n      onKeyUp,\n      placeholder,\n      readOnly,\n      renderSuffix,\n      rows,\n      slotProps = {},\n      slots = {},\n      startAdornment,\n      type = 'text',\n      value: valueProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n  const {\n    current: isControlled\n  } = React.useRef(value != null);\n  const inputRef = React.useRef();\n  const handleInputRefWarning = React.useCallback(instance => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n        console.error(['MUI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `ref` prop.', 'Make sure the `ref` prop is called with a HTMLInputElement.'].join('\\n'));\n      }\n    }\n  }, []);\n  const handleInputRef = useForkRef(inputRef, inputRefProp, inputPropsProp.ref, handleInputRefWarning);\n  const [focused, setFocused] = React.useState(false);\n  const muiFormControl = useFormControl();\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (muiFormControl) {\n        return muiFormControl.registerEffect();\n      }\n      return undefined;\n    }, [muiFormControl]);\n  }\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['color', 'disabled', 'error', 'hiddenLabel', 'size', 'required', 'filled']\n  });\n  fcs.focused = muiFormControl ? muiFormControl.focused : focused;\n\n  // The blur won't fire when the disabled state is set on a focused input.\n  // We need to book keep the focused state manually.\n  React.useEffect(() => {\n    if (!muiFormControl && disabled && focused) {\n      setFocused(false);\n      if (onBlur) {\n        onBlur();\n      }\n    }\n  }, [muiFormControl, disabled, focused, onBlur]);\n  const onFilled = muiFormControl && muiFormControl.onFilled;\n  const onEmpty = muiFormControl && muiFormControl.onEmpty;\n  const checkDirty = React.useCallback(obj => {\n    if (isFilled(obj)) {\n      if (onFilled) {\n        onFilled();\n      }\n    } else if (onEmpty) {\n      onEmpty();\n    }\n  }, [onFilled, onEmpty]);\n  useEnhancedEffect(() => {\n    if (isControlled) {\n      checkDirty({\n        value\n      });\n    }\n  }, [value, checkDirty, isControlled]);\n  const handleFocus = event => {\n    // Fix a bug with IE11 where the focus/blur events are triggered\n    // while the component is disabled.\n    if (fcs.disabled) {\n      event.stopPropagation();\n      return;\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n    if (inputPropsProp.onFocus) {\n      inputPropsProp.onFocus(event);\n    }\n    if (muiFormControl && muiFormControl.onFocus) {\n      muiFormControl.onFocus(event);\n    } else {\n      setFocused(true);\n    }\n  };\n  const handleBlur = event => {\n    if (onBlur) {\n      onBlur(event);\n    }\n    if (inputPropsProp.onBlur) {\n      inputPropsProp.onBlur(event);\n    }\n    if (muiFormControl && muiFormControl.onBlur) {\n      muiFormControl.onBlur(event);\n    } else {\n      setFocused(false);\n    }\n  };\n  const handleChange = (event, ...args) => {\n    if (!isControlled) {\n      const element = event.target || inputRef.current;\n      if (element == null) {\n        throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Expected valid input target. Did you use a custom \\`inputComponent\\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : _formatMuiErrorMessage(1));\n      }\n      checkDirty({\n        value: element.value\n      });\n    }\n    if (inputPropsProp.onChange) {\n      inputPropsProp.onChange(event, ...args);\n    }\n\n    // Perform in the willUpdate\n    if (onChange) {\n      onChange(event, ...args);\n    }\n  };\n\n  // Check the input state on mount, in case it was filled by the user\n  // or auto filled by the browser before the hydration (for SSR).\n  React.useEffect(() => {\n    checkDirty(inputRef.current);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  const handleClick = event => {\n    if (inputRef.current && event.currentTarget === event.target) {\n      inputRef.current.focus();\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  let InputComponent = inputComponent;\n  let inputProps = inputPropsProp;\n  if (multiline && InputComponent === 'input') {\n    if (rows) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (minRows || maxRows) {\n          console.warn('MUI: You can not use the `minRows` or `maxRows` props when the input `rows` prop is set.');\n        }\n      }\n      inputProps = _extends({\n        type: undefined,\n        minRows: rows,\n        maxRows: rows\n      }, inputProps);\n    } else {\n      inputProps = _extends({\n        type: undefined,\n        maxRows,\n        minRows\n      }, inputProps);\n    }\n    InputComponent = TextareaAutosize;\n  }\n  const handleAutoFill = event => {\n    // Provide a fake value as Chrome might not let you access it for security reasons.\n    checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n      value: 'x'\n    });\n  };\n  React.useEffect(() => {\n    if (muiFormControl) {\n      muiFormControl.setAdornedStart(Boolean(startAdornment));\n    }\n  }, [muiFormControl, startAdornment]);\n  const ownerState = _extends({}, props, {\n    color: fcs.color || 'primary',\n    disabled: fcs.disabled,\n    endAdornment,\n    error: fcs.error,\n    focused: fcs.focused,\n    formControl: muiFormControl,\n    fullWidth,\n    hiddenLabel: fcs.hiddenLabel,\n    multiline,\n    size: fcs.size,\n    startAdornment,\n    type\n  });\n  const classes = useUtilityClasses(ownerState);\n  const Root = slots.root || components.Root || InputBaseRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const Input = slots.input || components.Input || InputBaseComponent;\n  inputProps = _extends({}, inputProps, (_slotProps$input = slotProps.input) != null ? _slotProps$input : componentsProps.input);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [!disableInjectingGlobalStyles && inputGlobalStyles, /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n      ownerState: _extends({}, ownerState, rootProps.ownerState)\n    }, {\n      ref: ref,\n      onClick: handleClick\n    }, other, {\n      className: clsx(classes.root, rootProps.className, className, readOnly && 'MuiInputBase-readOnly'),\n      children: [startAdornment, /*#__PURE__*/_jsx(FormControlContext.Provider, {\n        value: null,\n        children: /*#__PURE__*/_jsx(Input, _extends({\n          ownerState: ownerState,\n          \"aria-invalid\": fcs.error,\n          \"aria-describedby\": ariaDescribedby,\n          autoComplete: autoComplete,\n          autoFocus: autoFocus,\n          defaultValue: defaultValue,\n          disabled: fcs.disabled,\n          id: id,\n          onAnimationStart: handleAutoFill,\n          name: name,\n          placeholder: placeholder,\n          readOnly: readOnly,\n          required: fcs.required,\n          rows: rows,\n          value: value,\n          onKeyDown: onKeyDown,\n          onKeyUp: onKeyUp,\n          type: type\n        }, inputProps, !isHostComponent(Input) && {\n          as: InputComponent,\n          ownerState: _extends({}, ownerState, inputProps.ownerState)\n        }, {\n          ref: handleInputRef,\n          className: clsx(classes.input, inputProps.className, readOnly && 'MuiInputBase-readOnly'),\n          onBlur: handleBlur,\n          onChange: handleChange,\n          onFocus: handleFocus\n        }))\n      }), endAdornment, renderSuffix ? renderSuffix(_extends({}, fcs, {\n        startAdornment\n      })) : null]\n    }))]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputBase.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, GlobalStyles for the auto-fill keyframes will not be injected/removed on mount/unmount. Make sure to inject them at the top of your application.\n   * This option is intended to help with boosting the initial rendering performance if you are loading a big amount of Input components at once.\n   * @default false\n   */\n  disableInjectingGlobalStyles: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: elementTypeAcceptingRef,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the `input` is blurred.\n   *\n   * Notice that the first argument (event) might be undefined.\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the `input` doesn't satisfy its constraints.\n   */\n  onInvalid: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  renderSuffix: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The size of the component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default InputBase;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getInputUtilityClass(slot) {\n  return generateUtilityClass('MuiInput', slot);\n}\nconst inputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiInput', ['root', 'underline', 'input']));\nexport default inputClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getOutlinedInputUtilityClass(slot) {\n  return generateUtilityClass('MuiOutlinedInput', slot);\n}\nconst outlinedInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiOutlinedInput', ['root', 'notchedOutline', 'input']));\nexport default outlinedInputClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getFilledInputUtilityClass(slot) {\n  return generateUtilityClass('MuiFilledInput', slot);\n}\nconst filledInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiFilledInput', ['root', 'underline', 'input']));\nexport default filledInputClasses;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n  return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'expanded', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionKey\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"],\n  _excluded2 = [\"ref\"],\n  _excluded3 = [\"key\"],\n  _excluded4 = [\"key\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport useAutocomplete, { createFilterOptions } from '../useAutocomplete';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePortal,\n    expanded,\n    focused,\n    fullWidth,\n    hasClearIcon,\n    hasPopupIcon,\n    inputFocused,\n    popupOpen,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', expanded && 'expanded', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n    inputRoot: ['inputRoot'],\n    input: ['input', inputFocused && 'inputFocused'],\n    tag: ['tag', `tagSize${capitalize(size)}`],\n    endAdornment: ['endAdornment'],\n    clearIndicator: ['clearIndicator'],\n    popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n    popper: ['popper', disablePortal && 'popperDisablePortal'],\n    paper: ['paper'],\n    listbox: ['listbox'],\n    loading: ['loading'],\n    noOptions: ['noOptions'],\n    option: ['option'],\n    groupLabel: ['groupLabel'],\n    groupUl: ['groupUl']\n  };\n  return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      fullWidth,\n      hasClearIcon,\n      hasPopupIcon,\n      inputFocused,\n      size\n    } = ownerState;\n    return [{\n      [`& .${autocompleteClasses.tag}`]: styles.tag\n    }, {\n      [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n    }, {\n      [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n    }, {\n      [`& .${autocompleteClasses.input}`]: styles.input\n    }, {\n      [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n    }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n  }\n})({\n  [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n    visibility: 'visible'\n  },\n  /* Avoid double tap issue on iOS */\n  '@media (pointer: fine)': {\n    [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n      visibility: 'visible'\n    }\n  },\n  [`& .${autocompleteClasses.tag}`]: {\n    margin: 3,\n    maxWidth: 'calc(100% - 6px)'\n  },\n  [`& .${autocompleteClasses.inputRoot}`]: {\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4\n    },\n    [`& .${autocompleteClasses.input}`]: {\n      width: 0,\n      minWidth: 30\n    }\n  },\n  [`& .${inputClasses.root}`]: {\n    paddingBottom: 1,\n    '& .MuiInput-input': {\n      padding: '4px 4px 4px 0px'\n    }\n  },\n  [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    [`& .${inputClasses.input}`]: {\n      padding: '2px 4px 3px 0'\n    }\n  },\n  [`& .${outlinedInputClasses.root}`]: {\n    padding: 9,\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4 + 9\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4 + 9\n    },\n    [`& .${autocompleteClasses.input}`]: {\n      padding: '7.5px 4px 7.5px 5px'\n    },\n    [`& .${autocompleteClasses.endAdornment}`]: {\n      right: 9\n    }\n  },\n  [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    // Don't specify paddingRight, as it overrides the default value set when there is only\n    // one of the popup or clear icon as the specificity is equal so the latter one wins\n    paddingTop: 6,\n    paddingBottom: 6,\n    paddingLeft: 6,\n    [`& .${autocompleteClasses.input}`]: {\n      padding: '2.5px 4px 2.5px 8px'\n    }\n  },\n  [`& .${filledInputClasses.root}`]: {\n    paddingTop: 19,\n    paddingLeft: 8,\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4 + 9\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4 + 9\n    },\n    [`& .${filledInputClasses.input}`]: {\n      padding: '7px 4px'\n    },\n    [`& .${autocompleteClasses.endAdornment}`]: {\n      right: 9\n    }\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    paddingBottom: 1,\n    [`& .${filledInputClasses.input}`]: {\n      padding: '2.5px 4px'\n    }\n  },\n  [`& .${inputBaseClasses.hiddenLabel}`]: {\n    paddingTop: 8\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n    paddingTop: 0,\n    paddingBottom: 0,\n    [`& .${autocompleteClasses.input}`]: {\n      paddingTop: 16,\n      paddingBottom: 17\n    }\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n    [`& .${autocompleteClasses.input}`]: {\n      paddingTop: 8,\n      paddingBottom: 9\n    }\n  },\n  [`& .${autocompleteClasses.input}`]: {\n    flexGrow: 1,\n    textOverflow: 'ellipsis',\n    opacity: 0\n  },\n  variants: [{\n    props: {\n      fullWidth: true\n    },\n    style: {\n      width: '100%'\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      [`& .${autocompleteClasses.tag}`]: {\n        margin: 2,\n        maxWidth: 'calc(100% - 4px)'\n      }\n    }\n  }, {\n    props: {\n      inputFocused: true\n    },\n    style: {\n      [`& .${autocompleteClasses.input}`]: {\n        opacity: 1\n      }\n    }\n  }, {\n    props: {\n      multiple: true\n    },\n    style: {\n      [`& .${autocompleteClasses.inputRoot}`]: {\n        flexWrap: 'wrap'\n      }\n    }\n  }]\n});\nconst AutocompleteEndAdornment = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'EndAdornment',\n  overridesResolver: (props, styles) => styles.endAdornment\n})({\n  // We use a position absolute to support wrapping tags.\n  position: 'absolute',\n  right: 0,\n  top: '50%',\n  transform: 'translate(0, -50%)'\n});\nconst AutocompleteClearIndicator = styled(IconButton, {\n  name: 'MuiAutocomplete',\n  slot: 'ClearIndicator',\n  overridesResolver: (props, styles) => styles.clearIndicator\n})({\n  marginRight: -2,\n  padding: 4,\n  visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n  name: 'MuiAutocomplete',\n  slot: 'PopupIndicator',\n  overridesResolver: ({\n    ownerState\n  }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})({\n  padding: 2,\n  marginRight: -2,\n  variants: [{\n    props: {\n      popupOpen: true\n    },\n    style: {\n      transform: 'rotate(180deg)'\n    }\n  }]\n});\nconst AutocompletePopper = styled(Popper, {\n  name: 'MuiAutocomplete',\n  slot: 'Popper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${autocompleteClasses.option}`]: styles.option\n    }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n  }\n})(({\n  theme\n}) => ({\n  zIndex: (theme.vars || theme).zIndex.modal,\n  variants: [{\n    props: {\n      disablePortal: true\n    },\n    style: {\n      position: 'absolute'\n    }\n  }]\n}));\nconst AutocompletePaper = styled(Paper, {\n  name: 'MuiAutocomplete',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})(({\n  theme\n}) => _extends({}, theme.typography.body1, {\n  overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Loading',\n  overridesResolver: (props, styles) => styles.loading\n})(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'NoOptions',\n  overridesResolver: (props, styles) => styles.noOptions\n})(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Listbox',\n  overridesResolver: (props, styles) => styles.listbox\n})(({\n  theme\n}) => ({\n  listStyle: 'none',\n  margin: 0,\n  padding: '8px 0',\n  maxHeight: '40vh',\n  overflow: 'auto',\n  position: 'relative',\n  [`& .${autocompleteClasses.option}`]: {\n    minHeight: 48,\n    display: 'flex',\n    overflow: 'hidden',\n    justifyContent: 'flex-start',\n    alignItems: 'center',\n    cursor: 'pointer',\n    paddingTop: 6,\n    boxSizing: 'border-box',\n    outline: '0',\n    WebkitTapHighlightColor: 'transparent',\n    paddingBottom: 6,\n    paddingLeft: 16,\n    paddingRight: 16,\n    [theme.breakpoints.up('sm')]: {\n      minHeight: 'auto'\n    },\n    [`&.${autocompleteClasses.focused}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.hover,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    },\n    '&[aria-disabled=\"true\"]': {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity,\n      pointerEvents: 'none'\n    },\n    [`&.${autocompleteClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    '&[aria-selected=\"true\"]': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n      [`&.${autocompleteClasses.focused}`]: {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: (theme.vars || theme).palette.action.selected\n        }\n      },\n      [`&.${autocompleteClasses.focusVisible}`]: {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n      }\n    }\n  }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n  name: 'MuiAutocomplete',\n  slot: 'GroupLabel',\n  overridesResolver: (props, styles) => styles.groupLabel\n})(({\n  theme\n}) => ({\n  backgroundColor: (theme.vars || theme).palette.background.paper,\n  top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n  name: 'MuiAutocomplete',\n  slot: 'GroupUl',\n  overridesResolver: (props, styles) => styles.groupUl\n})({\n  padding: 0,\n  [`& .${autocompleteClasses.option}`]: {\n    paddingLeft: 24\n  }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n  var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAutocomplete'\n  });\n\n  /* eslint-disable @typescript-eslint/no-unused-vars */\n  const {\n      autoComplete = false,\n      autoHighlight = false,\n      autoSelect = false,\n      blurOnSelect = false,\n      ChipProps,\n      className,\n      clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n        fontSize: \"small\"\n      })),\n      clearOnBlur = !props.freeSolo,\n      clearOnEscape = false,\n      clearText = 'Clear',\n      closeText = 'Close',\n      componentsProps = {},\n      defaultValue = props.multiple ? [] : null,\n      disableClearable = false,\n      disableCloseOnSelect = false,\n      disabled = false,\n      disabledItemsFocusable = false,\n      disableListWrap = false,\n      disablePortal = false,\n      filterSelectedOptions = false,\n      forcePopupIcon = 'auto',\n      freeSolo = false,\n      fullWidth = false,\n      getLimitTagsText = more => `+${more}`,\n      getOptionLabel: getOptionLabelProp,\n      groupBy,\n      handleHomeEndKeys = !props.freeSolo,\n      includeInputInList = false,\n      limitTags = -1,\n      ListboxComponent = 'ul',\n      ListboxProps,\n      loading = false,\n      loadingText = 'Loading…',\n      multiple = false,\n      noOptionsText = 'No options',\n      openOnFocus = false,\n      openText = 'Open',\n      PaperComponent = Paper,\n      PopperComponent = Popper,\n      popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n      readOnly = false,\n      renderGroup: renderGroupProp,\n      renderInput,\n      renderOption: renderOptionProp,\n      renderTags,\n      selectOnFocus = !props.freeSolo,\n      size = 'medium',\n      slotProps = {}\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  /* eslint-enable @typescript-eslint/no-unused-vars */\n\n  const {\n    getRootProps,\n    getInputProps,\n    getInputLabelProps,\n    getPopupIndicatorProps,\n    getClearProps,\n    getTagProps,\n    getListboxProps,\n    getOptionProps,\n    value,\n    dirty,\n    expanded,\n    id,\n    popupOpen,\n    focused,\n    focusedTag,\n    anchorEl,\n    setAnchorEl,\n    inputValue,\n    groupedOptions\n  } = useAutocomplete(_extends({}, props, {\n    componentName: 'Autocomplete'\n  }));\n  const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n  const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n  const {\n    onMouseDown: handleInputMouseDown\n  } = getInputProps();\n  const {\n    ref: externalListboxRef\n  } = ListboxProps != null ? ListboxProps : {};\n  const _getListboxProps = getListboxProps(),\n    {\n      ref: listboxRef\n    } = _getListboxProps,\n    otherListboxProps = _objectWithoutPropertiesLoose(_getListboxProps, _excluded2);\n  const combinedListboxRef = useForkRef(listboxRef, externalListboxRef);\n  const defaultGetOptionLabel = option => {\n    var _option$label;\n    return (_option$label = option.label) != null ? _option$label : option;\n  };\n  const getOptionLabel = getOptionLabelProp || defaultGetOptionLabel;\n\n  // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n  const ownerState = _extends({}, props, {\n    disablePortal,\n    expanded,\n    focused,\n    fullWidth,\n    getOptionLabel,\n    hasClearIcon,\n    hasPopupIcon,\n    inputFocused: focusedTag === -1,\n    popupOpen,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  let startAdornment;\n  if (multiple && value.length > 0) {\n    const getCustomizedTagProps = params => _extends({\n      className: classes.tag,\n      disabled\n    }, getTagProps(params));\n    if (renderTags) {\n      startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n    } else {\n      startAdornment = value.map((option, index) => {\n        const _getCustomizedTagProp = getCustomizedTagProps({\n            index\n          }),\n          {\n            key\n          } = _getCustomizedTagProp,\n          customTagProps = _objectWithoutPropertiesLoose(_getCustomizedTagProp, _excluded3);\n        return /*#__PURE__*/_jsx(Chip, _extends({\n          label: getOptionLabel(option),\n          size: size\n        }, customTagProps, ChipProps), key);\n      });\n    }\n  }\n  if (limitTags > -1 && Array.isArray(startAdornment)) {\n    const more = startAdornment.length - limitTags;\n    if (!focused && more > 0) {\n      startAdornment = startAdornment.splice(0, limitTags);\n      startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n        className: classes.tag,\n        children: getLimitTagsText(more)\n      }, startAdornment.length));\n    }\n  }\n  const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n    children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n      className: classes.groupLabel,\n      ownerState: ownerState,\n      component: \"div\",\n      children: params.group\n    }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n      className: classes.groupUl,\n      ownerState: ownerState,\n      children: params.children\n    })]\n  }, params.key);\n  const renderGroup = renderGroupProp || defaultRenderGroup;\n  const defaultRenderOption = (props2, option) => {\n    // Need to clearly apply key because of https://github.com/vercel/next.js/issues/55642\n    const {\n        key\n      } = props2,\n      otherProps = _objectWithoutPropertiesLoose(props2, _excluded4);\n    return /*#__PURE__*/_jsx(\"li\", _extends({}, otherProps, {\n      children: getOptionLabel(option)\n    }), key);\n  };\n  const renderOption = renderOptionProp || defaultRenderOption;\n  const renderListOption = (option, index) => {\n    const optionProps = getOptionProps({\n      option,\n      index\n    });\n    return renderOption(_extends({}, optionProps, {\n      className: classes.option\n    }), option, {\n      selected: optionProps['aria-selected'],\n      index,\n      inputValue\n    }, ownerState);\n  };\n  const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n  const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n  const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n  const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n      ref: ref,\n      className: clsx(classes.root, className),\n      ownerState: ownerState\n    }, getRootProps(other), {\n      children: renderInput({\n        id,\n        disabled,\n        fullWidth: true,\n        size: size === 'small' ? 'small' : undefined,\n        InputLabelProps: getInputLabelProps(),\n        InputProps: _extends({\n          ref: setAnchorEl,\n          className: classes.inputRoot,\n          startAdornment,\n          onClick: event => {\n            if (event.target === event.currentTarget) {\n              handleInputMouseDown(event);\n            }\n          }\n        }, (hasClearIcon || hasPopupIcon) && {\n          endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n            className: classes.endAdornment,\n            ownerState: ownerState,\n            children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n              \"aria-label\": clearText,\n              title: clearText,\n              ownerState: ownerState\n            }, clearIndicatorSlotProps, {\n              className: clsx(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n              children: clearIcon\n            })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n              disabled: disabled,\n              \"aria-label\": popupOpen ? closeText : openText,\n              title: popupOpen ? closeText : openText,\n              ownerState: ownerState\n            }, popupIndicatorSlotProps, {\n              className: clsx(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n              children: popupIcon\n            })) : null]\n          })\n        }),\n        inputProps: _extends({\n          className: classes.input,\n          disabled,\n          readOnly\n        }, getInputProps())\n      })\n    })), anchorEl ? /*#__PURE__*/_jsx(AutocompletePopper, _extends({\n      as: PopperComponent,\n      disablePortal: disablePortal,\n      style: {\n        width: anchorEl ? anchorEl.clientWidth : null\n      },\n      ownerState: ownerState,\n      role: \"presentation\",\n      anchorEl: anchorEl,\n      open: popupOpen\n    }, popperSlotProps, {\n      className: clsx(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n      children: /*#__PURE__*/_jsxs(AutocompletePaper, _extends({\n        ownerState: ownerState,\n        as: PaperComponent\n      }, paperSlotProps, {\n        className: clsx(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n        children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/_jsx(AutocompleteLoading, {\n          className: classes.loading,\n          ownerState: ownerState,\n          children: loadingText\n        }) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n          className: classes.noOptions,\n          ownerState: ownerState,\n          role: \"presentation\",\n          onMouseDown: event => {\n            // Prevent input blur when interacting with the \"no options\" content\n            event.preventDefault();\n          },\n          children: noOptionsText\n        }) : null, groupedOptions.length > 0 ? /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n          as: ListboxComponent,\n          className: classes.listbox,\n          ownerState: ownerState\n        }, otherListboxProps, ListboxProps, {\n          ref: combinedListboxRef,\n          children: groupedOptions.map((option, index) => {\n            if (groupBy) {\n              return renderGroup({\n                key: option.key,\n                group: option.group,\n                children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n              });\n            }\n            return renderListOption(option, index);\n          })\n        })) : null]\n      }))\n    })) : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the portion of the selected suggestion that the user hasn't typed,\n   * known as the completion string, appears inline after the input cursor in the textbox.\n   * The inline completion string is visually highlighted and has a selected state.\n   * @default false\n   */\n  autoComplete: PropTypes.bool,\n  /**\n   * If `true`, the first option is automatically highlighted.\n   * @default false\n   */\n  autoHighlight: PropTypes.bool,\n  /**\n   * If `true`, the selected option becomes the value of the input\n   * when the Autocomplete loses focus unless the user chooses\n   * a different option or changes the character string in the input.\n   *\n   * When using the `freeSolo` mode, the typed value will be the input value\n   * if the Autocomplete loses focus without highlighting an option.\n   * @default false\n   */\n  autoSelect: PropTypes.bool,\n  /**\n   * Control if the input should be blurred when an option is selected:\n   *\n   * - `false` the input is not blurred.\n   * - `true` the input is always blurred.\n   * - `touch` the input is blurred after a touch event.\n   * - `mouse` the input is blurred after a mouse event.\n   * @default false\n   */\n  blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n  /**\n   * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n   */\n  ChipProps: PropTypes.object,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display in place of the default clear icon.\n   * @default <ClearIcon fontSize=\"small\" />\n   */\n  clearIcon: PropTypes.node,\n  /**\n   * If `true`, the input's text is cleared on blur if no value is selected.\n   *\n   * Set it to `true` if you want to help the user enter a new value.\n   * Set it to `false` if you want to help the user resume their search.\n   * @default !props.freeSolo\n   */\n  clearOnBlur: PropTypes.bool,\n  /**\n   * If `true`, clear all values when the user presses escape and the popup is closed.\n   * @default false\n   */\n  clearOnEscape: PropTypes.bool,\n  /**\n   * Override the default text for the *clear* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Clear'\n   */\n  clearText: PropTypes.string,\n  /**\n   * Override the default text for the *close popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Close'\n   */\n  closeText: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    clearIndicator: PropTypes.object,\n    paper: PropTypes.object,\n    popper: PropTypes.object,\n    popupIndicator: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   * @default props.multiple ? [] : null\n   */\n  defaultValue: chainPropTypes(PropTypes.any, props => {\n    if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n      return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * If `true`, the input can't be cleared.\n   * @default false\n   */\n  disableClearable: PropTypes.bool,\n  /**\n   * If `true`, the popup won't close when a value is selected.\n   * @default false\n   */\n  disableCloseOnSelect: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: PropTypes.bool,\n  /**\n   * If `true`, the list box in the popup will not wrap focus.\n   * @default false\n   */\n  disableListWrap: PropTypes.bool,\n  /**\n   * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * A function that determines the filtered options to be rendered on search.\n   *\n   * @default createFilterOptions()\n   * @param {Value[]} options The options to render.\n   * @param {object} state The state of the component.\n   * @returns {Value[]}\n   */\n  filterOptions: PropTypes.func,\n  /**\n   * If `true`, hide the selected options from the list box.\n   * @default false\n   */\n  filterSelectedOptions: PropTypes.bool,\n  /**\n   * Force the visibility display of the popup icon.\n   * @default 'auto'\n   */\n  forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n  /**\n   * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n   * @default false\n   */\n  freeSolo: PropTypes.bool,\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The label to display when the tags are truncated (`limitTags`).\n   *\n   * @param {number} more The number of truncated tags.\n   * @returns {ReactNode}\n   * @default (more) => `+${more}`\n   */\n  getLimitTagsText: PropTypes.func,\n  /**\n   * Used to determine the disabled state for a given option.\n   *\n   * @param {Value} option The option to test.\n   * @returns {boolean}\n   */\n  getOptionDisabled: PropTypes.func,\n  /**\n   * Used to determine the key for a given option.\n   * This can be useful when the labels of options are not unique (since labels are used as keys by default).\n   *\n   * @param {Value} option The option to get the key for.\n   * @returns {string | number}\n   */\n  getOptionKey: PropTypes.func,\n  /**\n   * Used to determine the string value for a given option.\n   * It's used to fill the input (and the list box options if `renderOption` is not provided).\n   *\n   * If used in free solo mode, it must accept both the type of the options and a string.\n   *\n   * @param {Value} option\n   * @returns {string}\n   * @default (option) => option.label ?? option\n   */\n  getOptionLabel: PropTypes.func,\n  /**\n   * If provided, the options will be grouped under the returned string.\n   * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n   *\n   * @param {Value} options The options to group.\n   * @returns {string}\n   */\n  groupBy: PropTypes.func,\n  /**\n   * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n   * It should move focus to the first option and last option, respectively.\n   * @default !props.freeSolo\n   */\n  handleHomeEndKeys: PropTypes.bool,\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide an id it will fall back to a randomly generated one.\n   */\n  id: PropTypes.string,\n  /**\n   * If `true`, the highlight can move to the input.\n   * @default false\n   */\n  includeInputInList: PropTypes.bool,\n  /**\n   * The input value.\n   */\n  inputValue: PropTypes.string,\n  /**\n   * Used to determine if the option represents the given value.\n   * Uses strict equality by default.\n   * ⚠️ Both arguments need to be handled, an option can only match with one value.\n   *\n   * @param {Value} option The option to test.\n   * @param {Value} value The value to test against.\n   * @returns {boolean}\n   */\n  isOptionEqualToValue: PropTypes.func,\n  /**\n   * The maximum number of tags that will be visible when not focused.\n   * Set `-1` to disable the limit.\n   * @default -1\n   */\n  limitTags: integerPropType,\n  /**\n   * The component used to render the listbox.\n   * @default 'ul'\n   */\n  ListboxComponent: PropTypes.elementType,\n  /**\n   * Props applied to the Listbox element.\n   */\n  ListboxProps: PropTypes.object,\n  /**\n   * If `true`, the component is in a loading state.\n   * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, for example `options` are empty).\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Text to display when in a loading state.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Loading…'\n   */\n  loadingText: PropTypes.node,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   * @default false\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Text to display when there are no options.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'No options'\n   */\n  noOptionsText: PropTypes.node,\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {Value|Value[]} value The new value of the component.\n   * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n   * @param {string} [details]\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see open).\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the highlight option changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {Value} option The highlighted option.\n   * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`, `\"touch\"`.\n   */\n  onHighlightChange: PropTypes.func,\n  /**\n   * Callback fired when the input value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {string} value The new value of the text input.\n   * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n   */\n  onInputChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see open).\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * If `true`, the popup will open on input focus.\n   * @default false\n   */\n  openOnFocus: PropTypes.bool,\n  /**\n   * Override the default text for the *open popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Open'\n   */\n  openText: PropTypes.string,\n  /**\n   * Array of options.\n   */\n  options: PropTypes.array.isRequired,\n  /**\n   * The component used to render the body of the popup.\n   * @default Paper\n   */\n  PaperComponent: PropTypes.elementType,\n  /**\n   * The component used to position the popup.\n   * @default Popper\n   */\n  PopperComponent: PropTypes.elementType,\n  /**\n   * The icon to display in place of the default popup icon.\n   * @default <ArrowDropDownIcon />\n   */\n  popupIcon: PropTypes.node,\n  /**\n   * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * Render the group.\n   *\n   * @param {AutocompleteRenderGroupParams} params The group to render.\n   * @returns {ReactNode}\n   */\n  renderGroup: PropTypes.func,\n  /**\n   * Render the input.\n   *\n   * @param {object} params\n   * @returns {ReactNode}\n   */\n  renderInput: PropTypes.func.isRequired,\n  /**\n   * Render the option, use `getOptionLabel` by default.\n   *\n   * @param {object} props The props to apply on the li element.\n   * @param {Value} option The option to render.\n   * @param {object} state The state of each option.\n   * @param {object} ownerState The state of the Autocomplete component.\n   * @returns {ReactNode}\n   */\n  renderOption: PropTypes.func,\n  /**\n   * Render the selected value.\n   *\n   * @param {Value[]} value The `value` provided to the component.\n   * @param {function} getTagProps A tag props getter.\n   * @param {object} ownerState The state of the Autocomplete component.\n   * @returns {ReactNode}\n   */\n  renderTags: PropTypes.func,\n  /**\n   * If `true`, the input's text is selected on focus.\n   * It helps the user clear the selected value.\n   * @default !props.freeSolo\n   */\n  selectOnFocus: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    clearIndicator: PropTypes.object,\n    paper: PropTypes.object,\n    popper: PropTypes.object,\n    popupIndicator: PropTypes.object\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the autocomplete.\n   *\n   * The value must have reference equality with the option in order to be selected.\n   * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n   */\n  value: chainPropTypes(PropTypes.any, props => {\n    if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n      return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n    }\n    return null;\n  })\n} : void 0;\nexport default Autocomplete;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n}), 'Person');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAvatarUtilityClass(slot) {\n  return generateUtilityClass('MuiAvatar', slot);\n}\nconst avatarClasses = generateUtilityClasses('MuiAvatar', ['root', 'colorDefault', 'circular', 'rounded', 'square', 'img', 'fallback']);\nexport default avatarClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"alt\", \"children\", \"className\", \"component\", \"slots\", \"slotProps\", \"imgProps\", \"sizes\", \"src\", \"srcSet\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Person from '../internal/svg-icons/Person';\nimport { getAvatarUtilityClass } from './avatarClasses';\nimport useSlot from '../utils/useSlot';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    colorDefault\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, colorDefault && 'colorDefault'],\n    img: ['img'],\n    fallback: ['fallback']\n  };\n  return composeClasses(slots, getAvatarUtilityClass, classes);\n};\nconst AvatarRoot = styled('div', {\n  name: 'MuiAvatar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], ownerState.colorDefault && styles.colorDefault];\n  }\n})(({\n  theme\n}) => ({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  flexShrink: 0,\n  width: 40,\n  height: 40,\n  fontFamily: theme.typography.fontFamily,\n  fontSize: theme.typography.pxToRem(20),\n  lineHeight: 1,\n  borderRadius: '50%',\n  overflow: 'hidden',\n  userSelect: 'none',\n  variants: [{\n    props: {\n      variant: 'rounded'\n    },\n    style: {\n      borderRadius: (theme.vars || theme).shape.borderRadius\n    }\n  }, {\n    props: {\n      variant: 'square'\n    },\n    style: {\n      borderRadius: 0\n    }\n  }, {\n    props: {\n      colorDefault: true\n    },\n    style: _extends({\n      color: (theme.vars || theme).palette.background.default\n    }, theme.vars ? {\n      backgroundColor: theme.vars.palette.Avatar.defaultBg\n    } : _extends({\n      backgroundColor: theme.palette.grey[400]\n    }, theme.applyStyles('dark', {\n      backgroundColor: theme.palette.grey[600]\n    })))\n  }]\n}));\nconst AvatarImg = styled('img', {\n  name: 'MuiAvatar',\n  slot: 'Img',\n  overridesResolver: (props, styles) => styles.img\n})({\n  width: '100%',\n  height: '100%',\n  textAlign: 'center',\n  // Handle non-square image. The property isn't supported by IE11.\n  objectFit: 'cover',\n  // Hide alt text.\n  color: 'transparent',\n  // Hide the image broken icon, only works on Chrome.\n  textIndent: 10000\n});\nconst AvatarFallback = styled(Person, {\n  name: 'MuiAvatar',\n  slot: 'Fallback',\n  overridesResolver: (props, styles) => styles.fallback\n})({\n  width: '75%',\n  height: '75%'\n});\nfunction useLoaded({\n  crossOrigin,\n  referrerPolicy,\n  src,\n  srcSet\n}) {\n  const [loaded, setLoaded] = React.useState(false);\n  React.useEffect(() => {\n    if (!src && !srcSet) {\n      return undefined;\n    }\n    setLoaded(false);\n    let active = true;\n    const image = new Image();\n    image.onload = () => {\n      if (!active) {\n        return;\n      }\n      setLoaded('loaded');\n    };\n    image.onerror = () => {\n      if (!active) {\n        return;\n      }\n      setLoaded('error');\n    };\n    image.crossOrigin = crossOrigin;\n    image.referrerPolicy = referrerPolicy;\n    image.src = src;\n    if (srcSet) {\n      image.srcset = srcSet;\n    }\n    return () => {\n      active = false;\n    };\n  }, [crossOrigin, referrerPolicy, src, srcSet]);\n  return loaded;\n}\nconst Avatar = /*#__PURE__*/React.forwardRef(function Avatar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiAvatar'\n  });\n  const {\n      alt,\n      children: childrenProp,\n      className,\n      component = 'div',\n      slots = {},\n      slotProps = {},\n      imgProps,\n      sizes,\n      src,\n      srcSet,\n      variant = 'circular'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  let children = null;\n\n  // Use a hook instead of onError on the img element to support server-side rendering.\n  const loaded = useLoaded(_extends({}, imgProps, {\n    src,\n    srcSet\n  }));\n  const hasImg = src || srcSet;\n  const hasImgNotFailing = hasImg && loaded !== 'error';\n  const ownerState = _extends({}, props, {\n    colorDefault: !hasImgNotFailing,\n    component,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const [ImgSlot, imgSlotProps] = useSlot('img', {\n    className: classes.img,\n    elementType: AvatarImg,\n    externalForwardedProps: {\n      slots,\n      slotProps: {\n        img: _extends({}, imgProps, slotProps.img)\n      }\n    },\n    additionalProps: {\n      alt,\n      src,\n      srcSet,\n      sizes\n    },\n    ownerState\n  });\n  if (hasImgNotFailing) {\n    children = /*#__PURE__*/_jsx(ImgSlot, _extends({}, imgSlotProps));\n    // We only render valid children, non valid children are rendered with a fallback\n    // We consider that invalid children are all falsy values, except 0, which is valid.\n  } else if (!!childrenProp || childrenProp === 0) {\n    children = childrenProp;\n  } else if (hasImg && alt) {\n    children = alt[0];\n  } else {\n    children = /*#__PURE__*/_jsx(AvatarFallback, {\n      ownerState: ownerState,\n      className: classes.fallback\n    });\n  }\n  return /*#__PURE__*/_jsx(AvatarRoot, _extends({\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other, {\n    children: children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Avatar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Used in combination with `src` or `srcSet` to\n   * provide an alt attribute for the rendered `img` element.\n   */\n  alt: PropTypes.string,\n  /**\n   * Used to render icon or text elements inside the Avatar if `src` is not set.\n   * This can be an element, or just a string.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attributes) applied to the `img` element if the component is used to display an image.\n   * It can be used to listen for the loading error event.\n   * @deprecated Use `slotProps.img` instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n   */\n  imgProps: PropTypes.object,\n  /**\n   * The `sizes` attribute for the `img` element.\n   */\n  sizes: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    img: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    img: PropTypes.elementType\n  }),\n  /**\n   * The `src` attribute for the `img` element.\n   */\n  src: PropTypes.string,\n  /**\n   * The `srcSet` attribute for the `img` element.\n   * Use this attribute for responsive image display.\n   */\n  srcSet: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The shape of the avatar.\n   * @default 'circular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rounded', 'square']), PropTypes.string])\n} : void 0;\nexport default Avatar;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n  entering: {\n    opacity: 1\n  },\n  entered: {\n    opacity: 1\n  }\n};\n\n/**\n * The Fade transition is used by the [Modal](/material-ui/react-modal/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {\n  const theme = useTheme();\n  const defaultTimeout = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n      addEndListener,\n      appear = true,\n      children,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      style,\n      timeout = defaultTimeout,\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = Transition\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const enableStrictModeCompat = true;\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    reflow(node); // So the animation always start from the start.\n\n    const transitionProps = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n    node.style.transition = theme.transitions.create('opacity', transitionProps);\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const transitionProps = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n    node.style.transition = theme.transitions.create('opacity', transitionProps);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    appear: appear,\n    in: inProp,\n    nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout\n  }, other, {\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, _extends({\n        style: _extends({\n          opacity: 0,\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n        }, styles[state], style, children.props.style),\n        ref: handleRef\n      }, childProps));\n    }\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Fade.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Fade;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBackdropUtilityClass(slot) {\n  return generateUtilityClass('MuiBackdrop', slot);\n}\nconst backdropClasses = generateUtilityClasses('MuiBackdrop', ['root', 'invisible']);\nexport default backdropClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"invisible\", \"open\", \"slotProps\", \"slots\", \"TransitionComponent\", \"transitionDuration\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Fade from '../Fade';\nimport { getBackdropUtilityClass } from './backdropClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    invisible\n  } = ownerState;\n  const slots = {\n    root: ['root', invisible && 'invisible']\n  };\n  return composeClasses(slots, getBackdropUtilityClass, classes);\n};\nconst BackdropRoot = styled('div', {\n  name: 'MuiBackdrop',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.invisible && styles.invisible];\n  }\n})(({\n  ownerState\n}) => _extends({\n  position: 'fixed',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  right: 0,\n  bottom: 0,\n  top: 0,\n  left: 0,\n  backgroundColor: 'rgba(0, 0, 0, 0.5)',\n  WebkitTapHighlightColor: 'transparent'\n}, ownerState.invisible && {\n  backgroundColor: 'transparent'\n}));\nconst Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(inProps, ref) {\n  var _slotProps$root, _ref, _slots$root;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiBackdrop'\n  });\n  const {\n      children,\n      className,\n      component = 'div',\n      components = {},\n      componentsProps = {},\n      invisible = false,\n      open,\n      slotProps = {},\n      slots = {},\n      TransitionComponent = Fade,\n      transitionDuration\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component,\n    invisible\n  });\n  const classes = useUtilityClasses(ownerState);\n  const rootSlotProps = (_slotProps$root = slotProps.root) != null ? _slotProps$root : componentsProps.root;\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    in: open,\n    timeout: transitionDuration\n  }, other, {\n    children: /*#__PURE__*/_jsx(BackdropRoot, _extends({\n      \"aria-hidden\": true\n    }, rootSlotProps, {\n      as: (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : component,\n      className: clsx(classes.root, className, rootSlotProps == null ? void 0 : rootSlotProps.className),\n      ownerState: _extends({}, ownerState, rootSlotProps == null ? void 0 : rootSlotProps.ownerState),\n      classes: classes,\n      ref: ref,\n      children: children\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * If `true`, the backdrop is invisible.\n   * It can be used when rendering a popover or a custom select component.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Fade\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Backdrop;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport { createBox } from '@mui/system';\nimport PropTypes from 'prop-types';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '../className';\nimport { createTheme } from '../styles';\nimport THEME_ID from '../styles/identifier';\nimport boxClasses from './boxClasses';\nconst defaultTheme = createTheme();\nconst Box = createBox({\n  themeId: THEME_ID,\n  defaultTheme,\n  defaultClassName: boxClasses.root,\n  generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiButton', slot);\n}\nconst buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorError', 'colorInfo', 'colorWarning', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'icon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);\nexport default buttonClasses;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  ButtonGroupContext.displayName = 'ButtonGroupContext';\n}\nexport default ButtonGroupContext;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupButtonContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  ButtonGroupButtonContext.displayName = 'ButtonGroupButtonContext';\n}\nexport default ButtonGroupButtonContext;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"color\", \"component\", \"className\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport resolveProps from '@mui/utils/resolveProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport buttonClasses, { getButtonUtilityClass } from './buttonClasses';\nimport ButtonGroupContext from '../ButtonGroup/ButtonGroupContext';\nimport ButtonGroupButtonContext from '../ButtonGroup/ButtonGroupButtonContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    disableElevation,\n    fullWidth,\n    size,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `${variant}${capitalize(color)}`, `size${capitalize(size)}`, `${variant}Size${capitalize(size)}`, `color${capitalize(color)}`, disableElevation && 'disableElevation', fullWidth && 'fullWidth'],\n    label: ['label'],\n    startIcon: ['icon', 'startIcon', `iconSize${capitalize(size)}`],\n    endIcon: ['icon', 'endIcon', `iconSize${capitalize(size)}`]\n  };\n  const composedClasses = composeClasses(slots, getButtonUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst commonIconStyles = ownerState => _extends({}, ownerState.size === 'small' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 18\n  }\n}, ownerState.size === 'medium' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 20\n  }\n}, ownerState.size === 'large' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 22\n  }\n});\nconst ButtonRoot = styled(ButtonBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color)}`], styles[`size${capitalize(ownerState.size)}`], styles[`${ownerState.variant}Size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.disableElevation && styles.disableElevation, ownerState.fullWidth && styles.fullWidth];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$palette$getCon, _theme$palette;\n  const inheritContainedBackgroundColor = theme.palette.mode === 'light' ? theme.palette.grey[300] : theme.palette.grey[800];\n  const inheritContainedHoverBackgroundColor = theme.palette.mode === 'light' ? theme.palette.grey.A100 : theme.palette.grey[700];\n  return _extends({}, theme.typography.button, {\n    minWidth: 64,\n    padding: '6px 16px',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n      duration: theme.transitions.duration.short\n    }),\n    '&:hover': _extends({\n      textDecoration: 'none',\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n      border: `1px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'contained' && {\n      backgroundColor: theme.vars ? theme.vars.palette.Button.inheritContainedHoverBg : inheritContainedHoverBackgroundColor,\n      boxShadow: (theme.vars || theme).shadows[4],\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        boxShadow: (theme.vars || theme).shadows[2],\n        backgroundColor: (theme.vars || theme).palette.grey[300]\n      }\n    }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n      }\n    }),\n    '&:active': _extends({}, ownerState.variant === 'contained' && {\n      boxShadow: (theme.vars || theme).shadows[8]\n    }),\n    [`&.${buttonClasses.focusVisible}`]: _extends({}, ownerState.variant === 'contained' && {\n      boxShadow: (theme.vars || theme).shadows[6]\n    }),\n    [`&.${buttonClasses.disabled}`]: _extends({\n      color: (theme.vars || theme).palette.action.disabled\n    }, ownerState.variant === 'outlined' && {\n      border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n    }, ownerState.variant === 'contained' && {\n      color: (theme.vars || theme).palette.action.disabled,\n      boxShadow: (theme.vars || theme).shadows[0],\n      backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n    })\n  }, ownerState.variant === 'text' && {\n    padding: '6px 8px'\n  }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  }, ownerState.variant === 'outlined' && {\n    padding: '5px 15px',\n    border: '1px solid currentColor'\n  }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].main,\n    border: theme.vars ? `1px solid rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : `1px solid ${alpha(theme.palette[ownerState.color].main, 0.5)}`\n  }, ownerState.variant === 'contained' && {\n    color: theme.vars ?\n    // this is safe because grey does not change between default light/dark mode\n    theme.vars.palette.text.primary : (_theme$palette$getCon = (_theme$palette = theme.palette).getContrastText) == null ? void 0 : _theme$palette$getCon.call(_theme$palette, theme.palette.grey[300]),\n    backgroundColor: theme.vars ? theme.vars.palette.Button.inheritContainedBg : inheritContainedBackgroundColor,\n    boxShadow: (theme.vars || theme).shadows[2]\n  }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].contrastText,\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n  }, ownerState.color === 'inherit' && {\n    color: 'inherit',\n    borderColor: 'currentColor'\n  }, ownerState.size === 'small' && ownerState.variant === 'text' && {\n    padding: '4px 5px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'text' && {\n    padding: '8px 11px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.size === 'small' && ownerState.variant === 'outlined' && {\n    padding: '3px 9px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'outlined' && {\n    padding: '7px 21px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.size === 'small' && ownerState.variant === 'contained' && {\n    padding: '4px 10px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'contained' && {\n    padding: '8px 22px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.fullWidth && {\n    width: '100%'\n  });\n}, ({\n  ownerState\n}) => ownerState.disableElevation && {\n  boxShadow: 'none',\n  '&:hover': {\n    boxShadow: 'none'\n  },\n  [`&.${buttonClasses.focusVisible}`]: {\n    boxShadow: 'none'\n  },\n  '&:active': {\n    boxShadow: 'none'\n  },\n  [`&.${buttonClasses.disabled}`]: {\n    boxShadow: 'none'\n  }\n});\nconst ButtonStartIcon = styled('span', {\n  name: 'MuiButton',\n  slot: 'StartIcon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.startIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'inherit',\n  marginRight: 8,\n  marginLeft: -4\n}, ownerState.size === 'small' && {\n  marginLeft: -2\n}, commonIconStyles(ownerState)));\nconst ButtonEndIcon = styled('span', {\n  name: 'MuiButton',\n  slot: 'EndIcon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.endIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'inherit',\n  marginRight: -4,\n  marginLeft: 8\n}, ownerState.size === 'small' && {\n  marginRight: -2\n}, commonIconStyles(ownerState)));\nconst Button = /*#__PURE__*/React.forwardRef(function Button(inProps, ref) {\n  // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n  const contextProps = React.useContext(ButtonGroupContext);\n  const buttonGroupButtonContextPositionClassName = React.useContext(ButtonGroupButtonContext);\n  const resolvedProps = resolveProps(contextProps, inProps);\n  const props = useDefaultProps({\n    props: resolvedProps,\n    name: 'MuiButton'\n  });\n  const {\n      children,\n      color = 'primary',\n      component = 'button',\n      className,\n      disabled = false,\n      disableElevation = false,\n      disableFocusRipple = false,\n      endIcon: endIconProp,\n      focusVisibleClassName,\n      fullWidth = false,\n      size = 'medium',\n      startIcon: startIconProp,\n      type,\n      variant = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    disabled,\n    disableElevation,\n    disableFocusRipple,\n    fullWidth,\n    size,\n    type,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const startIcon = startIconProp && /*#__PURE__*/_jsx(ButtonStartIcon, {\n    className: classes.startIcon,\n    ownerState: ownerState,\n    children: startIconProp\n  });\n  const endIcon = endIconProp && /*#__PURE__*/_jsx(ButtonEndIcon, {\n    className: classes.endIcon,\n    ownerState: ownerState,\n    children: endIconProp\n  });\n  const positionClassName = buttonGroupButtonContextPositionClassName || '';\n  return /*#__PURE__*/_jsxs(ButtonRoot, _extends({\n    ownerState: ownerState,\n    className: clsx(contextProps.className, classes.root, className, positionClassName),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes,\n    children: [startIcon, children, endIcon]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, no elevation is used.\n   * @default false\n   */\n  disableElevation: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * Element placed after the children.\n   */\n  endIcon: PropTypes.node,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * If `true`, the button will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * Element placed before the children.\n   */\n  startIcon: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string]),\n  /**\n   * The variant to use.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default Button;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n  return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"raised\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Paper from '../Paper';\nimport { getCardUtilityClass } from './cardClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardUtilityClass, classes);\n};\nconst CardRoot = styled(Paper, {\n  name: 'MuiCard',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(() => {\n  return {\n    overflow: 'hidden'\n  };\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCard'\n  });\n  const {\n      className,\n      raised = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    raised\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardRoot, _extends({\n    className: clsx(classes.root, className),\n    elevation: raised ? 8 : undefined,\n    ref: ref,\n    ownerState: ownerState\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the card will use raised styling.\n   * @default false\n   */\n  raised: chainPropTypes(PropTypes.bool, props => {\n    if (props.raised && props.variant === 'outlined') {\n      return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardActionsUtilityClass(slot) {\n  return generateUtilityClass('MuiCardActions', slot);\n}\nconst cardActionsClasses = generateUtilityClasses('MuiCardActions', ['root', 'spacing']);\nexport default cardActionsClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableSpacing\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getCardActionsUtilityClass } from './cardActionsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableSpacing\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableSpacing && 'spacing']\n  };\n  return composeClasses(slots, getCardActionsUtilityClass, classes);\n};\nconst CardActionsRoot = styled('div', {\n  name: 'MuiCardActions',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableSpacing && styles.spacing];\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'flex',\n  alignItems: 'center',\n  padding: 8\n}, !ownerState.disableSpacing && {\n  '& > :not(style) ~ :not(style)': {\n    marginLeft: 8\n  }\n}));\nconst CardActions = /*#__PURE__*/React.forwardRef(function CardActions(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardActions'\n  });\n  const {\n      disableSpacing = false,\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    disableSpacing\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardActionsRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardActions.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the actions do not have additional margin.\n   * @default false\n   */\n  disableSpacing: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardActions;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardContentUtilityClass(slot) {\n  return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getCardContentUtilityClass } from './cardContentClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getCardContentUtilityClass, classes);\n};\nconst CardContentRoot = styled('div', {\n  name: 'MuiCardContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(() => {\n  return {\n    padding: 16,\n    '&:last-child': {\n      paddingBottom: 24\n    }\n  };\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardContent'\n  });\n  const {\n      className,\n      component = 'div'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CardContentRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardHeaderUtilityClass(slot) {\n  return generateUtilityClass('MuiCardHeader', slot);\n}\nconst cardHeaderClasses = generateUtilityClasses('MuiCardHeader', ['root', 'avatar', 'action', 'content', 'title', 'subheader']);\nexport default cardHeaderClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"action\", \"avatar\", \"className\", \"component\", \"disableTypography\", \"subheader\", \"subheaderTypographyProps\", \"title\", \"titleTypographyProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Typography from '../Typography';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport cardHeaderClasses, { getCardHeaderUtilityClass } from './cardHeaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    avatar: ['avatar'],\n    action: ['action'],\n    content: ['content'],\n    title: ['title'],\n    subheader: ['subheader']\n  };\n  return composeClasses(slots, getCardHeaderUtilityClass, classes);\n};\nconst CardHeaderRoot = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Root',\n  overridesResolver: (props, styles) => _extends({\n    [`& .${cardHeaderClasses.title}`]: styles.title,\n    [`& .${cardHeaderClasses.subheader}`]: styles.subheader\n  }, styles.root)\n})({\n  display: 'flex',\n  alignItems: 'center',\n  padding: 16\n});\nconst CardHeaderAvatar = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Avatar',\n  overridesResolver: (props, styles) => styles.avatar\n})({\n  display: 'flex',\n  flex: '0 0 auto',\n  marginRight: 16\n});\nconst CardHeaderAction = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Action',\n  overridesResolver: (props, styles) => styles.action\n})({\n  flex: '0 0 auto',\n  alignSelf: 'flex-start',\n  marginTop: -4,\n  marginRight: -8,\n  marginBottom: -4\n});\nconst CardHeaderContent = styled('div', {\n  name: 'MuiCardHeader',\n  slot: 'Content',\n  overridesResolver: (props, styles) => styles.content\n})({\n  flex: '1 1 auto'\n});\nconst CardHeader = /*#__PURE__*/React.forwardRef(function CardHeader(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCardHeader'\n  });\n  const {\n      action,\n      avatar,\n      className,\n      component = 'div',\n      disableTypography = false,\n      subheader: subheaderProp,\n      subheaderTypographyProps,\n      title: titleProp,\n      titleTypographyProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component,\n    disableTypography\n  });\n  const classes = useUtilityClasses(ownerState);\n  let title = titleProp;\n  if (title != null && title.type !== Typography && !disableTypography) {\n    title = /*#__PURE__*/_jsx(Typography, _extends({\n      variant: avatar ? 'body2' : 'h5',\n      className: classes.title,\n      component: \"span\",\n      display: \"block\"\n    }, titleTypographyProps, {\n      children: title\n    }));\n  }\n  let subheader = subheaderProp;\n  if (subheader != null && subheader.type !== Typography && !disableTypography) {\n    subheader = /*#__PURE__*/_jsx(Typography, _extends({\n      variant: avatar ? 'body2' : 'body1',\n      className: classes.subheader,\n      color: \"text.secondary\",\n      component: \"span\",\n      display: \"block\"\n    }, subheaderTypographyProps, {\n      children: subheader\n    }));\n  }\n  return /*#__PURE__*/_jsxs(CardHeaderRoot, _extends({\n    className: clsx(classes.root, className),\n    as: component,\n    ref: ref,\n    ownerState: ownerState\n  }, other, {\n    children: [avatar && /*#__PURE__*/_jsx(CardHeaderAvatar, {\n      className: classes.avatar,\n      ownerState: ownerState,\n      children: avatar\n    }), /*#__PURE__*/_jsxs(CardHeaderContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      children: [title, subheader]\n    }), action && /*#__PURE__*/_jsx(CardHeaderAction, {\n      className: classes.action,\n      ownerState: ownerState,\n      children: action\n    })]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardHeader.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The action to display in the card header.\n   */\n  action: PropTypes.node,\n  /**\n   * The Avatar element to display.\n   */\n  avatar: PropTypes.node,\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, `subheader` and `title` won't be wrapped by a Typography component.\n   * This can be useful to render an alternative Typography variant by wrapping\n   * the `title` text, and optional `subheader` text\n   * with the Typography component.\n   * @default false\n   */\n  disableTypography: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  subheader: PropTypes.node,\n  /**\n   * These props will be forwarded to the subheader\n   * (as long as disableTypography is not `true`).\n   */\n  subheaderTypographyProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The content of the component.\n   */\n  title: PropTypes.node,\n  /**\n   * These props will be forwarded to the title\n   * (as long as disableTypography is not `true`).\n   */\n  titleTypographyProps: PropTypes.object\n} : void 0;\nexport default CardHeader;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSwitchBaseUtilityClass(slot) {\n  return generateUtilityClass('PrivateSwitchBase', slot);\n}\nconst switchBaseClasses = generateUtilityClasses('PrivateSwitchBase', ['root', 'checked', 'disabled', 'input', 'edgeStart', 'edgeEnd']);\nexport default switchBaseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"checked\", \"checkedIcon\", \"className\", \"defaultChecked\", \"disabled\", \"disableFocusRipple\", \"edge\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport ButtonBase from '../ButtonBase';\nimport { getSwitchBaseUtilityClass } from './switchBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    checked,\n    disabled,\n    edge\n  } = ownerState;\n  const slots = {\n    root: ['root', checked && 'checked', disabled && 'disabled', edge && `edge${capitalize(edge)}`],\n    input: ['input']\n  };\n  return composeClasses(slots, getSwitchBaseUtilityClass, classes);\n};\nconst SwitchBaseRoot = styled(ButtonBase, {\n  name: 'MuiSwitchBase'\n})(({\n  ownerState\n}) => _extends({\n  padding: 9,\n  borderRadius: '50%'\n}, ownerState.edge === 'start' && {\n  marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n  marginRight: ownerState.size === 'small' ? -3 : -12\n}));\nconst SwitchBaseInput = styled('input', {\n  name: 'MuiSwitchBase',\n  shouldForwardProp: rootShouldForwardProp\n})({\n  cursor: 'inherit',\n  position: 'absolute',\n  opacity: 0,\n  width: '100%',\n  height: '100%',\n  top: 0,\n  left: 0,\n  margin: 0,\n  padding: 0,\n  zIndex: 1\n});\n\n/**\n * @ignore - internal component.\n */\nconst SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n  const {\n      autoFocus,\n      checked: checkedProp,\n      checkedIcon,\n      className,\n      defaultChecked,\n      disabled: disabledProp,\n      disableFocusRipple = false,\n      edge = false,\n      icon,\n      id,\n      inputProps,\n      inputRef,\n      name,\n      onBlur,\n      onChange,\n      onFocus,\n      readOnly,\n      required = false,\n      tabIndex,\n      type,\n      value\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [checked, setCheckedState] = useControlled({\n    controlled: checkedProp,\n    default: Boolean(defaultChecked),\n    name: 'SwitchBase',\n    state: 'checked'\n  });\n  const muiFormControl = useFormControl();\n  const handleFocus = event => {\n    if (onFocus) {\n      onFocus(event);\n    }\n    if (muiFormControl && muiFormControl.onFocus) {\n      muiFormControl.onFocus(event);\n    }\n  };\n  const handleBlur = event => {\n    if (onBlur) {\n      onBlur(event);\n    }\n    if (muiFormControl && muiFormControl.onBlur) {\n      muiFormControl.onBlur(event);\n    }\n  };\n  const handleInputChange = event => {\n    // Workaround for https://github.com/facebook/react/issues/9023\n    if (event.nativeEvent.defaultPrevented) {\n      return;\n    }\n    const newChecked = event.target.checked;\n    setCheckedState(newChecked);\n    if (onChange) {\n      // TODO v6: remove the second argument.\n      onChange(event, newChecked);\n    }\n  };\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  const hasLabelFor = type === 'checkbox' || type === 'radio';\n  const ownerState = _extends({}, props, {\n    checked,\n    disabled,\n    disableFocusRipple,\n    edge\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(SwitchBaseRoot, _extends({\n    component: \"span\",\n    className: clsx(classes.root, className),\n    centerRipple: true,\n    focusRipple: !disableFocusRipple,\n    disabled: disabled,\n    tabIndex: null,\n    role: undefined,\n    onFocus: handleFocus,\n    onBlur: handleBlur,\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: [/*#__PURE__*/_jsx(SwitchBaseInput, _extends({\n      autoFocus: autoFocus,\n      checked: checkedProp,\n      defaultChecked: defaultChecked,\n      className: classes.input,\n      disabled: disabled,\n      id: hasLabelFor ? id : undefined,\n      name: name,\n      onChange: handleInputChange,\n      readOnly: readOnly,\n      ref: inputRef,\n      required: required,\n      ownerState: ownerState,\n      tabIndex: tabIndex,\n      type: type\n    }, type === 'checkbox' && value === undefined ? {} : {\n      value\n    }, inputProps)), checked ? checkedIcon : icon]\n  }));\n});\n\n// NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: PropTypes.node.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * @ignore\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: PropTypes.node.isRequired,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /*\n   * @ignore\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.object,\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The input component prop `type`.\n   */\n  type: PropTypes.string.isRequired,\n  /**\n   * The value of the component.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default SwitchBase;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n  return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium']);\nexport default checkboxClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"size\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from '../internal/SwitchBase';\nimport CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    indeterminate,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`, `size${capitalize(size)}`]\n  };\n  const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiCheckbox',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.indeterminate && styles.indeterminate, styles[`size${capitalize(ownerState.size)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  color: (theme.vars || theme).palette.text.secondary\n}, !ownerState.disableRipple && {\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  }\n}, ownerState.color !== 'default' && {\n  [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  },\n  [`&.${checkboxClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n  var _icon$props$fontSize, _indeterminateIcon$pr;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCheckbox'\n  });\n  const {\n      checkedIcon = defaultCheckedIcon,\n      color = 'primary',\n      icon: iconProp = defaultIcon,\n      indeterminate = false,\n      indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n      inputProps,\n      size = 'medium',\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const icon = indeterminate ? indeterminateIconProp : iconProp;\n  const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n  const ownerState = _extends({}, props, {\n    color,\n    indeterminate,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n    type: \"checkbox\",\n    inputProps: _extends({\n      'data-indeterminate': indeterminate\n    }, inputProps),\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n      fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n    }),\n    ownerState: ownerState,\n    ref: ref,\n    className: clsx(classes.root, className)\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <CheckBoxIcon />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The default checked state. Use when the component is not controlled.\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <CheckBoxOutlineBlankIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * If `true`, the component appears indeterminate.\n   * This does not set the native input element to indeterminate due\n   * to inconsistent behavior across browsers.\n   * However, we set a `data-indeterminate` attribute on the `input`.\n   * @default false\n   */\n  indeterminate: PropTypes.bool,\n  /**\n   * The icon to display when the component is indeterminate.\n   * @default <IndeterminateCheckBoxIcon />\n   */\n  indeterminateIcon: PropTypes.node,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense checkbox styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   * The browser uses \"on\" as the default value.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Checkbox;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"disableShrink\", \"size\", \"style\", \"thickness\", \"value\", \"variant\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport { getCircularProgressUtilityClass } from './circularProgressClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes(_t || (_t = _`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`));\nconst circularDashKeyframe = keyframes(_t2 || (_t2 = _`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`));\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  display: 'inline-block'\n}, ownerState.variant === 'determinate' && {\n  transition: theme.transitions.create('transform')\n}, ownerState.color !== 'inherit' && {\n  color: (theme.vars || theme).palette[ownerState.color].main\n}), ({\n  ownerState\n}) => ownerState.variant === 'indeterminate' && css(_t3 || (_t3 = _`\n      animation: ${0} 1.4s linear infinite;\n    `), circularRotateKeyframe));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  stroke: 'currentColor'\n}, ownerState.variant === 'determinate' && {\n  transition: theme.transitions.create('stroke-dashoffset')\n}, ownerState.variant === 'indeterminate' && {\n  // Some default value that looks fine waiting for the animation to kicks in.\n  strokeDasharray: '80px, 200px',\n  strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n}), ({\n  ownerState\n}) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink && css(_t4 || (_t4 = _`\n      animation: ${0} 1.4s ease-in-out infinite;\n    `), circularDashKeyframe));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n      className,\n      color = 'primary',\n      disableShrink = false,\n      size = 40,\n      style,\n      thickness = 3.6,\n      value = 0,\n      variant = 'indeterminate'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, _extends({\n    className: clsx(classes.root, className),\n    style: _extends({\n      width: size,\n      height: size\n    }, rootStyle, style),\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\"\n  }, rootProps, other, {\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nconst Container = createContainer({\n  createStyledComponent: styled('div', {\n    name: 'MuiContainer',\n    slot: 'Root',\n    overridesResolver: (props, styles) => {\n      const {\n        ownerState\n      } = props;\n      return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n    }\n  }),\n  useThemeProps: inProps => useDefaultProps({\n    props: inProps,\n    name: 'MuiContainer'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * Set the max-width to match the min-width of the current breakpoint.\n   * This is useful if you'd prefer to design for a fixed set of sizes\n   * instead of trying to accommodate a fully fluid viewport.\n   * It's fluid by default.\n   * @default false\n   */\n  fixed: PropTypes.bool,\n  /**\n   * Determine the max-width of the container.\n   * The container width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'lg'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport GlobalStyles from '../GlobalStyles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const html = (theme, enableColorScheme) => _extends({\n  WebkitFontSmoothing: 'antialiased',\n  // Antialiasing.\n  MozOsxFontSmoothing: 'grayscale',\n  // Antialiasing.\n  // Change from `box-sizing: content-box` so that `width`\n  // is not affected by `padding` or `border`.\n  boxSizing: 'border-box',\n  // Fix font resize problem in iOS\n  WebkitTextSizeAdjust: '100%'\n}, enableColorScheme && !theme.vars && {\n  colorScheme: theme.palette.mode\n});\nexport const body = theme => _extends({\n  color: (theme.vars || theme).palette.text.primary\n}, theme.typography.body1, {\n  backgroundColor: (theme.vars || theme).palette.background.default,\n  '@media print': {\n    // Save printer ink.\n    backgroundColor: (theme.vars || theme).palette.common.white\n  }\n});\nexport const styles = (theme, enableColorScheme = false) => {\n  var _theme$components;\n  const colorSchemeStyles = {};\n  if (enableColorScheme && theme.colorSchemes) {\n    Object.entries(theme.colorSchemes).forEach(([key, scheme]) => {\n      var _scheme$palette;\n      colorSchemeStyles[theme.getColorSchemeSelector(key).replace(/\\s*&/, '')] = {\n        colorScheme: (_scheme$palette = scheme.palette) == null ? void 0 : _scheme$palette.mode\n      };\n    });\n  }\n  let defaultStyles = _extends({\n    html: html(theme, enableColorScheme),\n    '*, *::before, *::after': {\n      boxSizing: 'inherit'\n    },\n    'strong, b': {\n      fontWeight: theme.typography.fontWeightBold\n    },\n    body: _extends({\n      margin: 0\n    }, body(theme), {\n      // Add support for document.body.requestFullScreen().\n      // Other elements, if background transparent, are not supported.\n      '&::backdrop': {\n        backgroundColor: (theme.vars || theme).palette.background.default\n      }\n    })\n  }, colorSchemeStyles);\n  const themeOverrides = (_theme$components = theme.components) == null || (_theme$components = _theme$components.MuiCssBaseline) == null ? void 0 : _theme$components.styleOverrides;\n  if (themeOverrides) {\n    defaultStyles = [defaultStyles, themeOverrides];\n  }\n  return defaultStyles;\n};\n\n/**\n * Kickstart an elegant, consistent, and simple baseline to build upon.\n */\nfunction CssBaseline(inProps) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiCssBaseline'\n  });\n  const {\n    children,\n    enableColorScheme = false\n  } = props;\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(GlobalStyles, {\n      styles: theme => styles(theme, enableColorScheme)\n    }), children]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? CssBaseline.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * You can wrap a node.\n   */\n  children: PropTypes.node,\n  /**\n   * Enable `color-scheme` CSS property to use `theme.palette.mode`.\n   * For more details, check out https://developer.mozilla.org/en-US/docs/Web/CSS/color-scheme\n   * For browser support, check out https://caniuse.com/?search=color-scheme\n   * @default false\n   */\n  enableColorScheme: PropTypes.bool\n} : void 0;\nexport default CssBaseline;","import { unstable_ownerWindow as ownerWindow, unstable_ownerDocument as ownerDocument, unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\n// Is a vertical scrollbar displayed?\nfunction isOverflowing(container) {\n  const doc = ownerDocument(container);\n  if (doc.body === container) {\n    return ownerWindow(container).innerWidth > doc.documentElement.clientWidth;\n  }\n  return container.scrollHeight > container.clientHeight;\n}\nexport function ariaHidden(element, show) {\n  if (show) {\n    element.setAttribute('aria-hidden', 'true');\n  } else {\n    element.removeAttribute('aria-hidden');\n  }\n}\nfunction getPaddingRight(element) {\n  return parseInt(ownerWindow(element).getComputedStyle(element).paddingRight, 10) || 0;\n}\nfunction isAriaHiddenForbiddenOnElement(element) {\n  // The forbidden HTML tags are the ones from ARIA specification that\n  // can be children of body and can't have aria-hidden attribute.\n  // cf. https://www.w3.org/TR/html-aria/#docconformance\n  const forbiddenTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE', 'LINK', 'MAP', 'META', 'NOSCRIPT', 'PICTURE', 'COL', 'COLGROUP', 'PARAM', 'SLOT', 'SOURCE', 'TRACK'];\n  const isForbiddenTagName = forbiddenTagNames.indexOf(element.tagName) !== -1;\n  const isInputHidden = element.tagName === 'INPUT' && element.getAttribute('type') === 'hidden';\n  return isForbiddenTagName || isInputHidden;\n}\nfunction ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, show) {\n  const blacklist = [mountElement, currentElement, ...elementsToExclude];\n  [].forEach.call(container.children, element => {\n    const isNotExcludedElement = blacklist.indexOf(element) === -1;\n    const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);\n    if (isNotExcludedElement && isNotForbiddenElement) {\n      ariaHidden(element, show);\n    }\n  });\n}\nfunction findIndexOf(items, callback) {\n  let idx = -1;\n  items.some((item, index) => {\n    if (callback(item)) {\n      idx = index;\n      return true;\n    }\n    return false;\n  });\n  return idx;\n}\nfunction handleContainer(containerInfo, props) {\n  const restoreStyle = [];\n  const container = containerInfo.container;\n  if (!props.disableScrollLock) {\n    if (isOverflowing(container)) {\n      // Compute the size before applying overflow hidden to avoid any scroll jumps.\n      const scrollbarSize = getScrollbarSize(ownerDocument(container));\n      restoreStyle.push({\n        value: container.style.paddingRight,\n        property: 'padding-right',\n        el: container\n      });\n      // Use computed style, here to get the real padding to add our scrollbar width.\n      container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;\n\n      // .mui-fixed is a global helper.\n      const fixedElements = ownerDocument(container).querySelectorAll('.mui-fixed');\n      [].forEach.call(fixedElements, element => {\n        restoreStyle.push({\n          value: element.style.paddingRight,\n          property: 'padding-right',\n          el: element\n        });\n        element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`;\n      });\n    }\n    let scrollContainer;\n    if (container.parentNode instanceof DocumentFragment) {\n      scrollContainer = ownerDocument(container).body;\n    } else {\n      // Support html overflow-y: auto for scroll stability between pages\n      // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n      const parent = container.parentElement;\n      const containerWindow = ownerWindow(container);\n      scrollContainer = (parent == null ? void 0 : parent.nodeName) === 'HTML' && containerWindow.getComputedStyle(parent).overflowY === 'scroll' ? parent : container;\n    }\n\n    // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n    // screensize shrink.\n    restoreStyle.push({\n      value: scrollContainer.style.overflow,\n      property: 'overflow',\n      el: scrollContainer\n    }, {\n      value: scrollContainer.style.overflowX,\n      property: 'overflow-x',\n      el: scrollContainer\n    }, {\n      value: scrollContainer.style.overflowY,\n      property: 'overflow-y',\n      el: scrollContainer\n    });\n    scrollContainer.style.overflow = 'hidden';\n  }\n  const restore = () => {\n    restoreStyle.forEach(({\n      value,\n      el,\n      property\n    }) => {\n      if (value) {\n        el.style.setProperty(property, value);\n      } else {\n        el.style.removeProperty(property);\n      }\n    });\n  };\n  return restore;\n}\nfunction getHiddenSiblings(container) {\n  const hiddenSiblings = [];\n  [].forEach.call(container.children, element => {\n    if (element.getAttribute('aria-hidden') === 'true') {\n      hiddenSiblings.push(element);\n    }\n  });\n  return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\nexport class ModalManager {\n  constructor() {\n    this.containers = void 0;\n    this.modals = void 0;\n    this.modals = [];\n    this.containers = [];\n  }\n  add(modal, container) {\n    let modalIndex = this.modals.indexOf(modal);\n    if (modalIndex !== -1) {\n      return modalIndex;\n    }\n    modalIndex = this.modals.length;\n    this.modals.push(modal);\n\n    // If the modal we are adding is already in the DOM.\n    if (modal.modalRef) {\n      ariaHidden(modal.modalRef, false);\n    }\n    const hiddenSiblings = getHiddenSiblings(container);\n    ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true);\n    const containerIndex = findIndexOf(this.containers, item => item.container === container);\n    if (containerIndex !== -1) {\n      this.containers[containerIndex].modals.push(modal);\n      return modalIndex;\n    }\n    this.containers.push({\n      modals: [modal],\n      container,\n      restore: null,\n      hiddenSiblings\n    });\n    return modalIndex;\n  }\n  mount(modal, props) {\n    const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n    const containerInfo = this.containers[containerIndex];\n    if (!containerInfo.restore) {\n      containerInfo.restore = handleContainer(containerInfo, props);\n    }\n  }\n  remove(modal, ariaHiddenState = true) {\n    const modalIndex = this.modals.indexOf(modal);\n    if (modalIndex === -1) {\n      return modalIndex;\n    }\n    const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n    const containerInfo = this.containers[containerIndex];\n    containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n    this.modals.splice(modalIndex, 1);\n\n    // If that was the last modal in a container, clean up the container.\n    if (containerInfo.modals.length === 0) {\n      // The modal might be closed before it had the chance to be mounted in the DOM.\n      if (containerInfo.restore) {\n        containerInfo.restore();\n      }\n      if (modal.modalRef) {\n        // In case the modal wasn't in the DOM yet.\n        ariaHidden(modal.modalRef, ariaHiddenState);\n      }\n      ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false);\n      this.containers.splice(containerIndex, 1);\n    } else {\n      // Otherwise make sure the next top modal is visible to a screen reader.\n      const nextTop = containerInfo.modals[containerInfo.modals.length - 1];\n      // as soon as a modal is adding its modalRef is undefined. it can't set\n      // aria-hidden because the dom element doesn't exist either\n      // when modal was unmounted before modalRef gets null\n      if (nextTop.modalRef) {\n        ariaHidden(nextTop.modalRef, false);\n      }\n    }\n    return modalIndex;\n  }\n  isTopModal(modal) {\n    return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n  }\n}","'use client';\n\n/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument, unstable_getReactElementRef as getReactElementRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n// Inspired by https://github.com/focus-trap/tabbable\nconst candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'].join(',');\nfunction getTabIndex(node) {\n  const tabindexAttr = parseInt(node.getAttribute('tabindex') || '', 10);\n  if (!Number.isNaN(tabindexAttr)) {\n    return tabindexAttr;\n  }\n\n  // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2\n  // so if they don't have a tabindex attribute specifically set, assume it's 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  if (node.contentEditable === 'true' || (node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {\n    return 0;\n  }\n  return node.tabIndex;\n}\nfunction isNonTabbableRadio(node) {\n  if (node.tagName !== 'INPUT' || node.type !== 'radio') {\n    return false;\n  }\n  if (!node.name) {\n    return false;\n  }\n  const getRadio = selector => node.ownerDocument.querySelector(`input[type=\"radio\"]${selector}`);\n  let roving = getRadio(`[name=\"${node.name}\"]:checked`);\n  if (!roving) {\n    roving = getRadio(`[name=\"${node.name}\"]`);\n  }\n  return roving !== node;\n}\nfunction isNodeMatchingSelectorFocusable(node) {\n  if (node.disabled || node.tagName === 'INPUT' && node.type === 'hidden' || isNonTabbableRadio(node)) {\n    return false;\n  }\n  return true;\n}\nfunction defaultGetTabbable(root) {\n  const regularTabNodes = [];\n  const orderedTabNodes = [];\n  Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {\n    const nodeTabIndex = getTabIndex(node);\n    if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {\n      return;\n    }\n    if (nodeTabIndex === 0) {\n      regularTabNodes.push(node);\n    } else {\n      orderedTabNodes.push({\n        documentOrder: i,\n        tabIndex: nodeTabIndex,\n        node: node\n      });\n    }\n  });\n  return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map(a => a.node).concat(regularTabNodes);\n}\nfunction defaultIsEnabled() {\n  return true;\n}\n\n/**\n * @ignore - internal component.\n */\nfunction FocusTrap(props) {\n  const {\n    children,\n    disableAutoFocus = false,\n    disableEnforceFocus = false,\n    disableRestoreFocus = false,\n    getTabbable = defaultGetTabbable,\n    isEnabled = defaultIsEnabled,\n    open\n  } = props;\n  const ignoreNextEnforceFocus = React.useRef(false);\n  const sentinelStart = React.useRef(null);\n  const sentinelEnd = React.useRef(null);\n  const nodeToRestore = React.useRef(null);\n  const reactFocusEventTarget = React.useRef(null);\n  // This variable is useful when disableAutoFocus is true.\n  // It waits for the active element to move into the component to activate.\n  const activated = React.useRef(false);\n  const rootRef = React.useRef(null);\n  const handleRef = useForkRef(getReactElementRef(children), rootRef);\n  const lastKeydown = React.useRef(null);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    activated.current = !disableAutoFocus;\n  }, [disableAutoFocus, open]);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    const doc = ownerDocument(rootRef.current);\n    if (!rootRef.current.contains(doc.activeElement)) {\n      if (!rootRef.current.hasAttribute('tabIndex')) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.error(['MUI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n'));\n        }\n        rootRef.current.setAttribute('tabIndex', '-1');\n      }\n      if (activated.current) {\n        rootRef.current.focus();\n      }\n    }\n    return () => {\n      // restoreLastFocus()\n      if (!disableRestoreFocus) {\n        // In IE11 it is possible for document.activeElement to be null resulting\n        // in nodeToRestore.current being null.\n        // Not all elements in IE11 have a focus method.\n        // Once IE11 support is dropped the focus() call can be unconditional.\n        if (nodeToRestore.current && nodeToRestore.current.focus) {\n          ignoreNextEnforceFocus.current = true;\n          nodeToRestore.current.focus();\n        }\n        nodeToRestore.current = null;\n      }\n    };\n    // Missing `disableRestoreFocus` which is fine.\n    // We don't support changing that prop on an open FocusTrap\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [open]);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    const doc = ownerDocument(rootRef.current);\n    const loopFocus = nativeEvent => {\n      lastKeydown.current = nativeEvent;\n      if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {\n        return;\n      }\n\n      // Make sure the next tab starts from the right place.\n      // doc.activeElement refers to the origin.\n      if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {\n        // We need to ignore the next contain as\n        // it will try to move the focus back to the rootRef element.\n        ignoreNextEnforceFocus.current = true;\n        if (sentinelEnd.current) {\n          sentinelEnd.current.focus();\n        }\n      }\n    };\n    const contain = () => {\n      const rootElement = rootRef.current;\n\n      // Cleanup functions are executed lazily in React 17.\n      // Contain can be called between the component being unmounted and its cleanup function being run.\n      if (rootElement === null) {\n        return;\n      }\n      if (!doc.hasFocus() || !isEnabled() || ignoreNextEnforceFocus.current) {\n        ignoreNextEnforceFocus.current = false;\n        return;\n      }\n\n      // The focus is already inside\n      if (rootElement.contains(doc.activeElement)) {\n        return;\n      }\n\n      // The disableEnforceFocus is set and the focus is outside of the focus trap (and sentinel nodes)\n      if (disableEnforceFocus && doc.activeElement !== sentinelStart.current && doc.activeElement !== sentinelEnd.current) {\n        return;\n      }\n\n      // if the focus event is not coming from inside the children's react tree, reset the refs\n      if (doc.activeElement !== reactFocusEventTarget.current) {\n        reactFocusEventTarget.current = null;\n      } else if (reactFocusEventTarget.current !== null) {\n        return;\n      }\n      if (!activated.current) {\n        return;\n      }\n      let tabbable = [];\n      if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {\n        tabbable = getTabbable(rootRef.current);\n      }\n\n      // one of the sentinel nodes was focused, so move the focus\n      // to the first/last tabbable element inside the focus trap\n      if (tabbable.length > 0) {\n        var _lastKeydown$current, _lastKeydown$current2;\n        const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');\n        const focusNext = tabbable[0];\n        const focusPrevious = tabbable[tabbable.length - 1];\n        if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {\n          if (isShiftTab) {\n            focusPrevious.focus();\n          } else {\n            focusNext.focus();\n          }\n        }\n        // no tabbable elements in the trap focus or the focus was outside of the focus trap\n      } else {\n        rootElement.focus();\n      }\n    };\n    doc.addEventListener('focusin', contain);\n    doc.addEventListener('keydown', loopFocus, true);\n\n    // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area.\n    // for example https://bugzilla.mozilla.org/show_bug.cgi?id=559561.\n    // Instead, we can look if the active element was restored on the BODY element.\n    //\n    // The whatwg spec defines how the browser should behave but does not explicitly mention any events:\n    // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.\n    const interval = setInterval(() => {\n      if (doc.activeElement && doc.activeElement.tagName === 'BODY') {\n        contain();\n      }\n    }, 50);\n    return () => {\n      clearInterval(interval);\n      doc.removeEventListener('focusin', contain);\n      doc.removeEventListener('keydown', loopFocus, true);\n    };\n  }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);\n  const onFocus = event => {\n    if (nodeToRestore.current === null) {\n      nodeToRestore.current = event.relatedTarget;\n    }\n    activated.current = true;\n    reactFocusEventTarget.current = event.target;\n    const childrenPropsHandler = children.props.onFocus;\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const handleFocusSentinel = event => {\n    if (nodeToRestore.current === null) {\n      nodeToRestore.current = event.relatedTarget;\n    }\n    activated.current = true;\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"div\", {\n      tabIndex: open ? 0 : -1,\n      onFocus: handleFocusSentinel,\n      ref: sentinelStart,\n      \"data-testid\": \"sentinelStart\"\n    }), /*#__PURE__*/React.cloneElement(children, {\n      ref: handleRef,\n      onFocus\n    }), /*#__PURE__*/_jsx(\"div\", {\n      tabIndex: open ? 0 : -1,\n      onFocus: handleFocusSentinel,\n      ref: sentinelEnd,\n      \"data-testid\": \"sentinelEnd\"\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? FocusTrap.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef,\n  /**\n   * If `true`, the focus trap will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any focus trap children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the focus trap less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: PropTypes.bool,\n  /**\n   * If `true`, the focus trap will not prevent focus from leaving the focus trap while open.\n   *\n   * Generally this should never be set to `true` as it makes the focus trap less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: PropTypes.bool,\n  /**\n   * If `true`, the focus trap will not restore focus to previously focused element once\n   * focus trap is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: PropTypes.bool,\n  /**\n   * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.\n   * For instance, you can provide the \"tabbable\" npm dependency.\n   * @param {HTMLElement} root\n   */\n  getTabbable: PropTypes.func,\n  /**\n   * This prop extends the `open` prop.\n   * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.\n   * This prop should be memoized.\n   * It can be used to support multiple focus trap mounted at the same time.\n   * @default function defaultIsEnabled(): boolean {\n   *   return true;\n   * }\n   */\n  isEnabled: PropTypes.func,\n  /**\n   * If `true`, focus is locked.\n   */\n  open: PropTypes.bool.isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  FocusTrap['propTypes' + ''] = exactProp(FocusTrap.propTypes);\n}\nexport default FocusTrap;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback, unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nimport extractEventHandlers from '@mui/utils/extractEventHandlers';\nimport { ModalManager, ariaHidden } from './ModalManager';\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\nfunction getHasTransition(children) {\n  return children ? children.props.hasOwnProperty('in') : false;\n}\n\n// A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\nconst defaultManager = new ModalManager();\n/**\n *\n * Demos:\n *\n * - [Modal](https://mui.com/base-ui/react-modal/#hook)\n *\n * API:\n *\n * - [useModal API](https://mui.com/base-ui/react-modal/hooks-api/#use-modal)\n */\nfunction useModal(parameters) {\n  const {\n    container,\n    disableEscapeKeyDown = false,\n    disableScrollLock = false,\n    // @ts-ignore internal logic - Base UI supports the manager as a prop too\n    manager = defaultManager,\n    closeAfterTransition = false,\n    onTransitionEnter,\n    onTransitionExited,\n    children,\n    onClose,\n    open,\n    rootRef\n  } = parameters;\n\n  // @ts-ignore internal logic\n  const modal = React.useRef({});\n  const mountNodeRef = React.useRef(null);\n  const modalRef = React.useRef(null);\n  const handleRef = useForkRef(modalRef, rootRef);\n  const [exited, setExited] = React.useState(!open);\n  const hasTransition = getHasTransition(children);\n  let ariaHiddenProp = true;\n  if (parameters['aria-hidden'] === 'false' || parameters['aria-hidden'] === false) {\n    ariaHiddenProp = false;\n  }\n  const getDoc = () => ownerDocument(mountNodeRef.current);\n  const getModal = () => {\n    modal.current.modalRef = modalRef.current;\n    modal.current.mount = mountNodeRef.current;\n    return modal.current;\n  };\n  const handleMounted = () => {\n    manager.mount(getModal(), {\n      disableScrollLock\n    });\n\n    // Fix a bug on Chrome where the scroll isn't initially 0.\n    if (modalRef.current) {\n      modalRef.current.scrollTop = 0;\n    }\n  };\n  const handleOpen = useEventCallback(() => {\n    const resolvedContainer = getContainer(container) || getDoc().body;\n    manager.add(getModal(), resolvedContainer);\n\n    // The element was already mounted.\n    if (modalRef.current) {\n      handleMounted();\n    }\n  });\n  const isTopModal = React.useCallback(() => manager.isTopModal(getModal()), [manager]);\n  const handlePortalRef = useEventCallback(node => {\n    mountNodeRef.current = node;\n    if (!node) {\n      return;\n    }\n    if (open && isTopModal()) {\n      handleMounted();\n    } else if (modalRef.current) {\n      ariaHidden(modalRef.current, ariaHiddenProp);\n    }\n  });\n  const handleClose = React.useCallback(() => {\n    manager.remove(getModal(), ariaHiddenProp);\n  }, [ariaHiddenProp, manager]);\n  React.useEffect(() => {\n    return () => {\n      handleClose();\n    };\n  }, [handleClose]);\n  React.useEffect(() => {\n    if (open) {\n      handleOpen();\n    } else if (!hasTransition || !closeAfterTransition) {\n      handleClose();\n    }\n  }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n  const createHandleKeyDown = otherHandlers => event => {\n    var _otherHandlers$onKeyD;\n    (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);\n\n    // The handler doesn't take event.defaultPrevented into account:\n    //\n    // event.preventDefault() is meant to stop default behaviors like\n    // clicking a checkbox to check it, hitting a button to submit a form,\n    // and hitting left arrow to move the cursor in a text input etc.\n    // Only special HTML elements have these default behaviors.\n    if (event.key !== 'Escape' || event.which === 229 ||\n    // Wait until IME is settled.\n    !isTopModal()) {\n      return;\n    }\n    if (!disableEscapeKeyDown) {\n      // Swallow the event, in case someone is listening for the escape key on the body.\n      event.stopPropagation();\n      if (onClose) {\n        onClose(event, 'escapeKeyDown');\n      }\n    }\n  };\n  const createHandleBackdropClick = otherHandlers => event => {\n    var _otherHandlers$onClic;\n    (_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);\n    if (event.target !== event.currentTarget) {\n      return;\n    }\n    if (onClose) {\n      onClose(event, 'backdropClick');\n    }\n  };\n  const getRootProps = (otherHandlers = {}) => {\n    const propsEventHandlers = extractEventHandlers(parameters);\n\n    // The custom event handlers shouldn't be spread on the root element\n    delete propsEventHandlers.onTransitionEnter;\n    delete propsEventHandlers.onTransitionExited;\n    const externalEventHandlers = _extends({}, propsEventHandlers, otherHandlers);\n    return _extends({\n      role: 'presentation'\n    }, externalEventHandlers, {\n      onKeyDown: createHandleKeyDown(externalEventHandlers),\n      ref: handleRef\n    });\n  };\n  const getBackdropProps = (otherHandlers = {}) => {\n    const externalEventHandlers = otherHandlers;\n    return _extends({\n      'aria-hidden': true\n    }, externalEventHandlers, {\n      onClick: createHandleBackdropClick(externalEventHandlers),\n      open\n    });\n  };\n  const getTransitionProps = () => {\n    const handleEnter = () => {\n      setExited(false);\n      if (onTransitionEnter) {\n        onTransitionEnter();\n      }\n    };\n    const handleExited = () => {\n      setExited(true);\n      if (onTransitionExited) {\n        onTransitionExited();\n      }\n      if (closeAfterTransition) {\n        handleClose();\n      }\n    };\n    return {\n      onEnter: createChainedFunction(handleEnter, children == null ? void 0 : children.props.onEnter),\n      onExited: createChainedFunction(handleExited, children == null ? void 0 : children.props.onExited)\n    };\n  };\n  return {\n    getRootProps,\n    getBackdropProps,\n    getTransitionProps,\n    rootRef: handleRef,\n    portalRef: handlePortalRef,\n    isTopModal,\n    exited,\n    hasTransition\n  };\n}\nexport default useModal;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getModalUtilityClass(slot) {\n  return generateUtilityClass('MuiModal', slot);\n}\nconst modalClasses = generateUtilityClasses('MuiModal', ['root', 'hidden', 'backdrop']);\nexport default modalClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"BackdropComponent\", \"BackdropProps\", \"classes\", \"className\", \"closeAfterTransition\", \"children\", \"container\", \"component\", \"components\", \"componentsProps\", \"disableAutoFocus\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"onBackdropClick\", \"onClose\", \"onTransitionEnter\", \"onTransitionExited\", \"open\", \"slotProps\", \"slots\", \"theme\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport FocusTrap from '../Unstable_TrapFocus';\nimport Portal from '../Portal';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Backdrop from '../Backdrop';\nimport useModal from './useModal';\nimport { getModalUtilityClass } from './modalClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    open,\n    exited,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', !open && exited && 'hidden'],\n    backdrop: ['backdrop']\n  };\n  return composeClasses(slots, getModalUtilityClass, classes);\n};\nconst ModalRoot = styled('div', {\n  name: 'MuiModal',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.open && ownerState.exited && styles.hidden];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  position: 'fixed',\n  zIndex: (theme.vars || theme).zIndex.modal,\n  right: 0,\n  bottom: 0,\n  top: 0,\n  left: 0\n}, !ownerState.open && ownerState.exited && {\n  visibility: 'hidden'\n}));\nconst ModalBackdrop = styled(Backdrop, {\n  name: 'MuiModal',\n  slot: 'Backdrop',\n  overridesResolver: (props, styles) => {\n    return styles.backdrop;\n  }\n})({\n  zIndex: -1\n});\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * - [Dialog](/material-ui/api/dialog/)\n * - [Drawer](/material-ui/api/drawer/)\n * - [Menu](/material-ui/api/menu/)\n * - [Popover](/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n */\nconst Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$backdrop, _slotProps$root, _slotProps$backdrop;\n  const props = useDefaultProps({\n    name: 'MuiModal',\n    props: inProps\n  });\n  const {\n      BackdropComponent = ModalBackdrop,\n      BackdropProps,\n      className,\n      closeAfterTransition = false,\n      children,\n      container,\n      component,\n      components = {},\n      componentsProps = {},\n      disableAutoFocus = false,\n      disableEnforceFocus = false,\n      disableEscapeKeyDown = false,\n      disablePortal = false,\n      disableRestoreFocus = false,\n      disableScrollLock = false,\n      hideBackdrop = false,\n      keepMounted = false,\n      onBackdropClick,\n      open,\n      slotProps,\n      slots\n      // eslint-disable-next-line react/prop-types\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const propsWithDefaults = _extends({}, props, {\n    closeAfterTransition,\n    disableAutoFocus,\n    disableEnforceFocus,\n    disableEscapeKeyDown,\n    disablePortal,\n    disableRestoreFocus,\n    disableScrollLock,\n    hideBackdrop,\n    keepMounted\n  });\n  const {\n    getRootProps,\n    getBackdropProps,\n    getTransitionProps,\n    portalRef,\n    isTopModal,\n    exited,\n    hasTransition\n  } = useModal(_extends({}, propsWithDefaults, {\n    rootRef: ref\n  }));\n  const ownerState = _extends({}, propsWithDefaults, {\n    exited\n  });\n  const classes = useUtilityClasses(ownerState);\n  const childProps = {};\n  if (children.props.tabIndex === undefined) {\n    childProps.tabIndex = '-1';\n  }\n\n  // It's a Transition like component\n  if (hasTransition) {\n    const {\n      onEnter,\n      onExited\n    } = getTransitionProps();\n    childProps.onEnter = onEnter;\n    childProps.onExited = onExited;\n  }\n  const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : ModalRoot;\n  const BackdropSlot = (_ref2 = (_slots$backdrop = slots == null ? void 0 : slots.backdrop) != null ? _slots$backdrop : components.Backdrop) != null ? _ref2 : BackdropComponent;\n  const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;\n  const backdropSlotProps = (_slotProps$backdrop = slotProps == null ? void 0 : slotProps.backdrop) != null ? _slotProps$backdrop : componentsProps.backdrop;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    getSlotProps: getRootProps,\n    additionalProps: {\n      ref,\n      as: component\n    },\n    ownerState,\n    className: clsx(className, rootSlotProps == null ? void 0 : rootSlotProps.className, classes == null ? void 0 : classes.root, !ownerState.open && ownerState.exited && (classes == null ? void 0 : classes.hidden))\n  });\n  const backdropProps = useSlotProps({\n    elementType: BackdropSlot,\n    externalSlotProps: backdropSlotProps,\n    additionalProps: BackdropProps,\n    getSlotProps: otherHandlers => {\n      return getBackdropProps(_extends({}, otherHandlers, {\n        onClick: e => {\n          if (onBackdropClick) {\n            onBackdropClick(e);\n          }\n          if (otherHandlers != null && otherHandlers.onClick) {\n            otherHandlers.onClick(e);\n          }\n        }\n      }));\n    },\n    className: clsx(backdropSlotProps == null ? void 0 : backdropSlotProps.className, BackdropProps == null ? void 0 : BackdropProps.className, classes == null ? void 0 : classes.backdrop),\n    ownerState\n  });\n  if (!keepMounted && !open && (!hasTransition || exited)) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(Portal, {\n    ref: portalRef,\n    container: container,\n    disablePortal: disablePortal,\n    children: /*#__PURE__*/_jsxs(RootSlot, _extends({}, rootProps, {\n      children: [!hideBackdrop && BackdropComponent ? /*#__PURE__*/_jsx(BackdropSlot, _extends({}, backdropProps)) : null, /*#__PURE__*/_jsx(FocusTrap, {\n        disableEnforceFocus: disableEnforceFocus,\n        disableAutoFocus: disableAutoFocus,\n        disableRestoreFocus: disableRestoreFocus,\n        isEnabled: isTopModal,\n        open: open,\n        children: /*#__PURE__*/React.cloneElement(children, childProps)\n      })]\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Modal.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A backdrop component. This prop enables custom backdrop rendering.\n   * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n   * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n   * @default styled(Backdrop, {\n   *   name: 'MuiModal',\n   *   slot: 'Backdrop',\n   *   overridesResolver: (props, styles) => {\n   *     return styles.backdrop;\n   *   },\n   * })({\n   *   zIndex: -1,\n   * })\n   */\n  BackdropComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Backdrop`](/material-ui/api/backdrop/) element.\n   * @deprecated Use `slotProps.backdrop` instead.\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * When set to true the Modal waits until a nested Transition is completed before closing.\n   * @default false\n   */\n  closeAfterTransition: PropTypes.bool,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Backdrop: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * If `true`, the modal will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: PropTypes.bool,\n  /**\n   * If `true`, the modal will not prevent focus from leaving the modal while open.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: PropTypes.bool,\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: PropTypes.bool,\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * If `true`, the modal will not restore focus to previously focused element once\n   * modal is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: PropTypes.bool,\n  /**\n   * Disable the scroll lock behavior.\n   * @default false\n   */\n  disableScrollLock: PropTypes.bool,\n  /**\n   * If `true`, the backdrop is not rendered.\n   * @default false\n   */\n  hideBackdrop: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Modal.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * A function called when a transition enters.\n   */\n  onTransitionEnter: PropTypes.func,\n  /**\n   * A function called when a transition has exited.\n   */\n  onTransitionExited: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The props used for each slot inside the Modal.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Modal.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    backdrop: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Modal;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogUtilityClass(slot) {\n  return generateUtilityClass('MuiDialog', slot);\n}\nconst dialogClasses = generateUtilityClasses('MuiDialog', ['root', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);\nexport default dialogClasses;","import * as React from 'react';\nconst DialogContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  DialogContext.displayName = 'DialogContext';\n}\nexport default DialogContext;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-describedby\", \"aria-labelledby\", \"BackdropComponent\", \"BackdropProps\", \"children\", \"className\", \"disableEscapeKeyDown\", \"fullScreen\", \"fullWidth\", \"maxWidth\", \"onBackdropClick\", \"onClick\", \"onClose\", \"open\", \"PaperComponent\", \"PaperProps\", \"scroll\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport capitalize from '../utils/capitalize';\nimport Modal from '../Modal';\nimport Fade from '../Fade';\nimport Paper from '../Paper';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport dialogClasses, { getDialogUtilityClass } from './dialogClasses';\nimport DialogContext from './DialogContext';\nimport Backdrop from '../Backdrop';\nimport useTheme from '../styles/useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DialogBackdrop = styled(Backdrop, {\n  name: 'MuiDialog',\n  slot: 'Backdrop',\n  overrides: (props, styles) => styles.backdrop\n})({\n  // Improve scrollable dialog support.\n  zIndex: -1\n});\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    scroll,\n    maxWidth,\n    fullWidth,\n    fullScreen\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    container: ['container', `scroll${capitalize(scroll)}`],\n    paper: ['paper', `paperScroll${capitalize(scroll)}`, `paperWidth${capitalize(String(maxWidth))}`, fullWidth && 'paperFullWidth', fullScreen && 'paperFullScreen']\n  };\n  return composeClasses(slots, getDialogUtilityClass, classes);\n};\nconst DialogRoot = styled(Modal, {\n  name: 'MuiDialog',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  '@media print': {\n    // Use !important to override the Modal inline-style.\n    position: 'absolute !important'\n  }\n});\nconst DialogContainer = styled('div', {\n  name: 'MuiDialog',\n  slot: 'Container',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.container, styles[`scroll${capitalize(ownerState.scroll)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  height: '100%',\n  '@media print': {\n    height: 'auto'\n  },\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n}, ownerState.scroll === 'paper' && {\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center'\n}, ownerState.scroll === 'body' && {\n  overflowY: 'auto',\n  overflowX: 'hidden',\n  textAlign: 'center',\n  '&::after': {\n    content: '\"\"',\n    display: 'inline-block',\n    verticalAlign: 'middle',\n    height: '100%',\n    width: '0'\n  }\n}));\nconst DialogPaper = styled(Paper, {\n  name: 'MuiDialog',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.paper, styles[`scrollPaper${capitalize(ownerState.scroll)}`], styles[`paperWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fullWidth && styles.paperFullWidth, ownerState.fullScreen && styles.paperFullScreen];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  margin: 32,\n  position: 'relative',\n  overflowY: 'auto',\n  // Fix IE11 issue, to remove at some point.\n  '@media print': {\n    overflowY: 'visible',\n    boxShadow: 'none'\n  }\n}, ownerState.scroll === 'paper' && {\n  display: 'flex',\n  flexDirection: 'column',\n  maxHeight: 'calc(100% - 64px)'\n}, ownerState.scroll === 'body' && {\n  display: 'inline-block',\n  verticalAlign: 'middle',\n  textAlign: 'left' // 'initial' doesn't work on IE11\n}, !ownerState.maxWidth && {\n  maxWidth: 'calc(100% - 64px)'\n}, ownerState.maxWidth === 'xs' && {\n  maxWidth: theme.breakpoints.unit === 'px' ? Math.max(theme.breakpoints.values.xs, 444) : `max(${theme.breakpoints.values.xs}${theme.breakpoints.unit}, 444px)`,\n  [`&.${dialogClasses.paperScrollBody}`]: {\n    [theme.breakpoints.down(Math.max(theme.breakpoints.values.xs, 444) + 32 * 2)]: {\n      maxWidth: 'calc(100% - 64px)'\n    }\n  }\n}, ownerState.maxWidth && ownerState.maxWidth !== 'xs' && {\n  maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`,\n  [`&.${dialogClasses.paperScrollBody}`]: {\n    [theme.breakpoints.down(theme.breakpoints.values[ownerState.maxWidth] + 32 * 2)]: {\n      maxWidth: 'calc(100% - 64px)'\n    }\n  }\n}, ownerState.fullWidth && {\n  width: 'calc(100% - 64px)'\n}, ownerState.fullScreen && {\n  margin: 0,\n  width: '100%',\n  maxWidth: '100%',\n  height: '100%',\n  maxHeight: 'none',\n  borderRadius: 0,\n  [`&.${dialogClasses.paperScrollBody}`]: {\n    margin: 0,\n    maxWidth: '100%'\n  }\n}));\n\n/**\n * Dialogs are overlaid modal paper based components with a backdrop.\n */\nconst Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDialog'\n  });\n  const theme = useTheme();\n  const defaultTransitionDuration = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n      'aria-describedby': ariaDescribedby,\n      'aria-labelledby': ariaLabelledbyProp,\n      BackdropComponent,\n      BackdropProps,\n      children,\n      className,\n      disableEscapeKeyDown = false,\n      fullScreen = false,\n      fullWidth = false,\n      maxWidth = 'sm',\n      onBackdropClick,\n      onClick,\n      onClose,\n      open,\n      PaperComponent = Paper,\n      PaperProps = {},\n      scroll = 'paper',\n      TransitionComponent = Fade,\n      transitionDuration = defaultTransitionDuration,\n      TransitionProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    disableEscapeKeyDown,\n    fullScreen,\n    fullWidth,\n    maxWidth,\n    scroll\n  });\n  const classes = useUtilityClasses(ownerState);\n  const backdropClick = React.useRef();\n  const handleMouseDown = event => {\n    // We don't want to close the dialog when clicking the dialog content.\n    // Make sure the event starts and ends on the same DOM element.\n    backdropClick.current = event.target === event.currentTarget;\n  };\n  const handleBackdropClick = event => {\n    if (onClick) {\n      onClick(event);\n    }\n\n    // Ignore the events not coming from the \"backdrop\".\n    if (!backdropClick.current) {\n      return;\n    }\n    backdropClick.current = null;\n    if (onBackdropClick) {\n      onBackdropClick(event);\n    }\n    if (onClose) {\n      onClose(event, 'backdropClick');\n    }\n  };\n  const ariaLabelledby = useId(ariaLabelledbyProp);\n  const dialogContextValue = React.useMemo(() => {\n    return {\n      titleId: ariaLabelledby\n    };\n  }, [ariaLabelledby]);\n  return /*#__PURE__*/_jsx(DialogRoot, _extends({\n    className: clsx(classes.root, className),\n    closeAfterTransition: true,\n    components: {\n      Backdrop: DialogBackdrop\n    },\n    componentsProps: {\n      backdrop: _extends({\n        transitionDuration,\n        as: BackdropComponent\n      }, BackdropProps)\n    },\n    disableEscapeKeyDown: disableEscapeKeyDown,\n    onClose: onClose,\n    open: open,\n    ref: ref,\n    onClick: handleBackdropClick,\n    ownerState: ownerState\n  }, other, {\n    children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n      appear: true,\n      in: open,\n      timeout: transitionDuration,\n      role: \"presentation\"\n    }, TransitionProps, {\n      children: /*#__PURE__*/_jsx(DialogContainer, {\n        className: clsx(classes.container),\n        onMouseDown: handleMouseDown,\n        ownerState: ownerState,\n        children: /*#__PURE__*/_jsx(DialogPaper, _extends({\n          as: PaperComponent,\n          elevation: 24,\n          role: \"dialog\",\n          \"aria-describedby\": ariaDescribedby,\n          \"aria-labelledby\": ariaLabelledby\n        }, PaperProps, {\n          className: clsx(classes.paper, PaperProps.className),\n          ownerState: ownerState,\n          children: /*#__PURE__*/_jsx(DialogContext.Provider, {\n            value: dialogContextValue,\n            children: children\n          })\n        }))\n      })\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Dialog.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The id(s) of the element(s) that describe the dialog.\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * The id(s) of the element(s) that label the dialog.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * A backdrop component. This prop enables custom backdrop rendering.\n   * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n   * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n   * @default styled(Backdrop, {\n   *   name: 'MuiModal',\n   *   slot: 'Backdrop',\n   *   overridesResolver: (props, styles) => {\n   *     return styles.backdrop;\n   *   },\n   * })({\n   *   zIndex: -1,\n   * })\n   */\n  BackdropComponent: PropTypes.elementType,\n  /**\n   * @ignore\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * Dialog children, usually the included sub-components.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: PropTypes.bool,\n  /**\n   * If `true`, the dialog is full-screen.\n   * @default false\n   */\n  fullScreen: PropTypes.bool,\n  /**\n   * If `true`, the dialog stretches to `maxWidth`.\n   *\n   * Notice that the dialog width grow is limited by the default margin.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * Determine the max-width of the dialog.\n   * The dialog width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'sm'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The component used to render the body of the dialog.\n   * @default Paper\n   */\n  PaperComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n   * @default {}\n   */\n  PaperProps: PropTypes.object,\n  /**\n   * Determine the container for scrolling the dialog.\n   * @default 'paper'\n   */\n  scroll: PropTypes.oneOf(['body', 'paper']),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Fade\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Dialog;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogActionsUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogActions', slot);\n}\nconst dialogActionsClasses = generateUtilityClasses('MuiDialogActions', ['root', 'spacing']);\nexport default dialogActionsClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disableSpacing\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getDialogActionsUtilityClass } from './dialogActionsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableSpacing\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableSpacing && 'spacing']\n  };\n  return composeClasses(slots, getDialogActionsUtilityClass, classes);\n};\nconst DialogActionsRoot = styled('div', {\n  name: 'MuiDialogActions',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableSpacing && styles.spacing];\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'flex',\n  alignItems: 'center',\n  padding: 8,\n  justifyContent: 'flex-end',\n  flex: '0 0 auto'\n}, !ownerState.disableSpacing && {\n  '& > :not(style) ~ :not(style)': {\n    marginLeft: 8\n  }\n}));\nconst DialogActions = /*#__PURE__*/React.forwardRef(function DialogActions(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDialogActions'\n  });\n  const {\n      className,\n      disableSpacing = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    disableSpacing\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(DialogActionsRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogActions.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the actions do not have additional margin.\n   * @default false\n   */\n  disableSpacing: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogActions;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogContentUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogContent', slot);\n}\nconst dialogContentClasses = generateUtilityClasses('MuiDialogContent', ['root', 'dividers']);\nexport default dialogContentClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogTitleUtilityClass(slot) {\n  return generateUtilityClass('MuiDialogTitle', slot);\n}\nconst dialogTitleClasses = generateUtilityClasses('MuiDialogTitle', ['root']);\nexport default dialogTitleClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"dividers\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getDialogContentUtilityClass } from './dialogContentClasses';\nimport dialogTitleClasses from '../DialogTitle/dialogTitleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    dividers\n  } = ownerState;\n  const slots = {\n    root: ['root', dividers && 'dividers']\n  };\n  return composeClasses(slots, getDialogContentUtilityClass, classes);\n};\nconst DialogContentRoot = styled('div', {\n  name: 'MuiDialogContent',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.dividers && styles.dividers];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  flex: '1 1 auto',\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch',\n  overflowY: 'auto',\n  padding: '20px 24px'\n}, ownerState.dividers ? {\n  padding: '16px 24px',\n  borderTop: `1px solid ${(theme.vars || theme).palette.divider}`,\n  borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n} : {\n  [`.${dialogTitleClasses.root} + &`]: {\n    paddingTop: 0\n  }\n}));\nconst DialogContent = /*#__PURE__*/React.forwardRef(function DialogContent(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDialogContent'\n  });\n  const {\n      className,\n      dividers = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    dividers\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(DialogContentRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContent.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Display the top and bottom dividers.\n   * @default false\n   */\n  dividers: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContent;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"id\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Typography from '../Typography';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getDialogTitleUtilityClass } from './dialogTitleClasses';\nimport DialogContext from '../Dialog/DialogContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getDialogTitleUtilityClass, classes);\n};\nconst DialogTitleRoot = styled(Typography, {\n  name: 'MuiDialogTitle',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  padding: '16px 24px',\n  flex: '0 0 auto'\n});\nconst DialogTitle = /*#__PURE__*/React.forwardRef(function DialogTitle(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDialogTitle'\n  });\n  const {\n      className,\n      id: idProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  const {\n    titleId = idProp\n  } = React.useContext(DialogContext);\n  return /*#__PURE__*/_jsx(DialogTitleRoot, _extends({\n    component: \"h2\",\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    variant: \"h6\",\n    id: idProp != null ? idProp : titleId\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogTitle.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * @ignore\n   */\n  id: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogTitle;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDividerUtilityClass(slot) {\n  return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"absolute\", \"children\", \"className\", \"component\", \"flexItem\", \"light\", \"orientation\", \"role\", \"textAlign\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getDividerUtilityClass } from './dividerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    absolute,\n    children,\n    classes,\n    flexItem,\n    light,\n    orientation,\n    textAlign,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n    wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n  };\n  return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n  name: 'MuiDivider',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  margin: 0,\n  // Reset browser default style.\n  flexShrink: 0,\n  borderWidth: 0,\n  borderStyle: 'solid',\n  borderColor: (theme.vars || theme).palette.divider,\n  borderBottomWidth: 'thin'\n}, ownerState.absolute && {\n  position: 'absolute',\n  bottom: 0,\n  left: 0,\n  width: '100%'\n}, ownerState.light && {\n  borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n}, ownerState.variant === 'inset' && {\n  marginLeft: 72\n}, ownerState.variant === 'middle' && ownerState.orientation === 'horizontal' && {\n  marginLeft: theme.spacing(2),\n  marginRight: theme.spacing(2)\n}, ownerState.variant === 'middle' && ownerState.orientation === 'vertical' && {\n  marginTop: theme.spacing(1),\n  marginBottom: theme.spacing(1)\n}, ownerState.orientation === 'vertical' && {\n  height: '100%',\n  borderBottomWidth: 0,\n  borderRightWidth: 'thin'\n}, ownerState.flexItem && {\n  alignSelf: 'stretch',\n  height: 'auto'\n}), ({\n  ownerState\n}) => _extends({}, ownerState.children && {\n  display: 'flex',\n  whiteSpace: 'nowrap',\n  textAlign: 'center',\n  border: 0,\n  borderTopStyle: 'solid',\n  borderLeftStyle: 'solid',\n  '&::before, &::after': {\n    content: '\"\"',\n    alignSelf: 'center'\n  }\n}), ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation !== 'vertical' && {\n  '&::before, &::after': {\n    width: '100%',\n    borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,\n    borderTopStyle: 'inherit'\n  }\n}), ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation === 'vertical' && {\n  flexDirection: 'column',\n  '&::before, &::after': {\n    height: '100%',\n    borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,\n    borderLeftStyle: 'inherit'\n  }\n}), ({\n  ownerState\n}) => _extends({}, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && {\n  '&::before': {\n    width: '90%'\n  },\n  '&::after': {\n    width: '10%'\n  }\n}, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && {\n  '&::before': {\n    width: '10%'\n  },\n  '&::after': {\n    width: '90%'\n  }\n}));\nconst DividerWrapper = styled('span', {\n  name: 'MuiDivider',\n  slot: 'Wrapper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  display: 'inline-block',\n  paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n  paddingRight: `calc(${theme.spacing(1)} * 1.2)`\n}, ownerState.orientation === 'vertical' && {\n  paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n  paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n}));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDivider'\n  });\n  const {\n      absolute = false,\n      children,\n      className,\n      component = children ? 'div' : 'hr',\n      flexItem = false,\n      light = false,\n      orientation = 'horizontal',\n      role = component !== 'hr' ? 'separator' : undefined,\n      textAlign = 'center',\n      variant = 'fullWidth'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    absolute,\n    component,\n    flexItem,\n    light,\n    orientation,\n    role,\n    textAlign,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(DividerRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    role: role,\n    ref: ref,\n    ownerState: ownerState\n  }, other, {\n    children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n      className: classes.wrapper,\n      ownerState: ownerState,\n      children: children\n    }) : null\n  }));\n});\n\n/**\n * The following flag is used to ensure that this component isn't tabbable i.e.\n * does not get highlight/focus inside of MUI List.\n */\nDivider.muiSkipListHighlight = true;\nprocess.env.NODE_ENV !== \"production\" ? Divider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Absolutely position the element.\n   * @default false\n   */\n  absolute: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, a vertical divider will have the correct height when used in flex container.\n   * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n   * @default false\n   */\n  flexItem: PropTypes.bool,\n  /**\n   * If `true`, the divider will have a lighter color.\n   * @default false\n   * @deprecated Use <Divider sx={{ opacity: 0.6 }} /> (or any opacity or color) instead. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/)\n   */\n  light: PropTypes.bool,\n  /**\n   * The component orientation.\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * @ignore\n   */\n  role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The text alignment.\n   * @default 'center'\n   */\n  textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n  /**\n   * The variant to use.\n   * @default 'fullWidth'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"container\", \"direction\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport debounce from '../utils/debounce';\nimport useForkRef from '../utils/useForkRef';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport { ownerWindow } from '../utils';\n\n// Translate the node so it can't be seen on the screen.\n// Later, we're going to translate the node back to its original location with `none`.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getTranslateValue(direction, node, resolvedContainer) {\n  const rect = node.getBoundingClientRect();\n  const containerRect = resolvedContainer && resolvedContainer.getBoundingClientRect();\n  const containerWindow = ownerWindow(node);\n  let transform;\n  if (node.fakeTransform) {\n    transform = node.fakeTransform;\n  } else {\n    const computedStyle = containerWindow.getComputedStyle(node);\n    transform = computedStyle.getPropertyValue('-webkit-transform') || computedStyle.getPropertyValue('transform');\n  }\n  let offsetX = 0;\n  let offsetY = 0;\n  if (transform && transform !== 'none' && typeof transform === 'string') {\n    const transformValues = transform.split('(')[1].split(')')[0].split(',');\n    offsetX = parseInt(transformValues[4], 10);\n    offsetY = parseInt(transformValues[5], 10);\n  }\n  if (direction === 'left') {\n    if (containerRect) {\n      return `translateX(${containerRect.right + offsetX - rect.left}px)`;\n    }\n    return `translateX(${containerWindow.innerWidth + offsetX - rect.left}px)`;\n  }\n  if (direction === 'right') {\n    if (containerRect) {\n      return `translateX(-${rect.right - containerRect.left - offsetX}px)`;\n    }\n    return `translateX(-${rect.left + rect.width - offsetX}px)`;\n  }\n  if (direction === 'up') {\n    if (containerRect) {\n      return `translateY(${containerRect.bottom + offsetY - rect.top}px)`;\n    }\n    return `translateY(${containerWindow.innerHeight + offsetY - rect.top}px)`;\n  }\n\n  // direction === 'down'\n  if (containerRect) {\n    return `translateY(-${rect.top - containerRect.top + rect.height - offsetY}px)`;\n  }\n  return `translateY(-${rect.top + rect.height - offsetY}px)`;\n}\nfunction resolveContainer(containerPropProp) {\n  return typeof containerPropProp === 'function' ? containerPropProp() : containerPropProp;\n}\nexport function setTranslateValue(direction, node, containerProp) {\n  const resolvedContainer = resolveContainer(containerProp);\n  const transform = getTranslateValue(direction, node, resolvedContainer);\n  if (transform) {\n    node.style.webkitTransform = transform;\n    node.style.transform = transform;\n  }\n}\n\n/**\n * The Slide transition is used by the [Drawer](/material-ui/react-drawer/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Slide = /*#__PURE__*/React.forwardRef(function Slide(props, ref) {\n  const theme = useTheme();\n  const defaultEasing = {\n    enter: theme.transitions.easing.easeOut,\n    exit: theme.transitions.easing.sharp\n  };\n  const defaultTimeout = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n      addEndListener,\n      appear = true,\n      children,\n      container: containerProp,\n      direction = 'down',\n      easing: easingProp = defaultEasing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      style,\n      timeout = defaultTimeout,\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = Transition\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const childrenRef = React.useRef(null);\n  const handleRef = useForkRef(getReactElementRef(children), childrenRef, ref);\n  const normalizedTransitionCallback = callback => isAppearing => {\n    if (callback) {\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (isAppearing === undefined) {\n        callback(childrenRef.current);\n      } else {\n        callback(childrenRef.current, isAppearing);\n      }\n    }\n  };\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    setTranslateValue(direction, node, containerProp);\n    reflow(node);\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n    const transitionProps = getTransitionProps({\n      timeout,\n      style,\n      easing: easingProp\n    }, {\n      mode: 'enter'\n    });\n    node.style.webkitTransition = theme.transitions.create('-webkit-transform', _extends({}, transitionProps));\n    node.style.transition = theme.transitions.create('transform', _extends({}, transitionProps));\n    node.style.webkitTransform = 'none';\n    node.style.transform = 'none';\n    if (onEntering) {\n      onEntering(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const transitionProps = getTransitionProps({\n      timeout,\n      style,\n      easing: easingProp\n    }, {\n      mode: 'exit'\n    });\n    node.style.webkitTransition = theme.transitions.create('-webkit-transform', transitionProps);\n    node.style.transition = theme.transitions.create('transform', transitionProps);\n    setTranslateValue(direction, node, containerProp);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(node => {\n    // No need for transitions when the component is hidden\n    node.style.webkitTransition = '';\n    node.style.transition = '';\n    if (onExited) {\n      onExited(node);\n    }\n  });\n  const handleAddEndListener = next => {\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(childrenRef.current, next);\n    }\n  };\n  const updatePosition = React.useCallback(() => {\n    if (childrenRef.current) {\n      setTranslateValue(direction, childrenRef.current, containerProp);\n    }\n  }, [direction, containerProp]);\n  React.useEffect(() => {\n    // Skip configuration where the position is screen size invariant.\n    if (inProp || direction === 'down' || direction === 'right') {\n      return undefined;\n    }\n    const handleResize = debounce(() => {\n      if (childrenRef.current) {\n        setTranslateValue(direction, childrenRef.current, containerProp);\n      }\n    });\n    const containerWindow = ownerWindow(childrenRef.current);\n    containerWindow.addEventListener('resize', handleResize);\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n    };\n  }, [direction, inProp, containerProp]);\n  React.useEffect(() => {\n    if (!inProp) {\n      // We need to update the position of the drawer when the direction change and\n      // when it's hidden.\n      updatePosition();\n    }\n  }, [inProp, updatePosition]);\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    nodeRef: childrenRef,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    appear: appear,\n    in: inProp,\n    timeout: timeout\n  }, other, {\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, _extends({\n        ref: handleRef,\n        style: _extends({\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n        }, style, children.props.style)\n      }, childProps));\n    }\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Slide.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * An HTML element, or a function that returns one.\n   * It's used to set the container the Slide is transitioning from.\n   */\n  container: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), props => {\n    if (props.open) {\n      const resolvedContainer = resolveContainer(props.container);\n      if (resolvedContainer && resolvedContainer.nodeType === 1) {\n        const box = resolvedContainer.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `container` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else if (!resolvedContainer || typeof resolvedContainer.getBoundingClientRect !== 'function' || resolvedContainer.contextElement != null && resolvedContainer.contextElement.nodeType !== 1) {\n        return new Error(['MUI: The `container` prop provided to the component is invalid.', 'It should be an HTML element instance.'].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * Direction the child node will enter from.\n   * @default 'down'\n   */\n  direction: PropTypes.oneOf(['down', 'left', 'right', 'up']),\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   * @default {\n   *   enter: theme.transitions.easing.easeOut,\n   *   exit: theme.transitions.easing.sharp,\n   * }\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Slide;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDrawerUtilityClass(slot) {\n  return generateUtilityClass('MuiDrawer', slot);\n}\nconst drawerClasses = generateUtilityClasses('MuiDrawer', ['root', 'docked', 'paper', 'paperAnchorLeft', 'paperAnchorRight', 'paperAnchorTop', 'paperAnchorBottom', 'paperAnchorDockedLeft', 'paperAnchorDockedRight', 'paperAnchorDockedTop', 'paperAnchorDockedBottom', 'modal']);\nexport default drawerClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"BackdropProps\"],\n  _excluded2 = [\"anchor\", \"BackdropProps\", \"children\", \"className\", \"elevation\", \"hideBackdrop\", \"ModalProps\", \"onClose\", \"open\", \"PaperProps\", \"SlideProps\", \"TransitionComponent\", \"transitionDuration\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport Modal from '../Modal';\nimport Slide from '../Slide';\nimport Paper from '../Paper';\nimport capitalize from '../utils/capitalize';\nimport useTheme from '../styles/useTheme';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getDrawerUtilityClass } from './drawerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, (ownerState.variant === 'permanent' || ownerState.variant === 'persistent') && styles.docked, styles.modal];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    anchor,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    docked: [(variant === 'permanent' || variant === 'persistent') && 'docked'],\n    modal: ['modal'],\n    paper: ['paper', `paperAnchor${capitalize(anchor)}`, variant !== 'temporary' && `paperAnchorDocked${capitalize(anchor)}`]\n  };\n  return composeClasses(slots, getDrawerUtilityClass, classes);\n};\nconst DrawerRoot = styled(Modal, {\n  name: 'MuiDrawer',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme\n}) => ({\n  zIndex: (theme.vars || theme).zIndex.drawer\n}));\nconst DrawerDockedRoot = styled('div', {\n  shouldForwardProp: rootShouldForwardProp,\n  name: 'MuiDrawer',\n  slot: 'Docked',\n  skipVariantsResolver: false,\n  overridesResolver\n})({\n  flex: '0 0 auto'\n});\nconst DrawerPaper = styled(Paper, {\n  name: 'MuiDrawer',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.paper, styles[`paperAnchor${capitalize(ownerState.anchor)}`], ownerState.variant !== 'temporary' && styles[`paperAnchorDocked${capitalize(ownerState.anchor)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  overflowY: 'auto',\n  display: 'flex',\n  flexDirection: 'column',\n  height: '100%',\n  flex: '1 0 auto',\n  zIndex: (theme.vars || theme).zIndex.drawer,\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch',\n  // temporary style\n  position: 'fixed',\n  top: 0,\n  // We disable the focus ring for mouse, touch and keyboard users.\n  // At some point, it would be better to keep it for keyboard users.\n  // :focus-ring CSS pseudo-class will help.\n  outline: 0\n}, ownerState.anchor === 'left' && {\n  left: 0\n}, ownerState.anchor === 'top' && {\n  top: 0,\n  left: 0,\n  right: 0,\n  height: 'auto',\n  maxHeight: '100%'\n}, ownerState.anchor === 'right' && {\n  right: 0\n}, ownerState.anchor === 'bottom' && {\n  top: 'auto',\n  left: 0,\n  bottom: 0,\n  right: 0,\n  height: 'auto',\n  maxHeight: '100%'\n}, ownerState.anchor === 'left' && ownerState.variant !== 'temporary' && {\n  borderRight: `1px solid ${(theme.vars || theme).palette.divider}`\n}, ownerState.anchor === 'top' && ownerState.variant !== 'temporary' && {\n  borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n}, ownerState.anchor === 'right' && ownerState.variant !== 'temporary' && {\n  borderLeft: `1px solid ${(theme.vars || theme).palette.divider}`\n}, ownerState.anchor === 'bottom' && ownerState.variant !== 'temporary' && {\n  borderTop: `1px solid ${(theme.vars || theme).palette.divider}`\n}));\nconst oppositeDirection = {\n  left: 'right',\n  right: 'left',\n  top: 'down',\n  bottom: 'up'\n};\nexport function isHorizontal(anchor) {\n  return ['left', 'right'].indexOf(anchor) !== -1;\n}\nexport function getAnchor({\n  direction\n}, anchor) {\n  return direction === 'rtl' && isHorizontal(anchor) ? oppositeDirection[anchor] : anchor;\n}\n\n/**\n * The props of the [Modal](/material-ui/api/modal/) component are available\n * when `variant=\"temporary\"` is set.\n */\nconst Drawer = /*#__PURE__*/React.forwardRef(function Drawer(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiDrawer'\n  });\n  const theme = useTheme();\n  const isRtl = useRtl();\n  const defaultTransitionDuration = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n      anchor: anchorProp = 'left',\n      BackdropProps,\n      children,\n      className,\n      elevation = 16,\n      hideBackdrop = false,\n      ModalProps: {\n        BackdropProps: BackdropPropsProp\n      } = {},\n      onClose,\n      open = false,\n      PaperProps = {},\n      SlideProps,\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = Slide,\n      transitionDuration = defaultTransitionDuration,\n      variant = 'temporary'\n    } = props,\n    ModalProps = _objectWithoutPropertiesLoose(props.ModalProps, _excluded),\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n\n  // Let's assume that the Drawer will always be rendered on user space.\n  // We use this state is order to skip the appear transition during the\n  // initial mount of the component.\n  const mounted = React.useRef(false);\n  React.useEffect(() => {\n    mounted.current = true;\n  }, []);\n  const anchorInvariant = getAnchor({\n    direction: isRtl ? 'rtl' : 'ltr'\n  }, anchorProp);\n  const anchor = anchorProp;\n  const ownerState = _extends({}, props, {\n    anchor,\n    elevation,\n    open,\n    variant\n  }, other);\n  const classes = useUtilityClasses(ownerState);\n  const drawer = /*#__PURE__*/_jsx(DrawerPaper, _extends({\n    elevation: variant === 'temporary' ? elevation : 0,\n    square: true\n  }, PaperProps, {\n    className: clsx(classes.paper, PaperProps.className),\n    ownerState: ownerState,\n    children: children\n  }));\n  if (variant === 'permanent') {\n    return /*#__PURE__*/_jsx(DrawerDockedRoot, _extends({\n      className: clsx(classes.root, classes.docked, className),\n      ownerState: ownerState,\n      ref: ref\n    }, other, {\n      children: drawer\n    }));\n  }\n  const slidingDrawer = /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    in: open,\n    direction: oppositeDirection[anchorInvariant],\n    timeout: transitionDuration,\n    appear: mounted.current\n  }, SlideProps, {\n    children: drawer\n  }));\n  if (variant === 'persistent') {\n    return /*#__PURE__*/_jsx(DrawerDockedRoot, _extends({\n      className: clsx(classes.root, classes.docked, className),\n      ownerState: ownerState,\n      ref: ref\n    }, other, {\n      children: slidingDrawer\n    }));\n  }\n\n  // variant === temporary\n  return /*#__PURE__*/_jsx(DrawerRoot, _extends({\n    BackdropProps: _extends({}, BackdropProps, BackdropPropsProp, {\n      transitionDuration\n    }),\n    className: clsx(classes.root, classes.modal, className),\n    open: open,\n    ownerState: ownerState,\n    onClose: onClose,\n    hideBackdrop: hideBackdrop,\n    ref: ref\n  }, other, ModalProps, {\n    children: slidingDrawer\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Drawer.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Side from which the drawer will appear.\n   * @default 'left'\n   */\n  anchor: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),\n  /**\n   * @ignore\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The elevation of the drawer.\n   * @default 16\n   */\n  elevation: integerPropType,\n  /**\n   * If `true`, the backdrop is not rendered.\n   * @default false\n   */\n  hideBackdrop: PropTypes.bool,\n  /**\n   * Props applied to the [`Modal`](/material-ui/api/modal/) element.\n   * @default {}\n   */\n  ModalProps: PropTypes.object,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   * @default false\n   */\n  open: PropTypes.bool,\n  /**\n   * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n   * @default {}\n   */\n  PaperProps: PropTypes.object,\n  /**\n   * Props applied to the [`Slide`](/material-ui/api/slide/) element.\n   */\n  SlideProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * The variant to use.\n   * @default 'temporary'\n   */\n  variant: PropTypes.oneOf(['permanent', 'persistent', 'temporary'])\n} : void 0;\nexport default Drawer;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"hiddenLabel\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport deepmerge from '@mui/utils/deepmerge';\nimport refType from '@mui/utils/refType';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport filledInputClasses, { getFilledInputUtilityClass } from './filledInputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getFilledInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst FilledInputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiFilledInput',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _palette;\n  const light = theme.palette.mode === 'light';\n  const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';\n  const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';\n  const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';\n  return _extends({\n    position: 'relative',\n    backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,\n    borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n    borderTopRightRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create('background-color', {\n      duration: theme.transitions.duration.shorter,\n      easing: theme.transitions.easing.easeOut\n    }),\n    '&:hover': {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n      }\n    },\n    [`&.${filledInputClasses.focused}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n    },\n    [`&.${filledInputClasses.disabled}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground\n    }\n  }, !ownerState.disableUnderline && {\n    '&::after': {\n      borderBottom: `2px solid ${(_palette = (theme.vars || theme).palette[ownerState.color || 'primary']) == null ? void 0 : _palette.main}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\"',\n      position: 'absolute',\n      right: 0,\n      transform: 'scaleX(0)',\n      transition: theme.transitions.create('transform', {\n        duration: theme.transitions.duration.shorter,\n        easing: theme.transitions.easing.easeOut\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n    [`&.${filledInputClasses.focused}:after`]: {\n      // translateX(0) is a workaround for Safari transform scale bug\n      // See https://github.com/mui/material-ui/issues/31766\n      transform: 'scaleX(1) translateX(0)'\n    },\n    [`&.${filledInputClasses.error}`]: {\n      '&::before, &::after': {\n        borderBottomColor: (theme.vars || theme).palette.error.main\n      }\n    },\n    '&::before': {\n      borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\\\\00a0\"',\n      position: 'absolute',\n      right: 0,\n      transition: theme.transitions.create('border-bottom-color', {\n        duration: theme.transitions.duration.shorter\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n    [`&:hover:not(.${filledInputClasses.disabled}, .${filledInputClasses.error}):before`]: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`\n    },\n    [`&.${filledInputClasses.disabled}:before`]: {\n      borderBottomStyle: 'dotted'\n    }\n  }, ownerState.startAdornment && {\n    paddingLeft: 12\n  }, ownerState.endAdornment && {\n    paddingRight: 12\n  }, ownerState.multiline && _extends({\n    padding: '25px 12px 8px'\n  }, ownerState.size === 'small' && {\n    paddingTop: 21,\n    paddingBottom: 4\n  }, ownerState.hiddenLabel && {\n    paddingTop: 16,\n    paddingBottom: 17\n  }, ownerState.hiddenLabel && ownerState.size === 'small' && {\n    paddingTop: 8,\n    paddingBottom: 9\n  }));\n});\nconst FilledInputInput = styled(InputBaseInput, {\n  name: 'MuiFilledInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  paddingTop: 25,\n  paddingRight: 12,\n  paddingBottom: 8,\n  paddingLeft: 12\n}, !theme.vars && {\n  '&:-webkit-autofill': {\n    WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n    WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n    caretColor: theme.palette.mode === 'light' ? null : '#fff',\n    borderTopLeftRadius: 'inherit',\n    borderTopRightRadius: 'inherit'\n  }\n}, theme.vars && {\n  '&:-webkit-autofill': {\n    borderTopLeftRadius: 'inherit',\n    borderTopRightRadius: 'inherit'\n  },\n  [theme.getColorSchemeSelector('dark')]: {\n    '&:-webkit-autofill': {\n      WebkitBoxShadow: '0 0 0 100px #266798 inset',\n      WebkitTextFillColor: '#fff',\n      caretColor: '#fff'\n    }\n  }\n}, ownerState.size === 'small' && {\n  paddingTop: 21,\n  paddingBottom: 4\n}, ownerState.hiddenLabel && {\n  paddingTop: 16,\n  paddingBottom: 17\n}, ownerState.startAdornment && {\n  paddingLeft: 0\n}, ownerState.endAdornment && {\n  paddingRight: 0\n}, ownerState.hiddenLabel && ownerState.size === 'small' && {\n  paddingTop: 8,\n  paddingBottom: 9\n}, ownerState.multiline && {\n  paddingTop: 0,\n  paddingBottom: 0,\n  paddingLeft: 0,\n  paddingRight: 0\n}));\nconst FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFilledInput'\n  });\n  const {\n      components = {},\n      componentsProps: componentsPropsProp,\n      fullWidth = false,\n      // declare here to prevent spreading to DOM\n      inputComponent = 'input',\n      multiline = false,\n      slotProps,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    fullWidth,\n    inputComponent,\n    multiline,\n    type\n  });\n  const classes = useUtilityClasses(props);\n  const filledInputComponentsProps = {\n    root: {\n      ownerState\n    },\n    input: {\n      ownerState\n    }\n  };\n  const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(filledInputComponentsProps, slotProps != null ? slotProps : componentsPropsProp) : filledInputComponentsProps;\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : FilledInputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : FilledInputInput;\n  return /*#__PURE__*/_jsx(InputBase, _extends({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    componentsProps: componentsProps,\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FilledInput.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the input will not have an underline.\n   */\n  disableUnderline: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nFilledInput.muiName = 'Input';\nexport default FilledInput;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormControlUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlClasses = generateUtilityClasses('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\nexport default formControlClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"focused\", \"fullWidth\", \"hiddenLabel\", \"margin\", \"required\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport { isFilled, isAdornedStart } from '../InputBase/utils';\nimport capitalize from '../utils/capitalize';\nimport isMuiElement from '../utils/isMuiElement';\nimport FormControlContext from './FormControlContext';\nimport { getFormControlUtilityClasses } from './formControlClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    margin,\n    fullWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', margin !== 'none' && `margin${capitalize(margin)}`, fullWidth && 'fullWidth']\n  };\n  return composeClasses(slots, getFormControlUtilityClasses, classes);\n};\nconst FormControlRoot = styled('div', {\n  name: 'MuiFormControl',\n  slot: 'Root',\n  overridesResolver: ({\n    ownerState\n  }, styles) => {\n    return _extends({}, styles.root, styles[`margin${capitalize(ownerState.margin)}`], ownerState.fullWidth && styles.fullWidth);\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'inline-flex',\n  flexDirection: 'column',\n  position: 'relative',\n  // Reset fieldset default style.\n  minWidth: 0,\n  padding: 0,\n  margin: 0,\n  border: 0,\n  verticalAlign: 'top'\n}, ownerState.margin === 'normal' && {\n  marginTop: 16,\n  marginBottom: 8\n}, ownerState.margin === 'dense' && {\n  marginTop: 8,\n  marginBottom: 4\n}, ownerState.fullWidth && {\n  width: '100%'\n}));\n\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n *  - FormLabel\n *  - FormHelperText\n *  - Input\n *  - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/material-ui/react-text-field/#components).\n *\n * ```jsx\n * <FormControl>\n *   <InputLabel htmlFor=\"my-input\">Email address</InputLabel>\n *   <Input id=\"my-input\" aria-describedby=\"my-helper-text\" />\n *   <FormHelperText id=\"my-helper-text\">We'll never share your email.</FormHelperText>\n * </FormControl>\n * ```\n *\n * ⚠️ Only one `InputBase` can be used within a FormControl because it creates visual inconsistencies.\n * For instance, only one input can be focused at the same time, the state shouldn't be shared.\n */\nconst FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFormControl'\n  });\n  const {\n      children,\n      className,\n      color = 'primary',\n      component = 'div',\n      disabled = false,\n      error = false,\n      focused: visuallyFocused,\n      fullWidth = false,\n      hiddenLabel = false,\n      margin = 'none',\n      required = false,\n      size = 'medium',\n      variant = 'outlined'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    disabled,\n    error,\n    fullWidth,\n    hiddenLabel,\n    margin,\n    required,\n    size,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const [adornedStart, setAdornedStart] = React.useState(() => {\n    // We need to iterate through the children and find the Input in order\n    // to fully support server-side rendering.\n    let initialAdornedStart = false;\n    if (children) {\n      React.Children.forEach(children, child => {\n        if (!isMuiElement(child, ['Input', 'Select'])) {\n          return;\n        }\n        const input = isMuiElement(child, ['Select']) ? child.props.input : child;\n        if (input && isAdornedStart(input.props)) {\n          initialAdornedStart = true;\n        }\n      });\n    }\n    return initialAdornedStart;\n  });\n  const [filled, setFilled] = React.useState(() => {\n    // We need to iterate through the children and find the Input in order\n    // to fully support server-side rendering.\n    let initialFilled = false;\n    if (children) {\n      React.Children.forEach(children, child => {\n        if (!isMuiElement(child, ['Input', 'Select'])) {\n          return;\n        }\n        if (isFilled(child.props, true) || isFilled(child.props.inputProps, true)) {\n          initialFilled = true;\n        }\n      });\n    }\n    return initialFilled;\n  });\n  const [focusedState, setFocused] = React.useState(false);\n  if (disabled && focusedState) {\n    setFocused(false);\n  }\n  const focused = visuallyFocused !== undefined && !disabled ? visuallyFocused : focusedState;\n  let registerEffect;\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const registeredInput = React.useRef(false);\n    registerEffect = () => {\n      if (registeredInput.current) {\n        console.error(['MUI: There are multiple `InputBase` components inside a FormControl.', 'This creates visual inconsistencies, only use one `InputBase`.'].join('\\n'));\n      }\n      registeredInput.current = true;\n      return () => {\n        registeredInput.current = false;\n      };\n    };\n  }\n  const childContext = React.useMemo(() => {\n    return {\n      adornedStart,\n      setAdornedStart,\n      color,\n      disabled,\n      error,\n      filled,\n      focused,\n      fullWidth,\n      hiddenLabel,\n      size,\n      onBlur: () => {\n        setFocused(false);\n      },\n      onEmpty: () => {\n        setFilled(false);\n      },\n      onFilled: () => {\n        setFilled(true);\n      },\n      onFocus: () => {\n        setFocused(true);\n      },\n      registerEffect,\n      required,\n      variant\n    };\n  }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size, variant]);\n  return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsx(FormControlRoot, _extends({\n      as: component,\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      ref: ref\n    }, other, {\n      children: children\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the label, input and helper text should be displayed in a disabled state.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the component is displayed in focused state.\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `true`, the component will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default FormControl;","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nconst Stack = createStack({\n  createStyledComponent: styled('div', {\n    name: 'MuiStack',\n    slot: 'Root',\n    overridesResolver: (props, styles) => styles.root\n  }),\n  useThemeProps: inProps => useDefaultProps({\n    props: inProps,\n    name: 'MuiStack'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Defines the `flex-direction` style property.\n   * It is applied for all screen sizes.\n   * @default 'column'\n   */\n  direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n  /**\n   * Add an element between each child.\n   */\n  divider: PropTypes.node,\n  /**\n   * Defines the space between immediate children.\n   * @default 0\n   */\n  spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The system prop, which allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n   *\n   * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n   * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n   *\n   * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n   * @default false\n   */\n  useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormControlLabelUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormControlLabel', slot);\n}\nconst formControlLabelClasses = generateUtilityClasses('MuiFormControlLabel', ['root', 'labelPlacementStart', 'labelPlacementTop', 'labelPlacementBottom', 'disabled', 'label', 'error', 'required', 'asterisk']);\nexport default formControlLabelClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checked\", \"className\", \"componentsProps\", \"control\", \"disabled\", \"disableTypography\", \"inputRef\", \"label\", \"labelPlacement\", \"name\", \"onChange\", \"required\", \"slotProps\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useFormControl } from '../FormControl';\nimport Stack from '../Stack';\nimport Typography from '../Typography';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport formControlLabelClasses, { getFormControlLabelUtilityClasses } from './formControlLabelClasses';\nimport formControlState from '../FormControl/formControlState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    labelPlacement,\n    error,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', `labelPlacement${capitalize(labelPlacement)}`, error && 'error', required && 'required'],\n    label: ['label', disabled && 'disabled'],\n    asterisk: ['asterisk', error && 'error']\n  };\n  return composeClasses(slots, getFormControlLabelUtilityClasses, classes);\n};\nexport const FormControlLabelRoot = styled('label', {\n  name: 'MuiFormControlLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${formControlLabelClasses.label}`]: styles.label\n    }, styles.root, styles[`labelPlacement${capitalize(ownerState.labelPlacement)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  display: 'inline-flex',\n  alignItems: 'center',\n  cursor: 'pointer',\n  // For correct alignment with the text.\n  verticalAlign: 'middle',\n  WebkitTapHighlightColor: 'transparent',\n  marginLeft: -11,\n  marginRight: 16,\n  // used for row presentation of radio/checkbox\n  [`&.${formControlLabelClasses.disabled}`]: {\n    cursor: 'default'\n  }\n}, ownerState.labelPlacement === 'start' && {\n  flexDirection: 'row-reverse',\n  marginLeft: 16,\n  // used for row presentation of radio/checkbox\n  marginRight: -11\n}, ownerState.labelPlacement === 'top' && {\n  flexDirection: 'column-reverse',\n  marginLeft: 16\n}, ownerState.labelPlacement === 'bottom' && {\n  flexDirection: 'column',\n  marginLeft: 16\n}, {\n  [`& .${formControlLabelClasses.label}`]: {\n    [`&.${formControlLabelClasses.disabled}`]: {\n      color: (theme.vars || theme).palette.text.disabled\n    }\n  }\n}));\nconst AsteriskComponent = styled('span', {\n  name: 'MuiFormControlLabel',\n  slot: 'Asterisk',\n  overridesResolver: (props, styles) => styles.asterisk\n})(({\n  theme\n}) => ({\n  [`&.${formControlLabelClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n}));\n\n/**\n * Drop-in replacement of the `Radio`, `Switch` and `Checkbox` component.\n * Use this component if you want to display an extra label.\n */\nconst FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel(inProps, ref) {\n  var _ref, _slotProps$typography;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFormControlLabel'\n  });\n  const {\n      className,\n      componentsProps = {},\n      control,\n      disabled: disabledProp,\n      disableTypography,\n      label: labelProp,\n      labelPlacement = 'end',\n      required: requiredProp,\n      slotProps = {}\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const muiFormControl = useFormControl();\n  const disabled = (_ref = disabledProp != null ? disabledProp : control.props.disabled) != null ? _ref : muiFormControl == null ? void 0 : muiFormControl.disabled;\n  const required = requiredProp != null ? requiredProp : control.props.required;\n  const controlProps = {\n    disabled,\n    required\n  };\n  ['checked', 'name', 'onChange', 'value', 'inputRef'].forEach(key => {\n    if (typeof control.props[key] === 'undefined' && typeof props[key] !== 'undefined') {\n      controlProps[key] = props[key];\n    }\n  });\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['error']\n  });\n  const ownerState = _extends({}, props, {\n    disabled,\n    labelPlacement,\n    required,\n    error: fcs.error\n  });\n  const classes = useUtilityClasses(ownerState);\n  const typographySlotProps = (_slotProps$typography = slotProps.typography) != null ? _slotProps$typography : componentsProps.typography;\n  let label = labelProp;\n  if (label != null && label.type !== Typography && !disableTypography) {\n    label = /*#__PURE__*/_jsx(Typography, _extends({\n      component: \"span\"\n    }, typographySlotProps, {\n      className: clsx(classes.label, typographySlotProps == null ? void 0 : typographySlotProps.className),\n      children: label\n    }));\n  }\n  return /*#__PURE__*/_jsxs(FormControlLabelRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: [/*#__PURE__*/React.cloneElement(control, controlProps), required ? /*#__PURE__*/_jsxs(Stack, {\n      display: \"block\",\n      children: [label, /*#__PURE__*/_jsxs(AsteriskComponent, {\n        ownerState: ownerState,\n        \"aria-hidden\": true,\n        className: classes.asterisk,\n        children: [\"\\u2009\", '*']\n      })]\n    }) : label]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControlLabel.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component appears selected.\n   */\n  checked: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    typography: PropTypes.object\n  }),\n  /**\n   * A control element. For instance, it can be a `Radio`, a `Switch` or a `Checkbox`.\n   */\n  control: PropTypes.element.isRequired,\n  /**\n   * If `true`, the control is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is rendered as it is passed without an additional typography node.\n   */\n  disableTypography: PropTypes.bool,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * A text or an element to be used in an enclosing label element.\n   */\n  label: PropTypes.node,\n  /**\n   * The position of the label.\n   * @default 'end'\n   */\n  labelPlacement: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n  /**\n   * @ignore\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    typography: PropTypes.object\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default FormControlLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormHelperTextUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormHelperText', slot);\n}\nconst formHelperTextClasses = generateUtilityClasses('MuiFormHelperText', ['root', 'error', 'disabled', 'sizeSmall', 'sizeMedium', 'contained', 'focused', 'filled', 'required']);\nexport default formHelperTextClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"margin\", \"required\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport capitalize from '../utils/capitalize';\nimport formHelperTextClasses, { getFormHelperTextUtilityClasses } from './formHelperTextClasses';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    contained,\n    size,\n    disabled,\n    error,\n    filled,\n    focused,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', error && 'error', size && `size${capitalize(size)}`, contained && 'contained', focused && 'focused', filled && 'filled', required && 'required']\n  };\n  return composeClasses(slots, getFormHelperTextUtilityClasses, classes);\n};\nconst FormHelperTextRoot = styled('p', {\n  name: 'MuiFormHelperText',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size && styles[`size${capitalize(ownerState.size)}`], ownerState.contained && styles.contained, ownerState.filled && styles.filled];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.caption, {\n  textAlign: 'left',\n  marginTop: 3,\n  marginRight: 0,\n  marginBottom: 0,\n  marginLeft: 0,\n  [`&.${formHelperTextClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  },\n  [`&.${formHelperTextClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n}, ownerState.size === 'small' && {\n  marginTop: 4\n}, ownerState.contained && {\n  marginLeft: 14,\n  marginRight: 14\n}));\nconst FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFormHelperText'\n  });\n  const {\n      children,\n      className,\n      component = 'p'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['variant', 'size', 'disabled', 'error', 'filled', 'focused', 'required']\n  });\n  const ownerState = _extends({}, props, {\n    component,\n    contained: fcs.variant === 'filled' || fcs.variant === 'outlined',\n    variant: fcs.variant,\n    size: fcs.size,\n    disabled: fcs.disabled,\n    error: fcs.error,\n    filled: fcs.filled,\n    focused: fcs.focused,\n    required: fcs.required\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FormHelperTextRoot, _extends({\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other, {\n    children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue\n    _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n      className: \"notranslate\",\n      children: \"\\u200B\"\n    })) : children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormHelperText.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   *\n   * If `' '` is provided, the component reserves one line height for displaying a future message.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the helper text should be displayed in a disabled state.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, helper text should be displayed in an error state.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the helper text should use filled classes key.\n   */\n  filled: PropTypes.bool,\n  /**\n   * If `true`, the helper text should use focused classes key.\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: PropTypes.oneOf(['dense']),\n  /**\n   * If `true`, the helper text should use required classes key.\n   */\n  required: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default FormHelperText;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    focused,\n    disabled,\n    error,\n    filled,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n    asterisk: ['asterisk', error && 'error']\n  };\n  return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n  name: 'MuiFormLabel',\n  slot: 'Root',\n  overridesResolver: ({\n    ownerState\n  }, styles) => {\n    return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n  lineHeight: '1.4375em',\n  padding: 0,\n  position: 'relative',\n  [`&.${formLabelClasses.focused}`]: {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  },\n  [`&.${formLabelClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  },\n  [`&.${formLabelClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n}));\nconst AsteriskComponent = styled('span', {\n  name: 'MuiFormLabel',\n  slot: 'Asterisk',\n  overridesResolver: (props, styles) => styles.asterisk\n})(({\n  theme\n}) => ({\n  [`&.${formLabelClasses.error}`]: {\n    color: (theme.vars || theme).palette.error.main\n  }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiFormLabel'\n  });\n  const {\n      children,\n      className,\n      component = 'label'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n  });\n  const ownerState = _extends({}, props, {\n    color: fcs.color || 'primary',\n    component,\n    disabled: fcs.disabled,\n    error: fcs.error,\n    filled: fcs.filled,\n    focused: fcs.focused,\n    required: fcs.required\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other, {\n    children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n      ownerState: ownerState,\n      \"aria-hidden\": true,\n      className: classes.asterisk,\n      children: [\"\\u2009\", '*']\n    })]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the label should be displayed in a disabled state.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the label should use filled classes key.\n   */\n  filled: PropTypes.bool,\n  /**\n   * If `true`, the input of this label is focused (used by `FormGroup` components).\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst GridContext = /*#__PURE__*/React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n  GridContext.displayName = 'GridContext';\n}\nexport default GridContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getGridUtilityClass(slot) {\n  return generateUtilityClass('MuiGrid', slot);\n}\nconst SPACINGS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nconst DIRECTIONS = ['column-reverse', 'column', 'row-reverse', 'row'];\nconst WRAPS = ['nowrap', 'wrap-reverse', 'wrap'];\nconst GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\nconst gridClasses = generateUtilityClasses('MuiGrid', ['root', 'container', 'item', 'zeroMinWidth',\n// spacings\n...SPACINGS.map(spacing => `spacing-xs-${spacing}`),\n// direction values\n...DIRECTIONS.map(direction => `direction-xs-${direction}`),\n// wrap values\n...WRAPS.map(wrap => `wrap-xs-${wrap}`),\n// grid sizes for all breakpoints\n...GRID_SIZES.map(size => `grid-xs-${size}`), ...GRID_SIZES.map(size => `grid-sm-${size}`), ...GRID_SIZES.map(size => `grid-md-${size}`), ...GRID_SIZES.map(size => `grid-lg-${size}`), ...GRID_SIZES.map(size => `grid-xl-${size}`)]);\nexport default gridClasses;","'use client';\n\n// A grid component using the following libs as inspiration.\n//\n// For the implementation:\n// - https://getbootstrap.com/docs/4.3/layout/grid/\n// - https://github.com/kristoferjoseph/flexboxgrid/blob/master/src/css/flexboxgrid.css\n// - https://github.com/roylee0704/react-flexbox-grid\n// - https://material.angularjs.org/latest/layout/introduction\n//\n// Follow this flexbox Guide to better understand the underlying model:\n// - https://css-tricks.com/snippets/css/a-guide-to-flexbox/\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"columns\", \"columnSpacing\", \"component\", \"container\", \"direction\", \"item\", \"rowSpacing\", \"spacing\", \"wrap\", \"zeroMinWidth\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { handleBreakpoints, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';\nimport { extendSxProp } from '@mui/system/styleFunctionSx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport requirePropFactory from '../utils/requirePropFactory';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport useTheme from '../styles/useTheme';\nimport GridContext from './GridContext';\nimport gridClasses, { getGridUtilityClass } from './gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getOffset(val) {\n  const parse = parseFloat(val);\n  return `${parse}${String(val).replace(String(parse), '') || 'px'}`;\n}\nexport function generateGrid({\n  theme,\n  ownerState\n}) {\n  let size;\n  return theme.breakpoints.keys.reduce((globalStyles, breakpoint) => {\n    // Use side effect over immutability for better performance.\n    let styles = {};\n    if (ownerState[breakpoint]) {\n      size = ownerState[breakpoint];\n    }\n    if (!size) {\n      return globalStyles;\n    }\n    if (size === true) {\n      // For the auto layouting\n      styles = {\n        flexBasis: 0,\n        flexGrow: 1,\n        maxWidth: '100%'\n      };\n    } else if (size === 'auto') {\n      styles = {\n        flexBasis: 'auto',\n        flexGrow: 0,\n        flexShrink: 0,\n        maxWidth: 'none',\n        width: 'auto'\n      };\n    } else {\n      const columnsBreakpointValues = resolveBreakpointValues({\n        values: ownerState.columns,\n        breakpoints: theme.breakpoints.values\n      });\n      const columnValue = typeof columnsBreakpointValues === 'object' ? columnsBreakpointValues[breakpoint] : columnsBreakpointValues;\n      if (columnValue === undefined || columnValue === null) {\n        return globalStyles;\n      }\n      // Keep 7 significant numbers.\n      const width = `${Math.round(size / columnValue * 10e7) / 10e5}%`;\n      let more = {};\n      if (ownerState.container && ownerState.item && ownerState.columnSpacing !== 0) {\n        const themeSpacing = theme.spacing(ownerState.columnSpacing);\n        if (themeSpacing !== '0px') {\n          const fullWidth = `calc(${width} + ${getOffset(themeSpacing)})`;\n          more = {\n            flexBasis: fullWidth,\n            maxWidth: fullWidth\n          };\n        }\n      }\n\n      // Close to the bootstrap implementation:\n      // https://github.com/twbs/bootstrap/blob/8fccaa2439e97ec72a4b7dc42ccc1f649790adb0/scss/mixins/_grid.scss#L41\n      styles = _extends({\n        flexBasis: width,\n        flexGrow: 0,\n        maxWidth: width\n      }, more);\n    }\n\n    // No need for a media query for the first size.\n    if (theme.breakpoints.values[breakpoint] === 0) {\n      Object.assign(globalStyles, styles);\n    } else {\n      globalStyles[theme.breakpoints.up(breakpoint)] = styles;\n    }\n    return globalStyles;\n  }, {});\n}\nexport function generateDirection({\n  theme,\n  ownerState\n}) {\n  const directionValues = resolveBreakpointValues({\n    values: ownerState.direction,\n    breakpoints: theme.breakpoints.values\n  });\n  return handleBreakpoints({\n    theme\n  }, directionValues, propValue => {\n    const output = {\n      flexDirection: propValue\n    };\n    if (propValue.indexOf('column') === 0) {\n      output[`& > .${gridClasses.item}`] = {\n        maxWidth: 'none'\n      };\n    }\n    return output;\n  });\n}\n\n/**\n * Extracts zero value breakpoint keys before a non-zero value breakpoint key.\n * @example { xs: 0, sm: 0, md: 2, lg: 0, xl: 0 } or [0, 0, 2, 0, 0]\n * @returns [xs, sm]\n */\nfunction extractZeroValueBreakpointKeys({\n  breakpoints,\n  values\n}) {\n  let nonZeroKey = '';\n  Object.keys(values).forEach(key => {\n    if (nonZeroKey !== '') {\n      return;\n    }\n    if (values[key] !== 0) {\n      nonZeroKey = key;\n    }\n  });\n  const sortedBreakpointKeysByValue = Object.keys(breakpoints).sort((a, b) => {\n    return breakpoints[a] - breakpoints[b];\n  });\n  return sortedBreakpointKeysByValue.slice(0, sortedBreakpointKeysByValue.indexOf(nonZeroKey));\n}\nexport function generateRowGap({\n  theme,\n  ownerState\n}) {\n  const {\n    container,\n    rowSpacing\n  } = ownerState;\n  let styles = {};\n  if (container && rowSpacing !== 0) {\n    const rowSpacingValues = resolveBreakpointValues({\n      values: rowSpacing,\n      breakpoints: theme.breakpoints.values\n    });\n    let zeroValueBreakpointKeys;\n    if (typeof rowSpacingValues === 'object') {\n      zeroValueBreakpointKeys = extractZeroValueBreakpointKeys({\n        breakpoints: theme.breakpoints.values,\n        values: rowSpacingValues\n      });\n    }\n    styles = handleBreakpoints({\n      theme\n    }, rowSpacingValues, (propValue, breakpoint) => {\n      var _zeroValueBreakpointK;\n      const themeSpacing = theme.spacing(propValue);\n      if (themeSpacing !== '0px') {\n        return {\n          marginTop: `-${getOffset(themeSpacing)}`,\n          [`& > .${gridClasses.item}`]: {\n            paddingTop: getOffset(themeSpacing)\n          }\n        };\n      }\n      if ((_zeroValueBreakpointK = zeroValueBreakpointKeys) != null && _zeroValueBreakpointK.includes(breakpoint)) {\n        return {};\n      }\n      return {\n        marginTop: 0,\n        [`& > .${gridClasses.item}`]: {\n          paddingTop: 0\n        }\n      };\n    });\n  }\n  return styles;\n}\nexport function generateColumnGap({\n  theme,\n  ownerState\n}) {\n  const {\n    container,\n    columnSpacing\n  } = ownerState;\n  let styles = {};\n  if (container && columnSpacing !== 0) {\n    const columnSpacingValues = resolveBreakpointValues({\n      values: columnSpacing,\n      breakpoints: theme.breakpoints.values\n    });\n    let zeroValueBreakpointKeys;\n    if (typeof columnSpacingValues === 'object') {\n      zeroValueBreakpointKeys = extractZeroValueBreakpointKeys({\n        breakpoints: theme.breakpoints.values,\n        values: columnSpacingValues\n      });\n    }\n    styles = handleBreakpoints({\n      theme\n    }, columnSpacingValues, (propValue, breakpoint) => {\n      var _zeroValueBreakpointK2;\n      const themeSpacing = theme.spacing(propValue);\n      if (themeSpacing !== '0px') {\n        return {\n          width: `calc(100% + ${getOffset(themeSpacing)})`,\n          marginLeft: `-${getOffset(themeSpacing)}`,\n          [`& > .${gridClasses.item}`]: {\n            paddingLeft: getOffset(themeSpacing)\n          }\n        };\n      }\n      if ((_zeroValueBreakpointK2 = zeroValueBreakpointKeys) != null && _zeroValueBreakpointK2.includes(breakpoint)) {\n        return {};\n      }\n      return {\n        width: '100%',\n        marginLeft: 0,\n        [`& > .${gridClasses.item}`]: {\n          paddingLeft: 0\n        }\n      };\n    });\n  }\n  return styles;\n}\nexport function resolveSpacingStyles(spacing, breakpoints, styles = {}) {\n  // undefined/null or `spacing` <= 0\n  if (!spacing || spacing <= 0) {\n    return [];\n  }\n  // in case of string/number `spacing`\n  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {\n    return [styles[`spacing-xs-${String(spacing)}`]];\n  }\n  // in case of object `spacing`\n  const spacingStyles = [];\n  breakpoints.forEach(breakpoint => {\n    const value = spacing[breakpoint];\n    if (Number(value) > 0) {\n      spacingStyles.push(styles[`spacing-${breakpoint}-${String(value)}`]);\n    }\n  });\n  return spacingStyles;\n}\n\n// Default CSS values\n// flex: '0 1 auto',\n// flexDirection: 'row',\n// alignItems: 'flex-start',\n// flexWrap: 'nowrap',\n// justifyContent: 'flex-start',\nconst GridRoot = styled('div', {\n  name: 'MuiGrid',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      container,\n      direction,\n      item,\n      spacing,\n      wrap,\n      zeroMinWidth,\n      breakpoints\n    } = ownerState;\n    let spacingStyles = [];\n\n    // in case of grid item\n    if (container) {\n      spacingStyles = resolveSpacingStyles(spacing, breakpoints, styles);\n    }\n    const breakpointsStyles = [];\n    breakpoints.forEach(breakpoint => {\n      const value = ownerState[breakpoint];\n      if (value) {\n        breakpointsStyles.push(styles[`grid-${breakpoint}-${String(value)}`]);\n      }\n    });\n    return [styles.root, container && styles.container, item && styles.item, zeroMinWidth && styles.zeroMinWidth, ...spacingStyles, direction !== 'row' && styles[`direction-xs-${String(direction)}`], wrap !== 'wrap' && styles[`wrap-xs-${String(wrap)}`], ...breakpointsStyles];\n  }\n})(({\n  ownerState\n}) => _extends({\n  boxSizing: 'border-box'\n}, ownerState.container && {\n  display: 'flex',\n  flexWrap: 'wrap',\n  width: '100%'\n}, ownerState.item && {\n  margin: 0 // For instance, it's useful when used with a `figure` element.\n}, ownerState.zeroMinWidth && {\n  minWidth: 0\n}, ownerState.wrap !== 'wrap' && {\n  flexWrap: ownerState.wrap\n}), generateDirection, generateRowGap, generateColumnGap, generateGrid);\nexport function resolveSpacingClasses(spacing, breakpoints) {\n  // undefined/null or `spacing` <= 0\n  if (!spacing || spacing <= 0) {\n    return [];\n  }\n  // in case of string/number `spacing`\n  if (typeof spacing === 'string' && !Number.isNaN(Number(spacing)) || typeof spacing === 'number') {\n    return [`spacing-xs-${String(spacing)}`];\n  }\n  // in case of object `spacing`\n  const classes = [];\n  breakpoints.forEach(breakpoint => {\n    const value = spacing[breakpoint];\n    if (Number(value) > 0) {\n      const className = `spacing-${breakpoint}-${String(value)}`;\n      classes.push(className);\n    }\n  });\n  return classes;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    container,\n    direction,\n    item,\n    spacing,\n    wrap,\n    zeroMinWidth,\n    breakpoints\n  } = ownerState;\n  let spacingClasses = [];\n\n  // in case of grid item\n  if (container) {\n    spacingClasses = resolveSpacingClasses(spacing, breakpoints);\n  }\n  const breakpointsClasses = [];\n  breakpoints.forEach(breakpoint => {\n    const value = ownerState[breakpoint];\n    if (value) {\n      breakpointsClasses.push(`grid-${breakpoint}-${String(value)}`);\n    }\n  });\n  const slots = {\n    root: ['root', container && 'container', item && 'item', zeroMinWidth && 'zeroMinWidth', ...spacingClasses, direction !== 'row' && `direction-xs-${String(direction)}`, wrap !== 'wrap' && `wrap-xs-${String(wrap)}`, ...breakpointsClasses]\n  };\n  return composeClasses(slots, getGridUtilityClass, classes);\n};\nconst Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n  const themeProps = useDefaultProps({\n    props: inProps,\n    name: 'MuiGrid'\n  });\n  const {\n    breakpoints\n  } = useTheme();\n  const props = extendSxProp(themeProps);\n  const {\n      className,\n      columns: columnsProp,\n      columnSpacing: columnSpacingProp,\n      component = 'div',\n      container = false,\n      direction = 'row',\n      item = false,\n      rowSpacing: rowSpacingProp,\n      spacing = 0,\n      wrap = 'wrap',\n      zeroMinWidth = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rowSpacing = rowSpacingProp || spacing;\n  const columnSpacing = columnSpacingProp || spacing;\n  const columnsContext = React.useContext(GridContext);\n\n  // columns set with default breakpoint unit of 12\n  const columns = container ? columnsProp || 12 : columnsContext;\n  const breakpointsValues = {};\n  const otherFiltered = _extends({}, other);\n  breakpoints.keys.forEach(breakpoint => {\n    if (other[breakpoint] != null) {\n      breakpointsValues[breakpoint] = other[breakpoint];\n      delete otherFiltered[breakpoint];\n    }\n  });\n  const ownerState = _extends({}, props, {\n    columns,\n    container,\n    direction,\n    item,\n    rowSpacing,\n    columnSpacing,\n    wrap,\n    zeroMinWidth,\n    spacing\n  }, breakpointsValues, {\n    breakpoints: breakpoints.keys\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(GridContext.Provider, {\n    value: columns,\n    children: /*#__PURE__*/_jsx(GridRoot, _extends({\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      as: component,\n      ref: ref\n    }, otherFiltered))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grid.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The number of columns.\n   * @default 12\n   */\n  columns: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.number, PropTypes.object]),\n  /**\n   * Defines the horizontal space between the type `item` components.\n   * It overrides the value of the `spacing` prop.\n   */\n  columnSpacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component will have the flex *container* behavior.\n   * You should be wrapping *items* with a *container*.\n   * @default false\n   */\n  container: PropTypes.bool,\n  /**\n   * Defines the `flex-direction` style property.\n   * It is applied for all screen sizes.\n   * @default 'row'\n   */\n  direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n  /**\n   * If `true`, the component will have the flex *item* behavior.\n   * You should be wrapping *items* with a *container*.\n   * @default false\n   */\n  item: PropTypes.bool,\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `lg` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  lg: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `md` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  md: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * Defines the vertical space between the type `item` components.\n   * It overrides the value of the `spacing` prop.\n   */\n  rowSpacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `sm` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  sm: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * Defines the space between the type `item` components.\n   * It can only be used on a type `container` component.\n   * @default 0\n   */\n  spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Defines the `flex-wrap` style property.\n   * It's applied for all screen sizes.\n   * @default 'wrap'\n   */\n  wrap: PropTypes.oneOf(['nowrap', 'wrap-reverse', 'wrap']),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for the `xl` breakpoint and wider screens if not overridden.\n   * @default false\n   */\n  xl: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * If a number, it sets the number of columns the grid item uses.\n   * It can't be greater than the total number of columns of the container (12 by default).\n   * If 'auto', the grid item's width matches its content.\n   * If false, the prop is ignored.\n   * If true, the grid item's width grows to use the space available in the grid container.\n   * The value is applied for all the screen sizes with the lowest priority.\n   * @default false\n   */\n  xs: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.bool]),\n  /**\n   * If `true`, it sets `min-width: 0` on the item.\n   * Refer to the limitations section of the documentation to better understand the use case.\n   * @default false\n   */\n  zeroMinWidth: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  const requireProp = requirePropFactory('Grid', Grid);\n  // eslint-disable-next-line no-useless-concat\n  Grid['propTypes' + ''] = _extends({}, Grid.propTypes, {\n    direction: requireProp('container'),\n    lg: requireProp('item'),\n    md: requireProp('item'),\n    sm: requireProp('item'),\n    spacing: requireProp('container'),\n    wrap: requireProp('container'),\n    xs: requireProp('item'),\n    zeroMinWidth: requireProp('item')\n  });\n}\nexport default Grid;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { getTransitionProps, reflow } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n  return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n  entering: {\n    opacity: 1,\n    transform: getScale(1)\n  },\n  entered: {\n    opacity: 1,\n    transform: 'none'\n  }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n  const {\n      addEndListener,\n      appear = true,\n      children,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      style,\n      timeout = 'auto',\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = Transition\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const timer = useTimeout();\n  const autoTimeout = React.useRef();\n  const theme = useTheme();\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    reflow(node); // So the animation always start from the start.\n\n    const {\n      duration: transitionDuration,\n      delay,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    let duration;\n    if (timeout === 'auto') {\n      duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n      autoTimeout.current = duration;\n    } else {\n      duration = transitionDuration;\n    }\n    node.style.transition = [theme.transitions.create('opacity', {\n      duration,\n      delay\n    }), theme.transitions.create('transform', {\n      duration: isWebKit154 ? duration : duration * 0.666,\n      delay,\n      easing: transitionTimingFunction\n    })].join(',');\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const {\n      duration: transitionDuration,\n      delay,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    let duration;\n    if (timeout === 'auto') {\n      duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n      autoTimeout.current = duration;\n    } else {\n      duration = transitionDuration;\n    }\n    node.style.transition = [theme.transitions.create('opacity', {\n      duration,\n      delay\n    }), theme.transitions.create('transform', {\n      duration: isWebKit154 ? duration : duration * 0.666,\n      delay: isWebKit154 ? delay : delay || duration * 0.333,\n      easing: transitionTimingFunction\n    })].join(',');\n    node.style.opacity = 0;\n    node.style.transform = getScale(0.75);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.start(autoTimeout.current || 0, next);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    appear: appear,\n    in: inProp,\n    nodeRef: nodeRef,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout === 'auto' ? null : timeout\n  }, other, {\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, _extends({\n        style: _extends({\n          opacity: 0,\n          transform: getScale(0.75),\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n        }, styles[state], style, children.props.style),\n        ref: handleRef\n      }, childProps));\n    }\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport deepmerge from '@mui/utils/deepmerge';\nimport refType from '@mui/utils/refType';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport inputClasses, { getInputUtilityClass } from './inputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst InputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiInput',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const light = theme.palette.mode === 'light';\n  let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  if (theme.vars) {\n    bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;\n  }\n  return _extends({\n    position: 'relative'\n  }, ownerState.formControl && {\n    'label + &': {\n      marginTop: 16\n    }\n  }, !ownerState.disableUnderline && {\n    '&::after': {\n      borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\"',\n      position: 'absolute',\n      right: 0,\n      transform: 'scaleX(0)',\n      transition: theme.transitions.create('transform', {\n        duration: theme.transitions.duration.shorter,\n        easing: theme.transitions.easing.easeOut\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n    [`&.${inputClasses.focused}:after`]: {\n      // translateX(0) is a workaround for Safari transform scale bug\n      // See https://github.com/mui/material-ui/issues/31766\n      transform: 'scaleX(1) translateX(0)'\n    },\n    [`&.${inputClasses.error}`]: {\n      '&::before, &::after': {\n        borderBottomColor: (theme.vars || theme).palette.error.main\n      }\n    },\n    '&::before': {\n      borderBottom: `1px solid ${bottomLineColor}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\\\\00a0\"',\n      position: 'absolute',\n      right: 0,\n      transition: theme.transitions.create('border-bottom-color', {\n        duration: theme.transitions.duration.shorter\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n    [`&:hover:not(.${inputClasses.disabled}, .${inputClasses.error}):before`]: {\n      borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        borderBottom: `1px solid ${bottomLineColor}`\n      }\n    },\n    [`&.${inputClasses.disabled}:before`]: {\n      borderBottomStyle: 'dotted'\n    }\n  });\n});\nconst InputInput = styled(InputBaseInput, {\n  name: 'MuiInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})({});\nconst Input = /*#__PURE__*/React.forwardRef(function Input(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiInput'\n  });\n  const {\n      disableUnderline,\n      components = {},\n      componentsProps: componentsPropsProp,\n      fullWidth = false,\n      inputComponent = 'input',\n      multiline = false,\n      slotProps,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(props);\n  const ownerState = {\n    disableUnderline\n  };\n  const inputComponentsProps = {\n    root: {\n      ownerState\n    }\n  };\n  const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(slotProps != null ? slotProps : componentsPropsProp, inputComponentsProps) : inputComponentsProps;\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : InputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : InputInput;\n  return /*#__PURE__*/_jsx(InputBase, _extends({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    slotProps: componentsProps,\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Input.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the `input` will not have an underline.\n   */\n  disableUnderline: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nInput.muiName = 'Input';\nexport default Input;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputAdornmentUtilityClass(slot) {\n  return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disablePointerEvents\", \"disableTypography\", \"position\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport Typography from '../Typography';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport inputAdornmentClasses, { getInputAdornmentUtilityClass } from './inputAdornmentClasses';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, styles[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePointerEvents,\n    hiddenLabel,\n    position,\n    size,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${capitalize(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getInputAdornmentUtilityClass, classes);\n};\nconst InputAdornmentRoot = styled('div', {\n  name: 'MuiInputAdornment',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  display: 'flex',\n  height: '0.01em',\n  // Fix IE11 flexbox alignment. To remove at some point.\n  maxHeight: '2em',\n  alignItems: 'center',\n  whiteSpace: 'nowrap',\n  color: (theme.vars || theme).palette.action.active\n}, ownerState.variant === 'filled' && {\n  // Styles applied to the root element if `variant=\"filled\"`.\n  [`&.${inputAdornmentClasses.positionStart}&:not(.${inputAdornmentClasses.hiddenLabel})`]: {\n    marginTop: 16\n  }\n}, ownerState.position === 'start' && {\n  // Styles applied to the root element if `position=\"start\"`.\n  marginRight: 8\n}, ownerState.position === 'end' && {\n  // Styles applied to the root element if `position=\"end\"`.\n  marginLeft: 8\n}, ownerState.disablePointerEvents === true && {\n  // Styles applied to the root element if `disablePointerEvents={true}`.\n  pointerEvents: 'none'\n}));\nconst InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiInputAdornment'\n  });\n  const {\n      children,\n      className,\n      component = 'div',\n      disablePointerEvents = false,\n      disableTypography = false,\n      position,\n      variant: variantProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const muiFormControl = useFormControl() || {};\n  let variant = variantProp;\n  if (variantProp && muiFormControl.variant) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (variantProp === muiFormControl.variant) {\n        console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n      }\n    }\n  }\n  if (muiFormControl && !variant) {\n    variant = muiFormControl.variant;\n  }\n  const ownerState = _extends({}, props, {\n    hiddenLabel: muiFormControl.hiddenLabel,\n    size: muiFormControl.size,\n    disablePointerEvents,\n    position,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n    value: null,\n    children: /*#__PURE__*/_jsx(InputAdornmentRoot, _extends({\n      as: component,\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      ref: ref\n    }, other, {\n      children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/_jsx(Typography, {\n        color: \"text.secondary\",\n        children: children\n      }) : /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [position === 'start' ? ( /* notranslate needed while Google Translate will not fix zero-width space issue */_span || (_span = /*#__PURE__*/_jsx(\"span\", {\n          className: \"notranslate\",\n          children: \"\\u200B\"\n        }))) : null, children]\n      })\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `IconButton` or string.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Disable pointer events on the root.\n   * This allows for the content of the adornment to focus the `input` on click.\n   * @default false\n   */\n  disablePointerEvents: PropTypes.bool,\n  /**\n   * If children is a string then disable wrapping in a Typography component.\n   * @default false\n   */\n  disableTypography: PropTypes.bool,\n  /**\n   * The position this adornment should appear relative to the `Input`.\n   */\n  position: PropTypes.oneOf(['end', 'start']).isRequired,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * Note: If you are using the `TextField` component or the `FormControl` component\n   * you do not have to set this manually.\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputAdornment;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n  return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport capitalize from '../utils/capitalize';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    formControl,\n    size,\n    shrink,\n    disableAnimation,\n    variant,\n    required\n  } = ownerState;\n  const slots = {\n    root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size && size !== 'normal' && `size${capitalize(size)}`, variant],\n    asterisk: [required && 'asterisk']\n  };\n  const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiInputLabel',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n    }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, ownerState.focused && styles.focused, styles[ownerState.variant]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  display: 'block',\n  transformOrigin: 'top left',\n  whiteSpace: 'nowrap',\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  maxWidth: '100%'\n}, ownerState.formControl && {\n  position: 'absolute',\n  left: 0,\n  top: 0,\n  // slight alteration to spec spacing to match visual spec result\n  transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n  // Compensation for the `Input.inputSizeSmall` style.\n  transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n  transform: 'translate(0, -1.5px) scale(0.75)',\n  transformOrigin: 'top left',\n  maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n  transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n    duration: theme.transitions.duration.shorter,\n    easing: theme.transitions.easing.easeOut\n  })\n}, ownerState.variant === 'filled' && _extends({\n  // Chrome's autofill feature gives the input field a yellow background.\n  // Since the input field is behind the label in the HTML tree,\n  // the input field is drawn last and hides the label with an opaque background color.\n  // zIndex: 1 will raise the label above opaque background-colors of input.\n  zIndex: 1,\n  pointerEvents: 'none',\n  transform: 'translate(12px, 16px) scale(1)',\n  maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n  transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n  userSelect: 'none',\n  pointerEvents: 'auto',\n  transform: 'translate(12px, 7px) scale(0.75)',\n  maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n  transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n  // see comment above on filled.zIndex\n  zIndex: 1,\n  pointerEvents: 'none',\n  transform: 'translate(14px, 16px) scale(1)',\n  maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n  transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n  userSelect: 'none',\n  pointerEvents: 'auto',\n  // Theoretically, we should have (8+5)*2/0.75 = 34px\n  // but it feels a better when it bleeds a bit on the left, so 32px.\n  maxWidth: 'calc(133% - 32px)',\n  transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n  const props = useDefaultProps({\n    name: 'MuiInputLabel',\n    props: inProps\n  });\n  const {\n      disableAnimation = false,\n      shrink: shrinkProp,\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const muiFormControl = useFormControl();\n  let shrink = shrinkProp;\n  if (typeof shrink === 'undefined' && muiFormControl) {\n    shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n  }\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['size', 'variant', 'required', 'focused']\n  });\n  const ownerState = _extends({}, props, {\n    disableAnimation,\n    formControl: muiFormControl,\n    shrink,\n    size: fcs.size,\n    variant: fcs.variant,\n    required: fcs.required,\n    focused: fcs.focused\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n    \"data-shrink\": shrink,\n    ownerState: ownerState,\n    ref: ref,\n    className: clsx(classes.root, className)\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the transition animation is disabled.\n   * @default false\n   */\n  disableAnimation: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` of this label is focused.\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   */\n  margin: PropTypes.oneOf(['dense']),\n  /**\n   * if `true`, the label will indicate that the `input` is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * If `true`, the label is shrunk.\n   */\n  shrink: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'normal'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinearProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiLinearProgress', slot);\n}\nconst linearProgressClasses = generateUtilityClasses('MuiLinearProgress', ['root', 'colorPrimary', 'colorSecondary', 'determinate', 'indeterminate', 'buffer', 'query', 'dashed', 'dashedColorPrimary', 'dashedColorSecondary', 'bar', 'barColorPrimary', 'barColorSecondary', 'bar1Indeterminate', 'bar1Determinate', 'bar1Buffer', 'bar2Indeterminate', 'bar2Buffer']);\nexport default linearProgressClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"value\", \"valueBuffer\", \"variant\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4,\n  _t5,\n  _t6;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css } from '@mui/system';\nimport { darken, lighten } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getLinearProgressUtilityClass } from './linearProgressClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst TRANSITION_DURATION = 4; // seconds\nconst indeterminate1Keyframe = keyframes(_t || (_t = _`\n  0% {\n    left: -35%;\n    right: 100%;\n  }\n\n  60% {\n    left: 100%;\n    right: -90%;\n  }\n\n  100% {\n    left: 100%;\n    right: -90%;\n  }\n`));\nconst indeterminate2Keyframe = keyframes(_t2 || (_t2 = _`\n  0% {\n    left: -200%;\n    right: 100%;\n  }\n\n  60% {\n    left: 107%;\n    right: -8%;\n  }\n\n  100% {\n    left: 107%;\n    right: -8%;\n  }\n`));\nconst bufferKeyframe = keyframes(_t3 || (_t3 = _`\n  0% {\n    opacity: 1;\n    background-position: 0 -23px;\n  }\n\n  60% {\n    opacity: 0;\n    background-position: 0 -23px;\n  }\n\n  100% {\n    opacity: 1;\n    background-position: -200px -23px;\n  }\n`));\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, variant],\n    dashed: ['dashed', `dashedColor${capitalize(color)}`],\n    bar1: ['bar', `barColor${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar1Indeterminate', variant === 'determinate' && 'bar1Determinate', variant === 'buffer' && 'bar1Buffer'],\n    bar2: ['bar', variant !== 'buffer' && `barColor${capitalize(color)}`, variant === 'buffer' && `color${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar2Indeterminate', variant === 'buffer' && 'bar2Buffer']\n  };\n  return composeClasses(slots, getLinearProgressUtilityClass, classes);\n};\nconst getColorShade = (theme, color) => {\n  if (color === 'inherit') {\n    return 'currentColor';\n  }\n  if (theme.vars) {\n    return theme.vars.palette.LinearProgress[`${color}Bg`];\n  }\n  return theme.palette.mode === 'light' ? lighten(theme.palette[color].main, 0.62) : darken(theme.palette[color].main, 0.5);\n};\nconst LinearProgressRoot = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`color${capitalize(ownerState.color)}`], styles[ownerState.variant]];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  position: 'relative',\n  overflow: 'hidden',\n  display: 'block',\n  height: 4,\n  zIndex: 0,\n  // Fix Safari's bug during composition of different paint.\n  '@media print': {\n    colorAdjust: 'exact'\n  },\n  backgroundColor: getColorShade(theme, ownerState.color)\n}, ownerState.color === 'inherit' && ownerState.variant !== 'buffer' && {\n  backgroundColor: 'none',\n  '&::before': {\n    content: '\"\"',\n    position: 'absolute',\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0,\n    backgroundColor: 'currentColor',\n    opacity: 0.3\n  }\n}, ownerState.variant === 'buffer' && {\n  backgroundColor: 'transparent'\n}, ownerState.variant === 'query' && {\n  transform: 'rotate(180deg)'\n}));\nconst LinearProgressDashed = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Dashed',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.dashed, styles[`dashedColor${capitalize(ownerState.color)}`]];\n  }\n})(({\n  ownerState,\n  theme\n}) => {\n  const backgroundColor = getColorShade(theme, ownerState.color);\n  return _extends({\n    position: 'absolute',\n    marginTop: 0,\n    height: '100%',\n    width: '100%'\n  }, ownerState.color === 'inherit' && {\n    opacity: 0.3\n  }, {\n    backgroundImage: `radial-gradient(${backgroundColor} 0%, ${backgroundColor} 16%, transparent 42%)`,\n    backgroundSize: '10px 10px',\n    backgroundPosition: '0 -23px'\n  });\n}, css(_t4 || (_t4 = _`\n    animation: ${0} 3s infinite linear;\n  `), bufferKeyframe));\nconst LinearProgressBar1 = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Bar1',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar1Indeterminate, ownerState.variant === 'determinate' && styles.bar1Determinate, ownerState.variant === 'buffer' && styles.bar1Buffer];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  width: '100%',\n  position: 'absolute',\n  left: 0,\n  bottom: 0,\n  top: 0,\n  transition: 'transform 0.2s linear',\n  transformOrigin: 'left',\n  backgroundColor: ownerState.color === 'inherit' ? 'currentColor' : (theme.vars || theme).palette[ownerState.color].main\n}, ownerState.variant === 'determinate' && {\n  transition: `transform .${TRANSITION_DURATION}s linear`\n}, ownerState.variant === 'buffer' && {\n  zIndex: 1,\n  transition: `transform .${TRANSITION_DURATION}s linear`\n}), ({\n  ownerState\n}) => (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && css(_t5 || (_t5 = _`\n      width: auto;\n      animation: ${0} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n    `), indeterminate1Keyframe));\nconst LinearProgressBar2 = styled('span', {\n  name: 'MuiLinearProgress',\n  slot: 'Bar2',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar2Indeterminate, ownerState.variant === 'buffer' && styles.bar2Buffer];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  width: '100%',\n  position: 'absolute',\n  left: 0,\n  bottom: 0,\n  top: 0,\n  transition: 'transform 0.2s linear',\n  transformOrigin: 'left'\n}, ownerState.variant !== 'buffer' && {\n  backgroundColor: ownerState.color === 'inherit' ? 'currentColor' : (theme.vars || theme).palette[ownerState.color].main\n}, ownerState.color === 'inherit' && {\n  opacity: 0.3\n}, ownerState.variant === 'buffer' && {\n  backgroundColor: getColorShade(theme, ownerState.color),\n  transition: `transform .${TRANSITION_DURATION}s linear`\n}), ({\n  ownerState\n}) => (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && css(_t6 || (_t6 = _`\n      width: auto;\n      animation: ${0} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;\n    `), indeterminate2Keyframe));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst LinearProgress = /*#__PURE__*/React.forwardRef(function LinearProgress(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiLinearProgress'\n  });\n  const {\n      className,\n      color = 'primary',\n      value,\n      valueBuffer,\n      variant = 'indeterminate'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const isRtl = useRtl();\n  const rootProps = {};\n  const inlineStyles = {\n    bar1: {},\n    bar2: {}\n  };\n  if (variant === 'determinate' || variant === 'buffer') {\n    if (value !== undefined) {\n      rootProps['aria-valuenow'] = Math.round(value);\n      rootProps['aria-valuemin'] = 0;\n      rootProps['aria-valuemax'] = 100;\n      let transform = value - 100;\n      if (isRtl) {\n        transform = -transform;\n      }\n      inlineStyles.bar1.transform = `translateX(${transform}%)`;\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('MUI: You need to provide a value prop ' + 'when using the determinate or buffer variant of LinearProgress .');\n    }\n  }\n  if (variant === 'buffer') {\n    if (valueBuffer !== undefined) {\n      let transform = (valueBuffer || 0) - 100;\n      if (isRtl) {\n        transform = -transform;\n      }\n      inlineStyles.bar2.transform = `translateX(${transform}%)`;\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('MUI: You need to provide a valueBuffer prop ' + 'when using the buffer variant of LinearProgress.');\n    }\n  }\n  return /*#__PURE__*/_jsxs(LinearProgressRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    role: \"progressbar\"\n  }, rootProps, {\n    ref: ref\n  }, other, {\n    children: [variant === 'buffer' ? /*#__PURE__*/_jsx(LinearProgressDashed, {\n      className: classes.dashed,\n      ownerState: ownerState\n    }) : null, /*#__PURE__*/_jsx(LinearProgressBar1, {\n      className: classes.bar1,\n      ownerState: ownerState,\n      style: inlineStyles.bar1\n    }), variant === 'determinate' ? null : /*#__PURE__*/_jsx(LinearProgressBar2, {\n      className: classes.bar2,\n      ownerState: ownerState,\n      style: inlineStyles.bar2\n    })]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? LinearProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the progress indicator for the determinate and buffer variants.\n   * Value between 0 and 100.\n   */\n  value: PropTypes.number,\n  /**\n   * The value for the buffer variant.\n   * Value between 0 and 100.\n   */\n  valueBuffer: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate or query when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['buffer', 'determinate', 'indeterminate', 'query'])\n} : void 0;\nexport default LinearProgress;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ListContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  ListContext.displayName = 'ListContext';\n}\nexport default ListContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListUtilityClass(slot) {\n  return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ListContext from './ListContext';\nimport { getListUtilityClass } from './listClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePadding,\n    dense,\n    subheader\n  } = ownerState;\n  const slots = {\n    root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n  };\n  return composeClasses(slots, getListUtilityClass, classes);\n};\nconst ListRoot = styled('ul', {\n  name: 'MuiList',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n  }\n})(({\n  ownerState\n}) => _extends({\n  listStyle: 'none',\n  margin: 0,\n  padding: 0,\n  position: 'relative'\n}, !ownerState.disablePadding && {\n  paddingTop: 8,\n  paddingBottom: 8\n}, ownerState.subheader && {\n  paddingTop: 0\n}));\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiList'\n  });\n  const {\n      children,\n      className,\n      component = 'ul',\n      dense = false,\n      disablePadding = false,\n      subheader\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const context = React.useMemo(() => ({\n    dense\n  }), [dense]);\n  const ownerState = _extends({}, props, {\n    component,\n    dense,\n    disablePadding\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: context,\n    children: /*#__PURE__*/_jsxs(ListRoot, _extends({\n      as: component,\n      className: clsx(classes.root, className),\n      ref: ref,\n      ownerState: ownerState\n    }, other, {\n      children: [subheader, children]\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n   * the list and list items.\n   * The prop is available to descendant components as the `dense` context.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, vertical padding is removed from the list.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * The content of the subheader, normally `ListSubheader`.\n   */\n  subheader: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n  return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'padding', 'button', 'secondaryAction', 'selected']);\nexport default listItemClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"alignItems\", \"autoFocus\", \"component\", \"children\", \"dense\", \"disableGutters\", \"divider\", \"focusVisibleClassName\", \"selected\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ButtonBase from '../ButtonBase';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport ListContext from '../List/ListContext';\nimport listItemButtonClasses, { getListItemButtonUtilityClass } from './listItemButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes,\n    dense,\n    disabled,\n    disableGutters,\n    divider,\n    selected\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', !disableGutters && 'gutters', divider && 'divider', disabled && 'disabled', alignItems === 'flex-start' && 'alignItemsFlexStart', selected && 'selected']\n  };\n  const composedClasses = composeClasses(slots, getListItemButtonUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst ListItemButtonRoot = styled(ButtonBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiListItemButton',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  display: 'flex',\n  flexGrow: 1,\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  minWidth: 0,\n  boxSizing: 'border-box',\n  textAlign: 'left',\n  paddingTop: 8,\n  paddingBottom: 8,\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  '&:hover': {\n    textDecoration: 'none',\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${listItemButtonClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    [`&.${listItemButtonClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  },\n  [`&.${listItemButtonClasses.selected}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n    }\n  },\n  [`&.${listItemButtonClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${listItemButtonClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  }\n}, ownerState.divider && {\n  borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n  backgroundClip: 'padding-box'\n}, ownerState.alignItems === 'flex-start' && {\n  alignItems: 'flex-start'\n}, !ownerState.disableGutters && {\n  paddingLeft: 16,\n  paddingRight: 16\n}, ownerState.dense && {\n  paddingTop: 4,\n  paddingBottom: 4\n}));\nconst ListItemButton = /*#__PURE__*/React.forwardRef(function ListItemButton(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemButton'\n  });\n  const {\n      alignItems = 'center',\n      autoFocus = false,\n      component = 'div',\n      children,\n      dense = false,\n      disableGutters = false,\n      divider = false,\n      focusVisibleClassName,\n      selected = false,\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    alignItems,\n    disableGutters\n  }), [alignItems, context.dense, dense, disableGutters]);\n  const listItemRef = React.useRef(null);\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      if (listItemRef.current) {\n        listItemRef.current.focus();\n      } else if (process.env.NODE_ENV !== 'production') {\n        console.error('MUI: Unable to set focus to a ListItemButton whose component has not been rendered.');\n      }\n    }\n  }, [autoFocus]);\n  const ownerState = _extends({}, props, {\n    alignItems,\n    dense: childContext.dense,\n    disableGutters,\n    divider,\n    selected\n  });\n  const classes = useUtilityClasses(ownerState);\n  const handleRef = useForkRef(listItemRef, ref);\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsx(ListItemButtonRoot, _extends({\n      ref: handleRef,\n      href: other.href || other.to\n      // `ButtonBase` processes `href` or `to` if `component` is set to 'button'\n      ,\n      component: (other.href || other.to) && component === 'div' ? 'button' : component,\n      focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n      ownerState: ownerState,\n      className: clsx(classes.root, className)\n    }, other, {\n      classes: classes,\n      children: children\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Defines the `align-items` style property.\n   * @default 'center'\n   */\n  alignItems: PropTypes.oneOf(['center', 'flex-start']),\n  /**\n   * If `true`, the list item is focused during the first mount.\n   * Focus will also be triggered if the value changes from false to true.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * The content of the component if a `ListItemSecondaryAction` is used it must\n   * be the last child.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent List component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  href: PropTypes.string,\n  /**\n   * Use to apply selected styling.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemButton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ListContext from '../List/ListContext';\nimport { getListItemSecondaryActionClassesUtilityClass } from './listItemSecondaryActionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disableGutters,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n  name: 'MuiListItemSecondaryAction',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.disableGutters && styles.disableGutters];\n  }\n})(({\n  ownerState\n}) => _extends({\n  position: 'absolute',\n  right: 16,\n  top: '50%',\n  transform: 'translateY(-50%)'\n}, ownerState.disableGutters && {\n  right: 0\n}));\n\n/**\n * Must be used as the last child of ListItem to function properly.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemSecondaryAction'\n  });\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const context = React.useContext(ListContext);\n  const ownerState = _extends({}, props, {\n    disableGutters: context.disableGutters\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally an `IconButton` or selection control.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"],\n  _excluded2 = [\"alignItems\", \"autoFocus\", \"button\", \"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"ContainerComponent\", \"ContainerProps\", \"dense\", \"disabled\", \"disableGutters\", \"disablePadding\", \"divider\", \"focusVisibleClassName\", \"secondaryAction\", \"selected\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport { alpha } from '@mui/system/colorManipulator';\nimport isHostComponent from '@mui/utils/isHostComponent';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ButtonBase from '../ButtonBase';\nimport isMuiElement from '../utils/isMuiElement';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport ListContext from '../List/ListContext';\nimport listItemClasses, { getListItemUtilityClass } from './listItemClasses';\nimport { listItemButtonClasses } from '../ListItemButton';\nimport ListItemSecondaryAction from '../ListItemSecondaryAction';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.button && styles.button, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    button,\n    classes,\n    dense,\n    disabled,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction,\n    selected\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', disabled && 'disabled', button && 'button', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction', selected && 'selected'],\n    container: ['container']\n  };\n  return composeClasses(slots, getListItemUtilityClass, classes);\n};\nexport const ListItemRoot = styled('div', {\n  name: 'MuiListItem',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  width: '100%',\n  boxSizing: 'border-box',\n  textAlign: 'left'\n}, !ownerState.disablePadding && _extends({\n  paddingTop: 8,\n  paddingBottom: 8\n}, ownerState.dense && {\n  paddingTop: 4,\n  paddingBottom: 4\n}, !ownerState.disableGutters && {\n  paddingLeft: 16,\n  paddingRight: 16\n}, !!ownerState.secondaryAction && {\n  // Add some space to avoid collision as `ListItemSecondaryAction`\n  // is absolutely positioned.\n  paddingRight: 48\n}), !!ownerState.secondaryAction && {\n  [`& > .${listItemButtonClasses.root}`]: {\n    paddingRight: 48\n  }\n}, {\n  [`&.${listItemClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${listItemClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    [`&.${listItemClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  },\n  [`&.${listItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  }\n}, ownerState.alignItems === 'flex-start' && {\n  alignItems: 'flex-start'\n}, ownerState.divider && {\n  borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n  backgroundClip: 'padding-box'\n}, ownerState.button && {\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.shortest\n  }),\n  '&:hover': {\n    textDecoration: 'none',\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${listItemClasses.selected}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n    }\n  }\n}, ownerState.hasSecondaryAction && {\n  // Add some space to avoid collision as `ListItemSecondaryAction`\n  // is absolutely positioned.\n  paddingRight: 48\n}));\nconst ListItemContainer = styled('li', {\n  name: 'MuiListItem',\n  slot: 'Container',\n  overridesResolver: (props, styles) => styles.container\n})({\n  position: 'relative'\n});\n\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItem'\n  });\n  const {\n      alignItems = 'center',\n      autoFocus = false,\n      button = false,\n      children: childrenProp,\n      className,\n      component: componentProp,\n      components = {},\n      componentsProps = {},\n      ContainerComponent = 'li',\n      ContainerProps: {\n        className: ContainerClassName\n      } = {},\n      dense = false,\n      disabled = false,\n      disableGutters = false,\n      disablePadding = false,\n      divider = false,\n      focusVisibleClassName,\n      secondaryAction,\n      selected = false,\n      slotProps = {},\n      slots = {}\n    } = props,\n    ContainerProps = _objectWithoutPropertiesLoose(props.ContainerProps, _excluded),\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    alignItems,\n    disableGutters\n  }), [alignItems, context.dense, dense, disableGutters]);\n  const listItemRef = React.useRef(null);\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      if (listItemRef.current) {\n        listItemRef.current.focus();\n      } else if (process.env.NODE_ENV !== 'production') {\n        console.error('MUI: Unable to set focus to a ListItem whose component has not been rendered.');\n      }\n    }\n  }, [autoFocus]);\n  const children = React.Children.toArray(childrenProp);\n\n  // v4 implementation, deprecated in v5, will be removed in v6\n  const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n  const ownerState = _extends({}, props, {\n    alignItems,\n    autoFocus,\n    button,\n    dense: childContext.dense,\n    disabled,\n    disableGutters,\n    disablePadding,\n    divider,\n    hasSecondaryAction,\n    selected\n  });\n  const classes = useUtilityClasses(ownerState);\n  const handleRef = useForkRef(listItemRef, ref);\n  const Root = slots.root || components.Root || ListItemRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const componentProps = _extends({\n    className: clsx(classes.root, rootProps.className, className),\n    disabled\n  }, other);\n  let Component = componentProp || 'li';\n  if (button) {\n    componentProps.component = componentProp || 'div';\n    componentProps.focusVisibleClassName = clsx(listItemClasses.focusVisible, focusVisibleClassName);\n    Component = ButtonBase;\n  }\n\n  // v4 implementation, deprecated in v5, will be removed in v6\n  if (hasSecondaryAction) {\n    // Use div by default.\n    Component = !componentProps.component && !componentProp ? 'div' : Component;\n\n    // Avoid nesting of li > li.\n    if (ContainerComponent === 'li') {\n      if (Component === 'li') {\n        Component = 'div';\n      } else if (componentProps.component === 'li') {\n        componentProps.component = 'div';\n      }\n    }\n    return /*#__PURE__*/_jsx(ListContext.Provider, {\n      value: childContext,\n      children: /*#__PURE__*/_jsxs(ListItemContainer, _extends({\n        as: ContainerComponent,\n        className: clsx(classes.container, ContainerClassName),\n        ref: handleRef,\n        ownerState: ownerState\n      }, ContainerProps, {\n        children: [/*#__PURE__*/_jsx(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n          as: Component,\n          ownerState: _extends({}, ownerState, rootProps.ownerState)\n        }, componentProps, {\n          children: children\n        })), children.pop()]\n      }))\n    });\n  }\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {\n      as: Component,\n      ref: handleRef\n    }, !isHostComponent(Root) && {\n      ownerState: _extends({}, ownerState, rootProps.ownerState)\n    }, componentProps, {\n      children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n        children: secondaryAction\n      })]\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Defines the `align-items` style property.\n   * @default 'center'\n   */\n  alignItems: PropTypes.oneOf(['center', 'flex-start']),\n  /**\n   * If `true`, the list item is focused during the first mount.\n   * Focus will also be triggered if the value changes from false to true.\n   * @default false\n   * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, the list item is a button (using `ButtonBase`). Props intended\n   * for `ButtonBase` can then be applied to `ListItem`.\n   * @default false\n   * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n   */\n  button: PropTypes.bool,\n  /**\n   * The content of the component if a `ListItemSecondaryAction` is used it must\n   * be the last child.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const children = React.Children.toArray(props.children);\n\n    // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n    let secondaryActionIndex = -1;\n    for (let i = children.length - 1; i >= 0; i -= 1) {\n      const child = children[i];\n      if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n        secondaryActionIndex = i;\n        break;\n      }\n    }\n\n    //  is ListItemSecondaryAction the last child of ListItem\n    if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n      return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The container component used when a `ListItemSecondaryAction` is the last child.\n   * @default 'li'\n   * @deprecated\n   */\n  ContainerComponent: elementTypeAcceptingRef,\n  /**\n   * Props applied to the container component if used.\n   * @default {}\n   * @deprecated\n   */\n  ContainerProps: PropTypes.object,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent List component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, all padding is removed.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the list item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * The element to display at the end of ListItem.\n   */\n  secondaryAction: PropTypes.node,\n  /**\n   * Use to apply selected styling.\n   * @default false\n   * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n   */\n  selected: PropTypes.bool,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemIconUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = generateUtilityClasses('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\nexport default listItemIconClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getListItemIconUtilityClass } from './listItemIconClasses';\nimport ListContext from '../List/ListContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    alignItems,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', alignItems === 'flex-start' && 'alignItemsFlexStart']\n  };\n  return composeClasses(slots, getListItemIconUtilityClass, classes);\n};\nconst ListItemIconRoot = styled('div', {\n  name: 'MuiListItemIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  minWidth: 56,\n  color: (theme.vars || theme).palette.action.active,\n  flexShrink: 0,\n  display: 'inline-flex'\n}, ownerState.alignItems === 'flex-start' && {\n  marginTop: 8\n}));\n\n/**\n * A simple wrapper to apply `List` styles to an `Icon` or `SvgIcon`.\n */\nconst ListItemIcon = /*#__PURE__*/React.forwardRef(function ListItemIcon(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemIcon'\n  });\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const context = React.useContext(ListContext);\n  const ownerState = _extends({}, props, {\n    alignItems: context.alignItems\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListItemIconRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemIcon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component, normally `Icon`, `SvgIcon`,\n   * or a `@mui/icons-material` SVG icon element.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemIcon;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemTextUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemText', slot);\n}\nconst listItemTextClasses = generateUtilityClasses('MuiListItemText', ['root', 'multiline', 'dense', 'inset', 'primary', 'secondary']);\nexport default listItemTextClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"disableTypography\", \"inset\", \"primary\", \"primaryTypographyProps\", \"secondary\", \"secondaryTypographyProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Typography from '../Typography';\nimport ListContext from '../List/ListContext';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport listItemTextClasses, { getListItemTextUtilityClass } from './listItemTextClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    inset,\n    primary,\n    secondary,\n    dense\n  } = ownerState;\n  const slots = {\n    root: ['root', inset && 'inset', dense && 'dense', primary && secondary && 'multiline'],\n    primary: ['primary'],\n    secondary: ['secondary']\n  };\n  return composeClasses(slots, getListItemTextUtilityClass, classes);\n};\nconst ListItemTextRoot = styled('div', {\n  name: 'MuiListItemText',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${listItemTextClasses.primary}`]: styles.primary\n    }, {\n      [`& .${listItemTextClasses.secondary}`]: styles.secondary\n    }, styles.root, ownerState.inset && styles.inset, ownerState.primary && ownerState.secondary && styles.multiline, ownerState.dense && styles.dense];\n  }\n})(({\n  ownerState\n}) => _extends({\n  flex: '1 1 auto',\n  minWidth: 0,\n  marginTop: 4,\n  marginBottom: 4\n}, ownerState.primary && ownerState.secondary && {\n  marginTop: 6,\n  marginBottom: 6\n}, ownerState.inset && {\n  paddingLeft: 56\n}));\nconst ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiListItemText'\n  });\n  const {\n      children,\n      className,\n      disableTypography = false,\n      inset = false,\n      primary: primaryProp,\n      primaryTypographyProps,\n      secondary: secondaryProp,\n      secondaryTypographyProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    dense\n  } = React.useContext(ListContext);\n  let primary = primaryProp != null ? primaryProp : children;\n  let secondary = secondaryProp;\n  const ownerState = _extends({}, props, {\n    disableTypography,\n    inset,\n    primary: !!primary,\n    secondary: !!secondary,\n    dense\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (primary != null && primary.type !== Typography && !disableTypography) {\n    primary = /*#__PURE__*/_jsx(Typography, _extends({\n      variant: dense ? 'body2' : 'body1',\n      className: classes.primary,\n      component: primaryTypographyProps != null && primaryTypographyProps.variant ? undefined : 'span',\n      display: \"block\"\n    }, primaryTypographyProps, {\n      children: primary\n    }));\n  }\n  if (secondary != null && secondary.type !== Typography && !disableTypography) {\n    secondary = /*#__PURE__*/_jsx(Typography, _extends({\n      variant: \"body2\",\n      className: classes.secondary,\n      color: \"text.secondary\",\n      display: \"block\"\n    }, secondaryTypographyProps, {\n      children: secondary\n    }));\n  }\n  return /*#__PURE__*/_jsxs(ListItemTextRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: [primary, secondary]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemText.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Alias for the `primary` prop.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the children won't be wrapped by a Typography component.\n   * This can be useful to render an alternative Typography variant by wrapping\n   * the `children` (or `primary`) text, and optional `secondary` text\n   * with the Typography component.\n   * @default false\n   */\n  disableTypography: PropTypes.bool,\n  /**\n   * If `true`, the children are indented.\n   * This should be used if there is no left avatar or left icon.\n   * @default false\n   */\n  inset: PropTypes.bool,\n  /**\n   * The main content element.\n   */\n  primary: PropTypes.node,\n  /**\n   * These props will be forwarded to the primary typography component\n   * (as long as disableTypography is not `true`).\n   */\n  primaryTypographyProps: PropTypes.object,\n  /**\n   * The secondary content element.\n   */\n  secondary: PropTypes.node,\n  /**\n   * These props will be forwarded to the secondary typography component\n   * (as long as disableTypography is not `true`).\n   */\n  secondaryTypographyProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemText;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n  if (list === item) {\n    return disableListWrap ? list.firstChild : list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n  if (textCriteria === undefined) {\n    return true;\n  }\n  let text = nextFocus.innerText;\n  if (text === undefined) {\n    // jsdom doesn't support innerText\n    text = nextFocus.textContent;\n  }\n  text = text.trim().toLowerCase();\n  if (text.length === 0) {\n    return false;\n  }\n  if (textCriteria.repeating) {\n    return text[0] === textCriteria.keys[0];\n  }\n  return text.indexOf(textCriteria.keys.join('')) === 0;\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n  let wrappedOnce = false;\n  let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return false;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n    if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n      // Move to the next element.\n      nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n    } else {\n      nextFocus.focus();\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n  const {\n      // private\n      // eslint-disable-next-line react/prop-types\n      actions,\n      autoFocus = false,\n      autoFocusItem = false,\n      children,\n      className,\n      disabledItemsFocusable = false,\n      disableListWrap = false,\n      onKeyDown,\n      variant = 'selectedMenu'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const listRef = React.useRef(null);\n  const textCriteriaRef = React.useRef({\n    keys: [],\n    repeating: true,\n    previousKeyMatched: true,\n    lastTime: null\n  });\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      listRef.current.focus();\n    }\n  }, [autoFocus]);\n  React.useImperativeHandle(actions, () => ({\n    adjustStyleForScrollbar: (containerElement, {\n      direction\n    }) => {\n      // Let's ignore that piece of logic if users are already overriding the width\n      // of the menu.\n      const noExplicitWidth = !listRef.current.style.width;\n      if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n        const scrollbarSize = `${getScrollbarSize(ownerDocument(containerElement))}px`;\n        listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n        listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n      }\n      return listRef.current;\n    }\n  }), []);\n  const handleKeyDown = event => {\n    const list = listRef.current;\n    const key = event.key;\n    /**\n     * @type {Element} - will always be defined since we are in a keydown handler\n     * attached to an element. A keydown event is either dispatched to the activeElement\n     * or document.body or document.documentElement. Only the first case will\n     * trigger this specific handler.\n     */\n    const currentFocus = ownerDocument(list).activeElement;\n    if (key === 'ArrowDown') {\n      // Prevent scroll of the page\n      event.preventDefault();\n      moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n    } else if (key === 'ArrowUp') {\n      event.preventDefault();\n      moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n    } else if (key === 'Home') {\n      event.preventDefault();\n      moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n    } else if (key === 'End') {\n      event.preventDefault();\n      moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n    } else if (key.length === 1) {\n      const criteria = textCriteriaRef.current;\n      const lowerKey = key.toLowerCase();\n      const currTime = performance.now();\n      if (criteria.keys.length > 0) {\n        // Reset\n        if (currTime - criteria.lastTime > 500) {\n          criteria.keys = [];\n          criteria.repeating = true;\n          criteria.previousKeyMatched = true;\n        } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n          criteria.repeating = false;\n        }\n      }\n      criteria.lastTime = currTime;\n      criteria.keys.push(lowerKey);\n      const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n      if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n        event.preventDefault();\n      } else {\n        criteria.previousKeyMatched = false;\n      }\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleRef = useForkRef(listRef, ref);\n\n  /**\n   * the index of the item should receive focus\n   * in a `variant=\"selectedMenu\"` it's the first `selected` item\n   * otherwise it's the very first item.\n   */\n  let activeItemIndex = -1;\n  // since we inject focus related props into children we have to do a lookahead\n  // to check if there is a `selected` item. We're looking for the last `selected`\n  // item and use the first valid item as a fallback\n  React.Children.forEach(children, (child, index) => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      if (activeItemIndex === index) {\n        activeItemIndex += 1;\n        if (activeItemIndex >= children.length) {\n          // there are no focusable items within the list.\n          activeItemIndex = -1;\n        }\n      }\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    if (!child.props.disabled) {\n      if (variant === 'selectedMenu' && child.props.selected) {\n        activeItemIndex = index;\n      } else if (activeItemIndex === -1) {\n        activeItemIndex = index;\n      }\n    }\n    if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {\n      activeItemIndex += 1;\n      if (activeItemIndex >= children.length) {\n        // there are no focusable items within the list.\n        activeItemIndex = -1;\n      }\n    }\n  });\n  const items = React.Children.map(children, (child, index) => {\n    if (index === activeItemIndex) {\n      const newChildProps = {};\n      if (autoFocusItem) {\n        newChildProps.autoFocus = true;\n      }\n      if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n        newChildProps.tabIndex = 0;\n      }\n      return /*#__PURE__*/React.cloneElement(child, newChildProps);\n    }\n    return child;\n  });\n  return /*#__PURE__*/_jsx(List, _extends({\n    role: \"menu\",\n    ref: handleRef,\n    className: className,\n    onKeyDown: handleKeyDown,\n    tabIndex: autoFocus ? 0 : -1\n  }, other, {\n    children: items\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n   * if `variant=\"selectedMenu\"`.\n   * @default false\n   */\n  autoFocusItem: PropTypes.bool,\n  /**\n   * MenuList contents, normally `MenuItem`s.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: PropTypes.bool,\n  /**\n   * If `true`, the menu items will not wrap focus.\n   * @default false\n   */\n  disableListWrap: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n   * and the vertical alignment relative to the anchor element.\n   * @default 'selectedMenu'\n   */\n  variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPopoverUtilityClass(slot) {\n  return generateUtilityClass('MuiPopover', slot);\n}\nconst popoverClasses = generateUtilityClasses('MuiPopover', ['root', 'paper']);\nexport default popoverClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n  _excluded2 = [\"action\", \"anchorEl\", \"anchorOrigin\", \"anchorPosition\", \"anchorReference\", \"children\", \"className\", \"container\", \"elevation\", \"marginThreshold\", \"open\", \"PaperProps\", \"slots\", \"slotProps\", \"transformOrigin\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\", \"disableScrollLock\"],\n  _excluded3 = [\"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport isHostComponent from '@mui/utils/isHostComponent';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport debounce from '../utils/debounce';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport useForkRef from '../utils/useForkRef';\nimport Grow from '../Grow';\nimport Modal from '../Modal';\nimport PaperBase from '../Paper';\nimport { getPopoverUtilityClass } from './popoverClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getOffsetTop(rect, vertical) {\n  let offset = 0;\n  if (typeof vertical === 'number') {\n    offset = vertical;\n  } else if (vertical === 'center') {\n    offset = rect.height / 2;\n  } else if (vertical === 'bottom') {\n    offset = rect.height;\n  }\n  return offset;\n}\nexport function getOffsetLeft(rect, horizontal) {\n  let offset = 0;\n  if (typeof horizontal === 'number') {\n    offset = horizontal;\n  } else if (horizontal === 'center') {\n    offset = rect.width / 2;\n  } else if (horizontal === 'right') {\n    offset = rect.width;\n  }\n  return offset;\n}\nfunction getTransformOriginValue(transformOrigin) {\n  return [transformOrigin.horizontal, transformOrigin.vertical].map(n => typeof n === 'number' ? `${n}px` : n).join(' ');\n}\nfunction resolveAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    paper: ['paper']\n  };\n  return composeClasses(slots, getPopoverUtilityClass, classes);\n};\nexport const PopoverRoot = styled(Modal, {\n  name: 'MuiPopover',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nexport const PopoverPaper = styled(PaperBase, {\n  name: 'MuiPopover',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})({\n  position: 'absolute',\n  overflowY: 'auto',\n  overflowX: 'hidden',\n  // So we see the popover when it's empty.\n  // It's most likely on issue on userland.\n  minWidth: 16,\n  minHeight: 16,\n  maxWidth: 'calc(100% - 32px)',\n  maxHeight: 'calc(100% - 32px)',\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n});\nconst Popover = /*#__PURE__*/React.forwardRef(function Popover(inProps, ref) {\n  var _slotProps$paper, _slots$root, _slots$paper;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiPopover'\n  });\n  const {\n      action,\n      anchorEl,\n      anchorOrigin = {\n        vertical: 'top',\n        horizontal: 'left'\n      },\n      anchorPosition,\n      anchorReference = 'anchorEl',\n      children,\n      className,\n      container: containerProp,\n      elevation = 8,\n      marginThreshold = 16,\n      open,\n      PaperProps: PaperPropsProp = {},\n      slots,\n      slotProps,\n      transformOrigin = {\n        vertical: 'top',\n        horizontal: 'left'\n      },\n      TransitionComponent = Grow,\n      transitionDuration: transitionDurationProp = 'auto',\n      TransitionProps: {\n        onEntering\n      } = {},\n      disableScrollLock = false\n    } = props,\n    TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const externalPaperSlotProps = (_slotProps$paper = slotProps == null ? void 0 : slotProps.paper) != null ? _slotProps$paper : PaperPropsProp;\n  const paperRef = React.useRef();\n  const handlePaperRef = useForkRef(paperRef, externalPaperSlotProps.ref);\n  const ownerState = _extends({}, props, {\n    anchorOrigin,\n    anchorReference,\n    elevation,\n    marginThreshold,\n    externalPaperSlotProps,\n    transformOrigin,\n    TransitionComponent,\n    transitionDuration: transitionDurationProp,\n    TransitionProps\n  });\n  const classes = useUtilityClasses(ownerState);\n\n  // Returns the top/left offset of the position\n  // to attach to on the anchor element (or body if none is provided)\n  const getAnchorOffset = React.useCallback(() => {\n    if (anchorReference === 'anchorPosition') {\n      if (process.env.NODE_ENV !== 'production') {\n        if (!anchorPosition) {\n          console.error('MUI: You need to provide a `anchorPosition` prop when using ' + '<Popover anchorReference=\"anchorPosition\" />.');\n        }\n      }\n      return anchorPosition;\n    }\n    const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n\n    // If an anchor element wasn't provided, just use the parent body element of this Popover\n    const anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : ownerDocument(paperRef.current).body;\n    const anchorRect = anchorElement.getBoundingClientRect();\n    if (process.env.NODE_ENV !== 'production') {\n      const box = anchorElement.getBoundingClientRect();\n      if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n        console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n      }\n    }\n    return {\n      top: anchorRect.top + getOffsetTop(anchorRect, anchorOrigin.vertical),\n      left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)\n    };\n  }, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]);\n\n  // Returns the base transform origin using the element\n  const getTransformOrigin = React.useCallback(elemRect => {\n    return {\n      vertical: getOffsetTop(elemRect, transformOrigin.vertical),\n      horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)\n    };\n  }, [transformOrigin.horizontal, transformOrigin.vertical]);\n  const getPositioningStyle = React.useCallback(element => {\n    const elemRect = {\n      width: element.offsetWidth,\n      height: element.offsetHeight\n    };\n\n    // Get the transform origin point on the element itself\n    const elemTransformOrigin = getTransformOrigin(elemRect);\n    if (anchorReference === 'none') {\n      return {\n        top: null,\n        left: null,\n        transformOrigin: getTransformOriginValue(elemTransformOrigin)\n      };\n    }\n\n    // Get the offset of the anchoring element\n    const anchorOffset = getAnchorOffset();\n\n    // Calculate element positioning\n    let top = anchorOffset.top - elemTransformOrigin.vertical;\n    let left = anchorOffset.left - elemTransformOrigin.horizontal;\n    const bottom = top + elemRect.height;\n    const right = left + elemRect.width;\n\n    // Use the parent window of the anchorEl if provided\n    const containerWindow = ownerWindow(resolveAnchorEl(anchorEl));\n\n    // Window thresholds taking required margin into account\n    const heightThreshold = containerWindow.innerHeight - marginThreshold;\n    const widthThreshold = containerWindow.innerWidth - marginThreshold;\n\n    // Check if the vertical axis needs shifting\n    if (marginThreshold !== null && top < marginThreshold) {\n      const diff = top - marginThreshold;\n      top -= diff;\n      elemTransformOrigin.vertical += diff;\n    } else if (marginThreshold !== null && bottom > heightThreshold) {\n      const diff = bottom - heightThreshold;\n      top -= diff;\n      elemTransformOrigin.vertical += diff;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (elemRect.height > heightThreshold && elemRect.height && heightThreshold) {\n        console.error(['MUI: The popover component is too tall.', `Some part of it can not be seen on the screen (${elemRect.height - heightThreshold}px).`, 'Please consider adding a `max-height` to improve the user-experience.'].join('\\n'));\n      }\n    }\n\n    // Check if the horizontal axis needs shifting\n    if (marginThreshold !== null && left < marginThreshold) {\n      const diff = left - marginThreshold;\n      left -= diff;\n      elemTransformOrigin.horizontal += diff;\n    } else if (right > widthThreshold) {\n      const diff = right - widthThreshold;\n      left -= diff;\n      elemTransformOrigin.horizontal += diff;\n    }\n    return {\n      top: `${Math.round(top)}px`,\n      left: `${Math.round(left)}px`,\n      transformOrigin: getTransformOriginValue(elemTransformOrigin)\n    };\n  }, [anchorEl, anchorReference, getAnchorOffset, getTransformOrigin, marginThreshold]);\n  const [isPositioned, setIsPositioned] = React.useState(open);\n  const setPositioningStyles = React.useCallback(() => {\n    const element = paperRef.current;\n    if (!element) {\n      return;\n    }\n    const positioning = getPositioningStyle(element);\n    if (positioning.top !== null) {\n      element.style.top = positioning.top;\n    }\n    if (positioning.left !== null) {\n      element.style.left = positioning.left;\n    }\n    element.style.transformOrigin = positioning.transformOrigin;\n    setIsPositioned(true);\n  }, [getPositioningStyle]);\n  React.useEffect(() => {\n    if (disableScrollLock) {\n      window.addEventListener('scroll', setPositioningStyles);\n    }\n    return () => window.removeEventListener('scroll', setPositioningStyles);\n  }, [anchorEl, disableScrollLock, setPositioningStyles]);\n  const handleEntering = (element, isAppearing) => {\n    if (onEntering) {\n      onEntering(element, isAppearing);\n    }\n    setPositioningStyles();\n  };\n  const handleExited = () => {\n    setIsPositioned(false);\n  };\n  React.useEffect(() => {\n    if (open) {\n      setPositioningStyles();\n    }\n  });\n  React.useImperativeHandle(action, () => open ? {\n    updatePosition: () => {\n      setPositioningStyles();\n    }\n  } : null, [open, setPositioningStyles]);\n  React.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n    const handleResize = debounce(() => {\n      setPositioningStyles();\n    });\n    const containerWindow = ownerWindow(anchorEl);\n    containerWindow.addEventListener('resize', handleResize);\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n    };\n  }, [anchorEl, open, setPositioningStyles]);\n  let transitionDuration = transitionDurationProp;\n  if (transitionDurationProp === 'auto' && !TransitionComponent.muiSupportAuto) {\n    transitionDuration = undefined;\n  }\n\n  // If the container prop is provided, use that\n  // If the anchorEl prop is provided, use its parent body element as the container\n  // If neither are provided let the Modal take care of choosing the container\n  const container = containerProp || (anchorEl ? ownerDocument(resolveAnchorEl(anchorEl)).body : undefined);\n  const RootSlot = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : PopoverRoot;\n  const PaperSlot = (_slots$paper = slots == null ? void 0 : slots.paper) != null ? _slots$paper : PopoverPaper;\n  const paperProps = useSlotProps({\n    elementType: PaperSlot,\n    externalSlotProps: _extends({}, externalPaperSlotProps, {\n      style: isPositioned ? externalPaperSlotProps.style : _extends({}, externalPaperSlotProps.style, {\n        opacity: 0\n      })\n    }),\n    additionalProps: {\n      elevation,\n      ref: handlePaperRef\n    },\n    ownerState,\n    className: clsx(classes.paper, externalPaperSlotProps == null ? void 0 : externalPaperSlotProps.className)\n  });\n  const _useSlotProps = useSlotProps({\n      elementType: RootSlot,\n      externalSlotProps: (slotProps == null ? void 0 : slotProps.root) || {},\n      externalForwardedProps: other,\n      additionalProps: {\n        ref,\n        slotProps: {\n          backdrop: {\n            invisible: true\n          }\n        },\n        container,\n        open\n      },\n      ownerState,\n      className: clsx(classes.root, className)\n    }),\n    {\n      slotProps: rootSlotPropsProp\n    } = _useSlotProps,\n    rootProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded3);\n  return /*#__PURE__*/_jsx(RootSlot, _extends({}, rootProps, !isHostComponent(RootSlot) && {\n    slotProps: rootSlotPropsProp,\n    disableScrollLock\n  }, {\n    children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n      appear: true,\n      in: open,\n      onEntering: handleEntering,\n      onExited: handleExited,\n      timeout: transitionDuration\n    }, TransitionProps, {\n      children: /*#__PURE__*/_jsx(PaperSlot, _extends({}, paperProps, {\n        children: children\n      }))\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popover.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A ref for imperative actions.\n   * It currently only supports updatePosition() action.\n   */\n  action: refType,\n  /**\n   * An HTML element, [PopoverVirtualElement](/material-ui/react-popover/#virtual-element),\n   * or a function that returns either.\n   * It's used to set the position of the popover.\n   */\n  anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), props => {\n    if (props.open && (!props.anchorReference || props.anchorReference === 'anchorEl')) {\n      const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n      if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {\n        const box = resolvedAnchorEl.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else {\n        return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', `It should be an Element or PopoverVirtualElement instance but it's \\`${resolvedAnchorEl}\\` instead.`].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * This is the point on the anchor where the popover's\n   * `anchorEl` will attach to. This is not used when the\n   * anchorReference is 'anchorPosition'.\n   *\n   * Options:\n   * vertical: [top, center, bottom];\n   * horizontal: [left, center, right].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n    vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n  }),\n  /**\n   * This is the position that may be used to set the position of the popover.\n   * The coordinates are relative to the application's client area.\n   */\n  anchorPosition: PropTypes.shape({\n    left: PropTypes.number.isRequired,\n    top: PropTypes.number.isRequired\n  }),\n  /**\n   * This determines which anchor prop to refer to when setting\n   * the position of the popover.\n   * @default 'anchorEl'\n   */\n  anchorReference: PropTypes.oneOf(['anchorEl', 'anchorPosition', 'none']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * An HTML element, component instance, or function that returns either.\n   * The `container` will passed to the Modal component.\n   *\n   * By default, it uses the body of the anchorEl's top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * Disable the scroll lock behavior.\n   * @default false\n   */\n  disableScrollLock: PropTypes.bool,\n  /**\n   * The elevation of the popover.\n   * @default 8\n   */\n  elevation: integerPropType,\n  /**\n   * Specifies how close to the edge of the window the popover can appear.\n   * If null, the popover will not be constrained by the window.\n   * @default 16\n   */\n  marginThreshold: PropTypes.number,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n   *\n   * This prop is an alias for `slotProps.paper` and will be overriden by it if both are used.\n   * @deprecated Use `slotProps.paper` instead.\n   *\n   * @default {}\n   */\n  PaperProps: PropTypes /* @typescript-to-proptypes-ignore */.shape({\n    component: elementTypeAcceptingRef\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    paper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    paper: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * This is the point on the popover which\n   * will attach to the anchor's origin.\n   *\n   * Options:\n   * vertical: [top, center, bottom, x(px)];\n   * horizontal: [left, center, right, x(px)].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  transformOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n    vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n  }),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Grow\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Popover;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getMenuUtilityClass(slot) {\n  return generateUtilityClass('MuiMenu', slot);\n}\nconst menuClasses = generateUtilityClasses('MuiMenu', ['root', 'paper', 'list']);\nexport default menuClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n  _excluded2 = [\"autoFocus\", \"children\", \"className\", \"disableAutoFocusItem\", \"MenuListProps\", \"onClose\", \"open\", \"PaperProps\", \"PopoverClasses\", \"transitionDuration\", \"TransitionProps\", \"variant\", \"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport MenuList from '../MenuList';\nimport Popover, { PopoverPaper } from '../Popover';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getMenuUtilityClass } from './menuClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RTL_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'right'\n};\nconst LTR_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'left'\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    paper: ['paper'],\n    list: ['list']\n  };\n  return composeClasses(slots, getMenuUtilityClass, classes);\n};\nconst MenuRoot = styled(Popover, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiMenu',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nexport const MenuPaper = styled(PopoverPaper, {\n  name: 'MuiMenu',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})({\n  // specZ: The maximum height of a simple menu should be one or more rows less than the view\n  // height. This ensures a tappable area outside of the simple menu with which to dismiss\n  // the menu.\n  maxHeight: 'calc(100% - 96px)',\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch'\n});\nconst MenuMenuList = styled(MenuList, {\n  name: 'MuiMenu',\n  slot: 'List',\n  overridesResolver: (props, styles) => styles.list\n})({\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n});\nconst Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {\n  var _slots$paper, _slotProps$paper;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiMenu'\n  });\n  const {\n      autoFocus = true,\n      children,\n      className,\n      disableAutoFocusItem = false,\n      MenuListProps = {},\n      onClose,\n      open,\n      PaperProps = {},\n      PopoverClasses,\n      transitionDuration = 'auto',\n      TransitionProps: {\n        onEntering\n      } = {},\n      variant = 'selectedMenu',\n      slots = {},\n      slotProps = {}\n    } = props,\n    TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const isRtl = useRtl();\n  const ownerState = _extends({}, props, {\n    autoFocus,\n    disableAutoFocusItem,\n    MenuListProps,\n    onEntering,\n    PaperProps,\n    transitionDuration,\n    TransitionProps,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const autoFocusItem = autoFocus && !disableAutoFocusItem && open;\n  const menuListActionsRef = React.useRef(null);\n  const handleEntering = (element, isAppearing) => {\n    if (menuListActionsRef.current) {\n      menuListActionsRef.current.adjustStyleForScrollbar(element, {\n        direction: isRtl ? 'rtl' : 'ltr'\n      });\n    }\n    if (onEntering) {\n      onEntering(element, isAppearing);\n    }\n  };\n  const handleListKeyDown = event => {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n      if (onClose) {\n        onClose(event, 'tabKeyDown');\n      }\n    }\n  };\n\n  /**\n   * the index of the item should receive focus\n   * in a `variant=\"selectedMenu\"` it's the first `selected` item\n   * otherwise it's the very first item.\n   */\n  let activeItemIndex = -1;\n  // since we inject focus related props into children we have to do a lookahead\n  // to check if there is a `selected` item. We're looking for the last `selected`\n  // item and use the first valid item as a fallback\n  React.Children.map(children, (child, index) => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    if (!child.props.disabled) {\n      if (variant === 'selectedMenu' && child.props.selected) {\n        activeItemIndex = index;\n      } else if (activeItemIndex === -1) {\n        activeItemIndex = index;\n      }\n    }\n  });\n  const PaperSlot = (_slots$paper = slots.paper) != null ? _slots$paper : MenuPaper;\n  const paperExternalSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : PaperProps;\n  const rootSlotProps = useSlotProps({\n    elementType: slots.root,\n    externalSlotProps: slotProps.root,\n    ownerState,\n    className: [classes.root, className]\n  });\n  const paperSlotProps = useSlotProps({\n    elementType: PaperSlot,\n    externalSlotProps: paperExternalSlotProps,\n    ownerState,\n    className: classes.paper\n  });\n  return /*#__PURE__*/_jsx(MenuRoot, _extends({\n    onClose: onClose,\n    anchorOrigin: {\n      vertical: 'bottom',\n      horizontal: isRtl ? 'right' : 'left'\n    },\n    transformOrigin: isRtl ? RTL_ORIGIN : LTR_ORIGIN,\n    slots: {\n      paper: PaperSlot,\n      root: slots.root\n    },\n    slotProps: {\n      root: rootSlotProps,\n      paper: paperSlotProps\n    },\n    open: open,\n    ref: ref,\n    transitionDuration: transitionDuration,\n    TransitionProps: _extends({\n      onEntering: handleEntering\n    }, TransitionProps),\n    ownerState: ownerState\n  }, other, {\n    classes: PopoverClasses,\n    children: /*#__PURE__*/_jsx(MenuMenuList, _extends({\n      onKeyDown: handleListKeyDown,\n      actions: menuListActionsRef,\n      autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),\n      autoFocusItem: autoFocusItem,\n      variant: variant\n    }, MenuListProps, {\n      className: clsx(classes.list, MenuListProps.className),\n      children: children\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Menu.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * An HTML element, or a function that returns one.\n   * It's used to set the position of the menu.\n   */\n  anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * If `true` (Default) will focus the `[role=\"menu\"]` if no focusable child is found. Disabled\n   * children are not focusable. If you set this prop to `false` focus will be placed\n   * on the parent modal container. This has severe accessibility implications\n   * and should only be considered if you manage focus otherwise.\n   * @default true\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Menu contents, normally `MenuItem`s.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * When opening the menu will not focus the active item but the `[role=\"menu\"]`\n   * unless `autoFocus` is also set to `false`. Not using the default means not\n   * following WAI-ARIA authoring practices. Please be considerate about possible\n   * accessibility implications.\n   * @default false\n   */\n  disableAutoFocusItem: PropTypes.bool,\n  /**\n   * Props applied to the [`MenuList`](/material-ui/api/menu-list/) element.\n   * @default {}\n   */\n  MenuListProps: PropTypes.object,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`, `\"tabKeyDown\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * @ignore\n   */\n  PaperProps: PropTypes.object,\n  /**\n   * `classes` prop applied to the [`Popover`](/material-ui/api/popover/) element.\n   */\n  PopoverClasses: PropTypes.object,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    paper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    paper: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The length of the transition in `ms`, or 'auto'\n   * @default 'auto'\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: PropTypes.object,\n  /**\n   * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.\n   * @default 'selectedMenu'\n   */\n  variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default Menu;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getMenuItemUtilityClass(slot) {\n  return generateUtilityClass('MuiMenuItem', slot);\n}\nconst menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);\nexport default menuItemClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"component\", \"dense\", \"divider\", \"disableGutters\", \"focusVisibleClassName\", \"role\", \"tabIndex\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ListContext from '../List/ListContext';\nimport ButtonBase from '../ButtonBase';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport { dividerClasses } from '../Divider';\nimport { listItemIconClasses } from '../ListItemIcon';\nimport { listItemTextClasses } from '../ListItemText';\nimport menuItemClasses, { getMenuItemUtilityClass } from './menuItemClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    dense,\n    divider,\n    disableGutters,\n    selected,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', disabled && 'disabled', !disableGutters && 'gutters', divider && 'divider', selected && 'selected']\n  };\n  const composedClasses = composeClasses(slots, getMenuItemUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst MenuItemRoot = styled(ButtonBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiMenuItem',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({}, theme.typography.body1, {\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  minHeight: 48,\n  paddingTop: 6,\n  paddingBottom: 6,\n  boxSizing: 'border-box',\n  whiteSpace: 'nowrap'\n}, !ownerState.disableGutters && {\n  paddingLeft: 16,\n  paddingRight: 16\n}, ownerState.divider && {\n  borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n  backgroundClip: 'padding-box'\n}, {\n  '&:hover': {\n    textDecoration: 'none',\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${menuItemClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    [`&.${menuItemClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  },\n  [`&.${menuItemClasses.selected}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n    }\n  },\n  [`&.${menuItemClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${menuItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  [`& + .${dividerClasses.root}`]: {\n    marginTop: theme.spacing(1),\n    marginBottom: theme.spacing(1)\n  },\n  [`& + .${dividerClasses.inset}`]: {\n    marginLeft: 52\n  },\n  [`& .${listItemTextClasses.root}`]: {\n    marginTop: 0,\n    marginBottom: 0\n  },\n  [`& .${listItemTextClasses.inset}`]: {\n    paddingLeft: 36\n  },\n  [`& .${listItemIconClasses.root}`]: {\n    minWidth: 36\n  }\n}, !ownerState.dense && {\n  [theme.breakpoints.up('sm')]: {\n    minHeight: 'auto'\n  }\n}, ownerState.dense && _extends({\n  minHeight: 32,\n  // https://m2.material.io/components/menus#specs > Dense\n  paddingTop: 4,\n  paddingBottom: 4\n}, theme.typography.body2, {\n  [`& .${listItemIconClasses.root} svg`]: {\n    fontSize: '1.25rem'\n  }\n})));\nconst MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiMenuItem'\n  });\n  const {\n      autoFocus = false,\n      component = 'li',\n      dense = false,\n      divider = false,\n      disableGutters = false,\n      focusVisibleClassName,\n      role = 'menuitem',\n      tabIndex: tabIndexProp,\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    disableGutters\n  }), [context.dense, dense, disableGutters]);\n  const menuItemRef = React.useRef(null);\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      if (menuItemRef.current) {\n        menuItemRef.current.focus();\n      } else if (process.env.NODE_ENV !== 'production') {\n        console.error('MUI: Unable to set focus to a MenuItem whose component has not been rendered.');\n      }\n    }\n  }, [autoFocus]);\n  const ownerState = _extends({}, props, {\n    dense: childContext.dense,\n    divider,\n    disableGutters\n  });\n  const classes = useUtilityClasses(props);\n  const handleRef = useForkRef(menuItemRef, ref);\n  let tabIndex;\n  if (!props.disabled) {\n    tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n  }\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsx(MenuItemRoot, _extends({\n      ref: handleRef,\n      role: role,\n      tabIndex: tabIndex,\n      component: component,\n      focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n      className: clsx(classes.root, className)\n    }, other, {\n      ownerState: ownerState,\n      classes: classes\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the list item is focused during the first mount.\n   * Focus will also be triggered if the value changes from false to true.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent Menu component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the menu item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * If `true`, the component is selected.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @default 0\n   */\n  tabIndex: PropTypes.number\n} : void 0;\nexport default MenuItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getNativeSelectUtilityClasses(slot) {\n  return generateUtilityClass('MuiNativeSelect', slot);\n}\nconst nativeSelectClasses = generateUtilityClasses('MuiNativeSelect', ['root', 'select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput', 'error']);\nexport default nativeSelectClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"error\", \"IconComponent\", \"inputRef\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport nativeSelectClasses, { getNativeSelectUtilityClasses } from './nativeSelectClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    disabled,\n    multiple,\n    open,\n    error\n  } = ownerState;\n  const slots = {\n    select: ['select', variant, disabled && 'disabled', multiple && 'multiple', error && 'error'],\n    icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled']\n  };\n  return composeClasses(slots, getNativeSelectUtilityClasses, classes);\n};\nexport const nativeSelectSelectStyles = ({\n  ownerState,\n  theme\n}) => _extends({\n  MozAppearance: 'none',\n  // Reset\n  WebkitAppearance: 'none',\n  // Reset\n  // When interacting quickly, the text can end up selected.\n  // Native select can't be selected either.\n  userSelect: 'none',\n  borderRadius: 0,\n  // Reset\n  cursor: 'pointer',\n  '&:focus': _extends({}, theme.vars ? {\n    backgroundColor: `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.05)`\n  } : {\n    backgroundColor: theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255, 255, 255, 0.05)'\n  }, {\n    borderRadius: 0 // Reset Chrome style\n  }),\n  // Remove IE11 arrow\n  '&::-ms-expand': {\n    display: 'none'\n  },\n  [`&.${nativeSelectClasses.disabled}`]: {\n    cursor: 'default'\n  },\n  '&[multiple]': {\n    height: 'auto'\n  },\n  '&:not([multiple]) option, &:not([multiple]) optgroup': {\n    backgroundColor: (theme.vars || theme).palette.background.paper\n  },\n  // Bump specificity to allow extending custom inputs\n  '&&&': {\n    paddingRight: 24,\n    minWidth: 16 // So it doesn't collapse.\n  }\n}, ownerState.variant === 'filled' && {\n  '&&&': {\n    paddingRight: 32\n  }\n}, ownerState.variant === 'outlined' && {\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  '&:focus': {\n    borderRadius: (theme.vars || theme).shape.borderRadius // Reset the reset for Chrome style\n  },\n  '&&&': {\n    paddingRight: 32\n  }\n});\nconst NativeSelectSelect = styled('select', {\n  name: 'MuiNativeSelect',\n  slot: 'Select',\n  shouldForwardProp: rootShouldForwardProp,\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.select, styles[ownerState.variant], ownerState.error && styles.error, {\n      [`&.${nativeSelectClasses.multiple}`]: styles.multiple\n    }];\n  }\n})(nativeSelectSelectStyles);\nexport const nativeSelectIconStyles = ({\n  ownerState,\n  theme\n}) => _extends({\n  // We use a position absolute over a flexbox in order to forward the pointer events\n  // to the input and to support wrapping tags..\n  position: 'absolute',\n  right: 0,\n  top: 'calc(50% - .5em)',\n  // Center vertically, height is 1em\n  pointerEvents: 'none',\n  // Don't block pointer events on the select under the icon.\n  color: (theme.vars || theme).palette.action.active,\n  [`&.${nativeSelectClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  }\n}, ownerState.open && {\n  transform: 'rotate(180deg)'\n}, ownerState.variant === 'filled' && {\n  right: 7\n}, ownerState.variant === 'outlined' && {\n  right: 7\n});\nconst NativeSelectIcon = styled('svg', {\n  name: 'MuiNativeSelect',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n  }\n})(nativeSelectIconStyles);\n\n/**\n * @ignore - internal component.\n */\nconst NativeSelectInput = /*#__PURE__*/React.forwardRef(function NativeSelectInput(props, ref) {\n  const {\n      className,\n      disabled,\n      error,\n      IconComponent,\n      inputRef,\n      variant = 'standard'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    disabled,\n    variant,\n    error\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(NativeSelectSelect, _extends({\n      ownerState: ownerState,\n      className: clsx(classes.select, className),\n      disabled: disabled,\n      ref: inputRef || ref\n    }, other)), props.multiple ? null : /*#__PURE__*/_jsx(NativeSelectIcon, {\n      as: IconComponent,\n      ownerState: ownerState,\n      className: classes.icon\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? NativeSelectInput.propTypes = {\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<option>` elements.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The CSS class name of the select element.\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the select is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the `select input` will indicate an error.\n   */\n  error: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: PropTypes.elementType.isRequired,\n  /**\n   * Use that prop to pass a ref to the native select element.\n   * @deprecated\n   */\n  inputRef: refType,\n  /**\n   * @ignore\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The input value.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default NativeSelectInput;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"classes\", \"className\", \"label\", \"notched\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NotchedOutlineRoot = styled('fieldset', {\n  name: 'MuiNotchedOutlined',\n  shouldForwardProp: rootShouldForwardProp\n})({\n  textAlign: 'left',\n  position: 'absolute',\n  bottom: 0,\n  right: 0,\n  top: -5,\n  left: 0,\n  margin: 0,\n  padding: '0 8px',\n  pointerEvents: 'none',\n  borderRadius: 'inherit',\n  borderStyle: 'solid',\n  borderWidth: 1,\n  overflow: 'hidden',\n  minWidth: '0%'\n});\nconst NotchedOutlineLegend = styled('legend', {\n  name: 'MuiNotchedOutlined',\n  shouldForwardProp: rootShouldForwardProp\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  float: 'unset',\n  // Fix conflict with bootstrap\n  width: 'auto',\n  // Fix conflict with bootstrap\n  overflow: 'hidden'\n}, !ownerState.withLabel && {\n  padding: 0,\n  lineHeight: '11px',\n  // sync with `height` in `legend` styles\n  transition: theme.transitions.create('width', {\n    duration: 150,\n    easing: theme.transitions.easing.easeOut\n  })\n}, ownerState.withLabel && _extends({\n  display: 'block',\n  // Fix conflict with normalize.css and sanitize.css\n  padding: 0,\n  height: 11,\n  // sync with `lineHeight` in `legend` styles\n  fontSize: '0.75em',\n  visibility: 'hidden',\n  maxWidth: 0.01,\n  transition: theme.transitions.create('max-width', {\n    duration: 50,\n    easing: theme.transitions.easing.easeOut\n  }),\n  whiteSpace: 'nowrap',\n  '& > span': {\n    paddingLeft: 5,\n    paddingRight: 5,\n    display: 'inline-block',\n    opacity: 0,\n    visibility: 'visible'\n  }\n}, ownerState.notched && {\n  maxWidth: '100%',\n  transition: theme.transitions.create('max-width', {\n    duration: 100,\n    easing: theme.transitions.easing.easeOut,\n    delay: 50\n  })\n})));\n\n/**\n * @ignore - internal component.\n */\nexport default function NotchedOutline(props) {\n  const {\n      className,\n      label,\n      notched\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const withLabel = label != null && label !== '';\n  const ownerState = _extends({}, props, {\n    notched,\n    withLabel\n  });\n  return /*#__PURE__*/_jsx(NotchedOutlineRoot, _extends({\n    \"aria-hidden\": true,\n    className: className,\n    ownerState: ownerState\n  }, other, {\n    children: /*#__PURE__*/_jsx(NotchedOutlineLegend, {\n      ownerState: ownerState,\n      children: withLabel ? /*#__PURE__*/_jsx(\"span\", {\n        children: label\n      }) : // notranslate needed while Google Translate will not fix zero-width space issue\n      _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      }))\n    })\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? NotchedOutline.propTypes = {\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The label.\n   */\n  label: PropTypes.node,\n  /**\n   * If `true`, the outline is notched to accommodate the label.\n   */\n  notched: PropTypes.bool.isRequired,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object\n} : void 0;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"components\", \"fullWidth\", \"inputComponent\", \"label\", \"multiline\", \"notched\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport NotchedOutline from './NotchedOutline';\nimport useFormControl from '../FormControl/useFormControl';\nimport formControlState from '../FormControl/formControlState';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport outlinedInputClasses, { getOutlinedInputUtilityClass } from './outlinedInputClasses';\nimport InputBase, { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    notchedOutline: ['notchedOutline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getOutlinedInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst OutlinedInputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiOutlinedInput',\n  slot: 'Root',\n  overridesResolver: inputBaseRootOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return _extends({\n    position: 'relative',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.text.primary\n    },\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n        borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n      }\n    },\n    [`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette[ownerState.color].main,\n      borderWidth: 2\n    },\n    [`&.${outlinedInputClasses.error} .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.error.main\n    },\n    [`&.${outlinedInputClasses.disabled} .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.action.disabled\n    }\n  }, ownerState.startAdornment && {\n    paddingLeft: 14\n  }, ownerState.endAdornment && {\n    paddingRight: 14\n  }, ownerState.multiline && _extends({\n    padding: '16.5px 14px'\n  }, ownerState.size === 'small' && {\n    padding: '8.5px 14px'\n  }));\n});\nconst NotchedOutlineRoot = styled(NotchedOutline, {\n  name: 'MuiOutlinedInput',\n  slot: 'NotchedOutline',\n  overridesResolver: (props, styles) => styles.notchedOutline\n})(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return {\n    borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n  };\n});\nconst OutlinedInputInput = styled(InputBaseInput, {\n  name: 'MuiOutlinedInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  padding: '16.5px 14px'\n}, !theme.vars && {\n  '&:-webkit-autofill': {\n    WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n    WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n    caretColor: theme.palette.mode === 'light' ? null : '#fff',\n    borderRadius: 'inherit'\n  }\n}, theme.vars && {\n  '&:-webkit-autofill': {\n    borderRadius: 'inherit'\n  },\n  [theme.getColorSchemeSelector('dark')]: {\n    '&:-webkit-autofill': {\n      WebkitBoxShadow: '0 0 0 100px #266798 inset',\n      WebkitTextFillColor: '#fff',\n      caretColor: '#fff'\n    }\n  }\n}, ownerState.size === 'small' && {\n  padding: '8.5px 14px'\n}, ownerState.multiline && {\n  padding: 0\n}, ownerState.startAdornment && {\n  paddingLeft: 0\n}, ownerState.endAdornment && {\n  paddingRight: 0\n}));\nconst OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input, _React$Fragment;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiOutlinedInput'\n  });\n  const {\n      components = {},\n      fullWidth = false,\n      inputComponent = 'input',\n      label,\n      multiline = false,\n      notched,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(props);\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['color', 'disabled', 'error', 'focused', 'hiddenLabel', 'size', 'required']\n  });\n  const ownerState = _extends({}, props, {\n    color: fcs.color || 'primary',\n    disabled: fcs.disabled,\n    error: fcs.error,\n    focused: fcs.focused,\n    formControl: muiFormControl,\n    fullWidth,\n    hiddenLabel: fcs.hiddenLabel,\n    multiline,\n    size: fcs.size,\n    type\n  });\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : OutlinedInputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : OutlinedInputInput;\n  return /*#__PURE__*/_jsx(InputBase, _extends({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    renderSuffix: state => /*#__PURE__*/_jsx(NotchedOutlineRoot, {\n      ownerState: ownerState,\n      className: classes.notchedOutline,\n      label: label != null && label !== '' && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [label, \"\\u2009\", '*']\n      })) : label,\n      notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)\n    }),\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: _extends({}, classes, {\n      notchedOutline: null\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? OutlinedInput.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label of the `input`. It is only used for layout. The actual labelling\n   * is handled by `InputLabel`.\n   */\n  label: PropTypes.node,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * If `true`, the outline is notched to accommodate the label.\n   */\n  notched: PropTypes.bool,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nOutlinedInput.muiName = 'Input';\nexport default OutlinedInput;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSelectUtilityClasses(slot) {\n  return generateUtilityClass('MuiSelect', slot);\n}\nconst selectClasses = generateUtilityClasses('MuiSelect', ['root', 'select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'focused', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput', 'error']);\nexport default selectClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nvar _span;\nconst _excluded = [\"aria-describedby\", \"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"className\", \"defaultOpen\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"error\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport refType from '@mui/utils/refType';\nimport ownerDocument from '../utils/ownerDocument';\nimport capitalize from '../utils/capitalize';\nimport Menu from '../Menu/Menu';\nimport { nativeSelectSelectStyles, nativeSelectIconStyles } from '../NativeSelect/NativeSelectInput';\nimport { isFilled } from '../InputBase/utils';\nimport styled, { slotShouldForwardProp } from '../styles/styled';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nimport selectClasses, { getSelectUtilityClasses } from './selectClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst SelectSelect = styled('div', {\n  name: 'MuiSelect',\n  slot: 'Select',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [\n    // Win specificity over the input base\n    {\n      [`&.${selectClasses.select}`]: styles.select\n    }, {\n      [`&.${selectClasses.select}`]: styles[ownerState.variant]\n    }, {\n      [`&.${selectClasses.error}`]: styles.error\n    }, {\n      [`&.${selectClasses.multiple}`]: styles.multiple\n    }];\n  }\n})(nativeSelectSelectStyles, {\n  // Win specificity over the input base\n  [`&.${selectClasses.select}`]: {\n    height: 'auto',\n    // Resets for multiple select with chips\n    minHeight: '1.4375em',\n    // Required for select\\text-field height consistency\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden'\n  }\n});\nconst SelectIcon = styled('svg', {\n  name: 'MuiSelect',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n  }\n})(nativeSelectIconStyles);\nconst SelectNativeInput = styled('input', {\n  shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'classes',\n  name: 'MuiSelect',\n  slot: 'NativeInput',\n  overridesResolver: (props, styles) => styles.nativeInput\n})({\n  bottom: 0,\n  left: 0,\n  position: 'absolute',\n  opacity: 0,\n  pointerEvents: 'none',\n  width: '100%',\n  boxSizing: 'border-box'\n});\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nfunction isEmpty(display) {\n  return display == null || typeof display === 'string' && !display.trim();\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    disabled,\n    multiple,\n    open,\n    error\n  } = ownerState;\n  const slots = {\n    select: ['select', variant, disabled && 'disabled', multiple && 'multiple', error && 'error'],\n    icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled'],\n    nativeInput: ['nativeInput']\n  };\n  return composeClasses(slots, getSelectUtilityClasses, classes);\n};\n\n/**\n * @ignore - internal component.\n */\nconst SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n  var _MenuProps$slotProps;\n  const {\n      'aria-describedby': ariaDescribedby,\n      'aria-label': ariaLabel,\n      autoFocus,\n      autoWidth,\n      children,\n      className,\n      defaultOpen,\n      defaultValue,\n      disabled,\n      displayEmpty,\n      error = false,\n      IconComponent,\n      inputRef: inputRefProp,\n      labelId,\n      MenuProps = {},\n      multiple,\n      name,\n      onBlur,\n      onChange,\n      onClose,\n      onFocus,\n      onOpen,\n      open: openProp,\n      readOnly,\n      renderValue,\n      SelectDisplayProps = {},\n      tabIndex: tabIndexProp\n      // catching `type` from Input which makes no sense for SelectInput\n      ,\n\n      value: valueProp,\n      variant = 'standard'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'Select'\n  });\n  const [openState, setOpenState] = useControlled({\n    controlled: openProp,\n    default: defaultOpen,\n    name: 'Select'\n  });\n  const inputRef = React.useRef(null);\n  const displayRef = React.useRef(null);\n  const [displayNode, setDisplayNode] = React.useState(null);\n  const {\n    current: isOpenControlled\n  } = React.useRef(openProp != null);\n  const [menuMinWidthState, setMenuMinWidthState] = React.useState();\n  const handleRef = useForkRef(ref, inputRefProp);\n  const handleDisplayRef = React.useCallback(node => {\n    displayRef.current = node;\n    if (node) {\n      setDisplayNode(node);\n    }\n  }, []);\n  const anchorElement = displayNode == null ? void 0 : displayNode.parentNode;\n  React.useImperativeHandle(handleRef, () => ({\n    focus: () => {\n      displayRef.current.focus();\n    },\n    node: inputRef.current,\n    value\n  }), [value]);\n\n  // Resize menu on `defaultOpen` automatic toggle.\n  React.useEffect(() => {\n    if (defaultOpen && openState && displayNode && !isOpenControlled) {\n      setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n      displayRef.current.focus();\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [displayNode, autoWidth]);\n  // `isOpenControlled` is ignored because the component should never switch between controlled and uncontrolled modes.\n  // `defaultOpen` and `openState` are ignored to avoid unnecessary callbacks.\n  React.useEffect(() => {\n    if (autoFocus) {\n      displayRef.current.focus();\n    }\n  }, [autoFocus]);\n  React.useEffect(() => {\n    if (!labelId) {\n      return undefined;\n    }\n    const label = ownerDocument(displayRef.current).getElementById(labelId);\n    if (label) {\n      const handler = () => {\n        if (getSelection().isCollapsed) {\n          displayRef.current.focus();\n        }\n      };\n      label.addEventListener('click', handler);\n      return () => {\n        label.removeEventListener('click', handler);\n      };\n    }\n    return undefined;\n  }, [labelId]);\n  const update = (open, event) => {\n    if (open) {\n      if (onOpen) {\n        onOpen(event);\n      }\n    } else if (onClose) {\n      onClose(event);\n    }\n    if (!isOpenControlled) {\n      setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n      setOpenState(open);\n    }\n  };\n  const handleMouseDown = event => {\n    // Ignore everything but left-click\n    if (event.button !== 0) {\n      return;\n    }\n    // Hijack the default focus behavior.\n    event.preventDefault();\n    displayRef.current.focus();\n    update(true, event);\n  };\n  const handleClose = event => {\n    update(false, event);\n  };\n  const childrenArray = React.Children.toArray(children);\n\n  // Support autofill.\n  const handleChange = event => {\n    const child = childrenArray.find(childItem => childItem.props.value === event.target.value);\n    if (child === undefined) {\n      return;\n    }\n    setValueState(child.props.value);\n    if (onChange) {\n      onChange(event, child);\n    }\n  };\n  const handleItemClick = child => event => {\n    let newValue;\n\n    // We use the tabindex attribute to signal the available options.\n    if (!event.currentTarget.hasAttribute('tabindex')) {\n      return;\n    }\n    if (multiple) {\n      newValue = Array.isArray(value) ? value.slice() : [];\n      const itemIndex = value.indexOf(child.props.value);\n      if (itemIndex === -1) {\n        newValue.push(child.props.value);\n      } else {\n        newValue.splice(itemIndex, 1);\n      }\n    } else {\n      newValue = child.props.value;\n    }\n    if (child.props.onClick) {\n      child.props.onClick(event);\n    }\n    if (value !== newValue) {\n      setValueState(newValue);\n      if (onChange) {\n        // Redefine target to allow name and value to be read.\n        // This allows seamless integration with the most popular form libraries.\n        // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492\n        // Clone the event to not override `target` of the original event.\n        const nativeEvent = event.nativeEvent || event;\n        const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n        Object.defineProperty(clonedEvent, 'target', {\n          writable: true,\n          value: {\n            value: newValue,\n            name\n          }\n        });\n        onChange(clonedEvent, child);\n      }\n    }\n    if (!multiple) {\n      update(false, event);\n    }\n  };\n  const handleKeyDown = event => {\n    if (!readOnly) {\n      const validKeys = [' ', 'ArrowUp', 'ArrowDown',\n      // The native select doesn't respond to enter on macOS, but it's recommended by\n      // https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/\n      'Enter'];\n      if (validKeys.indexOf(event.key) !== -1) {\n        event.preventDefault();\n        update(true, event);\n      }\n    }\n  };\n  const open = displayNode !== null && openState;\n  const handleBlur = event => {\n    // if open event.stopImmediatePropagation\n    if (!open && onBlur) {\n      // Preact support, target is read only property on a native event.\n      Object.defineProperty(event, 'target', {\n        writable: true,\n        value: {\n          value,\n          name\n        }\n      });\n      onBlur(event);\n    }\n  };\n  delete other['aria-invalid'];\n  let display;\n  let displaySingle;\n  const displayMultiple = [];\n  let computeDisplay = false;\n  let foundMatch = false;\n\n  // No need to display any value if the field is empty.\n  if (isFilled({\n    value\n  }) || displayEmpty) {\n    if (renderValue) {\n      display = renderValue(value);\n    } else {\n      computeDisplay = true;\n    }\n  }\n  const items = childrenArray.map(child => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return null;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    let selected;\n    if (multiple) {\n      if (!Array.isArray(value)) {\n        throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`value\\` prop must be an array when using the \\`Select\\` component with \\`multiple\\`.` : _formatMuiErrorMessage(2));\n      }\n      selected = value.some(v => areEqualValues(v, child.props.value));\n      if (selected && computeDisplay) {\n        displayMultiple.push(child.props.children);\n      }\n    } else {\n      selected = areEqualValues(value, child.props.value);\n      if (selected && computeDisplay) {\n        displaySingle = child.props.children;\n      }\n    }\n    if (selected) {\n      foundMatch = true;\n    }\n    return /*#__PURE__*/React.cloneElement(child, {\n      'aria-selected': selected ? 'true' : 'false',\n      onClick: handleItemClick(child),\n      onKeyUp: event => {\n        if (event.key === ' ') {\n          // otherwise our MenuItems dispatches a click event\n          // it's not behavior of the native <option> and causes\n          // the select to close immediately since we open on space keydown\n          event.preventDefault();\n        }\n        if (child.props.onKeyUp) {\n          child.props.onKeyUp(event);\n        }\n      },\n      role: 'option',\n      selected,\n      value: undefined,\n      // The value is most likely not a valid HTML attribute.\n      'data-value': child.props.value // Instead, we provide it as a data attribute.\n    });\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (!foundMatch && !multiple && value !== '') {\n        const values = childrenArray.map(child => child.props.value);\n        console.warn([`MUI: You have provided an out-of-range value \\`${value}\\` for the select ${name ? `(name=\"${name}\") ` : ''}component.`, \"Consider providing a value that matches one of the available options or ''.\", `The available values are ${values.filter(x => x != null).map(x => `\\`${x}\\``).join(', ') || '\"\"'}.`].join('\\n'));\n      }\n    }, [foundMatch, childrenArray, multiple, name, value]);\n  }\n  if (computeDisplay) {\n    if (multiple) {\n      if (displayMultiple.length === 0) {\n        display = null;\n      } else {\n        display = displayMultiple.reduce((output, child, index) => {\n          output.push(child);\n          if (index < displayMultiple.length - 1) {\n            output.push(', ');\n          }\n          return output;\n        }, []);\n      }\n    } else {\n      display = displaySingle;\n    }\n  }\n\n  // Avoid performing a layout computation in the render method.\n  let menuMinWidth = menuMinWidthState;\n  if (!autoWidth && isOpenControlled && displayNode) {\n    menuMinWidth = anchorElement.clientWidth;\n  }\n  let tabIndex;\n  if (typeof tabIndexProp !== 'undefined') {\n    tabIndex = tabIndexProp;\n  } else {\n    tabIndex = disabled ? null : 0;\n  }\n  const buttonId = SelectDisplayProps.id || (name ? `mui-component-select-${name}` : undefined);\n  const ownerState = _extends({}, props, {\n    variant,\n    value,\n    open,\n    error\n  });\n  const classes = useUtilityClasses(ownerState);\n  const paperProps = _extends({}, MenuProps.PaperProps, (_MenuProps$slotProps = MenuProps.slotProps) == null ? void 0 : _MenuProps$slotProps.paper);\n  const listboxId = useId();\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(SelectSelect, _extends({\n      ref: handleDisplayRef,\n      tabIndex: tabIndex,\n      role: \"combobox\",\n      \"aria-controls\": listboxId,\n      \"aria-disabled\": disabled ? 'true' : undefined,\n      \"aria-expanded\": open ? 'true' : 'false',\n      \"aria-haspopup\": \"listbox\",\n      \"aria-label\": ariaLabel,\n      \"aria-labelledby\": [labelId, buttonId].filter(Boolean).join(' ') || undefined,\n      \"aria-describedby\": ariaDescribedby,\n      onKeyDown: handleKeyDown,\n      onMouseDown: disabled || readOnly ? null : handleMouseDown,\n      onBlur: handleBlur,\n      onFocus: onFocus\n    }, SelectDisplayProps, {\n      ownerState: ownerState,\n      className: clsx(SelectDisplayProps.className, classes.select, className)\n      // The id is required for proper a11y\n      ,\n      id: buttonId,\n      children: isEmpty(display) ? // notranslate needed while Google Translate will not fix zero-width space issue\n      _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      })) : display\n    })), /*#__PURE__*/_jsx(SelectNativeInput, _extends({\n      \"aria-invalid\": error,\n      value: Array.isArray(value) ? value.join(',') : value,\n      name: name,\n      ref: inputRef,\n      \"aria-hidden\": true,\n      onChange: handleChange,\n      tabIndex: -1,\n      disabled: disabled,\n      className: classes.nativeInput,\n      autoFocus: autoFocus,\n      ownerState: ownerState\n    }, other)), /*#__PURE__*/_jsx(SelectIcon, {\n      as: IconComponent,\n      className: classes.icon,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(Menu, _extends({\n      id: `menu-${name || ''}`,\n      anchorEl: anchorElement,\n      open: open,\n      onClose: handleClose,\n      anchorOrigin: {\n        vertical: 'bottom',\n        horizontal: 'center'\n      },\n      transformOrigin: {\n        vertical: 'top',\n        horizontal: 'center'\n      }\n    }, MenuProps, {\n      MenuListProps: _extends({\n        'aria-labelledby': labelId,\n        role: 'listbox',\n        'aria-multiselectable': multiple ? 'true' : undefined,\n        disableListWrap: true,\n        id: listboxId\n      }, MenuProps.MenuListProps),\n      slotProps: _extends({}, MenuProps.slotProps, {\n        paper: _extends({}, paperProps, {\n          style: _extends({\n            minWidth: menuMinWidth\n          }, paperProps != null ? paperProps.style : null)\n        })\n      }),\n      children: items\n    }))]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SelectInput.propTypes = {\n  /**\n   * @ignore\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * @ignore\n   */\n  'aria-label': PropTypes.string,\n  /**\n   * @ignore\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   */\n  autoWidth: PropTypes.bool,\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<MenuItem>` elements.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The CSS class name of the select element.\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the component is toggled on mount. Use when the component open state is not controlled.\n   * You can only use it when the `native` prop is `false` (default).\n   */\n  defaultOpen: PropTypes.bool,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the select is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the selected item is displayed even if its value is empty.\n   */\n  displayEmpty: PropTypes.bool,\n  /**\n   * If `true`, the `select input` will indicate an error.\n   */\n  error: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: PropTypes.elementType.isRequired,\n  /**\n   * Imperative handle implementing `{ value: T, node: HTMLElement, focus(): void }`\n   * Equivalent to `ref`\n   */\n  inputRef: refType,\n  /**\n   * The ID of an element that acts as an additional label. The Select will\n   * be labelled by the additional label and the selected value.\n   */\n  labelId: PropTypes.string,\n  /**\n   * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n   */\n  MenuProps: PropTypes.object,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * @param {object} [child] The react element that was selected.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * Use in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be opened.\n   * Use in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * Render the selected value.\n   *\n   * @param {any} value The `value` provided to the component.\n   * @returns {ReactNode}\n   */\n  renderValue: PropTypes.func,\n  /**\n   * Props applied to the clickable div element.\n   */\n  SelectDisplayProps: PropTypes.object,\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.any,\n  /**\n   * The input value.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default SelectInput;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"autoWidth\", \"children\", \"classes\", \"className\", \"defaultOpen\", \"displayEmpty\", \"IconComponent\", \"id\", \"input\", \"inputProps\", \"label\", \"labelId\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\", \"variant\"],\n  _excluded2 = [\"root\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport deepmerge from '@mui/utils/deepmerge';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport SelectInput from './SelectInput';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport Input from '../Input';\nimport NativeSelectInput from '../NativeSelect/NativeSelectInput';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport useForkRef from '../utils/useForkRef';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  return classes;\n};\nconst styledRootConfig = {\n  name: 'MuiSelect',\n  overridesResolver: (props, styles) => styles.root,\n  shouldForwardProp: prop => rootShouldForwardProp(prop) && prop !== 'variant',\n  slot: 'Root'\n};\nconst StyledInput = styled(Input, styledRootConfig)('');\nconst StyledOutlinedInput = styled(OutlinedInput, styledRootConfig)('');\nconst StyledFilledInput = styled(FilledInput, styledRootConfig)('');\nconst Select = /*#__PURE__*/React.forwardRef(function Select(inProps, ref) {\n  const props = useDefaultProps({\n    name: 'MuiSelect',\n    props: inProps\n  });\n  const {\n      autoWidth = false,\n      children,\n      classes: classesProp = {},\n      className,\n      defaultOpen = false,\n      displayEmpty = false,\n      IconComponent = ArrowDropDownIcon,\n      id,\n      input,\n      inputProps,\n      label,\n      labelId,\n      MenuProps,\n      multiple = false,\n      native = false,\n      onClose,\n      onOpen,\n      open,\n      renderValue,\n      SelectDisplayProps,\n      variant: variantProp = 'outlined'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const inputComponent = native ? NativeSelectInput : SelectInput;\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['variant', 'error']\n  });\n  const variant = fcs.variant || variantProp;\n  const ownerState = _extends({}, props, {\n    variant,\n    classes: classesProp\n  });\n  const classes = useUtilityClasses(ownerState);\n  const restOfClasses = _objectWithoutPropertiesLoose(classes, _excluded2);\n  const InputComponent = input || {\n    standard: /*#__PURE__*/_jsx(StyledInput, {\n      ownerState: ownerState\n    }),\n    outlined: /*#__PURE__*/_jsx(StyledOutlinedInput, {\n      label: label,\n      ownerState: ownerState\n    }),\n    filled: /*#__PURE__*/_jsx(StyledFilledInput, {\n      ownerState: ownerState\n    })\n  }[variant];\n  const inputComponentRef = useForkRef(ref, getReactElementRef(InputComponent));\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(InputComponent, _extends({\n      // Most of the logic is implemented in `SelectInput`.\n      // The `Select` component is a simple API wrapper to expose something better to play with.\n      inputComponent,\n      inputProps: _extends({\n        children,\n        error: fcs.error,\n        IconComponent,\n        variant,\n        type: undefined,\n        // We render a select. We can ignore the type provided by the `Input`.\n        multiple\n      }, native ? {\n        id\n      } : {\n        autoWidth,\n        defaultOpen,\n        displayEmpty,\n        labelId,\n        MenuProps,\n        onClose,\n        onOpen,\n        open,\n        renderValue,\n        SelectDisplayProps: _extends({\n          id\n        }, SelectDisplayProps)\n      }, inputProps, {\n        classes: inputProps ? deepmerge(restOfClasses, inputProps.classes) : restOfClasses\n      }, input ? input.props.inputProps : {})\n    }, (multiple && native || displayEmpty) && variant === 'outlined' ? {\n      notched: true\n    } : {}, {\n      ref: inputComponentRef,\n      className: clsx(InputComponent.props.className, className, classes.root)\n    }, !input && {\n      variant\n    }, other))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Select.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   * @default false\n   */\n  autoWidth: PropTypes.bool,\n  /**\n   * The option elements to populate the select with.\n   * Can be some `MenuItem` when `native` is false and `option` when `native` is true.\n   *\n   * ⚠️The `MenuItem` elements **must** be direct descendants when `native` is false.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   * @default {}\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the component is initially open. Use when the component open state is not controlled (i.e. the `open` prop is not defined).\n   * You can only use it when the `native` prop is `false` (default).\n   * @default false\n   */\n  defaultOpen: PropTypes.bool,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, a value is displayed even if no items are selected.\n   *\n   * In order to display a meaningful value, a function can be passed to the `renderValue` prop which\n   * returns the value to be displayed when no items are selected.\n   *\n   * ⚠️ When using this prop, make sure the label doesn't overlap with the empty displayed value.\n   * The label should either be hidden or forced to a shrunk state.\n   * @default false\n   */\n  displayEmpty: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   * @default ArrowDropDownIcon\n   */\n  IconComponent: PropTypes.elementType,\n  /**\n   * The `id` of the wrapper element or the `select` element when `native`.\n   */\n  id: PropTypes.string,\n  /**\n   * An `Input` element; does not have to be a material-ui specific `Input`.\n   */\n  input: PropTypes.element,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * When `native` is `true`, the attributes are applied on the `select` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * See [OutlinedInput#label](/material-ui/api/outlined-input/#props)\n   */\n  label: PropTypes.node,\n  /**\n   * The ID of an element that acts as an additional label. The Select will\n   * be labelled by the additional label and the selected value.\n   */\n  labelId: PropTypes.string,\n  /**\n   * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n   */\n  MenuProps: PropTypes.object,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   * @default false\n   */\n  multiple: PropTypes.bool,\n  /**\n   * If `true`, the component uses a native `select` element.\n   * @default false\n   */\n  native: PropTypes.bool,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {SelectChangeEvent<Value>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * **Warning**: This is a generic event, not a change event, unless the change event is caused by browser autofill.\n   * @param {object} [child] The react element that was selected when `native` is `false` (default).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select collapses).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be opened.\n   * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select expands).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   * You can only use it when the `native` prop is `false` (default).\n   */\n  open: PropTypes.bool,\n  /**\n   * Render the selected value.\n   * You can only use it when the `native` prop is `false` (default).\n   *\n   * @param {any} value The `value` provided to the component.\n   * @returns {ReactNode}\n   */\n  renderValue: PropTypes.func,\n  /**\n   * Props applied to the clickable div element.\n   */\n  SelectDisplayProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The `input` value. Providing an empty string will select no options.\n   * Set to an empty string `''` if you don't want any of the available options to be selected.\n   *\n   * If the value is an object it must have reference equality with the option in order to be selected.\n   * If the value is not an object, the string representation must match with the string representation of the option in order to be selected.\n   */\n  value: PropTypes.oneOfType([PropTypes.oneOf(['']), PropTypes.any]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nSelect.muiName = 'Select';\nexport default Select;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSkeletonUtilityClass(slot) {\n  return generateUtilityClass('MuiSkeleton', slot);\n}\nconst skeletonClasses = generateUtilityClasses('MuiSkeleton', ['root', 'text', 'rectangular', 'rounded', 'circular', 'pulse', 'wave', 'withChildren', 'fitContent', 'heightAuto']);\nexport default skeletonClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"animation\", \"className\", \"component\", \"height\", \"style\", \"variant\", \"width\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4;\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { keyframes, css } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha, unstable_getUnit as getUnit, unstable_toUnitless as toUnitless } from '../styles';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getSkeletonUtilityClass } from './skeletonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    animation,\n    hasChildren,\n    width,\n    height\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, animation, hasChildren && 'withChildren', hasChildren && !width && 'fitContent', hasChildren && !height && 'heightAuto']\n  };\n  return composeClasses(slots, getSkeletonUtilityClass, classes);\n};\nconst pulseKeyframe = keyframes(_t || (_t = _`\n  0% {\n    opacity: 1;\n  }\n\n  50% {\n    opacity: 0.4;\n  }\n\n  100% {\n    opacity: 1;\n  }\n`));\nconst waveKeyframe = keyframes(_t2 || (_t2 = _`\n  0% {\n    transform: translateX(-100%);\n  }\n\n  50% {\n    /* +0.5s of delay between each loop */\n    transform: translateX(100%);\n  }\n\n  100% {\n    transform: translateX(100%);\n  }\n`));\nconst SkeletonRoot = styled('span', {\n  name: 'MuiSkeleton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], ownerState.animation !== false && styles[ownerState.animation], ownerState.hasChildren && styles.withChildren, ownerState.hasChildren && !ownerState.width && styles.fitContent, ownerState.hasChildren && !ownerState.height && styles.heightAuto];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const radiusUnit = getUnit(theme.shape.borderRadius) || 'px';\n  const radiusValue = toUnitless(theme.shape.borderRadius);\n  return _extends({\n    display: 'block',\n    // Create a \"on paper\" color with sufficient contrast retaining the color\n    backgroundColor: theme.vars ? theme.vars.palette.Skeleton.bg : alpha(theme.palette.text.primary, theme.palette.mode === 'light' ? 0.11 : 0.13),\n    height: '1.2em'\n  }, ownerState.variant === 'text' && {\n    marginTop: 0,\n    marginBottom: 0,\n    height: 'auto',\n    transformOrigin: '0 55%',\n    transform: 'scale(1, 0.60)',\n    borderRadius: `${radiusValue}${radiusUnit}/${Math.round(radiusValue / 0.6 * 10) / 10}${radiusUnit}`,\n    '&:empty:before': {\n      content: '\"\\\\00a0\"'\n    }\n  }, ownerState.variant === 'circular' && {\n    borderRadius: '50%'\n  }, ownerState.variant === 'rounded' && {\n    borderRadius: (theme.vars || theme).shape.borderRadius\n  }, ownerState.hasChildren && {\n    '& > *': {\n      visibility: 'hidden'\n    }\n  }, ownerState.hasChildren && !ownerState.width && {\n    maxWidth: 'fit-content'\n  }, ownerState.hasChildren && !ownerState.height && {\n    height: 'auto'\n  });\n}, ({\n  ownerState\n}) => ownerState.animation === 'pulse' && css(_t3 || (_t3 = _`\n      animation: ${0} 2s ease-in-out 0.5s infinite;\n    `), pulseKeyframe), ({\n  ownerState,\n  theme\n}) => ownerState.animation === 'wave' && css(_t4 || (_t4 = _`\n      position: relative;\n      overflow: hidden;\n\n      /* Fix bug in Safari https://bugs.webkit.org/show_bug.cgi?id=68196 */\n      -webkit-mask-image: -webkit-radial-gradient(white, black);\n\n      &::after {\n        animation: ${0} 2s linear 0.5s infinite;\n        background: linear-gradient(\n          90deg,\n          transparent,\n          ${0},\n          transparent\n        );\n        content: '';\n        position: absolute;\n        transform: translateX(-100%); /* Avoid flash during server-side hydration */\n        bottom: 0;\n        left: 0;\n        right: 0;\n        top: 0;\n      }\n    `), waveKeyframe, (theme.vars || theme).palette.action.hover));\nconst Skeleton = /*#__PURE__*/React.forwardRef(function Skeleton(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSkeleton'\n  });\n  const {\n      animation = 'pulse',\n      className,\n      component = 'span',\n      height,\n      style,\n      variant = 'text',\n      width\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    animation,\n    component,\n    variant,\n    hasChildren: Boolean(other.children)\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(SkeletonRoot, _extends({\n    as: component,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other, {\n    style: _extends({\n      width,\n      height\n    }, style)\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Skeleton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The animation.\n   * If `false` the animation effect is disabled.\n   * @default 'pulse'\n   */\n  animation: PropTypes.oneOf(['pulse', 'wave', false]),\n  /**\n   * Optional children to infer width and height from.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Height of the skeleton.\n   * Useful when you don't want to adapt the skeleton to a text element but for instance a card.\n   */\n  height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The type of content that will be rendered.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rectangular', 'rounded', 'text']), PropTypes.string]),\n  /**\n   * Width of the skeleton.\n   * Useful when the skeleton is inside an inline element with no width of its own.\n   */\n  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : void 0;\nexport default Skeleton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTooltipUtilityClass(slot) {\n  return generateUtilityClass('MuiTooltip', slot);\n}\nconst tooltipClasses = generateUtilityClasses('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\nexport default tooltipClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"arrow\", \"children\", \"classes\", \"components\", \"componentsProps\", \"describeChild\", \"disableFocusListener\", \"disableHoverListener\", \"disableInteractive\", \"disableTouchListener\", \"enterDelay\", \"enterNextDelay\", \"enterTouchDelay\", \"followCursor\", \"id\", \"leaveDelay\", \"leaveTouchDelay\", \"onClose\", \"onOpen\", \"open\", \"placement\", \"PopperComponent\", \"PopperProps\", \"slotProps\", \"slots\", \"title\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useTimeout, { Timeout } from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport appendOwnerState from '@mui/utils/appendOwnerState';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport { styled, useTheme } from '../styles';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport capitalize from '../utils/capitalize';\nimport Grow from '../Grow';\nimport Popper from '../Popper';\nimport useEventCallback from '../utils/useEventCallback';\nimport useForkRef from '../utils/useForkRef';\nimport useId from '../utils/useId';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useControlled from '../utils/useControlled';\nimport tooltipClasses, { getTooltipUtilityClass } from './tooltipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableInteractive,\n    arrow,\n    touch,\n    placement\n  } = ownerState;\n  const slots = {\n    popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n    tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${capitalize(placement.split('-')[0])}`],\n    arrow: ['arrow']\n  };\n  return composeClasses(slots, getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = styled(Popper, {\n  name: 'MuiTooltip',\n  slot: 'Popper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n  }\n})(({\n  theme,\n  ownerState,\n  open\n}) => _extends({\n  zIndex: (theme.vars || theme).zIndex.tooltip,\n  pointerEvents: 'none'\n}, !ownerState.disableInteractive && {\n  pointerEvents: 'auto'\n}, !open && {\n  pointerEvents: 'none'\n}, ownerState.arrow && {\n  [`&[data-popper-placement*=\"bottom\"] .${tooltipClasses.arrow}`]: {\n    top: 0,\n    marginTop: '-0.71em',\n    '&::before': {\n      transformOrigin: '0 100%'\n    }\n  },\n  [`&[data-popper-placement*=\"top\"] .${tooltipClasses.arrow}`]: {\n    bottom: 0,\n    marginBottom: '-0.71em',\n    '&::before': {\n      transformOrigin: '100% 0'\n    }\n  },\n  [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n    left: 0,\n    marginLeft: '-0.71em'\n  } : {\n    right: 0,\n    marginRight: '-0.71em'\n  }, {\n    height: '1em',\n    width: '0.71em',\n    '&::before': {\n      transformOrigin: '100% 100%'\n    }\n  }),\n  [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n    right: 0,\n    marginRight: '-0.71em'\n  } : {\n    left: 0,\n    marginLeft: '-0.71em'\n  }, {\n    height: '1em',\n    width: '0.71em',\n    '&::before': {\n      transformOrigin: '0 0'\n    }\n  })\n}));\nconst TooltipTooltip = styled('div', {\n  name: 'MuiTooltip',\n  slot: 'Tooltip',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${capitalize(ownerState.placement.split('-')[0])}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  color: (theme.vars || theme).palette.common.white,\n  fontFamily: theme.typography.fontFamily,\n  padding: '4px 8px',\n  fontSize: theme.typography.pxToRem(11),\n  maxWidth: 300,\n  margin: 2,\n  wordWrap: 'break-word',\n  fontWeight: theme.typography.fontWeightMedium\n}, ownerState.arrow && {\n  position: 'relative',\n  margin: 0\n}, ownerState.touch && {\n  padding: '8px 16px',\n  fontSize: theme.typography.pxToRem(14),\n  lineHeight: `${round(16 / 14)}em`,\n  fontWeight: theme.typography.fontWeightRegular\n}, {\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: _extends({\n    transformOrigin: 'right center'\n  }, !ownerState.isRtl ? _extends({\n    marginRight: '14px'\n  }, ownerState.touch && {\n    marginRight: '24px'\n  }) : _extends({\n    marginLeft: '14px'\n  }, ownerState.touch && {\n    marginLeft: '24px'\n  })),\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: _extends({\n    transformOrigin: 'left center'\n  }, !ownerState.isRtl ? _extends({\n    marginLeft: '14px'\n  }, ownerState.touch && {\n    marginLeft: '24px'\n  }) : _extends({\n    marginRight: '14px'\n  }, ownerState.touch && {\n    marginRight: '24px'\n  })),\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: _extends({\n    transformOrigin: 'center bottom',\n    marginBottom: '14px'\n  }, ownerState.touch && {\n    marginBottom: '24px'\n  }),\n  [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: _extends({\n    transformOrigin: 'center top',\n    marginTop: '14px'\n  }, ownerState.touch && {\n    marginTop: '24px'\n  })\n}));\nconst TooltipArrow = styled('span', {\n  name: 'MuiTooltip',\n  slot: 'Arrow',\n  overridesResolver: (props, styles) => styles.arrow\n})(({\n  theme\n}) => ({\n  overflow: 'hidden',\n  position: 'absolute',\n  width: '1em',\n  height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n  boxSizing: 'border-box',\n  color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),\n  '&::before': {\n    content: '\"\"',\n    margin: 'auto',\n    display: 'block',\n    width: '100%',\n    height: '100%',\n    backgroundColor: 'currentColor',\n    transform: 'rotate(45deg)'\n  }\n}));\nlet hystersisOpen = false;\nconst hystersisTimer = new Timeout();\nlet cursorPosition = {\n  x: 0,\n  y: 0\n};\nexport function testReset() {\n  hystersisOpen = false;\n  hystersisTimer.clear();\n}\nfunction composeEventHandler(handler, eventHandler) {\n  return (event, ...params) => {\n    if (eventHandler) {\n      eventHandler(event, ...params);\n    }\n    handler(event, ...params);\n  };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {\n  var _ref, _slots$popper, _ref2, _ref3, _slots$transition, _ref4, _slots$tooltip, _ref5, _slots$arrow, _slotProps$popper, _ref6, _slotProps$popper2, _slotProps$transition, _slotProps$tooltip, _ref7, _slotProps$tooltip2, _slotProps$arrow, _ref8, _slotProps$arrow2;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTooltip'\n  });\n  const {\n      arrow = false,\n      children: childrenProp,\n      components = {},\n      componentsProps = {},\n      describeChild = false,\n      disableFocusListener = false,\n      disableHoverListener = false,\n      disableInteractive: disableInteractiveProp = false,\n      disableTouchListener = false,\n      enterDelay = 100,\n      enterNextDelay = 0,\n      enterTouchDelay = 700,\n      followCursor = false,\n      id: idProp,\n      leaveDelay = 0,\n      leaveTouchDelay = 1500,\n      onClose,\n      onOpen,\n      open: openProp,\n      placement = 'bottom',\n      PopperComponent: PopperComponentProp,\n      PopperProps = {},\n      slotProps = {},\n      slots = {},\n      title,\n      TransitionComponent: TransitionComponentProp = Grow,\n      TransitionProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n\n  // to prevent runtime errors, developers will need to provide a child as a React element anyway.\n  const children = /*#__PURE__*/React.isValidElement(childrenProp) ? childrenProp : /*#__PURE__*/_jsx(\"span\", {\n    children: childrenProp\n  });\n  const theme = useTheme();\n  const isRtl = useRtl();\n  const [childNode, setChildNode] = React.useState();\n  const [arrowRef, setArrowRef] = React.useState(null);\n  const ignoreNonTouchEvents = React.useRef(false);\n  const disableInteractive = disableInteractiveProp || followCursor;\n  const closeTimer = useTimeout();\n  const enterTimer = useTimeout();\n  const leaveTimer = useTimeout();\n  const touchTimer = useTimeout();\n  const [openState, setOpenState] = useControlled({\n    controlled: openProp,\n    default: false,\n    name: 'Tooltip',\n    state: 'open'\n  });\n  let open = openState;\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const {\n      current: isControlled\n    } = React.useRef(openProp !== undefined);\n\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n        console.error(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n      }\n    }, [title, childNode, isControlled]);\n  }\n  const id = useId(idProp);\n  const prevUserSelect = React.useRef();\n  const stopTouchInteraction = useEventCallback(() => {\n    if (prevUserSelect.current !== undefined) {\n      document.body.style.WebkitUserSelect = prevUserSelect.current;\n      prevUserSelect.current = undefined;\n    }\n    touchTimer.clear();\n  });\n  React.useEffect(() => stopTouchInteraction, [stopTouchInteraction]);\n  const handleOpen = event => {\n    hystersisTimer.clear();\n    hystersisOpen = true;\n\n    // The mouseover event will trigger for every nested element in the tooltip.\n    // We can skip rerendering when the tooltip is already open.\n    // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n    setOpenState(true);\n    if (onOpen && !open) {\n      onOpen(event);\n    }\n  };\n  const handleClose = useEventCallback(\n  /**\n   * @param {React.SyntheticEvent | Event} event\n   */\n  event => {\n    hystersisTimer.start(800 + leaveDelay, () => {\n      hystersisOpen = false;\n    });\n    setOpenState(false);\n    if (onClose && open) {\n      onClose(event);\n    }\n    closeTimer.start(theme.transitions.duration.shortest, () => {\n      ignoreNonTouchEvents.current = false;\n    });\n  });\n  const handleMouseOver = event => {\n    if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n      return;\n    }\n\n    // Remove the title ahead of time.\n    // We don't want to wait for the next render commit.\n    // We would risk displaying two tooltips at the same time (native + this one).\n    if (childNode) {\n      childNode.removeAttribute('title');\n    }\n    enterTimer.clear();\n    leaveTimer.clear();\n    if (enterDelay || hystersisOpen && enterNextDelay) {\n      enterTimer.start(hystersisOpen ? enterNextDelay : enterDelay, () => {\n        handleOpen(event);\n      });\n    } else {\n      handleOpen(event);\n    }\n  };\n  const handleMouseLeave = event => {\n    enterTimer.clear();\n    leaveTimer.start(leaveDelay, () => {\n      handleClose(event);\n    });\n  };\n  const {\n    isFocusVisibleRef,\n    onBlur: handleBlurVisible,\n    onFocus: handleFocusVisible,\n    ref: focusVisibleRef\n  } = useIsFocusVisible();\n  // We don't necessarily care about the focusVisible state (which is safe to access via ref anyway).\n  // We just need to re-render the Tooltip if the focus-visible state changes.\n  const [, setChildIsFocusVisible] = React.useState(false);\n  const handleBlur = event => {\n    handleBlurVisible(event);\n    if (isFocusVisibleRef.current === false) {\n      setChildIsFocusVisible(false);\n      handleMouseLeave(event);\n    }\n  };\n  const handleFocus = event => {\n    // Workaround for https://github.com/facebook/react/issues/7769\n    // The autoFocus of React might trigger the event before the componentDidMount.\n    // We need to account for this eventuality.\n    if (!childNode) {\n      setChildNode(event.currentTarget);\n    }\n    handleFocusVisible(event);\n    if (isFocusVisibleRef.current === true) {\n      setChildIsFocusVisible(true);\n      handleMouseOver(event);\n    }\n  };\n  const detectTouchStart = event => {\n    ignoreNonTouchEvents.current = true;\n    const childrenProps = children.props;\n    if (childrenProps.onTouchStart) {\n      childrenProps.onTouchStart(event);\n    }\n  };\n  const handleTouchStart = event => {\n    detectTouchStart(event);\n    leaveTimer.clear();\n    closeTimer.clear();\n    stopTouchInteraction();\n    prevUserSelect.current = document.body.style.WebkitUserSelect;\n    // Prevent iOS text selection on long-tap.\n    document.body.style.WebkitUserSelect = 'none';\n    touchTimer.start(enterTouchDelay, () => {\n      document.body.style.WebkitUserSelect = prevUserSelect.current;\n      handleMouseOver(event);\n    });\n  };\n  const handleTouchEnd = event => {\n    if (children.props.onTouchEnd) {\n      children.props.onTouchEnd(event);\n    }\n    stopTouchInteraction();\n    leaveTimer.start(leaveTouchDelay, () => {\n      handleClose(event);\n    });\n  };\n  React.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n\n    /**\n     * @param {KeyboardEvent} nativeEvent\n     */\n    function handleKeyDown(nativeEvent) {\n      // IE11, Edge (prior to using Bink?) use 'Esc'\n      if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n        handleClose(nativeEvent);\n      }\n    }\n    document.addEventListener('keydown', handleKeyDown);\n    return () => {\n      document.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [handleClose, open]);\n  const handleRef = useForkRef(getReactElementRef(children), focusVisibleRef, setChildNode, ref);\n\n  // There is no point in displaying an empty tooltip.\n  // So we exclude all falsy values, except 0, which is valid.\n  if (!title && title !== 0) {\n    open = false;\n  }\n  const popperRef = React.useRef();\n  const handleMouseMove = event => {\n    const childrenProps = children.props;\n    if (childrenProps.onMouseMove) {\n      childrenProps.onMouseMove(event);\n    }\n    cursorPosition = {\n      x: event.clientX,\n      y: event.clientY\n    };\n    if (popperRef.current) {\n      popperRef.current.update();\n    }\n  };\n  const nameOrDescProps = {};\n  const titleIsString = typeof title === 'string';\n  if (describeChild) {\n    nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n    nameOrDescProps['aria-describedby'] = open ? id : null;\n  } else {\n    nameOrDescProps['aria-label'] = titleIsString ? title : null;\n    nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n  }\n  const childrenProps = _extends({}, nameOrDescProps, other, children.props, {\n    className: clsx(other.className, children.props.className),\n    onTouchStart: detectTouchStart,\n    ref: handleRef\n  }, followCursor ? {\n    onMouseMove: handleMouseMove\n  } : {});\n  if (process.env.NODE_ENV !== 'production') {\n    childrenProps['data-mui-internal-clone-element'] = true;\n\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n        console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n      }\n    }, [childNode]);\n  }\n  const interactiveWrapperListeners = {};\n  if (!disableTouchListener) {\n    childrenProps.onTouchStart = handleTouchStart;\n    childrenProps.onTouchEnd = handleTouchEnd;\n  }\n  if (!disableHoverListener) {\n    childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n    childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n    if (!disableInteractive) {\n      interactiveWrapperListeners.onMouseOver = handleMouseOver;\n      interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n    }\n  }\n  if (!disableFocusListener) {\n    childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n    childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n    if (!disableInteractive) {\n      interactiveWrapperListeners.onFocus = handleFocus;\n      interactiveWrapperListeners.onBlur = handleBlur;\n    }\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    if (children.props.title) {\n      console.error(['MUI: You have provided a `title` prop to the child of <Tooltip />.', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n    }\n  }\n  const popperOptions = React.useMemo(() => {\n    var _PopperProps$popperOp;\n    let tooltipModifiers = [{\n      name: 'arrow',\n      enabled: Boolean(arrowRef),\n      options: {\n        element: arrowRef,\n        padding: 4\n      }\n    }];\n    if ((_PopperProps$popperOp = PopperProps.popperOptions) != null && _PopperProps$popperOp.modifiers) {\n      tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n    }\n    return _extends({}, PopperProps.popperOptions, {\n      modifiers: tooltipModifiers\n    });\n  }, [arrowRef, PopperProps]);\n  const ownerState = _extends({}, props, {\n    isRtl,\n    arrow,\n    disableInteractive,\n    placement,\n    PopperComponentProp,\n    touch: ignoreNonTouchEvents.current\n  });\n  const classes = useUtilityClasses(ownerState);\n  const PopperComponent = (_ref = (_slots$popper = slots.popper) != null ? _slots$popper : components.Popper) != null ? _ref : TooltipPopper;\n  const TransitionComponent = (_ref2 = (_ref3 = (_slots$transition = slots.transition) != null ? _slots$transition : components.Transition) != null ? _ref3 : TransitionComponentProp) != null ? _ref2 : Grow;\n  const TooltipComponent = (_ref4 = (_slots$tooltip = slots.tooltip) != null ? _slots$tooltip : components.Tooltip) != null ? _ref4 : TooltipTooltip;\n  const ArrowComponent = (_ref5 = (_slots$arrow = slots.arrow) != null ? _slots$arrow : components.Arrow) != null ? _ref5 : TooltipArrow;\n  const popperProps = appendOwnerState(PopperComponent, _extends({}, PopperProps, (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper, {\n    className: clsx(classes.popper, PopperProps == null ? void 0 : PopperProps.className, (_ref6 = (_slotProps$popper2 = slotProps.popper) != null ? _slotProps$popper2 : componentsProps.popper) == null ? void 0 : _ref6.className)\n  }), ownerState);\n  const transitionProps = appendOwnerState(TransitionComponent, _extends({}, TransitionProps, (_slotProps$transition = slotProps.transition) != null ? _slotProps$transition : componentsProps.transition), ownerState);\n  const tooltipProps = appendOwnerState(TooltipComponent, _extends({}, (_slotProps$tooltip = slotProps.tooltip) != null ? _slotProps$tooltip : componentsProps.tooltip, {\n    className: clsx(classes.tooltip, (_ref7 = (_slotProps$tooltip2 = slotProps.tooltip) != null ? _slotProps$tooltip2 : componentsProps.tooltip) == null ? void 0 : _ref7.className)\n  }), ownerState);\n  const tooltipArrowProps = appendOwnerState(ArrowComponent, _extends({}, (_slotProps$arrow = slotProps.arrow) != null ? _slotProps$arrow : componentsProps.arrow, {\n    className: clsx(classes.arrow, (_ref8 = (_slotProps$arrow2 = slotProps.arrow) != null ? _slotProps$arrow2 : componentsProps.arrow) == null ? void 0 : _ref8.className)\n  }), ownerState);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/React.cloneElement(children, childrenProps), /*#__PURE__*/_jsx(PopperComponent, _extends({\n      as: PopperComponentProp != null ? PopperComponentProp : Popper,\n      placement: placement,\n      anchorEl: followCursor ? {\n        getBoundingClientRect: () => ({\n          top: cursorPosition.y,\n          left: cursorPosition.x,\n          right: cursorPosition.x,\n          bottom: cursorPosition.y,\n          width: 0,\n          height: 0\n        })\n      } : childNode,\n      popperRef: popperRef,\n      open: childNode ? open : false,\n      id: id,\n      transition: true\n    }, interactiveWrapperListeners, popperProps, {\n      popperOptions: popperOptions,\n      children: ({\n        TransitionProps: TransitionPropsInner\n      }) => /*#__PURE__*/_jsx(TransitionComponent, _extends({\n        timeout: theme.transitions.duration.shorter\n      }, TransitionPropsInner, transitionProps, {\n        children: /*#__PURE__*/_jsxs(TooltipComponent, _extends({}, tooltipProps, {\n          children: [title, arrow ? /*#__PURE__*/_jsx(ArrowComponent, _extends({}, tooltipArrowProps, {\n            ref: setArrowRef\n          })) : null]\n        }))\n      }))\n    }))]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, adds an arrow to the tooltip.\n   * @default false\n   */\n  arrow: PropTypes.bool,\n  /**\n   * Tooltip reference element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Arrow: PropTypes.elementType,\n    Popper: PropTypes.elementType,\n    Tooltip: PropTypes.elementType,\n    Transition: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    arrow: PropTypes.object,\n    popper: PropTypes.object,\n    tooltip: PropTypes.object,\n    transition: PropTypes.object\n  }),\n  /**\n   * Set to `true` if the `title` acts as an accessible description.\n   * By default the `title` acts as an accessible label for the child.\n   * @default false\n   */\n  describeChild: PropTypes.bool,\n  /**\n   * Do not respond to focus-visible events.\n   * @default false\n   */\n  disableFocusListener: PropTypes.bool,\n  /**\n   * Do not respond to hover events.\n   * @default false\n   */\n  disableHoverListener: PropTypes.bool,\n  /**\n   * Makes a tooltip not interactive, i.e. it will close when the user\n   * hovers over the tooltip before the `leaveDelay` is expired.\n   * @default false\n   */\n  disableInteractive: PropTypes.bool,\n  /**\n   * Do not respond to long press touch events.\n   * @default false\n   */\n  disableTouchListener: PropTypes.bool,\n  /**\n   * The number of milliseconds to wait before showing the tooltip.\n   * This prop won't impact the enter touch delay (`enterTouchDelay`).\n   * @default 100\n   */\n  enterDelay: PropTypes.number,\n  /**\n   * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n   * @default 0\n   */\n  enterNextDelay: PropTypes.number,\n  /**\n   * The number of milliseconds a user must touch the element before showing the tooltip.\n   * @default 700\n   */\n  enterTouchDelay: PropTypes.number,\n  /**\n   * If `true`, the tooltip follow the cursor over the wrapped element.\n   * @default false\n   */\n  followCursor: PropTypes.bool,\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide this prop. It falls back to a randomly generated id.\n   */\n  id: PropTypes.string,\n  /**\n   * The number of milliseconds to wait before hiding the tooltip.\n   * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n   * @default 0\n   */\n  leaveDelay: PropTypes.number,\n  /**\n   * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n   * @default 1500\n   */\n  leaveTouchDelay: PropTypes.number,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be open.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * Tooltip placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * The component used for the popper.\n   * @default Popper\n   */\n  PopperComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Popper`](/material-ui/api/popper/) element.\n   * @default {}\n   */\n  PopperProps: PropTypes.object,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    arrow: PropTypes.object,\n    popper: PropTypes.object,\n    tooltip: PropTypes.object,\n    transition: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    arrow: PropTypes.elementType,\n    popper: PropTypes.elementType,\n    tooltip: PropTypes.elementType,\n    transition: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n   */\n  title: PropTypes.node,\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Grow\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Tooltip;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSwitchUtilityClass(slot) {\n  return generateUtilityClass('MuiSwitch', slot);\n}\nconst switchClasses = generateUtilityClasses('MuiSwitch', ['root', 'edgeStart', 'edgeEnd', 'switchBase', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium', 'checked', 'disabled', 'input', 'thumb', 'track']);\nexport default switchClasses;","'use client';\n\n// @inheritedComponent IconButton\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"edge\", \"size\", \"sx\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha, darken, lighten } from '@mui/system/colorManipulator';\nimport capitalize from '../utils/capitalize';\nimport SwitchBase from '../internal/SwitchBase';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport switchClasses, { getSwitchUtilityClass } from './switchClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    edge,\n    size,\n    color,\n    checked,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`],\n    switchBase: ['switchBase', `color${capitalize(color)}`, checked && 'checked', disabled && 'disabled'],\n    thumb: ['thumb'],\n    track: ['track'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getSwitchUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst SwitchRoot = styled('span', {\n  name: 'MuiSwitch',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n  }\n})({\n  display: 'inline-flex',\n  width: 34 + 12 * 2,\n  height: 14 + 12 * 2,\n  overflow: 'hidden',\n  padding: 12,\n  boxSizing: 'border-box',\n  position: 'relative',\n  flexShrink: 0,\n  zIndex: 0,\n  // Reset the stacking context.\n  verticalAlign: 'middle',\n  // For correct alignment with the text.\n  '@media print': {\n    colorAdjust: 'exact'\n  },\n  variants: [{\n    props: {\n      edge: 'start'\n    },\n    style: {\n      marginLeft: -8\n    }\n  }, {\n    props: {\n      edge: 'end'\n    },\n    style: {\n      marginRight: -8\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      width: 40,\n      height: 24,\n      padding: 7,\n      [`& .${switchClasses.thumb}`]: {\n        width: 16,\n        height: 16\n      },\n      [`& .${switchClasses.switchBase}`]: {\n        padding: 4,\n        [`&.${switchClasses.checked}`]: {\n          transform: 'translateX(16px)'\n        }\n      }\n    }\n  }]\n});\nconst SwitchSwitchBase = styled(SwitchBase, {\n  name: 'MuiSwitch',\n  slot: 'SwitchBase',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.switchBase, {\n      [`& .${switchClasses.input}`]: styles.input\n    }, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(({\n  theme\n}) => ({\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  zIndex: 1,\n  // Render above the focus ripple.\n  color: theme.vars ? theme.vars.palette.Switch.defaultColor : `${theme.palette.mode === 'light' ? theme.palette.common.white : theme.palette.grey[300]}`,\n  transition: theme.transitions.create(['left', 'transform'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  [`&.${switchClasses.checked}`]: {\n    transform: 'translateX(20px)'\n  },\n  [`&.${switchClasses.disabled}`]: {\n    color: theme.vars ? theme.vars.palette.Switch.defaultDisabledColor : `${theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[600]}`\n  },\n  [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n    opacity: 0.5\n  },\n  [`&.${switchClasses.disabled} + .${switchClasses.track}`]: {\n    opacity: theme.vars ? theme.vars.opacity.switchTrackDisabled : `${theme.palette.mode === 'light' ? 0.12 : 0.2}`\n  },\n  [`& .${switchClasses.input}`]: {\n    left: '-100%',\n    width: '300%'\n  }\n}), ({\n  theme\n}) => ({\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  variants: [...Object.entries(theme.palette).filter(([, value]) => value.main && value.light) // check all the used fields in the style below\n  .map(([color]) => ({\n    props: {\n      color\n    },\n    style: {\n      [`&.${switchClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main,\n        '&:hover': {\n          backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity),\n          '@media (hover: none)': {\n            backgroundColor: 'transparent'\n          }\n        },\n        [`&.${switchClasses.disabled}`]: {\n          color: theme.vars ? theme.vars.palette.Switch[`${color}DisabledColor`] : `${theme.palette.mode === 'light' ? lighten(theme.palette[color].main, 0.62) : darken(theme.palette[color].main, 0.55)}`\n        }\n      },\n      [`&.${switchClasses.checked} + .${switchClasses.track}`]: {\n        backgroundColor: (theme.vars || theme).palette[color].main\n      }\n    }\n  }))]\n}));\nconst SwitchTrack = styled('span', {\n  name: 'MuiSwitch',\n  slot: 'Track',\n  overridesResolver: (props, styles) => styles.track\n})(({\n  theme\n}) => ({\n  height: '100%',\n  width: '100%',\n  borderRadius: 14 / 2,\n  zIndex: -1,\n  transition: theme.transitions.create(['opacity', 'background-color'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  backgroundColor: theme.vars ? theme.vars.palette.common.onBackground : `${theme.palette.mode === 'light' ? theme.palette.common.black : theme.palette.common.white}`,\n  opacity: theme.vars ? theme.vars.opacity.switchTrack : `${theme.palette.mode === 'light' ? 0.38 : 0.3}`\n}));\nconst SwitchThumb = styled('span', {\n  name: 'MuiSwitch',\n  slot: 'Thumb',\n  overridesResolver: (props, styles) => styles.thumb\n})(({\n  theme\n}) => ({\n  boxShadow: (theme.vars || theme).shadows[1],\n  backgroundColor: 'currentColor',\n  width: 20,\n  height: 20,\n  borderRadius: '50%'\n}));\nconst Switch = /*#__PURE__*/React.forwardRef(function Switch(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiSwitch'\n  });\n  const {\n      className,\n      color = 'primary',\n      edge = false,\n      size = 'medium',\n      sx\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    edge,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  const icon = /*#__PURE__*/_jsx(SwitchThumb, {\n    className: classes.thumb,\n    ownerState: ownerState\n  });\n  return /*#__PURE__*/_jsxs(SwitchRoot, {\n    className: clsx(classes.root, className),\n    sx: sx,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(SwitchSwitchBase, _extends({\n      type: \"checkbox\",\n      icon: icon,\n      checkedIcon: icon,\n      ref: ref,\n      ownerState: ownerState\n    }, other, {\n      classes: _extends({}, classes, {\n        root: classes.switchBase\n      })\n    })), /*#__PURE__*/_jsx(SwitchTrack, {\n      className: classes.track,\n      ownerState: ownerState\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Switch.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The default checked state. Use when the component is not controlled.\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense switch styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   * The browser uses \"on\" as the default value.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Switch;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTabUtilityClass(slot) {\n  return generateUtilityClass('MuiTab', slot);\n}\nconst tabClasses = generateUtilityClasses('MuiTab', ['root', 'labelIcon', 'textColorInherit', 'textColorPrimary', 'textColorSecondary', 'selected', 'disabled', 'fullWidth', 'wrapped', 'iconWrapper']);\nexport default tabClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"disableFocusRipple\", \"fullWidth\", \"icon\", \"iconPosition\", \"indicator\", \"label\", \"onChange\", \"onClick\", \"onFocus\", \"selected\", \"selectionFollowsFocus\", \"textColor\", \"value\", \"wrapped\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport tabClasses, { getTabUtilityClass } from './tabClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    textColor,\n    fullWidth,\n    wrapped,\n    icon,\n    label,\n    selected,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', icon && label && 'labelIcon', `textColor${capitalize(textColor)}`, fullWidth && 'fullWidth', wrapped && 'wrapped', selected && 'selected', disabled && 'disabled'],\n    iconWrapper: ['iconWrapper']\n  };\n  return composeClasses(slots, getTabUtilityClass, classes);\n};\nconst TabRoot = styled(ButtonBase, {\n  name: 'MuiTab',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.label && ownerState.icon && styles.labelIcon, styles[`textColor${capitalize(ownerState.textColor)}`], ownerState.fullWidth && styles.fullWidth, ownerState.wrapped && styles.wrapped, {\n      [`& .${tabClasses.iconWrapper}`]: styles.iconWrapper\n    }];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({}, theme.typography.button, {\n  maxWidth: 360,\n  minWidth: 90,\n  position: 'relative',\n  minHeight: 48,\n  flexShrink: 0,\n  padding: '12px 16px',\n  overflow: 'hidden',\n  whiteSpace: 'normal',\n  textAlign: 'center'\n}, ownerState.label && {\n  flexDirection: ownerState.iconPosition === 'top' || ownerState.iconPosition === 'bottom' ? 'column' : 'row'\n}, {\n  lineHeight: 1.25\n}, ownerState.icon && ownerState.label && {\n  minHeight: 72,\n  paddingTop: 9,\n  paddingBottom: 9,\n  [`& > .${tabClasses.iconWrapper}`]: _extends({}, ownerState.iconPosition === 'top' && {\n    marginBottom: 6\n  }, ownerState.iconPosition === 'bottom' && {\n    marginTop: 6\n  }, ownerState.iconPosition === 'start' && {\n    marginRight: theme.spacing(1)\n  }, ownerState.iconPosition === 'end' && {\n    marginLeft: theme.spacing(1)\n  })\n}, ownerState.textColor === 'inherit' && {\n  color: 'inherit',\n  opacity: 0.6,\n  // same opacity as theme.palette.text.secondary\n  [`&.${tabClasses.selected}`]: {\n    opacity: 1\n  },\n  [`&.${tabClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  }\n}, ownerState.textColor === 'primary' && {\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${tabClasses.selected}`]: {\n    color: (theme.vars || theme).palette.primary.main\n  },\n  [`&.${tabClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  }\n}, ownerState.textColor === 'secondary' && {\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${tabClasses.selected}`]: {\n    color: (theme.vars || theme).palette.secondary.main\n  },\n  [`&.${tabClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  }\n}, ownerState.fullWidth && {\n  flexShrink: 1,\n  flexGrow: 1,\n  flexBasis: 0,\n  maxWidth: 'none'\n}, ownerState.wrapped && {\n  fontSize: theme.typography.pxToRem(12)\n}));\nconst Tab = /*#__PURE__*/React.forwardRef(function Tab(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTab'\n  });\n  const {\n      className,\n      disabled = false,\n      disableFocusRipple = false,\n      // eslint-disable-next-line react/prop-types\n      fullWidth,\n      icon: iconProp,\n      iconPosition = 'top',\n      // eslint-disable-next-line react/prop-types\n      indicator,\n      label,\n      onChange,\n      onClick,\n      onFocus,\n      // eslint-disable-next-line react/prop-types\n      selected,\n      // eslint-disable-next-line react/prop-types\n      selectionFollowsFocus,\n      // eslint-disable-next-line react/prop-types\n      textColor = 'inherit',\n      value,\n      wrapped = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    disabled,\n    disableFocusRipple,\n    selected,\n    icon: !!iconProp,\n    iconPosition,\n    label: !!label,\n    fullWidth,\n    textColor,\n    wrapped\n  });\n  const classes = useUtilityClasses(ownerState);\n  const icon = iconProp && label && /*#__PURE__*/React.isValidElement(iconProp) ? /*#__PURE__*/React.cloneElement(iconProp, {\n    className: clsx(classes.iconWrapper, iconProp.props.className)\n  }) : iconProp;\n  const handleClick = event => {\n    if (!selected && onChange) {\n      onChange(event, value);\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  const handleFocus = event => {\n    if (selectionFollowsFocus && !selected && onChange) {\n      onChange(event, value);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  return /*#__PURE__*/_jsxs(TabRoot, _extends({\n    focusRipple: !disableFocusRipple,\n    className: clsx(classes.root, className),\n    ref: ref,\n    role: \"tab\",\n    \"aria-selected\": selected,\n    disabled: disabled,\n    onClick: handleClick,\n    onFocus: handleFocus,\n    ownerState: ownerState,\n    tabIndex: selected ? 0 : -1\n  }, other, {\n    children: [iconPosition === 'top' || iconPosition === 'start' ? /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [icon, label]\n    }) : /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [label, icon]\n    }), indicator]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tab.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop isn't supported.\n   * Use the `component` prop if you need to change the children structure.\n   */\n  children: unsupportedProp,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display.\n   */\n  icon: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n  /**\n   * The position of the icon relative to the label.\n   * @default 'top'\n   */\n  iconPosition: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n  /**\n   * The label element.\n   */\n  label: PropTypes.node,\n  /**\n   * @ignore\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * You can provide your own value. Otherwise, we fallback to the child position index.\n   */\n  value: PropTypes.any,\n  /**\n   * Tab labels appear in a single row.\n   * They can use a second line if needed.\n   * @default false\n   */\n  wrapped: PropTypes.bool\n} : void 0;\nexport default Tab;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiToolbar', slot);\n}\nconst toolbarClasses = generateUtilityClasses('MuiToolbar', ['root', 'gutters', 'regular', 'dense']);\nexport default toolbarClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"disableGutters\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport { getToolbarUtilityClass } from './toolbarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableGutters,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableGutters && 'gutters', variant]\n  };\n  return composeClasses(slots, getToolbarUtilityClass, classes);\n};\nconst ToolbarRoot = styled('div', {\n  name: 'MuiToolbar',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disableGutters && styles.gutters, styles[ownerState.variant]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  position: 'relative',\n  display: 'flex',\n  alignItems: 'center'\n}, !ownerState.disableGutters && {\n  paddingLeft: theme.spacing(2),\n  paddingRight: theme.spacing(2),\n  [theme.breakpoints.up('sm')]: {\n    paddingLeft: theme.spacing(3),\n    paddingRight: theme.spacing(3)\n  }\n}, ownerState.variant === 'dense' && {\n  minHeight: 48\n}), ({\n  theme,\n  ownerState\n}) => ownerState.variant === 'regular' && theme.mixins.toolbar);\nconst Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiToolbar'\n  });\n  const {\n      className,\n      component = 'div',\n      disableGutters = false,\n      variant = 'regular'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component,\n    disableGutters,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ToolbarRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n   * The Toolbar is a flex container, allowing flex item properties to be used to lay out the children.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, disables gutter padding.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'regular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['dense', 'regular']), PropTypes.string])\n} : void 0;\nexport default Toolbar;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight');","function easeInOutSin(time) {\n  return (1 + Math.sin(Math.PI * time - Math.PI / 2)) / 2;\n}\nexport default function animate(property, element, to, options = {}, cb = () => {}) {\n  const {\n    ease = easeInOutSin,\n    duration = 300 // standard\n  } = options;\n  let start = null;\n  const from = element[property];\n  let cancelled = false;\n  const cancel = () => {\n    cancelled = true;\n  };\n  const step = timestamp => {\n    if (cancelled) {\n      cb(new Error('Animation cancelled'));\n      return;\n    }\n    if (start === null) {\n      start = timestamp;\n    }\n    const time = Math.min(1, (timestamp - start) / duration);\n    element[property] = ease(time) * (to - from) + from;\n    if (time >= 1) {\n      requestAnimationFrame(() => {\n        cb(null);\n      });\n      return;\n    }\n    requestAnimationFrame(step);\n  };\n  if (from === to) {\n    cb(new Error('Element already at target position'));\n    return cancel;\n  }\n  requestAnimationFrame(step);\n  return cancel;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from '../utils/debounce';\nimport { ownerWindow, unstable_useEnhancedEffect as useEnhancedEffect } from '../utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n  width: 99,\n  height: 99,\n  position: 'absolute',\n  top: -9999,\n  overflow: 'scroll'\n};\n\n/**\n * @ignore - internal component.\n * The component originates from https://github.com/STORIS/react-scrollbar-size.\n * It has been moved into the core in order to minimize the bundle size.\n */\nexport default function ScrollbarSize(props) {\n  const {\n      onChange\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const scrollbarHeight = React.useRef();\n  const nodeRef = React.useRef(null);\n  const setMeasurements = () => {\n    scrollbarHeight.current = nodeRef.current.offsetHeight - nodeRef.current.clientHeight;\n  };\n  useEnhancedEffect(() => {\n    const handleResize = debounce(() => {\n      const prevHeight = scrollbarHeight.current;\n      setMeasurements();\n      if (prevHeight !== scrollbarHeight.current) {\n        onChange(scrollbarHeight.current);\n      }\n    });\n    const containerWindow = ownerWindow(nodeRef.current);\n    containerWindow.addEventListener('resize', handleResize);\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n    };\n  }, [onChange]);\n  React.useEffect(() => {\n    setMeasurements();\n    onChange(scrollbarHeight.current);\n  }, [onChange]);\n  return /*#__PURE__*/_jsx(\"div\", _extends({\n    style: styles\n  }, other, {\n    ref: nodeRef\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? ScrollbarSize.propTypes = {\n  onChange: PropTypes.func.isRequired\n} : void 0;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTabScrollButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiTabScrollButton', slot);\n}\nconst tabScrollButtonClasses = generateUtilityClasses('MuiTabScrollButton', ['root', 'vertical', 'horizontal', 'disabled']);\nexport default tabScrollButtonClasses;","'use client';\n\n/* eslint-disable jsx-a11y/aria-role */\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"slots\", \"slotProps\", \"direction\", \"orientation\", \"disabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport KeyboardArrowLeft from '../internal/svg-icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '../internal/svg-icons/KeyboardArrowRight';\nimport ButtonBase from '../ButtonBase';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport tabScrollButtonClasses, { getTabScrollButtonUtilityClass } from './tabScrollButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    orientation,\n    disabled\n  } = ownerState;\n  const slots = {\n    root: ['root', orientation, disabled && 'disabled']\n  };\n  return composeClasses(slots, getTabScrollButtonUtilityClass, classes);\n};\nconst TabScrollButtonRoot = styled(ButtonBase, {\n  name: 'MuiTabScrollButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.orientation && styles[ownerState.orientation]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  width: 40,\n  flexShrink: 0,\n  opacity: 0.8,\n  [`&.${tabScrollButtonClasses.disabled}`]: {\n    opacity: 0\n  }\n}, ownerState.orientation === 'vertical' && {\n  width: '100%',\n  height: 40,\n  '& svg': {\n    transform: `rotate(${ownerState.isRtl ? -90 : 90}deg)`\n  }\n}));\nconst TabScrollButton = /*#__PURE__*/React.forwardRef(function TabScrollButton(inProps, ref) {\n  var _slots$StartScrollBut, _slots$EndScrollButto;\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTabScrollButton'\n  });\n  const {\n      className,\n      slots = {},\n      slotProps = {},\n      direction\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const isRtl = useRtl();\n  const ownerState = _extends({\n    isRtl\n  }, props);\n  const classes = useUtilityClasses(ownerState);\n  const StartButtonIcon = (_slots$StartScrollBut = slots.StartScrollButtonIcon) != null ? _slots$StartScrollBut : KeyboardArrowLeft;\n  const EndButtonIcon = (_slots$EndScrollButto = slots.EndScrollButtonIcon) != null ? _slots$EndScrollButto : KeyboardArrowRight;\n  const startButtonIconProps = useSlotProps({\n    elementType: StartButtonIcon,\n    externalSlotProps: slotProps.startScrollButtonIcon,\n    additionalProps: {\n      fontSize: 'small'\n    },\n    ownerState\n  });\n  const endButtonIconProps = useSlotProps({\n    elementType: EndButtonIcon,\n    externalSlotProps: slotProps.endScrollButtonIcon,\n    additionalProps: {\n      fontSize: 'small'\n    },\n    ownerState\n  });\n  return /*#__PURE__*/_jsx(TabScrollButtonRoot, _extends({\n    component: \"div\",\n    className: clsx(classes.root, className),\n    ref: ref,\n    role: null,\n    ownerState: ownerState,\n    tabIndex: null\n  }, other, {\n    children: direction === 'left' ? /*#__PURE__*/_jsx(StartButtonIcon, _extends({}, startButtonIconProps)) : /*#__PURE__*/_jsx(EndButtonIcon, _extends({}, endButtonIconProps))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabScrollButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The direction the button should indicate.\n   */\n  direction: PropTypes.oneOf(['left', 'right']).isRequired,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * The component orientation (layout flow direction).\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    endScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    startScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    EndScrollButtonIcon: PropTypes.elementType,\n    StartScrollButtonIcon: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TabScrollButton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTabsUtilityClass(slot) {\n  return generateUtilityClass('MuiTabs', slot);\n}\nconst tabsClasses = generateUtilityClasses('MuiTabs', ['root', 'vertical', 'flexContainer', 'flexContainerVertical', 'centered', 'scroller', 'fixed', 'scrollableX', 'scrollableY', 'hideScrollbar', 'scrollButtons', 'scrollButtonsHideMobile', 'indicator']);\nexport default tabsClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"className\", \"component\", \"allowScrollButtonsMobile\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"slots\", \"slotProps\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\", \"visibleScrollbar\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport useTheme from '../styles/useTheme';\nimport debounce from '../utils/debounce';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport tabsClasses, { getTabsUtilityClass } from './tabsClasses';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst nextItem = (list, item) => {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return list.firstChild;\n};\nconst previousItem = (list, item) => {\n  if (list === item) {\n    return list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return list.lastChild;\n};\nconst moveFocus = (list, currentFocus, traversalFunction) => {\n  let wrappedOnce = false;\n  let nextFocus = traversalFunction(list, currentFocus);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    const nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n    if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {\n      // Move to the next element.\n      nextFocus = traversalFunction(list, nextFocus);\n    } else {\n      nextFocus.focus();\n      return;\n    }\n  }\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    vertical,\n    fixed,\n    hideScrollbar,\n    scrollableX,\n    scrollableY,\n    centered,\n    scrollButtonsHideMobile,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', vertical && 'vertical'],\n    scroller: ['scroller', fixed && 'fixed', hideScrollbar && 'hideScrollbar', scrollableX && 'scrollableX', scrollableY && 'scrollableY'],\n    flexContainer: ['flexContainer', vertical && 'flexContainerVertical', centered && 'centered'],\n    indicator: ['indicator'],\n    scrollButtons: ['scrollButtons', scrollButtonsHideMobile && 'scrollButtonsHideMobile'],\n    scrollableX: [scrollableX && 'scrollableX'],\n    hideScrollbar: [hideScrollbar && 'hideScrollbar']\n  };\n  return composeClasses(slots, getTabsUtilityClass, classes);\n};\nconst TabsRoot = styled('div', {\n  name: 'MuiTabs',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${tabsClasses.scrollButtons}`]: styles.scrollButtons\n    }, {\n      [`& .${tabsClasses.scrollButtons}`]: ownerState.scrollButtonsHideMobile && styles.scrollButtonsHideMobile\n    }, styles.root, ownerState.vertical && styles.vertical];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  overflow: 'hidden',\n  minHeight: 48,\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch',\n  display: 'flex'\n}, ownerState.vertical && {\n  flexDirection: 'column'\n}, ownerState.scrollButtonsHideMobile && {\n  [`& .${tabsClasses.scrollButtons}`]: {\n    [theme.breakpoints.down('sm')]: {\n      display: 'none'\n    }\n  }\n}));\nconst TabsScroller = styled('div', {\n  name: 'MuiTabs',\n  slot: 'Scroller',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.scroller, ownerState.fixed && styles.fixed, ownerState.hideScrollbar && styles.hideScrollbar, ownerState.scrollableX && styles.scrollableX, ownerState.scrollableY && styles.scrollableY];\n  }\n})(({\n  ownerState\n}) => _extends({\n  position: 'relative',\n  display: 'inline-block',\n  flex: '1 1 auto',\n  whiteSpace: 'nowrap'\n}, ownerState.fixed && {\n  overflowX: 'hidden',\n  width: '100%'\n}, ownerState.hideScrollbar && {\n  // Hide dimensionless scrollbar on macOS\n  scrollbarWidth: 'none',\n  // Firefox\n  '&::-webkit-scrollbar': {\n    display: 'none' // Safari + Chrome\n  }\n}, ownerState.scrollableX && {\n  overflowX: 'auto',\n  overflowY: 'hidden'\n}, ownerState.scrollableY && {\n  overflowY: 'auto',\n  overflowX: 'hidden'\n}));\nconst FlexContainer = styled('div', {\n  name: 'MuiTabs',\n  slot: 'FlexContainer',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.flexContainer, ownerState.vertical && styles.flexContainerVertical, ownerState.centered && styles.centered];\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'flex'\n}, ownerState.vertical && {\n  flexDirection: 'column'\n}, ownerState.centered && {\n  justifyContent: 'center'\n}));\nconst TabsIndicator = styled('span', {\n  name: 'MuiTabs',\n  slot: 'Indicator',\n  overridesResolver: (props, styles) => styles.indicator\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  position: 'absolute',\n  height: 2,\n  bottom: 0,\n  width: '100%',\n  transition: theme.transitions.create()\n}, ownerState.indicatorColor === 'primary' && {\n  backgroundColor: (theme.vars || theme).palette.primary.main\n}, ownerState.indicatorColor === 'secondary' && {\n  backgroundColor: (theme.vars || theme).palette.secondary.main\n}, ownerState.vertical && {\n  height: '100%',\n  width: 2,\n  right: 0\n}));\nconst TabsScrollbarSize = styled(ScrollbarSize)({\n  overflowX: 'auto',\n  overflowY: 'hidden',\n  // Hide dimensionless scrollbar on macOS\n  scrollbarWidth: 'none',\n  // Firefox\n  '&::-webkit-scrollbar': {\n    display: 'none' // Safari + Chrome\n  }\n});\nconst defaultIndicatorStyle = {};\nlet warnedOnceTabPresent = false;\nconst Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTabs'\n  });\n  const theme = useTheme();\n  const isRtl = useRtl();\n  const {\n      'aria-label': ariaLabel,\n      'aria-labelledby': ariaLabelledBy,\n      action,\n      centered = false,\n      children: childrenProp,\n      className,\n      component = 'div',\n      allowScrollButtonsMobile = false,\n      indicatorColor = 'primary',\n      onChange,\n      orientation = 'horizontal',\n      ScrollButtonComponent = TabScrollButton,\n      scrollButtons = 'auto',\n      selectionFollowsFocus,\n      slots = {},\n      slotProps = {},\n      TabIndicatorProps = {},\n      TabScrollButtonProps = {},\n      textColor = 'primary',\n      value,\n      variant = 'standard',\n      visibleScrollbar = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const scrollable = variant === 'scrollable';\n  const vertical = orientation === 'vertical';\n  const scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n  const start = vertical ? 'top' : 'left';\n  const end = vertical ? 'bottom' : 'right';\n  const clientSize = vertical ? 'clientHeight' : 'clientWidth';\n  const size = vertical ? 'height' : 'width';\n  const ownerState = _extends({}, props, {\n    component,\n    allowScrollButtonsMobile,\n    indicatorColor,\n    orientation,\n    vertical,\n    scrollButtons,\n    textColor,\n    variant,\n    visibleScrollbar,\n    fixed: !scrollable,\n    hideScrollbar: scrollable && !visibleScrollbar,\n    scrollableX: scrollable && !vertical,\n    scrollableY: scrollable && vertical,\n    centered: centered && !scrollable,\n    scrollButtonsHideMobile: !allowScrollButtonsMobile\n  });\n  const classes = useUtilityClasses(ownerState);\n  const startScrollButtonIconProps = useSlotProps({\n    elementType: slots.StartScrollButtonIcon,\n    externalSlotProps: slotProps.startScrollButtonIcon,\n    ownerState\n  });\n  const endScrollButtonIconProps = useSlotProps({\n    elementType: slots.EndScrollButtonIcon,\n    externalSlotProps: slotProps.endScrollButtonIcon,\n    ownerState\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    if (centered && scrollable) {\n      console.error('MUI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n    }\n  }\n  const [mounted, setMounted] = React.useState(false);\n  const [indicatorStyle, setIndicatorStyle] = React.useState(defaultIndicatorStyle);\n  const [displayStartScroll, setDisplayStartScroll] = React.useState(false);\n  const [displayEndScroll, setDisplayEndScroll] = React.useState(false);\n  const [updateScrollObserver, setUpdateScrollObserver] = React.useState(false);\n  const [scrollerStyle, setScrollerStyle] = React.useState({\n    overflow: 'hidden',\n    scrollbarWidth: 0\n  });\n  const valueToIndex = new Map();\n  const tabsRef = React.useRef(null);\n  const tabListRef = React.useRef(null);\n  const getTabsMeta = () => {\n    const tabsNode = tabsRef.current;\n    let tabsMeta;\n    if (tabsNode) {\n      const rect = tabsNode.getBoundingClientRect();\n      // create a new object with ClientRect class props + scrollLeft\n      tabsMeta = {\n        clientWidth: tabsNode.clientWidth,\n        scrollLeft: tabsNode.scrollLeft,\n        scrollTop: tabsNode.scrollTop,\n        scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, isRtl ? 'rtl' : 'ltr'),\n        scrollWidth: tabsNode.scrollWidth,\n        top: rect.top,\n        bottom: rect.bottom,\n        left: rect.left,\n        right: rect.right\n      };\n    }\n    let tabMeta;\n    if (tabsNode && value !== false) {\n      const children = tabListRef.current.children;\n      if (children.length > 0) {\n        const tab = children[valueToIndex.get(value)];\n        if (process.env.NODE_ENV !== 'production') {\n          if (!tab) {\n            console.error([`MUI: The \\`value\\` provided to the Tabs component is invalid.`, `None of the Tabs' children match with \"${value}\".`, valueToIndex.keys ? `You can provide one of the following values: ${Array.from(valueToIndex.keys()).join(', ')}.` : null].join('\\n'));\n          }\n        }\n        tabMeta = tab ? tab.getBoundingClientRect() : null;\n        if (process.env.NODE_ENV !== 'production') {\n          if (process.env.NODE_ENV !== 'test' && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0 &&\n          // if the whole Tabs component is hidden, don't warn\n          tabsMeta.clientWidth !== 0) {\n            tabsMeta = null;\n            console.error(['MUI: The `value` provided to the Tabs component is invalid.', `The Tab with this \\`value\\` (\"${value}\") is not part of the document layout.`, \"Make sure the tab item is present in the document or that it's not `display: none`.\"].join('\\n'));\n            warnedOnceTabPresent = true;\n          }\n        }\n      }\n    }\n    return {\n      tabsMeta,\n      tabMeta\n    };\n  };\n  const updateIndicatorState = useEventCallback(() => {\n    const {\n      tabsMeta,\n      tabMeta\n    } = getTabsMeta();\n    let startValue = 0;\n    let startIndicator;\n    if (vertical) {\n      startIndicator = 'top';\n      if (tabMeta && tabsMeta) {\n        startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n      }\n    } else {\n      startIndicator = isRtl ? 'right' : 'left';\n      if (tabMeta && tabsMeta) {\n        const correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n        startValue = (isRtl ? -1 : 1) * (tabMeta[startIndicator] - tabsMeta[startIndicator] + correction);\n      }\n    }\n    const newIndicatorStyle = {\n      [startIndicator]: startValue,\n      // May be wrong until the font is loaded.\n      [size]: tabMeta ? tabMeta[size] : 0\n    };\n\n    // IE11 support, replace with Number.isNaN\n    // eslint-disable-next-line no-restricted-globals\n    if (isNaN(indicatorStyle[startIndicator]) || isNaN(indicatorStyle[size])) {\n      setIndicatorStyle(newIndicatorStyle);\n    } else {\n      const dStart = Math.abs(indicatorStyle[startIndicator] - newIndicatorStyle[startIndicator]);\n      const dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n      if (dStart >= 1 || dSize >= 1) {\n        setIndicatorStyle(newIndicatorStyle);\n      }\n    }\n  });\n  const scroll = (scrollValue, {\n    animation = true\n  } = {}) => {\n    if (animation) {\n      animate(scrollStart, tabsRef.current, scrollValue, {\n        duration: theme.transitions.duration.standard\n      });\n    } else {\n      tabsRef.current[scrollStart] = scrollValue;\n    }\n  };\n  const moveTabsScroll = delta => {\n    let scrollValue = tabsRef.current[scrollStart];\n    if (vertical) {\n      scrollValue += delta;\n    } else {\n      scrollValue += delta * (isRtl ? -1 : 1);\n      // Fix for Edge\n      scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n    }\n    scroll(scrollValue);\n  };\n  const getScrollSize = () => {\n    const containerSize = tabsRef.current[clientSize];\n    let totalSize = 0;\n    const children = Array.from(tabListRef.current.children);\n    for (let i = 0; i < children.length; i += 1) {\n      const tab = children[i];\n      if (totalSize + tab[clientSize] > containerSize) {\n        // If the first item is longer than the container size, then only scroll\n        // by the container size.\n        if (i === 0) {\n          totalSize = containerSize;\n        }\n        break;\n      }\n      totalSize += tab[clientSize];\n    }\n    return totalSize;\n  };\n  const handleStartScrollClick = () => {\n    moveTabsScroll(-1 * getScrollSize());\n  };\n  const handleEndScrollClick = () => {\n    moveTabsScroll(getScrollSize());\n  };\n\n  // TODO Remove <ScrollbarSize /> as browser support for hiding the scrollbar\n  // with CSS improves.\n  const handleScrollbarSizeChange = React.useCallback(scrollbarWidth => {\n    setScrollerStyle({\n      overflow: null,\n      scrollbarWidth\n    });\n  }, []);\n  const getConditionalElements = () => {\n    const conditionalElements = {};\n    conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/_jsx(TabsScrollbarSize, {\n      onChange: handleScrollbarSizeChange,\n      className: clsx(classes.scrollableX, classes.hideScrollbar)\n    }) : null;\n    const scrollButtonsActive = displayStartScroll || displayEndScroll;\n    const showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === true);\n    conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n      slots: {\n        StartScrollButtonIcon: slots.StartScrollButtonIcon\n      },\n      slotProps: {\n        startScrollButtonIcon: startScrollButtonIconProps\n      },\n      orientation: orientation,\n      direction: isRtl ? 'right' : 'left',\n      onClick: handleStartScrollClick,\n      disabled: !displayStartScroll\n    }, TabScrollButtonProps, {\n      className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n    })) : null;\n    conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n      slots: {\n        EndScrollButtonIcon: slots.EndScrollButtonIcon\n      },\n      slotProps: {\n        endScrollButtonIcon: endScrollButtonIconProps\n      },\n      orientation: orientation,\n      direction: isRtl ? 'left' : 'right',\n      onClick: handleEndScrollClick,\n      disabled: !displayEndScroll\n    }, TabScrollButtonProps, {\n      className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n    })) : null;\n    return conditionalElements;\n  };\n  const scrollSelectedIntoView = useEventCallback(animation => {\n    const {\n      tabsMeta,\n      tabMeta\n    } = getTabsMeta();\n    if (!tabMeta || !tabsMeta) {\n      return;\n    }\n    if (tabMeta[start] < tabsMeta[start]) {\n      // left side of button is out of view\n      const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n      scroll(nextScrollStart, {\n        animation\n      });\n    } else if (tabMeta[end] > tabsMeta[end]) {\n      // right side of button is out of view\n      const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n      scroll(nextScrollStart, {\n        animation\n      });\n    }\n  });\n  const updateScrollButtonState = useEventCallback(() => {\n    if (scrollable && scrollButtons !== false) {\n      setUpdateScrollObserver(!updateScrollObserver);\n    }\n  });\n  React.useEffect(() => {\n    const handleResize = debounce(() => {\n      // If the Tabs component is replaced by Suspense with a fallback, the last\n      // ResizeObserver's handler that runs because of the change in the layout is trying to\n      // access a dom node that is no longer there (as the fallback component is being shown instead).\n      // See https://github.com/mui/material-ui/issues/33276\n      // TODO: Add tests that will ensure the component is not failing when\n      // replaced by Suspense with a fallback, once React is updated to version 18\n      if (tabsRef.current) {\n        updateIndicatorState();\n      }\n    });\n    let resizeObserver;\n\n    /**\n     * @type {MutationCallback}\n     */\n    const handleMutation = records => {\n      records.forEach(record => {\n        record.removedNodes.forEach(item => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.unobserve(item);\n        });\n        record.addedNodes.forEach(item => {\n          var _resizeObserver2;\n          (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.observe(item);\n        });\n      });\n      handleResize();\n      updateScrollButtonState();\n    };\n    const win = ownerWindow(tabsRef.current);\n    win.addEventListener('resize', handleResize);\n    let mutationObserver;\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(handleResize);\n      Array.from(tabListRef.current.children).forEach(child => {\n        resizeObserver.observe(child);\n      });\n    }\n    if (typeof MutationObserver !== 'undefined') {\n      mutationObserver = new MutationObserver(handleMutation);\n      mutationObserver.observe(tabListRef.current, {\n        childList: true\n      });\n    }\n    return () => {\n      var _mutationObserver, _resizeObserver3;\n      handleResize.clear();\n      win.removeEventListener('resize', handleResize);\n      (_mutationObserver = mutationObserver) == null || _mutationObserver.disconnect();\n      (_resizeObserver3 = resizeObserver) == null || _resizeObserver3.disconnect();\n    };\n  }, [updateIndicatorState, updateScrollButtonState]);\n\n  /**\n   * Toggle visibility of start and end scroll buttons\n   * Using IntersectionObserver on first and last Tabs.\n   */\n  React.useEffect(() => {\n    const tabListChildren = Array.from(tabListRef.current.children);\n    const length = tabListChildren.length;\n    if (typeof IntersectionObserver !== 'undefined' && length > 0 && scrollable && scrollButtons !== false) {\n      const firstTab = tabListChildren[0];\n      const lastTab = tabListChildren[length - 1];\n      const observerOptions = {\n        root: tabsRef.current,\n        threshold: 0.99\n      };\n      const handleScrollButtonStart = entries => {\n        setDisplayStartScroll(!entries[0].isIntersecting);\n      };\n      const firstObserver = new IntersectionObserver(handleScrollButtonStart, observerOptions);\n      firstObserver.observe(firstTab);\n      const handleScrollButtonEnd = entries => {\n        setDisplayEndScroll(!entries[0].isIntersecting);\n      };\n      const lastObserver = new IntersectionObserver(handleScrollButtonEnd, observerOptions);\n      lastObserver.observe(lastTab);\n      return () => {\n        firstObserver.disconnect();\n        lastObserver.disconnect();\n      };\n    }\n    return undefined;\n  }, [scrollable, scrollButtons, updateScrollObserver, childrenProp == null ? void 0 : childrenProp.length]);\n  React.useEffect(() => {\n    setMounted(true);\n  }, []);\n  React.useEffect(() => {\n    updateIndicatorState();\n  });\n  React.useEffect(() => {\n    // Don't animate on the first render.\n    scrollSelectedIntoView(defaultIndicatorStyle !== indicatorStyle);\n  }, [scrollSelectedIntoView, indicatorStyle]);\n  React.useImperativeHandle(action, () => ({\n    updateIndicator: updateIndicatorState,\n    updateScrollButtons: updateScrollButtonState\n  }), [updateIndicatorState, updateScrollButtonState]);\n  const indicator = /*#__PURE__*/_jsx(TabsIndicator, _extends({}, TabIndicatorProps, {\n    className: clsx(classes.indicator, TabIndicatorProps.className),\n    ownerState: ownerState,\n    style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n  }));\n  let childIndex = 0;\n  const children = React.Children.map(childrenProp, child => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return null;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    const childValue = child.props.value === undefined ? childIndex : child.props.value;\n    valueToIndex.set(childValue, childIndex);\n    const selected = childValue === value;\n    childIndex += 1;\n    return /*#__PURE__*/React.cloneElement(child, _extends({\n      fullWidth: variant === 'fullWidth',\n      indicator: selected && !mounted && indicator,\n      selected,\n      selectionFollowsFocus,\n      onChange,\n      textColor,\n      value: childValue\n    }, childIndex === 1 && value === false && !child.props.tabIndex ? {\n      tabIndex: 0\n    } : {}));\n  });\n  const handleKeyDown = event => {\n    const list = tabListRef.current;\n    const currentFocus = ownerDocument(list).activeElement;\n    // Keyboard navigation assumes that [role=\"tab\"] are siblings\n    // though we might warn in the future about nested, interactive elements\n    // as a a11y violation\n    const role = currentFocus.getAttribute('role');\n    if (role !== 'tab') {\n      return;\n    }\n    let previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n    let nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n    if (orientation === 'horizontal' && isRtl) {\n      // swap previousItemKey with nextItemKey\n      previousItemKey = 'ArrowRight';\n      nextItemKey = 'ArrowLeft';\n    }\n    switch (event.key) {\n      case previousItemKey:\n        event.preventDefault();\n        moveFocus(list, currentFocus, previousItem);\n        break;\n      case nextItemKey:\n        event.preventDefault();\n        moveFocus(list, currentFocus, nextItem);\n        break;\n      case 'Home':\n        event.preventDefault();\n        moveFocus(list, null, nextItem);\n        break;\n      case 'End':\n        event.preventDefault();\n        moveFocus(list, null, previousItem);\n        break;\n      default:\n        break;\n    }\n  };\n  const conditionalElements = getConditionalElements();\n  return /*#__PURE__*/_jsxs(TabsRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref,\n    as: component\n  }, other, {\n    children: [conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/_jsxs(TabsScroller, {\n      className: classes.scroller,\n      ownerState: ownerState,\n      style: {\n        overflow: scrollerStyle.overflow,\n        [vertical ? `margin${isRtl ? 'Left' : 'Right'}` : 'marginBottom']: visibleScrollbar ? undefined : -scrollerStyle.scrollbarWidth\n      },\n      ref: tabsRef,\n      children: [/*#__PURE__*/_jsx(FlexContainer, {\n        \"aria-label\": ariaLabel,\n        \"aria-labelledby\": ariaLabelledBy,\n        \"aria-orientation\": orientation === 'vertical' ? 'vertical' : null,\n        className: classes.flexContainer,\n        ownerState: ownerState,\n        onKeyDown: handleKeyDown,\n        ref: tabListRef,\n        role: \"tablist\",\n        children: children\n      }), mounted && indicator]\n    }), conditionalElements.scrollButtonEnd]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Callback fired when the component mounts.\n   * This is useful when you want to trigger an action programmatically.\n   * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n   *\n   * @param {object} actions This object contains all possible actions\n   * that can be triggered programmatically.\n   */\n  action: refType,\n  /**\n   * If `true`, the scroll buttons aren't forced hidden on mobile.\n   * By default the scroll buttons are hidden on mobile and takes precedence over `scrollButtons`.\n   * @default false\n   */\n  allowScrollButtonsMobile: PropTypes.bool,\n  /**\n   * The label for the Tabs as a string.\n   */\n  'aria-label': PropTypes.string,\n  /**\n   * An id or list of ids separated by a space that label the Tabs.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * If `true`, the tabs are centered.\n   * This prop is intended for large views.\n   * @default false\n   */\n  centered: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Determines the color of the indicator.\n   * @default 'primary'\n   */\n  indicatorColor: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n   * @param {any} value We default to the index of the child (number)\n   */\n  onChange: PropTypes.func,\n  /**\n   * The component orientation (layout flow direction).\n   * @default 'horizontal'\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n  /**\n   * The component used to render the scroll buttons.\n   * @default TabScrollButton\n   */\n  ScrollButtonComponent: PropTypes.elementType,\n  /**\n   * Determine behavior of scroll buttons when tabs are set to scroll:\n   *\n   * - `auto` will only present them when not all the items are visible.\n   * - `true` will always present them.\n   * - `false` will never present them.\n   *\n   * By default the scroll buttons are hidden on mobile.\n   * This behavior can be disabled with `allowScrollButtonsMobile`.\n   * @default 'auto'\n   */\n  scrollButtons: PropTypes /* @typescript-to-proptypes-ignore */.oneOf(['auto', false, true]),\n  /**\n   * If `true` the selected tab changes on focus. Otherwise it only\n   * changes on activation.\n   */\n  selectionFollowsFocus: PropTypes.bool,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    endScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    startScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    EndScrollButtonIcon: PropTypes.elementType,\n    StartScrollButtonIcon: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Props applied to the tab indicator element.\n   * @default  {}\n   */\n  TabIndicatorProps: PropTypes.object,\n  /**\n   * Props applied to the [`TabScrollButton`](/material-ui/api/tab-scroll-button/) element.\n   * @default {}\n   */\n  TabScrollButtonProps: PropTypes.object,\n  /**\n   * Determines the color of the `Tab`.\n   * @default 'primary'\n   */\n  textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n  /**\n   * The value of the currently selected `Tab`.\n   * If you don't want any selected `Tab`, you can set this prop to `false`.\n   */\n  value: PropTypes.any,\n  /**\n   * Determines additional display behavior of the tabs:\n   *\n   *  - `scrollable` will invoke scrolling properties and allow for horizontally\n   *  scrolling (or swiping) of the tab bar.\n   *  - `fullWidth` will make the tabs grow to use all the available space,\n   *  which should be used for small views, like on mobile.\n   *  - `standard` will render the default state.\n   * @default 'standard'\n   */\n  variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard']),\n  /**\n   * If `true`, the scrollbar is visible. It can be useful when displaying\n   * a long vertical list of tabs.\n   * @default false\n   */\n  visibleScrollbar: PropTypes.bool\n} : void 0;\nexport default Tabs;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTextFieldUtilityClass(slot) {\n  return generateUtilityClass('MuiTextField', slot);\n}\nconst textFieldClasses = generateUtilityClasses('MuiTextField', ['root']);\nexport default textFieldClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"autoComplete\", \"autoFocus\", \"children\", \"className\", \"color\", \"defaultValue\", \"disabled\", \"error\", \"FormHelperTextProps\", \"fullWidth\", \"helperText\", \"id\", \"InputLabelProps\", \"inputProps\", \"InputProps\", \"inputRef\", \"label\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"placeholder\", \"required\", \"rows\", \"select\", \"SelectProps\", \"type\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport refType from '@mui/utils/refType';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Input from '../Input';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nimport InputLabel from '../InputLabel';\nimport FormControl from '../FormControl';\nimport FormHelperText from '../FormHelperText';\nimport Select from '../Select';\nimport { getTextFieldUtilityClass } from './textFieldClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst variantComponent = {\n  standard: Input,\n  filled: FilledInput,\n  outlined: OutlinedInput\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getTextFieldUtilityClass, classes);\n};\nconst TextFieldRoot = styled(FormControl, {\n  name: 'MuiTextField',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n * The `TextField` is a convenience wrapper for the most common cases (80%).\n * It cannot be all things to all people, otherwise the API would grow out of control.\n *\n * ## Advanced Configuration\n *\n * It's important to understand that the text field is a simple abstraction\n * on top of the following components:\n *\n * - [FormControl](/material-ui/api/form-control/)\n * - [InputLabel](/material-ui/api/input-label/)\n * - [FilledInput](/material-ui/api/filled-input/)\n * - [OutlinedInput](/material-ui/api/outlined-input/)\n * - [Input](/material-ui/api/input/)\n * - [FormHelperText](/material-ui/api/form-helper-text/)\n *\n * If you wish to alter the props applied to the `input` element, you can do so as follows:\n *\n * ```jsx\n * const inputProps = {\n *   step: 300,\n * };\n *\n * return <TextField id=\"time\" type=\"time\" inputProps={inputProps} />;\n * ```\n *\n * For advanced cases, please look at the source of TextField by clicking on the\n * \"Edit this page\" button above. Consider either:\n *\n * - using the upper case props for passing values directly to the components\n * - using the underlying components directly as shown in the demos\n */\nconst TextField = /*#__PURE__*/React.forwardRef(function TextField(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTextField'\n  });\n  const {\n      autoComplete,\n      autoFocus = false,\n      children,\n      className,\n      color = 'primary',\n      defaultValue,\n      disabled = false,\n      error = false,\n      FormHelperTextProps,\n      fullWidth = false,\n      helperText,\n      id: idOverride,\n      InputLabelProps,\n      inputProps,\n      InputProps,\n      inputRef,\n      label,\n      maxRows,\n      minRows,\n      multiline = false,\n      name,\n      onBlur,\n      onChange,\n      onFocus,\n      placeholder,\n      required = false,\n      rows,\n      select = false,\n      SelectProps,\n      type,\n      value,\n      variant = 'outlined'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    autoFocus,\n    color,\n    disabled,\n    error,\n    fullWidth,\n    multiline,\n    required,\n    select,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (process.env.NODE_ENV !== 'production') {\n    if (select && !children) {\n      console.error('MUI: `children` must be passed when using the `TextField` component with `select`.');\n    }\n  }\n  const InputMore = {};\n  if (variant === 'outlined') {\n    if (InputLabelProps && typeof InputLabelProps.shrink !== 'undefined') {\n      InputMore.notched = InputLabelProps.shrink;\n    }\n    InputMore.label = label;\n  }\n  if (select) {\n    // unset defaults from textbox inputs\n    if (!SelectProps || !SelectProps.native) {\n      InputMore.id = undefined;\n    }\n    InputMore['aria-describedby'] = undefined;\n  }\n  const id = useId(idOverride);\n  const helperTextId = helperText && id ? `${id}-helper-text` : undefined;\n  const inputLabelId = label && id ? `${id}-label` : undefined;\n  const InputComponent = variantComponent[variant];\n  const InputElement = /*#__PURE__*/_jsx(InputComponent, _extends({\n    \"aria-describedby\": helperTextId,\n    autoComplete: autoComplete,\n    autoFocus: autoFocus,\n    defaultValue: defaultValue,\n    fullWidth: fullWidth,\n    multiline: multiline,\n    name: name,\n    rows: rows,\n    maxRows: maxRows,\n    minRows: minRows,\n    type: type,\n    value: value,\n    id: id,\n    inputRef: inputRef,\n    onBlur: onBlur,\n    onChange: onChange,\n    onFocus: onFocus,\n    placeholder: placeholder,\n    inputProps: inputProps\n  }, InputMore, InputProps));\n  return /*#__PURE__*/_jsxs(TextFieldRoot, _extends({\n    className: clsx(classes.root, className),\n    disabled: disabled,\n    error: error,\n    fullWidth: fullWidth,\n    ref: ref,\n    required: required,\n    color: color,\n    variant: variant,\n    ownerState: ownerState\n  }, other, {\n    children: [label != null && label !== '' && /*#__PURE__*/_jsx(InputLabel, _extends({\n      htmlFor: id,\n      id: inputLabelId\n    }, InputLabelProps, {\n      children: label\n    })), select ? /*#__PURE__*/_jsx(Select, _extends({\n      \"aria-describedby\": helperTextId,\n      id: id,\n      labelId: inputLabelId,\n      value: value,\n      input: InputElement\n    }, SelectProps, {\n      children: children\n    })) : InputElement, helperText && /*#__PURE__*/_jsx(FormHelperText, _extends({\n      id: helperTextId\n    }, FormHelperTextProps, {\n      children: helperText\n    }))]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TextField.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * Props applied to the [`FormHelperText`](/material-ui/api/form-helper-text/) element.\n   */\n  FormHelperTextProps: PropTypes.object,\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The helper text content.\n   */\n  helperText: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   * Use this prop to make `label` and `helperText` accessible for screen readers.\n   */\n  id: PropTypes.string,\n  /**\n   * Props applied to the [`InputLabel`](/material-ui/api/input-label/) element.\n   * Pointer events like `onClick` are enabled if and only if `shrink` is `true`.\n   */\n  InputLabelProps: PropTypes.object,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Props applied to the Input element.\n   * It will be a [`FilledInput`](/material-ui/api/filled-input/),\n   * [`OutlinedInput`](/material-ui/api/outlined-input/) or [`Input`](/material-ui/api/input/)\n   * component depending on the `variant` prop value.\n   */\n  InputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a `textarea` element is rendered instead of an input.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * If `true`, the label is displayed as required and the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Render a [`Select`](/material-ui/api/select/) element while passing the Input element to `Select` as `input` parameter.\n   * If this option is set you must pass the options of the select as children.\n   * @default false\n   */\n  select: PropTypes.bool,\n  /**\n   * Props applied to the [`Select`](/material-ui/api/select/) element.\n   */\n  SelectProps: PropTypes.object,\n  /**\n   * The size of the component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   */\n  type: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default TextField;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getToggleButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiToggleButton', slot);\n}\nconst toggleButtonClasses = generateUtilityClasses('MuiToggleButton', ['root', 'disabled', 'selected', 'standard', 'primary', 'secondary', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'fullWidth']);\nexport default toggleButtonClasses;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ToggleButtonGroupContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  ToggleButtonGroupContext.displayName = 'ToggleButtonGroupContext';\n}\nexport default ToggleButtonGroupContext;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ToggleButtonGroupButtonContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  ToggleButtonGroupButtonContext.displayName = 'ToggleButtonGroupButtonContext';\n}\nexport default ToggleButtonGroupButtonContext;","// Determine if the toggle button value matches, or is contained in, the\n// candidate group value.\nexport default function isValueSelected(value, candidate) {\n  if (candidate === undefined || value === undefined) {\n    return false;\n  }\n  if (Array.isArray(candidate)) {\n    return candidate.indexOf(value) >= 0;\n  }\n  return value === candidate;\n}","'use client';\n\n// @inheritedComponent ButtonBase\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"value\"],\n  _excluded2 = [\"children\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"fullWidth\", \"onChange\", \"onClick\", \"selected\", \"size\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport resolveProps from '@mui/utils/resolveProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '../styles';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport toggleButtonClasses, { getToggleButtonUtilityClass } from './toggleButtonClasses';\nimport ToggleButtonGroupContext from '../ToggleButtonGroup/ToggleButtonGroupContext';\nimport ToggleButtonGroupButtonContext from '../ToggleButtonGroup/ToggleButtonGroupButtonContext';\nimport isValueSelected from '../ToggleButtonGroup/isValueSelected';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    fullWidth,\n    selected,\n    disabled,\n    size,\n    color\n  } = ownerState;\n  const slots = {\n    root: ['root', selected && 'selected', disabled && 'disabled', fullWidth && 'fullWidth', `size${capitalize(size)}`, color]\n  };\n  return composeClasses(slots, getToggleButtonUtilityClass, classes);\n};\nconst ToggleButtonRoot = styled(ButtonBase, {\n  name: 'MuiToggleButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`size${capitalize(ownerState.size)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  let selectedColor = ownerState.color === 'standard' ? theme.palette.text.primary : theme.palette[ownerState.color].main;\n  let selectedColorChannel;\n  if (theme.vars) {\n    selectedColor = ownerState.color === 'standard' ? theme.vars.palette.text.primary : theme.vars.palette[ownerState.color].main;\n    selectedColorChannel = ownerState.color === 'standard' ? theme.vars.palette.text.primaryChannel : theme.vars.palette[ownerState.color].mainChannel;\n  }\n  return _extends({}, theme.typography.button, {\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    padding: 11,\n    border: `1px solid ${(theme.vars || theme).palette.divider}`,\n    color: (theme.vars || theme).palette.action.active\n  }, ownerState.fullWidth && {\n    width: '100%'\n  }, {\n    [`&.${toggleButtonClasses.disabled}`]: {\n      color: (theme.vars || theme).palette.action.disabled,\n      border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n    },\n    '&:hover': {\n      textDecoration: 'none',\n      // Reset on mouse devices\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    },\n    [`&.${toggleButtonClasses.selected}`]: {\n      color: selectedColor,\n      backgroundColor: theme.vars ? `rgba(${selectedColorChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(selectedColor, theme.palette.action.selectedOpacity),\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${selectedColorChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(selectedColor, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: theme.vars ? `rgba(${selectedColorChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(selectedColor, theme.palette.action.selectedOpacity)\n        }\n      }\n    }\n  }, ownerState.size === 'small' && {\n    padding: 7,\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && {\n    padding: 15,\n    fontSize: theme.typography.pxToRem(15)\n  });\n});\nconst ToggleButton = /*#__PURE__*/React.forwardRef(function ToggleButton(inProps, ref) {\n  // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n  const _React$useContext = React.useContext(ToggleButtonGroupContext),\n    {\n      value: contextValue\n    } = _React$useContext,\n    contextProps = _objectWithoutPropertiesLoose(_React$useContext, _excluded);\n  const toggleButtonGroupButtonContextPositionClassName = React.useContext(ToggleButtonGroupButtonContext);\n  const resolvedProps = resolveProps(_extends({}, contextProps, {\n    selected: isValueSelected(inProps.value, contextValue)\n  }), inProps);\n  const props = useDefaultProps({\n    props: resolvedProps,\n    name: 'MuiToggleButton'\n  });\n  const {\n      children,\n      className,\n      color = 'standard',\n      disabled = false,\n      disableFocusRipple = false,\n      fullWidth = false,\n      onChange,\n      onClick,\n      selected,\n      size = 'medium',\n      value\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const ownerState = _extends({}, props, {\n    color,\n    disabled,\n    disableFocusRipple,\n    fullWidth,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  const handleChange = event => {\n    if (onClick) {\n      onClick(event, value);\n      if (event.defaultPrevented) {\n        return;\n      }\n    }\n    if (onChange) {\n      onChange(event, value);\n    }\n  };\n  const positionClassName = toggleButtonGroupButtonContextPositionClassName || '';\n  return /*#__PURE__*/_jsx(ToggleButtonRoot, _extends({\n    className: clsx(contextProps.className, classes.root, className, positionClassName),\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    ref: ref,\n    onClick: handleChange,\n    onChange: onChange,\n    value: value,\n    ownerState: ownerState,\n    \"aria-pressed\": selected\n  }, other, {\n    children: children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ToggleButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the button when it is in an active state.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'standard'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['standard', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If `true`, the button will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * Callback fired when the state changes.\n   *\n   * @param {React.MouseEvent<HTMLElement>} event The event source of the callback.\n   * @param {any} value of the selected button.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the button is clicked.\n   *\n   * @param {React.MouseEvent<HTMLElement>} event The event source of the callback.\n   * @param {any} value of the selected button.\n   */\n  onClick: PropTypes.func,\n  /**\n   * If `true`, the button is rendered in an active state.\n   */\n  selected: PropTypes.bool,\n  /**\n   * The size of the component.\n   * The prop defaults to the value inherited from the parent ToggleButtonGroup component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value to associate with the button when selected in a\n   * ToggleButtonGroup.\n   */\n  value: PropTypes /* @typescript-to-proptypes-ignore */.any.isRequired\n} : void 0;\nexport default ToggleButton;","export const version = \"5.18.0\";\nexport const major = Number(\"5\");\nexport const minor = Number(\"18\");\nexport const patch = Number(\"0\");\nexport const preReleaseLabel = undefined || null;\nexport const preReleaseNumber = Number(undefined) || null;\nexport default version;","import { useEffect, useState } from \"react\";\n\nconst useDebounce = (value: any, delay: number = 300) => {\n  const [debouncedValue, setDebouncedValue] = useState(value);\n\n  useEffect(\n    () => {\n      // Update debounced value after delay\n      const handler = setTimeout(() => {\n        setDebouncedValue(value);\n      }, delay);\n\n      // Cancel the timeout if value changes (also on delay change or unmount)\n      // This is how we prevent debounced value from updating if value is changed ...\n      // .. within the delay period. Timeout gets cleared and restarted.\n      return () => {\n        clearTimeout(handler);\n      };\n    },\n    [value, delay] // Only re-call effect if value or delay changes\n  );\n\n  return debouncedValue;\n};\n\nexport default useDebounce;\n","import React from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\n\nimport { type ExtendedTheme } from \"../theme/theme-type\";\n\n// useExtendedTheme should now generally be used everywhere in place of useTheme.\nconst useExtendedTheme = () => useTheme<ExtendedTheme>();\n\nexport default useExtendedTheme;\n","import * as ReactJSXRuntime from 'react/jsx-runtime';\nimport { h as hasOwn, E as Emotion, c as createEmotionProps } from '../../dist/emotion-element-f0de968e.browser.esm.js';\nimport 'react';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar Fragment = ReactJSXRuntime.Fragment;\nvar jsx = function jsx(type, props, key) {\n  if (!hasOwn.call(props, 'css')) {\n    return ReactJSXRuntime.jsx(type, props, key);\n  }\n\n  return ReactJSXRuntime.jsx(Emotion, createEmotionProps(type, props), key);\n};\nvar jsxs = function jsxs(type, props, key) {\n  if (!hasOwn.call(props, 'css')) {\n    return ReactJSXRuntime.jsxs(type, props, key);\n  }\n\n  return ReactJSXRuntime.jsxs(Emotion, createEmotionProps(type, props), key);\n};\n\nexport { Fragment, jsx, jsxs };\n","import React from \"react\";\nimport MUISvgIcon, {\n  SvgIconProps as MUISvgIconProps,\n} from \"@mui/material/SvgIcon\";\n\nconst BinIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps} viewBox=\"6 5 12 14\">\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M12.5556 6C13.476 6 14.2222 6.80589 14.2222 7.8H17V9H15.8889V16.2C15.8889 17.1941 15.1427 18 14.2222 18H9.77778C8.8573 18 8.11111 17.1941 8.11111 16.2V9H7V7.8H9.77778C9.77778 6.80589 10.524 6 11.4444 6H12.5556ZM9.22222 16.2L9.22494 16.2615C9.25345 16.564 9.49018 16.8 9.77778 16.8H14.2222L14.2792 16.7971C14.5593 16.7663 14.7778 16.5106 14.7778 16.2V9H9.22222V16.2ZM11.4444 7.2C11.1376 7.2 10.8889 7.46863 10.8889 7.8H13.1111C13.1111 7.46863 12.8624 7.2 12.5556 7.2H11.4444Z\"\n      fill=\"currentColor\"\n    />\n  </MUISvgIcon>\n);\n\nexport default BinIcon;\n","import React from \"react\";\nimport MUISvgIcon, {\n  SvgIconProps as MUISvgIconProps,\n} from \"@mui/material/SvgIcon\";\n\nexport const CloseIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps} viewBox=\"0 0 12 13\">\n    <path\n      d=\"M11.9997 1.84102L10.8247 0.666016L6.16634 5.32435L1.50801 0.666016L0.333008 1.84102L4.99134 6.49935L0.333008 11.1577L1.50801 12.3327L6.16634 7.67435L10.8247 12.3327L11.9997 11.1577L7.34134 6.49935L11.9997 1.84102Z\"\n      fill=\"currentColor\"\n    />\n  </MUISvgIcon>\n);\n\nexport default CloseIcon;\n","import React from \"react\";\nimport MUISvgIcon, { SvgIconProps as MUISvgIconProps } from \"@mui/material/SvgIcon\";\n\nexport const XIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps} viewBox=\"0 0 640 640\">\n    <path\n      fill=\"currentColor\"\n      d=\"M183.1 137.4C170.6 124.9 150.3 124.9 137.8 137.4C125.3 149.9 125.3 170.2 137.8 182.7L275.2 320L137.9 457.4C125.4 469.9 125.4 490.2 137.9 502.7C150.4 515.2 170.7 515.2 183.2 502.7L320.5 365.3L457.9 502.6C470.4 515.1 490.7 515.1 503.2 502.6C515.7 490.1 515.7 469.8 503.2 457.3L365.8 320L503.1 182.6C515.6 170.1 515.6 149.8 503.1 137.3C490.6 124.8 470.3 124.8 457.8 137.3L320.5 274.7L183.1 137.4z\"\n    />\n  </MUISvgIcon>\n);\n\nexport default XIcon;\n","import React from \"react\";\nimport { SvgIcon, SvgIconProps } from \"@mui/material\";\n\n/*\n * Needs to be scaled for a 24 x 24 grid\n */\n\nconst DataServiceIcon: React.FC<SvgIconProps> = (svgIconProps) => (\n  <SvgIcon {...svgIconProps}>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"27\" viewBox=\"0 0 15 27\" fill=\"none\">\n      <circle\n        cx=\"1.74976\"\n        cy=\"22.345\"\n        r=\"1.40649\"\n        transform=\"rotate(90 1.74976 22.345)\"\n        fill=\"currentColor\"\n      />\n      <circle\n        cx=\"13.2517\"\n        cy=\"18.658\"\n        r=\"1.40649\"\n        transform=\"rotate(90 13.2517 18.658)\"\n        fill=\"currentColor\"\n      />\n      <circle\n        cx=\"7.80444\"\n        cy=\"25.158\"\n        r=\"1.40649\"\n        transform=\"rotate(90 7.80444 25.158)\"\n        fill=\"currentColor\"\n      />\n      <mask id=\"path-4-inside-1_780_6722\" fill=\"white\">\n        <path\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M2.98926 3.68708C3.01775 3.50841 3.18208 3.19325 3.76767 2.86471C4.39167 2.51461 5.32116 2.2666 6.40234 2.2666C7.48353 2.2666 8.41301 2.51461 9.03702 2.86471C9.58822 3.17396 9.76619 3.47136 9.80895 3.65422H9.80797V11.1355H11.808V3.7453H11.8203C11.8203 2.53778 10.9587 1.64962 10.0156 1.12048C9.04064 0.573466 7.76113 0.266602 6.40234 0.266602C5.04356 0.266602 3.76405 0.573466 2.78907 1.12048C1.84595 1.64962 0.984375 2.53778 0.984375 3.7453H0.989258V11.1355H2.98926V3.68708ZM3.75132 11.916C4.37769 12.25 5.31192 12.4871 6.39861 12.4871C7.48531 12.4871 8.41954 12.25 9.04591 11.916C9.71526 11.559 9.80797 11.2357 9.80797 11.1355H11.808C11.808 12.334 10.9136 13.1865 9.98709 13.6807C9.01759 14.1977 7.74714 14.4871 6.39861 14.4871C5.05009 14.4871 3.77964 14.1977 2.81014 13.6807C1.88361 13.1865 0.989258 12.334 0.989258 11.1355H2.98926C2.98926 11.2357 3.08197 11.559 3.75132 11.916Z\"\n        />\n      </mask>\n      <path\n        d=\"M3.76767 2.86471L2.78907 1.12048L2.78907 1.12048L3.76767 2.86471ZM2.98926 3.68708L1.01422 3.3721L0.989258 3.5286V3.68708H2.98926ZM9.03702 2.86471L8.05842 4.60894L8.05842 4.60894L9.03702 2.86471ZM9.80895 3.65422V5.65422H12.3306L11.7564 3.19881L9.80895 3.65422ZM9.80797 3.65422V1.65422H7.80797V3.65422H9.80797ZM9.80797 11.1355H7.80797V13.1355H9.80797V11.1355ZM11.808 11.1355V13.1355H13.808V11.1355H11.808ZM11.808 3.7453V1.7453H9.80797V3.7453H11.808ZM11.8203 3.7453V5.7453H13.8203V3.7453H11.8203ZM10.0156 1.12048L10.9942 -0.623753L10.9942 -0.623753L10.0156 1.12048ZM2.78907 1.12048L1.81047 -0.623753L2.78907 1.12048ZM0.984375 3.7453H-1.01562V5.7453H0.984375V3.7453ZM0.989258 3.7453H2.98926V1.7453H0.989258V3.7453ZM0.989258 11.1355H-1.01074V13.1355H0.989258V11.1355ZM2.98926 11.1355V13.1355H4.98926V11.1355H2.98926ZM3.75132 11.916L4.69249 10.1513L4.69249 10.1513L3.75132 11.916ZM9.04591 11.916L8.10474 10.1513L8.10474 10.1513L9.04591 11.916ZM9.80797 11.1355V9.13546H7.80797V11.1355H9.80797ZM11.808 11.1355H13.808V9.13546H11.808V11.1355ZM9.98709 13.6807L9.04591 11.916L9.04591 11.916L9.98709 13.6807ZM2.81014 13.6807L3.75132 11.916L3.75132 11.916L2.81014 13.6807ZM0.989258 11.1355V9.13546H-1.01074V11.1355H0.989258ZM2.98926 11.1355H4.98926V9.13546H2.98926V11.1355ZM2.78907 1.12048C1.90355 1.6173 1.17442 2.36756 1.01422 3.3721L4.9643 4.00206C4.86108 4.64927 4.4606 4.76921 4.74627 4.60894L2.78907 1.12048ZM6.40234 0.266602C5.04329 0.266602 3.76386 0.573574 2.78907 1.12048L4.74627 4.60894C5.01949 4.45565 5.59902 4.2666 6.40234 4.2666V0.266602ZM10.0156 1.12048C9.04083 0.573574 7.7614 0.266602 6.40234 0.266602V4.2666C7.20567 4.2666 7.7852 4.45565 8.05842 4.60894L10.0156 1.12048ZM11.7564 3.19881C11.5411 2.27819 10.8538 1.59073 10.0156 1.12048L8.05842 4.60894C8.32267 4.7572 7.99125 4.66452 7.86149 4.10963L11.7564 3.19881ZM9.80895 1.65422H9.80797V5.65422H9.80895V1.65422ZM7.80797 3.65422V11.1355H11.808V3.65422H7.80797ZM9.80797 13.1355H11.808V9.13545H9.80797V13.1355ZM13.808 11.1355V3.7453H9.80797V11.1355H13.808ZM11.8203 1.7453H11.808V5.7453H11.8203V1.7453ZM9.03702 2.86471C9.33286 3.03069 9.55027 3.21864 9.67853 3.38763C9.79333 3.53888 9.82031 3.64791 9.82031 3.7453H13.8203C13.8203 1.48375 12.2142 0.0606988 10.9942 -0.623753L9.03702 2.86471ZM6.40234 2.2666C7.48373 2.2666 8.41316 2.51469 9.03702 2.86471L10.9942 -0.623753C9.66812 -1.36776 8.03854 -1.7334 6.40234 -1.7334V2.2666ZM3.76767 2.86471C4.39153 2.51469 5.32096 2.2666 6.40234 2.2666V-1.7334C4.76615 -1.7334 3.13657 -1.36776 1.81047 -0.623753L3.76767 2.86471ZM2.98438 3.7453C2.98438 3.64791 3.01136 3.53888 3.12616 3.38763C3.25442 3.21864 3.47183 3.03069 3.76767 2.86471L1.81047 -0.623753C0.590519 0.0606987 -1.01562 1.48375 -1.01562 3.7453H2.98438ZM0.989258 1.7453H0.984375V5.7453H0.989258V1.7453ZM-1.01074 3.7453V11.1355H2.98926V3.7453H-1.01074ZM0.989258 13.1355H2.98926V9.13545H0.989258V13.1355ZM4.98926 11.1355V3.68708H0.989258V11.1355H4.98926ZM6.39861 10.4871C5.57397 10.4871 4.97592 10.3024 4.69249 10.1513L2.81014 13.6807C3.77947 14.1977 5.04987 14.4871 6.39861 14.4871V10.4871ZM8.10474 10.1513C7.82131 10.3024 7.22326 10.4871 6.39861 10.4871V14.4871C7.74736 14.4871 9.01776 14.1977 9.98709 13.6807L8.10474 10.1513ZM7.80797 11.1355C7.80797 10.6452 7.99822 10.332 8.09667 10.2049C8.20527 10.0647 8.26004 10.0684 8.10474 10.1513L9.98709 13.6807C10.9516 13.1663 11.808 12.3057 11.808 11.1355H7.80797ZM11.808 9.13546H9.80797V13.1355H11.808V9.13546ZM10.9283 15.4454C12.0997 14.8206 13.808 13.4411 13.808 11.1355H9.80797C9.80797 11.2015 9.79263 11.2859 9.68257 11.4237C9.55677 11.5811 9.33992 11.7592 9.04591 11.916L10.9283 15.4454ZM6.39861 16.4871C8.00879 16.4871 9.61553 16.1455 10.9283 15.4454L9.04591 11.916C8.41966 12.25 7.48548 12.4871 6.39861 12.4871V16.4871ZM1.86896 15.4454C3.1817 16.1455 4.78844 16.4871 6.39861 16.4871V12.4871C5.31175 12.4871 4.37757 12.25 3.75132 11.916L1.86896 15.4454ZM-1.01074 11.1355C-1.01074 13.4411 0.697576 14.8206 1.86896 15.4454L3.75132 11.916C3.45731 11.7592 3.24046 11.5811 3.11466 11.4237C3.0046 11.2859 2.98926 11.2015 2.98926 11.1355H-1.01074ZM2.98926 9.13546H0.989258V13.1355H2.98926V9.13546ZM4.69249 10.1513C4.53719 10.0684 4.59196 10.0647 4.70056 10.2049C4.79901 10.332 4.98926 10.6452 4.98926 11.1355H0.989258C0.989258 12.3057 1.84561 13.1663 2.81014 13.6807L4.69249 10.1513Z\"\n        fill=\"currentColor\"\n        mask=\"url(#path-4-inside-1_780_6722)\"\n      />\n      <path\n        d=\"M10.335 3.41366C10.335 4.44834 8.57274 5.28711 6.39893 5.28711C4.22511 5.28711 2.46289 4.44834 2.46289 3.41366\"\n        stroke=\"currentColor\"\n      />\n      <path\n        d=\"M10.9919 9.76806L13.252 12.0281L13.252 18.0281\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.5\"\n      />\n      <path\n        d=\"M4.40039 12.5454L1.91399 15.3954L1.91399 21.3954\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.5\"\n      />\n      <path d=\"M7.9043 13.0649L7.9043 24.2749\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n    </svg>\n  </SvgIcon>\n);\n\nexport default DataServiceIcon;\n","import React from \"react\";\nimport { SvgIcon, SvgIconProps } from \"@mui/material\";\n\n/*\n * Needs to be scaled for a 24 x 24 grid\n */\n\nconst DataSetIcon: React.FC<SvgIconProps> = (iconProps) => (\n  <SvgIcon {...iconProps}>\n    <svg width=\"19\" height=\"25\" viewBox=\"0 0 19 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g id=\"dataset icon\">\n        <rect\n          id=\"Rectangle 2\"\n          x=\"1.0332\"\n          y=\"1.90381\"\n          width=\"16.9326\"\n          height=\"22.0233\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n        />\n        <rect\n          id=\"Rectangle 3\"\n          x=\"3.82031\"\n          y=\"20.3071\"\n          width=\"11.3596\"\n          height=\"0.923972\"\n          fill=\"currentColor\"\n        />\n        <rect\n          id=\"Rectangle 4\"\n          x=\"3.82031\"\n          y=\"18.4595\"\n          width=\"11.3596\"\n          height=\"0.923972\"\n          fill=\"currentColor\"\n        />\n        <rect\n          id=\"Rectangle 5\"\n          x=\"3.82031\"\n          y=\"16.6113\"\n          width=\"11.3596\"\n          height=\"0.923972\"\n          fill=\"currentColor\"\n        />\n        <rect\n          id=\"Rectangle 6\"\n          x=\"3.82031\"\n          y=\"14.7632\"\n          width=\"11.3596\"\n          height=\"0.923972\"\n          fill=\"currentColor\"\n        />\n        <rect\n          id=\"Rectangle 14\"\n          x=\"3.82031\"\n          y=\"12.9155\"\n          width=\"4.73315\"\n          height=\"0.923972\"\n          fill=\"currentColor\"\n        />\n      </g>\n    </svg>\n  </SvgIcon>\n);\n\nexport default DataSetIcon;\n","import React from \"react\";\nimport MUISvgIcon, {\n  SvgIconProps as MUISvgIconProps,\n} from \"@mui/material/SvgIcon\";\n\nexport const DragHandleIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps} viewBox=\"0 0 7 12\">\n    <g fill=\"currentColor\">\n      <circle cx=\"5.61865\" cy=\"1.61865\" r=\"0.950684\" />\n      <circle cx=\"5.61865\" cy=\"6.29053\" r=\"0.950684\" />\n      <circle cx=\"5.61865\" cy=\"10.9624\" r=\"0.950684\" />\n      <circle cx=\"1.61865\" cy=\"1.61865\" r=\"0.950684\" />\n      <circle cx=\"1.61865\" cy=\"6.29053\" r=\"0.950684\" />\n      <circle cx=\"1.61865\" cy=\"10.9624\" r=\"0.950684\" />\n    </g>\n  </MUISvgIcon>\n);\n\nexport default DragHandleIcon;\n","import React from \"react\";\nimport MUISvgIcon, {\n  SvgIconProps as MUISvgIconProps,\n} from \"@mui/material/SvgIcon\";\n\nconst FloppyDiskIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps} viewBox=\"0 0 14 14\">\n    <path\n      d=\"M10.5845 0.626953H2.08713C1.30112 0.626953 0.670898 1.26426 0.670898 2.04319V11.9568C0.670898 12.7357 1.30112 13.373 2.08713 13.373H12.0008C12.7797 13.373 13.417 12.7357 13.417 11.9568V3.45942L10.5845 0.626953ZM7.04395 11.9568C5.86847 11.9568 4.9196 11.0079 4.9196 9.83247C4.9196 8.65699 5.86847 7.70812 7.04395 7.70812C8.21942 7.70812 9.16829 8.65699 9.16829 9.83247C9.16829 11.0079 8.21942 11.9568 7.04395 11.9568ZM9.16829 4.87565H2.08713V2.04319H9.16829V4.87565Z\"\n      fill=\"currentColor\"\n    />\n  </MUISvgIcon>\n);\n\nexport default FloppyDiskIcon;\n","import React from \"react\";\nimport MUISvgIcon, { SvgIconProps as MUISvgIconProps } from \"@mui/material/SvgIcon\";\n\nconst GridIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps} viewBox=\"0 0 44 44\">\n    <path d=\"M25.6673 7.33337H18.334V14.6667H25.6673V7.33337Z\" fill=\"currentColor\" />\n    <path d=\"M14.6673 18.3334H7.33398V25.6667H14.6673V18.3334Z\" fill=\"currentColor\" />\n    <path d=\"M25.6673 18.3334H18.334V25.6667H25.6673V18.3334Z\" fill=\"currentColor\" />\n    <path d=\"M36.6673 18.3334H29.334V25.6667H36.6673V18.3334Z\" fill=\"currentColor\" />\n    <path d=\"M18.334 29.3334H25.6673V36.6667H18.334V29.3334Z\" fill=\"currentColor\" />\n    <path\n      d=\"M7.33398 9.16671C7.33398 8.15419 8.1548 7.33337 9.16732 7.33337H14.6673V14.6667H7.33398V9.16671Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M14.6673 29.3334H7.33398V34.8334C7.33398 35.8459 8.1548 36.6667 9.16732 36.6667H14.6673V29.3334Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M29.334 29.3334H36.6673V34.8334C36.6673 35.8459 35.8465 36.6667 34.834 36.6667H29.334V29.3334Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M34.834 7.33337H29.334V14.6667H36.6673V9.16671C36.6673 8.15419 35.8465 7.33337 34.834 7.33337Z\"\n      fill=\"currentColor\"\n    />\n  </MUISvgIcon>\n);\n\nexport default GridIcon;\n","import React from \"react\";\nimport MUISvgIcon, {\n  SvgIconProps as MUISvgIconProps,\n} from \"@mui/material/SvgIcon\";\n\nconst InfoIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps}>\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22ZM12 20.4332C16.6575 20.4332 20.4332 16.6575 20.4332 12C20.4332 7.34247 16.6575 3.56679 12 3.56679C7.34247 3.56679 3.56679 7.34247 3.56679 12C3.56679 16.6575 7.34247 20.4332 12 20.4332Z\"\n      fill=\"currentColor\"\n    />\n    <path d=\"M11 10.5H13V17H11V10.5Z\" fill=\"currentColor\" />\n    <path\n      d=\"M12 6.75C11.3096 6.75 10.75 7.30964 10.75 8C10.75 8.69036 11.3096 9.25 12 9.25C12.6904 9.25 13.25 8.69036 13.25 8C13.25 7.30964 12.6904 6.75 12 6.75Z\"\n      fill=\"currentColor\"\n    />\n  </MUISvgIcon>\n);\n\nexport default InfoIcon;\n","import React from \"react\";\nimport MUISvgIcon, {\n  SvgIconProps as MUISvgIconProps,\n} from \"@mui/material/SvgIcon\";\n\nexport const MapIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps} viewBox=\"0 0 16 15\">\n    <g fill=\"currentColor\">\n      <path d=\"M0.222524 14.9482L0.109375 2.60168L5.23864 0.272461V12.5695L0.222524 14.9482Z\" />\n      <path d=\"M10.3484 14.932L10.3047 2.60168L15.434 0.272461V12.5695L10.3484 14.932Z\" />\n      <path d=\"M10.3474 2.62671L5.2411 0.285156L5.21289 1.49825L10.3474 3.8398V2.62671Z\" />\n      <path d=\"M10.3474 13.7136L5.2411 11.3721L5.21289 12.5852L10.3474 14.9267V13.7136Z\" />\n    </g>\n  </MUISvgIcon>\n);\n\nexport default MapIcon;\n","import React from \"react\";\nimport MUISvgIcon, {\n  SvgIconProps as MUISvgIconProps,\n} from \"@mui/material/SvgIcon\";\n\nconst MinusCircleIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps}>\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M12 20.4332C16.6575 20.4332 20.4332 16.6575 20.4332 12C20.4332 7.34247 16.6575 3.56679 12 3.56679C7.34247 3.56679 3.56679 7.34247 3.56679 12C3.56679 16.6575 7.34247 20.4332 12 20.4332ZM12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M7.64543 10.8723H16.4005V13.1164H7.64543V10.8723Z\"\n      fill=\"currentColor\"\n    />\n  </MUISvgIcon>\n);\n\nexport default MinusCircleIcon;\n","import React from \"react\";\nimport MUISvgIcon, {\n  SvgIconProps as MUISvgIconProps,\n} from \"@mui/material/SvgIcon\";\n\nconst PlayIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps} viewBox=\"0 0 9 10\">\n    <path\n      d=\"M8.80078 4.91772L0.506469 9.70645L0.50647 0.129001L8.80078 4.91772Z\"\n      fill=\"currentColor\"\n    />\n  </MUISvgIcon>\n);\n\nexport default PlayIcon;\n","import React from \"react\";\nimport MUISvgIcon, {\n  SvgIconProps as MUISvgIconProps,\n} from \"@mui/material/SvgIcon\";\n\nconst PlusCircleIcon: React.FC<MUISvgIconProps> = (iconProps) => (\n  <MUISvgIcon {...iconProps}>\n    <path\n      d=\"M10.9058 10.8723H7.64543V13.1164H10.9058V16.3635H13.1482V13.1164H16.4005V10.8723H13.1482V7.62061H10.9058V10.8723Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12ZM20.4332 12C20.4332 16.6575 16.6575 20.4332 12 20.4332C7.34247 20.4332 3.56679 16.6575 3.56679 12C3.56679 7.34247 7.34247 3.56679 12 3.56679C16.6575 3.56679 20.4332 7.34247 20.4332 12Z\"\n      fill=\"currentColor\"\n    />\n  </MUISvgIcon>\n);\n\nexport default PlusCircleIcon;\n","import React from \"react\";\nimport { useTheme } from \"@mui/material\";\n\nconst TelicentBrand: React.FC = () => {\n  const theme = useTheme();\n\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"112\" height=\"22\" viewBox=\"0 0 141 30\" fill=\"none\">\n      <g fill={theme.palette.mode === \"dark\" ? \"white\" : \"black\"}>\n        <path d=\"M5.00326 4.72116V2.92553H9.2337V4.96003C9.2337 6.87593 9.2337 8.51177 6.52049 8.51177V8.91208H15.0604V12.5841H9.11344V23.0004C9.11344 24.9954 9.27324 25.315 11.2698 25.315H14.6618V28.8667H9.91241C6.4793 28.8667 5.00326 27.4697 5.00326 23.918V12.5841H0.253906V8.91208C5.24213 8.91208 5.00326 7.31577 5.00326 4.72116Z\" />\n        <path d=\"M16.2598 18.8492C16.2598 13.1427 20.65 8.43282 26.8754 8.43282C33.2606 8.43282 37.412 13.342 37.412 20.1259H20.5297C20.8493 23.1999 23.3237 25.6742 27.1143 25.6742C29.5095 25.6742 31.745 24.6759 32.8224 22.5211H37.0133C36.1353 26.3513 32.3826 29.3857 27.0747 29.3857C20.4507 29.3857 16.2598 24.6364 16.2598 18.8492ZM32.8619 17.0931C32.4633 14.2596 29.9494 12.1048 26.7551 12.1048C23.6037 12.1048 21.0882 14.2596 20.6895 17.0931H32.8619Z\" />\n        <path d=\"M40.4043 0.929094H44.5557V28.8652H40.4043V0.929094Z\" />\n        <path d=\"M50.8972 0.929586C52.2941 0.929586 53.411 1.96743 53.411 3.3644C53.411 4.80091 52.2941 5.83875 50.8972 5.83875C49.4607 5.83875 48.3438 4.80091 48.3438 3.3644C48.3438 1.96743 49.4607 0.929586 50.8972 0.929586ZM48.8215 8.9111H52.9712V28.8657H48.8215V8.9111Z\" />\n        <path d=\"M72.4084 21.8029H76.5994C75.3622 26.1536 71.2503 29.3462 66.3824 29.3462C60.4354 29.3462 55.6465 24.6364 55.6465 18.8887C55.6465 13.1426 60.4354 8.43281 66.3824 8.43281C71.2503 8.43281 75.3622 11.6254 76.5994 15.9761H72.4084C71.3311 13.6616 69.1763 12.1048 66.4615 12.1048C62.6313 12.1048 59.7962 15.1376 59.7962 18.8491C59.7962 22.6414 62.6313 25.6742 66.4615 25.6742C69.1763 25.6742 71.3311 24.1174 72.4084 21.8029Z\" />\n        <path d=\"M79.1914 18.8492C79.1914 13.1427 83.5816 8.43282 89.807 8.43282C96.1922 8.43282 100.344 13.342 100.344 20.1259H83.4614C83.781 23.1999 86.2553 25.6742 90.0476 25.6742C92.4412 25.6742 94.6767 24.6759 95.754 22.5211H99.9449C99.0669 26.3513 95.3142 29.3857 90.0064 29.3857C83.3823 29.3857 79.1914 24.6364 79.1914 18.8492ZM95.7936 17.0931C95.3949 14.2596 92.881 12.1048 89.6868 12.1048C86.5354 12.1048 84.0198 14.2596 83.6212 17.0931H95.7936Z\" />\n        <path d=\"M107.689 8.91209V13.3023H108.087C108.886 10.7473 111.241 8.4327 115.151 8.4327C120.42 8.4327 123.971 13.0223 123.971 18.8886V28.8667H119.861V18.8886C119.861 14.7784 117.187 12.1047 113.875 12.1047C110.402 12.1047 107.689 15.0584 107.689 18.8886V28.8667H103.539V8.91209H107.689Z\" />\n        <path d=\"M129.958 4.72116V2.92553H134.189V4.96003C134.189 6.87593 134.189 8.51177 131.476 8.51177V8.91208H140.016V12.5841H134.069V23.0004C134.069 24.9954 134.228 25.315 136.225 25.315H139.617V28.8667H134.867C131.434 28.8667 129.958 27.4697 129.958 23.918V12.5841H125.209V8.91208C130.197 8.91208 129.958 7.31577 129.958 4.72116Z\" />\n      </g>\n    </svg>\n  );\n};\n\nexport default TelicentBrand;\n","import React from \"react\";\nimport MUIAppBar, { AppBarProps as MUIAppBarProps } from \"@mui/material/AppBar\";\nimport MUIBox from \"@mui/material/Box\";\nimport MUIStack from \"@mui/material/Stack\";\nimport MUITypography from \"@mui/material/Typography\";\nimport TelicentBrand from \"./TelicentBrand\";\nimport TelicentMark from \"../../data-display/Icons/TelicentMark\";\nimport useExtendedTheme from \"../../../hooks/useExtendedTheme\";\n\nexport type AppBarProps = Partial<{\n  appName: string;\n  beta: boolean;\n  startChild: React.ReactNode;\n  endChild: React.ReactNode;\n  position: MUIAppBarProps[\"position\"];\n  version: string;\n  href: string;\n  target: React.HTMLAttributeAnchorTarget;\n  isElevated: boolean;\n  disableBrand: boolean;\n}>;\n\nconst AppBar: React.FC<AppBarProps> = ({\n  appName,\n  beta = false,\n  position = \"relative\",\n  startChild,\n  endChild,\n  version,\n  isElevated = false,\n  disableBrand = false,\n  href,\n  target = \"_blank\",\n}) => {\n  const theme = useExtendedTheme();\n\n  const isInteractive = Boolean(href);\n\n  const linkProps = href\n    ? {\n        component: \"a\" as const,\n        href,\n        target,\n        rel: \"noopener noreferrer\",\n      }\n    : {\n        component: \"div\" as const,\n      };\n\n  return (\n    <MUIAppBar\n      color=\"inherit\"\n      position={position}\n      elevation={isElevated ? 4 : 0}\n      sx={{\n        borderRadius: 0,\n        backgroundColor: theme.palette.mode === \"dark\" ? theme.palette.background.default : \"#fff\",\n      }}\n    >\n      <MUIBox\n        sx={{\n          display: \"grid\",\n          gridTemplateColumns: \"1fr auto 1fr\",\n          alignItems: \"center\",\n          minHeight: 64,\n          px: 2,\n        }}\n      >\n        <MUIBox sx={{ justifySelf: \"start\", minWidth: 0 }}>{startChild}</MUIBox>\n\n        <MUIStack\n          {...linkProps}\n          direction=\"row\"\n          spacing={1}\n          alignItems=\"center\"\n          sx={{\n            justifySelf: \"center\",\n            cursor: isInteractive ? \"pointer\" : \"default\",\n            textDecoration: \"none\",\n            color: \"inherit\",\n            position: \"relative\",\n            minWidth: 0,\n          }}\n        >\n          {!disableBrand && (\n            <>\n              <TelicentMark fontSize=\"large\" />\n              <TelicentBrand />\n              {appName && (\n                <MUITypography\n                  variant=\"h1\"\n                  component=\"span\"\n                  color=\"primary\"\n                  sx={{\n                    fontFamily: \"Figtree\",\n                    fontSize: 30,\n                    fontWeight: 400,\n                    pt: \"2px\",\n                  }}\n                >\n                  {appName?.toUpperCase()}\n                </MUITypography>\n              )}\n              {beta && (\n                <MUIBox\n                  component=\"span\"\n                  sx={{\n                    px: 0.75,\n                    py: 0.25,\n                    borderRadius: 1,\n                    bgcolor: theme.palette.primary.main,\n                    color: theme.palette.primary.contrastText,\n                    fontSize: 12,\n                    fontWeight: 700,\n                    lineHeight: 1,\n                  }}\n                >\n                  BETA\n                </MUIBox>\n              )}\n            </>\n          )}\n\n          {version && (\n            <MUITypography\n              component=\"span\"\n              variant=\"caption\"\n              sx={{\n                color: theme.palette.mode === \"dark\" ? \"#fff\" : \"#000\",\n                whiteSpace: \"nowrap\",\n              }}\n            >\n              {version}\n            </MUITypography>\n          )}\n        </MUIStack>\n\n        <MUIBox sx={{ justifySelf: \"end\", minWidth: 0 }}>{endChild}</MUIBox>\n      </MUIBox>\n    </MUIAppBar>\n  );\n};\n\nexport default AppBar;\n","import React, { PropsWithChildren } from \"react\";\nimport MUIContainer from \"@mui/material/Container\";\n\nimport AppBar, { AppBarProps } from \"../surfaces/AppBar/AppBar\";\nimport useExtendedTheme from \"../../hooks/useExtendedTheme\";\n\ntype AppChromeProps = AppBarProps & PropsWithChildren;\n\nconst AppChrome: React.FC<AppChromeProps> = ({ children, ...appBarProps }) => {\n  const theme = useExtendedTheme();\n\n  return (\n    <>\n      <AppBar {...appBarProps} />\n      <MUIContainer\n        maxWidth={false}\n        disableGutters\n        sx={{\n          height: `calc(100vh - ${theme.components.MuiAppBar.styleOverrides.root.height}px)`,\n          overflow: \"auto\",\n          backgroundColor: theme.palette.background.default,\n        }}\n      >\n        {children}\n      </MUIContainer>\n    </>\n  );\n};\n\nexport default AppChrome;\n","import BoxRaw, { type BoxProps } from \"@mui/material/Box\";\nimport type { OverridableComponent } from \"@mui/material/OverridableComponent\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\nimport type { BoxTypeMap } from \"@mui/system\";\n\ntype BoxVariant = \"outlined\";\ntype BoxAdditionalProps = { variant?: BoxVariant };\n\nconst variantSx: Record<BoxVariant, SxProps<Theme>> = {\n  outlined: (theme) => ({\n    border: `1px solid ${theme.palette.primary.main}`,\n  }),\n};\n\nconst BoxImpl = ({ variant, sx, ...rest }: BoxProps & BoxAdditionalProps) => {\n  if (!variant) {\n    return <BoxRaw sx={sx} {...rest} />;\n  }\n\n  const consumerSx = Array.isArray(sx) ? sx : [sx];\n  const composedSx = [variantSx[variant], ...consumerSx];\n\n  return <BoxRaw sx={composedSx} {...rest} />;\n};\n\nexport const Box = BoxImpl as OverridableComponent<\n  BoxTypeMap<BoxAdditionalProps, \"div\", Theme>\n>;\n","import React, { PropsWithChildren } from \"react\";\nimport MUIContainer from \"@mui/material/Container\";\n\nexport interface ContainerProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    PropsWithChildren {\n  /** If true, the left and right padding is removed. */\n  disablePadding?: boolean;\n  /** Set the maxWidth to match the minWidth of the current breakpoint. Useful\n   * when the design is set for fixed sizes instead of trying to accommodate a\n   * fluid viewport. It's fluid by default */\n  fixed?: boolean;\n  /** Sets the maxWidth of the container. The container will grow with the size\n   * of the screen. Set to false to disable maxWidth */\n  maxWidth?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | false;\n}\n\nconst Container: React.FC<ContainerProps> = (containerProps) => (\n  <MUIContainer {...containerProps} />\n);\n\nexport default Container;\n","import React, { forwardRef } from \"react\";\nimport Stack, { StackProps } from \"@mui/material/Stack\";\n\nconst FlexBox = forwardRef<HTMLDivElement, StackProps>((props, ref) => (\n  <Stack ref={ref} {...props}>\n    {props.children}\n  </Stack>\n));\n\nexport default FlexBox;\n","import React from \"react\";\nimport Grid, { GridProps } from \"@mui/material/Grid\";\ntype FlexGridProps = Omit<GridProps, \"container\" | \"classes\">;\n\nexport const FlexGrid: React.FC<FlexGridProps> = (props) => (\n  <Grid container {...props}>\n    {props.children}\n  </Grid>\n);\n\nexport const FlexGridItem: React.FC<FlexGridProps> = (props) => <Grid {...props}>{props.children}</Grid>;\n","import React from \"react\";\nimport MUISvgIcon, { SvgIconProps as MUISvgIconProps } from \"@mui/material/SvgIcon\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { FlexBox } from \"../../layout\";\n\ninterface TelicentMarkProps extends MUISvgIconProps {\n  transparentBg?: boolean;\n}\n\nconst TelicentMark: React.FC<TelicentMarkProps> = ({\n  width = 26,\n  height = 26,\n  transparentBg = false,\n  color,\n  sx,\n  ...iconProps\n}) => {\n  const theme = useTheme();\n\n  return (\n    <FlexBox\n      sx={{\n        width: \"fit-content\",\n        height: \"fit-content\",\n        padding: transparentBg ? 0 : 0.5,\n        backgroundColor: transparentBg ? \"transparent\" : theme.palette.primary.main,\n      }}\n    >\n      <MUISvgIcon\n        viewBox=\"0 0 49 51\"\n        sx={{\n          width,\n          height,\n          ...sx,\n        }}\n        {...iconProps}\n      >\n        <g fill={color ? \"currentColor\" : theme.palette.primary.contrastText}>\n          <path d=\"M14.0213 18.9119C11.1503 16.4425 7.52745 15.0966 3.68057 15.0966H0.660156V18.9119H3.68057C6.9466 18.9119 10.0002 20.1865 12.2788 22.4999C14.5541 24.8117 15.807 27.9002 15.807 31.1978V50.7061H19.6224V31.1978C19.6224 26.8928 17.9794 22.8534 14.9972 19.823C14.6835 19.5044 14.3566 19.2007 14.0213 18.9119Z\" />\n          <path d=\"M20.2962 15.0966C20.2016 14.997 20.107 14.8991 20.0107 14.8012C18.9021 13.6809 17.6973 12.6902 16.4161 11.8338C12.9277 9.5038 8.86506 8.18277 4.58835 8.01847C4.28631 8.00686 3.98427 8.00022 3.68057 8.00022V8.01847H0.660156V11.8338H4.52529C8.11162 11.9882 11.5137 13.1167 14.4279 15.0966C15.4502 15.7903 16.4111 16.5885 17.299 17.4847C17.7521 17.9427 18.1786 18.419 18.5785 18.9119C21.3799 22.3605 22.9034 26.6572 22.9034 31.1978V50.7061H26.7187V31.1978C26.7187 26.7816 25.5089 22.5563 23.2519 18.9119C22.4105 17.5527 21.4214 16.2749 20.2962 15.0966Z\" />\n          <path d=\"M48.9188 0.94141H3.68057H0.660156V4.75677H3.68057C8.2029 4.75677 12.5443 5.89025 16.3829 8.01949C18.2582 9.05838 20.0124 10.3363 21.6089 11.8348C21.8396 12.0506 22.0669 12.2713 22.2926 12.497C23.1092 13.3202 23.8643 14.1881 24.5563 15.0976C25.4774 16.3024 26.2872 17.5786 26.9826 18.9113C28.9276 22.6536 29.9615 26.8424 29.9615 31.1971V50.707H33.7769V31.1971C33.7769 26.8938 32.894 22.7283 31.2145 18.9113H48.9188V15.0976H29.1948C28.4862 13.9641 27.6979 12.8737 26.8365 11.8348H48.9188V8.01949H23.061C21.594 6.77481 20.024 5.68447 18.3727 4.75677H48.9188V0.94141Z\" />\n        </g>\n      </MUISvgIcon>\n    </FlexBox>\n  );\n};\n\nexport default TelicentMark;\n","import React from \"react\";\nimport MUISvgIcon, {\n  SvgIconProps as MUISvgIconProps,\n} from \"@mui/material/SvgIcon\";\n\nconst TelicentHorizontalSVG: React.FC<MUISvgIconProps> = ({\n  width = 124,\n  height = 26,\n  sx,\n  color = \"inherit\",\n  ...iconProps\n}) => (\n  <MUISvgIcon\n    color={color}\n    viewBox=\"0 0 124 26\"\n    sx={{\n      width,\n      height,\n      ...sx,\n    }}\n    {...iconProps}\n  >\n    <path\n      d=\"M5.02017 4.25845V2.68165H8.73505V4.46821C8.73505 6.15062 8.73505 7.5871 6.3525 7.5871V7.93863H13.8517V11.1631H8.62945V20.31C8.62945 22.0619 8.76977 22.3425 10.5231 22.3425H13.5016V25.4614H9.33106C6.31633 25.4614 5.02017 24.2347 5.02017 21.1158V11.1631H0.849609V7.93863C5.22993 7.93863 5.02017 6.53687 5.02017 4.25845Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M14.9043 16.665C14.9043 11.6539 18.7595 7.51805 24.2262 7.51805C29.8333 7.51805 33.4787 11.8289 33.4787 17.7861H18.6539C18.9345 20.4855 21.1073 22.6583 24.436 22.6583C26.5394 22.6583 28.5024 21.7816 29.4485 19.8895H33.1286C32.3576 23.2528 29.0622 25.9175 24.4013 25.9175C18.5845 25.9175 14.9043 21.7469 14.9043 16.665ZM29.4832 15.1229C29.1331 12.6347 26.9256 10.7425 24.1206 10.7425C21.3533 10.7425 19.1443 12.6347 18.7942 15.1229H29.4832Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M36.1055 0.928461H39.7509V25.4601H36.1055V0.928461Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M45.3223 0.929073C46.549 0.929073 47.5298 1.84044 47.5298 3.06716C47.5298 4.32861 46.549 5.23997 45.3223 5.23997C44.0609 5.23997 43.0801 4.32861 43.0801 3.06716C43.0801 1.84044 44.0609 0.929073 45.3223 0.929073ZM43.4996 7.9379H47.1436V25.4607H43.4996V7.9379Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M64.2114 19.2583H67.8916C66.8052 23.0788 63.1944 25.8823 58.9197 25.8823C53.6975 25.8823 49.4922 21.7465 49.4922 16.6992C49.4922 11.6535 53.6975 7.51761 58.9197 7.51761C63.1944 7.51761 66.8052 10.3211 67.8916 14.1416H64.2114C63.2653 12.1092 61.3732 10.7421 58.9892 10.7421C55.6258 10.7421 53.1362 13.4053 53.1362 16.6645C53.1362 19.9946 55.6258 22.6578 58.9892 22.6578C61.3732 22.6578 63.2653 21.2908 64.2114 19.2583Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M70.168 16.665C70.168 11.6539 74.0232 7.51805 79.4899 7.51805C85.0969 7.51805 88.7424 11.8289 88.7424 17.7861H73.9176C74.1982 20.4855 76.371 22.6583 79.7011 22.6583C81.803 22.6583 83.7661 21.7816 84.7122 19.8895H88.3923C87.6213 23.2528 84.3259 25.9175 79.6649 25.9175C73.8481 25.9175 70.168 21.7469 70.168 16.665ZM84.7469 15.1229C84.3968 12.6347 82.1893 10.7425 79.3843 10.7425C76.6169 10.7425 74.408 12.6347 74.0579 15.1229H84.7469Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M95.1909 7.93852V11.7937H95.541C96.2426 9.55004 98.3098 7.51756 101.744 7.51756C106.37 7.51756 109.489 11.5478 109.489 16.6992V25.4613H105.88V16.6992C105.88 13.0899 103.532 10.742 100.623 10.742C97.5734 10.742 95.1909 13.3358 95.1909 16.6992V25.4613H91.5469V7.93852H95.1909Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M114.747 4.2587V2.68189H118.462V4.46846C118.462 6.15087 118.462 7.58735 116.079 7.58735V7.93888H123.578V11.1634H118.356V20.3103C118.356 22.0621 118.496 22.3428 120.25 22.3428H123.228V25.4617H119.058C116.043 25.4617 114.747 24.2349 114.747 21.1161V11.1634H110.576V7.93888C114.956 7.93888 114.747 6.53711 114.747 4.2587Z\"\n      fill=\"currentColor\"\n    />\n  </MUISvgIcon>\n);\n\nexport default TelicentHorizontalSVG;\n","import React from \"react\";\nimport { SvgIcon, SvgIconProps } from \"@mui/material\";\n\n/*\n * Needs to be scaled for a 24 x 24 grid\n */\n\nconst UserIcon: React.FC<SvgIconProps> = (iconProps) => (\n  <SvgIcon {...iconProps}>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\">\n      <circle cx=\"18\" cy=\"13.5\" r=\"3.375\" stroke=\"currentColor\" strokeWidth=\"2.25\" />\n      <path\n        d=\"M12 25.5V23.25C12 21.5931 13.3431 20.25 15 20.25H21C22.6569 20.25 24 21.5931 24 23.25V25.5\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2.25\"\n        strokeLinecap=\"round\"\n      />\n    </svg>\n  </SvgIcon>\n);\n\nexport default UserIcon;\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z\"\n}), 'Add');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z\"\n}), 'ChevronLeft');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n}), 'ChevronRight');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z\"\n}), 'Edit');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M3 13h2v-2H3zm0 4h2v-2H3zm0-8h2V7H3zm4 4h14v-2H7zm0 4h14v-2H7zM7 7v2h14V7z\"\n}), 'List');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7m0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5\"\n}), 'LocationOn');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 13H5v-2h14z\"\n}), 'Remove');","/*!\n * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\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}\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}\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nfunction _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}\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}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, \"string\");\n  return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _wrapRegExp() {\n  _wrapRegExp = function (e, r) {\n    return new BabelRegExp(e, void 0, r);\n  };\n  var e = RegExp.prototype,\n    r = new WeakMap();\n  function BabelRegExp(e, t, p) {\n    var o = RegExp(e, t);\n    return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype);\n  }\n  function buildGroups(e, t) {\n    var p = r.get(t);\n    return Object.keys(p).reduce(function (r, t) {\n      var o = p[t];\n      if (\"number\" == typeof o) r[t] = e[o];else {\n        for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;\n        r[t] = e[o[i]];\n      }\n      return r;\n    }, Object.create(null));\n  }\n  return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {\n    var t = e.exec.call(this, r);\n    if (t) {\n      t.groups = buildGroups(t, this);\n      var p = t.indices;\n      p && (p.groups = buildGroups(p, this));\n    }\n    return t;\n  }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {\n    if (\"string\" == typeof p) {\n      var o = r.get(this);\n      return e[Symbol.replace].call(this, t, p.replace(/\\$<([^>]+)>/g, function (e, r) {\n        var t = o[r];\n        return \"$\" + (Array.isArray(t) ? t.join(\"$\") : t);\n      }));\n    }\n    if (\"function\" == typeof p) {\n      var i = this;\n      return e[Symbol.replace].call(this, t, function () {\n        var e = arguments;\n        return \"object\" != typeof e[e.length - 1] && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);\n      });\n    }\n    return e[Symbol.replace].call(this, t, p);\n  }, _wrapRegExp.apply(this, arguments);\n}\n\nconst noop = () => {};\nlet _WINDOW = {};\nlet _DOCUMENT = {};\nlet _MUTATION_OBSERVER = null;\nlet _PERFORMANCE = {\n  mark: noop,\n  measure: noop\n};\ntry {\n  if (typeof window !== 'undefined') _WINDOW = window;\n  if (typeof document !== 'undefined') _DOCUMENT = document;\n  if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n  if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\nconst {\n  userAgent = ''\n} = _WINDOW.navigator || {};\nconst WINDOW = _WINDOW;\nconst DOCUMENT = _DOCUMENT;\nconst MUTATION_OBSERVER = _MUTATION_OBSERVER;\nconst PERFORMANCE = _PERFORMANCE;\nconst IS_BROWSER = !!WINDOW.document;\nconst IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nconst IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar p = /fa(s|r|l|t|d|dr|dl|dt|b|k|kd|ss|sr|sl|st|sds|sdr|sdl|sdt)?[\\-\\ ]/,\n  g = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i;\nvar S = {\n    classic: {\n      fa: \"solid\",\n      fas: \"solid\",\n      \"fa-solid\": \"solid\",\n      far: \"regular\",\n      \"fa-regular\": \"regular\",\n      fal: \"light\",\n      \"fa-light\": \"light\",\n      fat: \"thin\",\n      \"fa-thin\": \"thin\",\n      fab: \"brands\",\n      \"fa-brands\": \"brands\"\n    },\n    duotone: {\n      fa: \"solid\",\n      fad: \"solid\",\n      \"fa-solid\": \"solid\",\n      \"fa-duotone\": \"solid\",\n      fadr: \"regular\",\n      \"fa-regular\": \"regular\",\n      fadl: \"light\",\n      \"fa-light\": \"light\",\n      fadt: \"thin\",\n      \"fa-thin\": \"thin\"\n    },\n    sharp: {\n      fa: \"solid\",\n      fass: \"solid\",\n      \"fa-solid\": \"solid\",\n      fasr: \"regular\",\n      \"fa-regular\": \"regular\",\n      fasl: \"light\",\n      \"fa-light\": \"light\",\n      fast: \"thin\",\n      \"fa-thin\": \"thin\"\n    },\n    \"sharp-duotone\": {\n      fa: \"solid\",\n      fasds: \"solid\",\n      \"fa-solid\": \"solid\",\n      fasdr: \"regular\",\n      \"fa-regular\": \"regular\",\n      fasdl: \"light\",\n      \"fa-light\": \"light\",\n      fasdt: \"thin\",\n      \"fa-thin\": \"thin\"\n    }\n  },\n  A = {\n    GROUP: \"duotone-group\",\n    SWAP_OPACITY: \"swap-opacity\",\n    PRIMARY: \"primary\",\n    SECONDARY: \"secondary\"\n  },\n  P = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar s = \"classic\",\n  t = \"duotone\",\n  r = \"sharp\",\n  o = \"sharp-duotone\",\n  L = [s, t, r, o];\nvar G = {\n    classic: {\n      900: \"fas\",\n      400: \"far\",\n      normal: \"far\",\n      300: \"fal\",\n      100: \"fat\"\n    },\n    duotone: {\n      900: \"fad\",\n      400: \"fadr\",\n      300: \"fadl\",\n      100: \"fadt\"\n    },\n    sharp: {\n      900: \"fass\",\n      400: \"fasr\",\n      300: \"fasl\",\n      100: \"fast\"\n    },\n    \"sharp-duotone\": {\n      900: \"fasds\",\n      400: \"fasdr\",\n      300: \"fasdl\",\n      100: \"fasdt\"\n    }\n  };\nvar lt = {\n    \"Font Awesome 6 Free\": {\n      900: \"fas\",\n      400: \"far\"\n    },\n    \"Font Awesome 6 Pro\": {\n      900: \"fas\",\n      400: \"far\",\n      normal: \"far\",\n      300: \"fal\",\n      100: \"fat\"\n    },\n    \"Font Awesome 6 Brands\": {\n      400: \"fab\",\n      normal: \"fab\"\n    },\n    \"Font Awesome 6 Duotone\": {\n      900: \"fad\",\n      400: \"fadr\",\n      normal: \"fadr\",\n      300: \"fadl\",\n      100: \"fadt\"\n    },\n    \"Font Awesome 6 Sharp\": {\n      900: \"fass\",\n      400: \"fasr\",\n      normal: \"fasr\",\n      300: \"fasl\",\n      100: \"fast\"\n    },\n    \"Font Awesome 6 Sharp Duotone\": {\n      900: \"fasds\",\n      400: \"fasdr\",\n      normal: \"fasdr\",\n      300: \"fasdl\",\n      100: \"fasdt\"\n    }\n  };\nvar pt = new Map([[\"classic\", {\n    defaultShortPrefixId: \"fas\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\", \"brands\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"sharp\", {\n    defaultShortPrefixId: \"fass\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"duotone\", {\n    defaultShortPrefixId: \"fad\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"sharp-duotone\", {\n    defaultShortPrefixId: \"fasds\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }]]),\n  xt = {\n    classic: {\n      solid: \"fas\",\n      regular: \"far\",\n      light: \"fal\",\n      thin: \"fat\",\n      brands: \"fab\"\n    },\n    duotone: {\n      solid: \"fad\",\n      regular: \"fadr\",\n      light: \"fadl\",\n      thin: \"fadt\"\n    },\n    sharp: {\n      solid: \"fass\",\n      regular: \"fasr\",\n      light: \"fasl\",\n      thin: \"fast\"\n    },\n    \"sharp-duotone\": {\n      solid: \"fasds\",\n      regular: \"fasdr\",\n      light: \"fasdl\",\n      thin: \"fasdt\"\n    }\n  };\nvar Ft = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"],\n  St = {\n    kit: {\n      fak: \"kit\",\n      \"fa-kit\": \"kit\"\n    },\n    \"kit-duotone\": {\n      fakd: \"kit-duotone\",\n      \"fa-kit-duotone\": \"kit-duotone\"\n    }\n  },\n  At = [\"kit\"];\nvar Ct = {\n  kit: {\n    \"fa-kit\": \"fak\"\n  },\n  \"kit-duotone\": {\n    \"fa-kit-duotone\": \"fakd\"\n  }\n};\nvar Lt = [\"fak\", \"fakd\"],\n  Wt = {\n    kit: {\n      fak: \"fa-kit\"\n    },\n    \"kit-duotone\": {\n      fakd: \"fa-kit-duotone\"\n    }\n  };\nvar Et = {\n    kit: {\n      kit: \"fak\"\n    },\n    \"kit-duotone\": {\n      \"kit-duotone\": \"fakd\"\n    }\n  };\n\nvar t$1 = {\n    GROUP: \"duotone-group\",\n    SWAP_OPACITY: \"swap-opacity\",\n    PRIMARY: \"primary\",\n    SECONDARY: \"secondary\"\n  },\n  r$1 = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar bt$1 = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"];\nvar Yt = {\n    \"Font Awesome Kit\": {\n      400: \"fak\",\n      normal: \"fak\"\n    },\n    \"Font Awesome Kit Duotone\": {\n      400: \"fakd\",\n      normal: \"fakd\"\n    }\n  };\nvar ua = {\n    classic: {\n      \"fa-brands\": \"fab\",\n      \"fa-duotone\": \"fad\",\n      \"fa-light\": \"fal\",\n      \"fa-regular\": \"far\",\n      \"fa-solid\": \"fas\",\n      \"fa-thin\": \"fat\"\n    },\n    duotone: {\n      \"fa-regular\": \"fadr\",\n      \"fa-light\": \"fadl\",\n      \"fa-thin\": \"fadt\"\n    },\n    sharp: {\n      \"fa-solid\": \"fass\",\n      \"fa-regular\": \"fasr\",\n      \"fa-light\": \"fasl\",\n      \"fa-thin\": \"fast\"\n    },\n    \"sharp-duotone\": {\n      \"fa-solid\": \"fasds\",\n      \"fa-regular\": \"fasdr\",\n      \"fa-light\": \"fasdl\",\n      \"fa-thin\": \"fasdt\"\n    }\n  },\n  I$1 = {\n    classic: [\"fas\", \"far\", \"fal\", \"fat\", \"fad\"],\n    duotone: [\"fadr\", \"fadl\", \"fadt\"],\n    sharp: [\"fass\", \"fasr\", \"fasl\", \"fast\"],\n    \"sharp-duotone\": [\"fasds\", \"fasdr\", \"fasdl\", \"fasdt\"]\n  },\n  ga = {\n    classic: {\n      fab: \"fa-brands\",\n      fad: \"fa-duotone\",\n      fal: \"fa-light\",\n      far: \"fa-regular\",\n      fas: \"fa-solid\",\n      fat: \"fa-thin\"\n    },\n    duotone: {\n      fadr: \"fa-regular\",\n      fadl: \"fa-light\",\n      fadt: \"fa-thin\"\n    },\n    sharp: {\n      fass: \"fa-solid\",\n      fasr: \"fa-regular\",\n      fasl: \"fa-light\",\n      fast: \"fa-thin\"\n    },\n    \"sharp-duotone\": {\n      fasds: \"fa-solid\",\n      fasdr: \"fa-regular\",\n      fasdl: \"fa-light\",\n      fasdt: \"fa-thin\"\n    }\n  },\n  x = [\"fa-solid\", \"fa-regular\", \"fa-light\", \"fa-thin\", \"fa-duotone\", \"fa-brands\"],\n  Ia = [\"fa\", \"fas\", \"far\", \"fal\", \"fat\", \"fad\", \"fadr\", \"fadl\", \"fadt\", \"fab\", \"fass\", \"fasr\", \"fasl\", \"fast\", \"fasds\", \"fasdr\", \"fasdl\", \"fasdt\", ...r$1, ...x],\n  m$1 = [\"solid\", \"regular\", \"light\", \"thin\", \"duotone\", \"brands\"],\n  c$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n  F$1 = c$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]),\n  ma = [...Object.keys(I$1), ...m$1, \"2xs\", \"xs\", \"sm\", \"lg\", \"xl\", \"2xl\", \"beat\", \"border\", \"fade\", \"beat-fade\", \"bounce\", \"flip-both\", \"flip-horizontal\", \"flip-vertical\", \"flip\", \"fw\", \"inverse\", \"layers-counter\", \"layers-text\", \"layers\", \"li\", \"pull-left\", \"pull-right\", \"pulse\", \"rotate-180\", \"rotate-270\", \"rotate-90\", \"rotate-by\", \"shake\", \"spin-pulse\", \"spin-reverse\", \"spin\", \"stack-1x\", \"stack-2x\", \"stack\", \"ul\", t$1.GROUP, t$1.SWAP_OPACITY, t$1.PRIMARY, t$1.SECONDARY].concat(c$1.map(a => \"\".concat(a, \"x\"))).concat(F$1.map(a => \"w-\".concat(a)));\nvar wa = {\n    \"Font Awesome 5 Free\": {\n      900: \"fas\",\n      400: \"far\"\n    },\n    \"Font Awesome 5 Pro\": {\n      900: \"fas\",\n      400: \"far\",\n      normal: \"far\",\n      300: \"fal\"\n    },\n    \"Font Awesome 5 Brands\": {\n      400: \"fab\",\n      normal: \"fab\"\n    },\n    \"Font Awesome 5 Duotone\": {\n      900: \"fad\"\n    }\n  };\n\nconst NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nconst UNITS_IN_GRID = 16;\nconst DEFAULT_CSS_PREFIX = 'fa';\nconst DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nconst DATA_FA_I2SVG = 'data-fa-i2svg';\nconst DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nconst DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nconst DATA_PREFIX = 'data-prefix';\nconst DATA_ICON = 'data-icon';\nconst HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nconst MUTATION_APPROACH_ASYNC = 'async';\nconst TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nconst PRODUCTION = (() => {\n  try {\n    return process.env.NODE_ENV === 'production';\n  } catch (e$$1) {\n    return false;\n  }\n})();\nfunction familyProxy(obj) {\n  // Defaults to the classic family if family is not available\n  return new Proxy(obj, {\n    get(target, prop) {\n      return prop in target ? target[prop] : target[s];\n    }\n  });\n}\nconst _PREFIX_TO_STYLE = _objectSpread2({}, S);\n\n// We changed FACSSClassesToStyleId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles.  But we do still need duotone in _PREFIX_TO_STYLE below, so we are manually adding\n// {'fa-duotone': 'duotone'}\n_PREFIX_TO_STYLE[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n  'fa-duotone': 'duotone'\n}), S[s]), St['kit']), St['kit-duotone']);\nconst PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE);\nconst _STYLE_TO_PREFIX = _objectSpread2({}, xt);\n\n// We changed FAStyleIdToShortPrefixId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles.  But we do still need duotone in _STYLE_TO_PREFIX below, so we are manually adding {duotone: 'fad'}\n_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n  duotone: 'fad'\n}), _STYLE_TO_PREFIX[s]), Et['kit']), Et['kit-duotone']);\nconst STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX);\nconst _PREFIX_TO_LONG_STYLE = _objectSpread2({}, ga);\n_PREFIX_TO_LONG_STYLE[s] = _objectSpread2(_objectSpread2({}, _PREFIX_TO_LONG_STYLE[s]), Wt['kit']);\nconst PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE);\nconst _LONG_STYLE_TO_PREFIX = _objectSpread2({}, ua);\n_LONG_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2({}, _LONG_STYLE_TO_PREFIX[s]), Ct['kit']);\nconst LONG_STYLE_TO_PREFIX = familyProxy(_LONG_STYLE_TO_PREFIX);\nconst ICON_SELECTION_SYNTAX_PATTERN = p; // eslint-disable-line no-useless-escape\n\nconst LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nconst FONT_FAMILY_PATTERN = g;\nconst _FONT_WEIGHT_TO_PREFIX = _objectSpread2({}, G);\nconst FONT_WEIGHT_TO_PREFIX = familyProxy(_FONT_WEIGHT_TO_PREFIX);\nconst ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nconst DUOTONE_CLASSES = A;\nconst RESERVED_CLASSES = [...At, ...ma];\n\nconst initial = WINDOW.FontAwesomeConfig || {};\nfunction getAttrConfig(attr) {\n  var element = DOCUMENT.querySelector('script[' + attr + ']');\n  if (element) {\n    return element.getAttribute(attr);\n  }\n}\nfunction coerce(val) {\n  // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n  // We'll assume that this is an indication that it should be toggled to true\n  if (val === '') return true;\n  if (val === 'false') return false;\n  if (val === 'true') return true;\n  return val;\n}\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n  const attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n  attrs.forEach(_ref => {\n    let [attr, key] = _ref;\n    const val = coerce(getAttrConfig(attr));\n    if (val !== undefined && val !== null) {\n      initial[key] = val;\n    }\n  });\n}\nconst _default = {\n  styleDefault: 'solid',\n  familyDefault: s,\n  cssPrefix: DEFAULT_CSS_PREFIX,\n  replacementClass: DEFAULT_REPLACEMENT_CLASS,\n  autoReplaceSvg: true,\n  autoAddCss: true,\n  autoA11y: true,\n  searchPseudoElements: false,\n  observeMutations: true,\n  mutateApproach: 'async',\n  keepOriginalSource: true,\n  measurePerformance: false,\n  showMissingIcons: true\n};\n\n// familyPrefix is deprecated but we must still support it if present\nif (initial.familyPrefix) {\n  initial.cssPrefix = initial.familyPrefix;\n}\nconst _config = _objectSpread2(_objectSpread2({}, _default), initial);\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nconst config = {};\nObject.keys(_default).forEach(key => {\n  Object.defineProperty(config, key, {\n    enumerable: true,\n    set: function (val) {\n      _config[key] = val;\n      _onChangeCb.forEach(cb => cb(config));\n    },\n    get: function () {\n      return _config[key];\n    }\n  });\n});\n\n// familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\nObject.defineProperty(config, 'familyPrefix', {\n  enumerable: true,\n  set: function (val) {\n    _config.cssPrefix = val;\n    _onChangeCb.forEach(cb => cb(config));\n  },\n  get: function () {\n    return _config.cssPrefix;\n  }\n});\nWINDOW.FontAwesomeConfig = config;\nconst _onChangeCb = [];\nfunction onChange(cb) {\n  _onChangeCb.push(cb);\n  return () => {\n    _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n  };\n}\n\nconst d$2 = UNITS_IN_GRID;\nconst meaninglessTransform = {\n  size: 16,\n  x: 0,\n  y: 0,\n  rotate: 0,\n  flipX: false,\n  flipY: false\n};\nfunction insertCss(css) {\n  if (!css || !IS_DOM) {\n    return;\n  }\n  const style = DOCUMENT.createElement('style');\n  style.setAttribute('type', 'text/css');\n  style.innerHTML = css;\n  const headChildren = DOCUMENT.head.childNodes;\n  let beforeChild = null;\n  for (let i = headChildren.length - 1; i > -1; i--) {\n    const child = headChildren[i];\n    const tagName = (child.tagName || '').toUpperCase();\n    if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n      beforeChild = child;\n    }\n  }\n  DOCUMENT.head.insertBefore(style, beforeChild);\n  return css;\n}\nconst idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n  let size = 12;\n  let id = '';\n  while (size-- > 0) {\n    id += idPool[Math.random() * 62 | 0];\n  }\n  return id;\n}\nfunction toArray(obj) {\n  const array = [];\n  for (let i = (obj || []).length >>> 0; i--;) {\n    array[i] = obj[i];\n  }\n  return array;\n}\nfunction classArray(node) {\n  if (node.classList) {\n    return toArray(node.classList);\n  } else {\n    return (node.getAttribute('class') || '').split(' ').filter(i => i);\n  }\n}\nfunction htmlEscape(str) {\n  return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\nfunction joinAttributes(attributes) {\n  return Object.keys(attributes || {}).reduce((acc, attributeName) => {\n    return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n  }, '').trim();\n}\nfunction joinStyles(styles) {\n  return Object.keys(styles || {}).reduce((acc, styleName) => {\n    return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n  }, '');\n}\nfunction transformIsMeaningful(transform) {\n  return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n  let {\n    transform,\n    containerWidth,\n    iconWidth\n  } = _ref;\n  const outer = {\n    transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n  };\n  const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n  const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n  const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n  const inner = {\n    transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n  };\n  const path = {\n    transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n  };\n  return {\n    outer,\n    inner,\n    path\n  };\n}\nfunction transformForCss(_ref2) {\n  let {\n    transform,\n    width = UNITS_IN_GRID,\n    height = UNITS_IN_GRID,\n    startCentered = false\n  } = _ref2;\n  let val = '';\n  if (startCentered && IS_IE) {\n    val += \"translate(\".concat(transform.x / d$2 - width / 2, \"em, \").concat(transform.y / d$2 - height / 2, \"em) \");\n  } else if (startCentered) {\n    val += \"translate(calc(-50% + \".concat(transform.x / d$2, \"em), calc(-50% + \").concat(transform.y / d$2, \"em)) \");\n  } else {\n    val += \"translate(\".concat(transform.x / d$2, \"em, \").concat(transform.y / d$2, \"em) \");\n  }\n  val += \"scale(\".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), \") \");\n  val += \"rotate(\".concat(transform.rotate, \"deg) \");\n  return val;\n}\n\nvar baseStyles = \":root, :host {\\n  --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Free\\\";\\n  --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Free\\\";\\n  --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Pro\\\";\\n  --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Pro\\\";\\n  --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n  --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-sharp-duotone-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n  --fa-font-sharp-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n  --fa-font-sharp-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n  --fa-font-sharp-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n  overflow: visible;\\n  box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n  display: var(--fa-display, inline-block);\\n  height: 1em;\\n  overflow: visible;\\n  vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n  vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n  vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n  vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n  vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n  vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n  vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n  margin-right: var(--fa-pull-margin, 0.3em);\\n  width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n  margin-left: var(--fa-pull-margin, 0.3em);\\n  width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n  width: var(--fa-li-width, 2em);\\n  top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n  width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n  display: inline-block;\\n  position: absolute;\\n  text-align: center;\\n}\\n\\n.fa-layers {\\n  display: inline-block;\\n  height: 1em;\\n  position: relative;\\n  text-align: center;\\n  vertical-align: -0.125em;\\n  width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n  transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n  left: 50%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n  transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n  background-color: var(--fa-counter-background-color, #ff253a);\\n  border-radius: var(--fa-counter-border-radius, 1em);\\n  box-sizing: border-box;\\n  color: var(--fa-inverse, #fff);\\n  line-height: var(--fa-counter-line-height, 1);\\n  max-width: var(--fa-counter-max-width, 5em);\\n  min-width: var(--fa-counter-min-width, 1.5em);\\n  overflow: hidden;\\n  padding: var(--fa-counter-padding, 0.25em 0.5em);\\n  right: var(--fa-right, 0);\\n  text-overflow: ellipsis;\\n  top: var(--fa-top, 0);\\n  transform: scale(var(--fa-counter-scale, 0.25));\\n  transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n  bottom: var(--fa-bottom, 0);\\n  right: var(--fa-right, 0);\\n  top: auto;\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n  bottom: var(--fa-bottom, 0);\\n  left: var(--fa-left, 0);\\n  right: auto;\\n  top: auto;\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n  top: var(--fa-top, 0);\\n  right: var(--fa-right, 0);\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n  left: var(--fa-left, 0);\\n  right: auto;\\n  top: var(--fa-top, 0);\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: top left;\\n}\\n\\n.fa-1x {\\n  font-size: 1em;\\n}\\n\\n.fa-2x {\\n  font-size: 2em;\\n}\\n\\n.fa-3x {\\n  font-size: 3em;\\n}\\n\\n.fa-4x {\\n  font-size: 4em;\\n}\\n\\n.fa-5x {\\n  font-size: 5em;\\n}\\n\\n.fa-6x {\\n  font-size: 6em;\\n}\\n\\n.fa-7x {\\n  font-size: 7em;\\n}\\n\\n.fa-8x {\\n  font-size: 8em;\\n}\\n\\n.fa-9x {\\n  font-size: 9em;\\n}\\n\\n.fa-10x {\\n  font-size: 10em;\\n}\\n\\n.fa-2xs {\\n  font-size: 0.625em;\\n  line-height: 0.1em;\\n  vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n  font-size: 0.75em;\\n  line-height: 0.0833333337em;\\n  vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n  font-size: 0.875em;\\n  line-height: 0.0714285718em;\\n  vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n  font-size: 1.25em;\\n  line-height: 0.05em;\\n  vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n  font-size: 1.5em;\\n  line-height: 0.0416666682em;\\n  vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n  font-size: 2em;\\n  line-height: 0.03125em;\\n  vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n  text-align: center;\\n  width: 1.25em;\\n}\\n\\n.fa-ul {\\n  list-style-type: none;\\n  margin-left: var(--fa-li-margin, 2.5em);\\n  padding-left: 0;\\n}\\n.fa-ul > li {\\n  position: relative;\\n}\\n\\n.fa-li {\\n  left: calc(-1 * var(--fa-li-width, 2em));\\n  position: absolute;\\n  text-align: center;\\n  width: var(--fa-li-width, 2em);\\n  line-height: inherit;\\n}\\n\\n.fa-border {\\n  border-color: var(--fa-border-color, #eee);\\n  border-radius: var(--fa-border-radius, 0.1em);\\n  border-style: var(--fa-border-style, solid);\\n  border-width: var(--fa-border-width, 0.08em);\\n  padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n  float: left;\\n  margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n  float: right;\\n  margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n  animation-name: fa-beat;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n  animation-name: fa-bounce;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n  animation-name: fa-fade;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n  animation-name: fa-beat-fade;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n  animation-name: fa-flip;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n  animation-name: fa-shake;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n  animation-name: fa-spin;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 2s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n  --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n  animation-name: fa-spin;\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n  .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n    animation-delay: -1ms;\\n    animation-duration: 1ms;\\n    animation-iteration-count: 1;\\n    transition-delay: 0s;\\n    transition-duration: 0s;\\n  }\\n}\\n@keyframes fa-beat {\\n  0%, 90% {\\n    transform: scale(1);\\n  }\\n  45% {\\n    transform: scale(var(--fa-beat-scale, 1.25));\\n  }\\n}\\n@keyframes fa-bounce {\\n  0% {\\n    transform: scale(1, 1) translateY(0);\\n  }\\n  10% {\\n    transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n  }\\n  30% {\\n    transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n  }\\n  50% {\\n    transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n  }\\n  57% {\\n    transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n  }\\n  64% {\\n    transform: scale(1, 1) translateY(0);\\n  }\\n  100% {\\n    transform: scale(1, 1) translateY(0);\\n  }\\n}\\n@keyframes fa-fade {\\n  50% {\\n    opacity: var(--fa-fade-opacity, 0.4);\\n  }\\n}\\n@keyframes fa-beat-fade {\\n  0%, 100% {\\n    opacity: var(--fa-beat-fade-opacity, 0.4);\\n    transform: scale(1);\\n  }\\n  50% {\\n    opacity: 1;\\n    transform: scale(var(--fa-beat-fade-scale, 1.125));\\n  }\\n}\\n@keyframes fa-flip {\\n  50% {\\n    transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n  }\\n}\\n@keyframes fa-shake {\\n  0% {\\n    transform: rotate(-15deg);\\n  }\\n  4% {\\n    transform: rotate(15deg);\\n  }\\n  8%, 24% {\\n    transform: rotate(-18deg);\\n  }\\n  12%, 28% {\\n    transform: rotate(18deg);\\n  }\\n  16% {\\n    transform: rotate(-22deg);\\n  }\\n  20% {\\n    transform: rotate(22deg);\\n  }\\n  32% {\\n    transform: rotate(-12deg);\\n  }\\n  36% {\\n    transform: rotate(12deg);\\n  }\\n  40%, 100% {\\n    transform: rotate(0deg);\\n  }\\n}\\n@keyframes fa-spin {\\n  0% {\\n    transform: rotate(0deg);\\n  }\\n  100% {\\n    transform: rotate(360deg);\\n  }\\n}\\n.fa-rotate-90 {\\n  transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n  transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n  transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n  transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n  transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n  transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n  transform: rotate(var(--fa-rotate-angle, 0));\\n}\\n\\n.fa-stack {\\n  display: inline-block;\\n  vertical-align: middle;\\n  height: 2em;\\n  position: relative;\\n  width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n  z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n  height: 1em;\\n  width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n  height: 2em;\\n  width: 2.5em;\\n}\\n\\n.fa-inverse {\\n  color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n  position: absolute;\\n  width: 1px;\\n  height: 1px;\\n  padding: 0;\\n  margin: -1px;\\n  overflow: hidden;\\n  clip: rect(0, 0, 0, 0);\\n  white-space: nowrap;\\n  border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n  position: absolute;\\n  width: 1px;\\n  height: 1px;\\n  padding: 0;\\n  margin: -1px;\\n  overflow: hidden;\\n  clip: rect(0, 0, 0, 0);\\n  white-space: nowrap;\\n  border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n  fill: var(--fa-primary-color, currentColor);\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n  fill: var(--fa-secondary-color, currentColor);\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n  fill: black;\\n}\";\n\nfunction css() {\n  const dcp = DEFAULT_CSS_PREFIX;\n  const drc = DEFAULT_REPLACEMENT_CLASS;\n  const fp = config.cssPrefix;\n  const rc = config.replacementClass;\n  let s = baseStyles;\n  if (fp !== dcp || rc !== drc) {\n    const dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n    const customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n    const rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n    s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n  }\n  return s;\n}\nlet _cssInserted = false;\nfunction ensureCss() {\n  if (config.autoAddCss && !_cssInserted) {\n    insertCss(css());\n    _cssInserted = true;\n  }\n}\nvar InjectCSS = {\n  mixout() {\n    return {\n      dom: {\n        css,\n        insertCss: ensureCss\n      }\n    };\n  },\n  hooks() {\n    return {\n      beforeDOMElementCreation() {\n        ensureCss();\n      },\n      beforeI2svg() {\n        ensureCss();\n      }\n    };\n  }\n};\n\nconst w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nconst functions = [];\nconst listener = function () {\n  DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n  loaded = 1;\n  functions.map(fn => fn());\n};\nlet loaded = false;\nif (IS_DOM) {\n  loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n  if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\nfunction domready (fn) {\n  if (!IS_DOM) return;\n  loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n  const {\n    tag,\n    attributes = {},\n    children = []\n  } = abstractNodes;\n  if (typeof abstractNodes === 'string') {\n    return htmlEscape(abstractNodes);\n  } else {\n    return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n  }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n  if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n    return {\n      prefix,\n      iconName,\n      icon: mapping[prefix][iconName]\n    };\n  }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n  return function (a, b, c, d) {\n    return func.call(thisContext, a, b, c, d);\n  };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param  {Object}   subject      The object to reduce over.\n * @param  {Function} fn           The reducer function.\n * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].\n * @param  {Object}   thisContext  The context for the reducer.\n * @return {mixed}                 The final result.\n */\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n  var keys = Object.keys(subject),\n    length = keys.length,\n    iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n    i,\n    key,\n    result;\n  if (initialValue === undefined) {\n    i = 1;\n    result = subject[keys[0]];\n  } else {\n    i = 0;\n    result = initialValue;\n  }\n  for (; i < length; i++) {\n    key = keys[i];\n    result = iterator(result, subject[key], key, subject);\n  }\n  return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nfunction ucs2decode(string) {\n  const output = [];\n  let counter = 0;\n  const length = string.length;\n  while (counter < length) {\n    const value = string.charCodeAt(counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      const extra = string.charCodeAt(counter++);\n      if ((extra & 0xFC00) == 0xDC00) {\n        // eslint-disable-line eqeqeq\n        output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        output.push(value);\n        counter--;\n      }\n    } else {\n      output.push(value);\n    }\n  }\n  return output;\n}\nfunction toHex(unicode) {\n  const decoded = ucs2decode(unicode);\n  return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n  const size = string.length;\n  let first = string.charCodeAt(index);\n  let second;\n  if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n    second = string.charCodeAt(index + 1);\n    if (second >= 0xDC00 && second <= 0xDFFF) {\n      return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n    }\n  }\n  return first;\n}\n\nfunction normalizeIcons(icons) {\n  return Object.keys(icons).reduce((acc, iconName) => {\n    const icon = icons[iconName];\n    const expanded = !!icon.icon;\n    if (expanded) {\n      acc[icon.iconName] = icon.icon;\n    } else {\n      acc[iconName] = icon;\n    }\n    return acc;\n  }, {});\n}\nfunction defineIcons(prefix, icons) {\n  let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const {\n    skipHooks = false\n  } = params;\n  const normalized = normalizeIcons(icons);\n  if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n    namespace.hooks.addPack(prefix, normalizeIcons(icons));\n  } else {\n    namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n  }\n\n  /**\n   * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n   * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n   * for `fas` so we'll ease the upgrade process for our users by automatically defining\n   * this as well.\n   */\n  if (prefix === 'fas') {\n    defineIcons('fa', icons);\n  }\n}\n\nconst duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*path d=\"([^\"]+)\"/, {\n  d1: 1,\n  d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\".*path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n  cls1: 1,\n  d1: 2,\n  cls2: 3,\n  d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n  cls1: 1,\n  d1: 2\n})];\n\nconst {\n  styles,\n  shims\n} = namespace;\nconst FAMILY_NAMES = Object.keys(PREFIX_TO_LONG_STYLE);\nconst PREFIXES_FOR_FAMILY = FAMILY_NAMES.reduce((acc, familyId) => {\n  acc[familyId] = Object.keys(PREFIX_TO_LONG_STYLE[familyId]);\n  return acc;\n}, {});\nlet _defaultUsablePrefix = null;\nlet _byUnicode = {};\nlet _byLigature = {};\nlet _byOldName = {};\nlet _byOldUnicode = {};\nlet _byAlias = {};\nfunction isReserved(name) {\n  return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction getIconName(cssPrefix, cls) {\n  const parts = cls.split('-');\n  const prefix = parts[0];\n  const iconName = parts.slice(1).join('-');\n  if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n    return iconName;\n  } else {\n    return null;\n  }\n}\nconst build = () => {\n  const lookup = reducer => {\n    return reduce(styles, (o$$1, style, prefix) => {\n      o$$1[prefix] = reduce(style, reducer, {});\n      return o$$1;\n    }, {});\n  };\n  _byUnicode = lookup((acc, icon, iconName) => {\n    if (icon[3]) {\n      acc[icon[3]] = iconName;\n    }\n    if (icon[2]) {\n      const aliases = icon[2].filter(a$$1 => {\n        return typeof a$$1 === 'number';\n      });\n      aliases.forEach(alias => {\n        acc[alias.toString(16)] = iconName;\n      });\n    }\n    return acc;\n  });\n  _byLigature = lookup((acc, icon, iconName) => {\n    acc[iconName] = iconName;\n    if (icon[2]) {\n      const aliases = icon[2].filter(a$$1 => {\n        return typeof a$$1 === 'string';\n      });\n      aliases.forEach(alias => {\n        acc[alias] = iconName;\n      });\n    }\n    return acc;\n  });\n  _byAlias = lookup((acc, icon, iconName) => {\n    const aliases = icon[2];\n    acc[iconName] = iconName;\n    aliases.forEach(alias => {\n      acc[alias] = iconName;\n    });\n    return acc;\n  });\n\n  // If we have a Kit, we can't determine if regular is available since we\n  // could be auto-fetching it. We'll have to assume that it is available.\n  const hasRegular = 'far' in styles || config.autoFetchSvg;\n  const shimLookups = reduce(shims, (acc, shim) => {\n    const maybeNameMaybeUnicode = shim[0];\n    let prefix = shim[1];\n    const iconName = shim[2];\n    if (prefix === 'far' && !hasRegular) {\n      prefix = 'fas';\n    }\n    if (typeof maybeNameMaybeUnicode === 'string') {\n      acc.names[maybeNameMaybeUnicode] = {\n        prefix,\n        iconName\n      };\n    }\n    if (typeof maybeNameMaybeUnicode === 'number') {\n      acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n        prefix,\n        iconName\n      };\n    }\n    return acc;\n  }, {\n    names: {},\n    unicodes: {}\n  });\n  _byOldName = shimLookups.names;\n  _byOldUnicode = shimLookups.unicodes;\n  _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n    family: config.familyDefault\n  });\n};\nonChange(c$$1 => {\n  _defaultUsablePrefix = getCanonicalPrefix(c$$1.styleDefault, {\n    family: config.familyDefault\n  });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n  return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n  return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n  return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n  return _byOldName[name] || {\n    prefix: null,\n    iconName: null\n  };\n}\nfunction byOldUnicode(unicode) {\n  const oldUnicode = _byOldUnicode[unicode];\n  const newUnicode = byUnicode('fas', unicode);\n  return oldUnicode || (newUnicode ? {\n    prefix: 'fas',\n    iconName: newUnicode\n  } : null) || {\n    prefix: null,\n    iconName: null\n  };\n}\nfunction getDefaultUsablePrefix() {\n  return _defaultUsablePrefix;\n}\nconst emptyCanonicalIcon = () => {\n  return {\n    prefix: null,\n    iconName: null,\n    rest: []\n  };\n};\nfunction getFamilyId(values) {\n  let family = s;\n  const famProps = FAMILY_NAMES.reduce((acc, familyId) => {\n    acc[familyId] = \"\".concat(config.cssPrefix, \"-\").concat(familyId);\n    return acc;\n  }, {});\n  L.forEach(familyId => {\n    if (values.includes(famProps[familyId]) || values.some(v$$1 => PREFIXES_FOR_FAMILY[familyId].includes(v$$1))) {\n      family = familyId;\n    }\n  });\n  return family;\n}\nfunction getCanonicalPrefix(styleOrPrefix) {\n  let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    family = s\n  } = params;\n  const style = PREFIX_TO_STYLE[family][styleOrPrefix];\n\n  // handles the exception of passing in only a family of 'duotone' with no style\n  if (family === t && !styleOrPrefix) {\n    return 'fad';\n  }\n  const prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n  const defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n  const result = prefix || defined || null;\n  return result;\n}\nfunction moveNonFaClassesToRest(classNames) {\n  let rest = [];\n  let iconName = null;\n  classNames.forEach(cls => {\n    const result = getIconName(config.cssPrefix, cls);\n    if (result) {\n      iconName = result;\n    } else if (cls) {\n      rest.push(cls);\n    }\n  });\n  return {\n    iconName,\n    rest\n  };\n}\nfunction sortedUniqueValues(arr) {\n  return arr.sort().filter((value, index, arr) => {\n    return arr.indexOf(value) === index;\n  });\n}\nfunction getCanonicalIcon(values) {\n  let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    skipLookups = false\n  } = params;\n  let givenPrefix = null;\n  const faCombinedClasses = Ia.concat(bt$1);\n  const faStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => faCombinedClasses.includes(cls)));\n  const nonStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => !Ia.includes(cls)));\n  const faStyles = faStyleOrFamilyClasses.filter(cls => {\n    givenPrefix = cls;\n    return !P.includes(cls);\n  });\n  const [styleFromValues = null] = faStyles;\n  const family = getFamilyId(faStyleOrFamilyClasses);\n  const canonical = _objectSpread2(_objectSpread2({}, moveNonFaClassesToRest(nonStyleOrFamilyClasses)), {}, {\n    prefix: getCanonicalPrefix(styleFromValues, {\n      family\n    })\n  });\n  return _objectSpread2(_objectSpread2(_objectSpread2({}, canonical), getDefaultCanonicalPrefix({\n    values,\n    family,\n    styles,\n    config,\n    canonical,\n    givenPrefix\n  })), applyShimAndAlias(skipLookups, givenPrefix, canonical));\n}\nfunction applyShimAndAlias(skipLookups, givenPrefix, canonical) {\n  let {\n    prefix,\n    iconName\n  } = canonical;\n  if (skipLookups || !prefix || !iconName) {\n    return {\n      prefix,\n      iconName\n    };\n  }\n  const shim = givenPrefix === 'fa' ? byOldName(iconName) : {};\n  const aliasIconName = byAlias(prefix, iconName);\n  iconName = shim.iconName || aliasIconName || iconName;\n  prefix = shim.prefix || prefix;\n  if (prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n    // Allow a fallback from the regular style to solid if regular is not available\n    // but only if we aren't auto-fetching SVGs\n    prefix = 'fas';\n  }\n  return {\n    prefix,\n    iconName\n  };\n}\nconst newCanonicalFamilies = L.filter(familyId => {\n  return familyId !== s || familyId !== t;\n});\nconst newCanonicalStyles = Object.keys(ga).filter(key => key !== s).map(key => Object.keys(ga[key])).flat();\nfunction getDefaultCanonicalPrefix(prefixOptions) {\n  const {\n    values,\n    family,\n    canonical,\n    givenPrefix = '',\n    styles = {},\n    config: config$$1 = {}\n  } = prefixOptions;\n  const isDuotoneFamily = family === t;\n  const valuesHasDuotone = values.includes('fa-duotone') || values.includes('fad');\n  const defaultFamilyIsDuotone = config$$1.familyDefault === 'duotone';\n  const canonicalPrefixIsDuotone = canonical.prefix === 'fad' || canonical.prefix === 'fa-duotone';\n  if (!isDuotoneFamily && (valuesHasDuotone || defaultFamilyIsDuotone || canonicalPrefixIsDuotone)) {\n    canonical.prefix = 'fad';\n  }\n  if (values.includes('fa-brands') || values.includes('fab')) {\n    canonical.prefix = 'fab';\n  }\n  if (!canonical.prefix && newCanonicalFamilies.includes(family)) {\n    const validPrefix = Object.keys(styles).find(key => newCanonicalStyles.includes(key));\n    if (validPrefix || config$$1.autoFetchSvg) {\n      const defaultPrefix = pt.get(family).defaultShortPrefixId;\n      canonical.prefix = defaultPrefix;\n      canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n    }\n  }\n  if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n    // The fa prefix is not canonical. So if it has made it through until this point\n    // we will shift it to the correct prefix.\n    canonical.prefix = getDefaultUsablePrefix() || 'fas';\n  }\n  return canonical;\n}\n\nclass Library {\n  constructor() {\n    this.definitions = {};\n  }\n  add() {\n    for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n      definitions[_key] = arguments[_key];\n    }\n    const additions = definitions.reduce(this._pullDefinitions, {});\n    Object.keys(additions).forEach(key => {\n      this.definitions[key] = _objectSpread2(_objectSpread2({}, this.definitions[key] || {}), additions[key]);\n      defineIcons(key, additions[key]);\n\n      // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n      const longPrefix = PREFIX_TO_LONG_STYLE[s][key];\n      if (longPrefix) defineIcons(longPrefix, additions[key]);\n      build();\n    });\n  }\n  reset() {\n    this.definitions = {};\n  }\n  _pullDefinitions(additions, definition) {\n    const normalized = definition.prefix && definition.iconName && definition.icon ? {\n      0: definition\n    } : definition;\n    Object.keys(normalized).map(key => {\n      const {\n        prefix,\n        iconName,\n        icon\n      } = normalized[key];\n      const aliases = icon[2];\n      if (!additions[prefix]) additions[prefix] = {};\n      if (aliases.length > 0) {\n        aliases.forEach(alias => {\n          if (typeof alias === 'string') {\n            additions[prefix][alias] = icon;\n          }\n        });\n      }\n      additions[prefix][iconName] = icon;\n    });\n    return additions;\n  }\n}\n\nlet _plugins = [];\nlet _hooks = {};\nconst providers = {};\nconst defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n  let {\n    mixoutsTo: obj\n  } = _ref;\n  _plugins = nextPlugins;\n  _hooks = {};\n  Object.keys(providers).forEach(k => {\n    if (defaultProviderKeys.indexOf(k) === -1) {\n      delete providers[k];\n    }\n  });\n  _plugins.forEach(plugin => {\n    const mixout = plugin.mixout ? plugin.mixout() : {};\n    Object.keys(mixout).forEach(tk => {\n      if (typeof mixout[tk] === 'function') {\n        obj[tk] = mixout[tk];\n      }\n      if (typeof mixout[tk] === 'object') {\n        Object.keys(mixout[tk]).forEach(sk => {\n          if (!obj[tk]) {\n            obj[tk] = {};\n          }\n          obj[tk][sk] = mixout[tk][sk];\n        });\n      }\n    });\n    if (plugin.hooks) {\n      const hooks = plugin.hooks();\n      Object.keys(hooks).forEach(hook => {\n        if (!_hooks[hook]) {\n          _hooks[hook] = [];\n        }\n        _hooks[hook].push(hooks[hook]);\n      });\n    }\n    if (plugin.provides) {\n      plugin.provides(providers);\n    }\n  });\n  return obj;\n}\nfunction chainHooks(hook, accumulator) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n  const hookFns = _hooks[hook] || [];\n  hookFns.forEach(hookFn => {\n    accumulator = hookFn.apply(null, [accumulator, ...args]); // eslint-disable-line no-useless-call\n  });\n  return accumulator;\n}\nfunction callHooks(hook) {\n  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    args[_key2 - 1] = arguments[_key2];\n  }\n  const hookFns = _hooks[hook] || [];\n  hookFns.forEach(hookFn => {\n    hookFn.apply(null, args);\n  });\n  return undefined;\n}\nfunction callProvided() {\n  const hook = arguments[0];\n  const args = Array.prototype.slice.call(arguments, 1);\n  return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n  if (iconLookup.prefix === 'fa') {\n    iconLookup.prefix = 'fas';\n  }\n  let {\n    iconName\n  } = iconLookup;\n  const prefix = iconLookup.prefix || getDefaultUsablePrefix();\n  if (!iconName) return;\n  iconName = byAlias(prefix, iconName) || iconName;\n  return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nconst library = new Library();\nconst noAuto = () => {\n  config.autoReplaceSvg = false;\n  config.observeMutations = false;\n  callHooks('noAuto');\n};\nconst dom = {\n  i2svg: function () {\n    let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (IS_DOM) {\n      callHooks('beforeI2svg', params);\n      callProvided('pseudoElements2svg', params);\n      return callProvided('i2svg', params);\n    } else {\n      return Promise.reject(new Error('Operation requires a DOM of some kind.'));\n    }\n  },\n  watch: function () {\n    let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      autoReplaceSvgRoot\n    } = params;\n    if (config.autoReplaceSvg === false) {\n      config.autoReplaceSvg = true;\n    }\n    config.observeMutations = true;\n    domready(() => {\n      autoReplace({\n        autoReplaceSvgRoot\n      });\n      callHooks('watch', params);\n    });\n  }\n};\nconst parse = {\n  icon: icon => {\n    if (icon === null) {\n      return null;\n    }\n    if (typeof icon === 'object' && icon.prefix && icon.iconName) {\n      return {\n        prefix: icon.prefix,\n        iconName: byAlias(icon.prefix, icon.iconName) || icon.iconName\n      };\n    }\n    if (Array.isArray(icon) && icon.length === 2) {\n      const iconName = icon[1].indexOf('fa-') === 0 ? icon[1].slice(3) : icon[1];\n      const prefix = getCanonicalPrefix(icon[0]);\n      return {\n        prefix,\n        iconName: byAlias(prefix, iconName) || iconName\n      };\n    }\n    if (typeof icon === 'string' && (icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n      const canonicalIcon = getCanonicalIcon(icon.split(' '), {\n        skipLookups: true\n      });\n      return {\n        prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n        iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n      };\n    }\n    if (typeof icon === 'string') {\n      const prefix = getDefaultUsablePrefix();\n      return {\n        prefix,\n        iconName: byAlias(prefix, icon) || icon\n      };\n    }\n  }\n};\nconst api = {\n  noAuto,\n  config,\n  dom,\n  parse,\n  library,\n  findIconDefinition,\n  toHtml\n};\nconst autoReplace = function () {\n  let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  const {\n    autoReplaceSvgRoot = DOCUMENT\n  } = params;\n  if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n    node: autoReplaceSvgRoot\n  });\n};\n\nfunction domVariants(val, abstractCreator) {\n  Object.defineProperty(val, 'abstract', {\n    get: abstractCreator\n  });\n  Object.defineProperty(val, 'html', {\n    get: function () {\n      return val.abstract.map(a => toHtml(a));\n    }\n  });\n  Object.defineProperty(val, 'node', {\n    get: function () {\n      if (!IS_DOM) return;\n      const container = DOCUMENT.createElement('div');\n      container.innerHTML = val.html;\n      return container.children;\n    }\n  });\n  return val;\n}\n\nfunction asIcon (_ref) {\n  let {\n    children,\n    main,\n    mask,\n    attributes,\n    styles,\n    transform\n  } = _ref;\n  if (transformIsMeaningful(transform) && main.found && !mask.found) {\n    const {\n      width,\n      height\n    } = main;\n    const offset = {\n      x: width / height / 2,\n      y: 0.5\n    };\n    attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n      'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n    }));\n  }\n  return [{\n    tag: 'svg',\n    attributes,\n    children\n  }];\n}\n\nfunction asSymbol (_ref) {\n  let {\n    prefix,\n    iconName,\n    children,\n    attributes,\n    symbol\n  } = _ref;\n  const id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n  return [{\n    tag: 'svg',\n    attributes: {\n      style: 'display: none;'\n    },\n    children: [{\n      tag: 'symbol',\n      attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n        id\n      }),\n      children\n    }]\n  }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n  const {\n    icons: {\n      main,\n      mask\n    },\n    prefix,\n    iconName,\n    transform,\n    symbol,\n    title,\n    maskId,\n    titleId,\n    extra,\n    watchable = false\n  } = params;\n  const {\n    width,\n    height\n  } = mask.found ? mask : main;\n  const isUploadedIcon = Lt.includes(prefix);\n  const attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(c$$1 => extra.classes.indexOf(c$$1) === -1).filter(c$$1 => c$$1 !== '' || !!c$$1).concat(extra.classes).join(' ');\n  let content = {\n    children: [],\n    attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n      'data-prefix': prefix,\n      'data-icon': iconName,\n      'class': attrClass,\n      'role': extra.attributes.role || 'img',\n      'xmlns': 'http://www.w3.org/2000/svg',\n      'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n    })\n  };\n  const uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n    width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n  } : {};\n  if (watchable) {\n    content.attributes[DATA_FA_I2SVG] = '';\n  }\n  if (title) {\n    content.children.push({\n      tag: 'title',\n      attributes: {\n        id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n      },\n      children: [title]\n    });\n    delete content.attributes.title;\n  }\n  const args = _objectSpread2(_objectSpread2({}, content), {}, {\n    prefix,\n    iconName,\n    main,\n    mask,\n    maskId,\n    transform,\n    symbol,\n    styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n  });\n  const {\n    children,\n    attributes\n  } = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n    children: [],\n    attributes: {}\n  } : callProvided('generateAbstractIcon', args) || {\n    children: [],\n    attributes: {}\n  };\n  args.children = children;\n  args.attributes = attributes;\n  if (symbol) {\n    return asSymbol(args);\n  } else {\n    return asIcon(args);\n  }\n}\nfunction makeLayersTextAbstract(params) {\n  const {\n    content,\n    width,\n    height,\n    transform,\n    title,\n    extra,\n    watchable = false\n  } = params;\n  const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n    'title': title\n  } : {}), {}, {\n    'class': extra.classes.join(' ')\n  });\n  if (watchable) {\n    attributes[DATA_FA_I2SVG] = '';\n  }\n  const styles = _objectSpread2({}, extra.styles);\n  if (transformIsMeaningful(transform)) {\n    styles['transform'] = transformForCss({\n      transform,\n      startCentered: true,\n      width,\n      height\n    });\n    styles['-webkit-transform'] = styles['transform'];\n  }\n  const styleString = joinStyles(styles);\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n  const val = [];\n  val.push({\n    tag: 'span',\n    attributes,\n    children: [content]\n  });\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n  return val;\n}\nfunction makeLayersCounterAbstract(params) {\n  const {\n    content,\n    title,\n    extra\n  } = params;\n  const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n    'title': title\n  } : {}), {}, {\n    'class': extra.classes.join(' ')\n  });\n  const styleString = joinStyles(extra.styles);\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n  const val = [];\n  val.push({\n    tag: 'span',\n    attributes,\n    children: [content]\n  });\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n  return val;\n}\n\nconst {\n  styles: styles$1\n} = namespace;\nfunction asFoundIcon(icon) {\n  const width = icon[0];\n  const height = icon[1];\n  const [vectorData] = icon.slice(4);\n  let element = null;\n  if (Array.isArray(vectorData)) {\n    element = {\n      tag: 'g',\n      attributes: {\n        class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n      },\n      children: [{\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n          fill: 'currentColor',\n          d: vectorData[0]\n        }\n      }, {\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n          fill: 'currentColor',\n          d: vectorData[1]\n        }\n      }]\n    };\n  } else {\n    element = {\n      tag: 'path',\n      attributes: {\n        fill: 'currentColor',\n        d: vectorData\n      }\n    };\n  }\n  return {\n    found: true,\n    width,\n    height,\n    icon: element\n  };\n}\nconst missingIconResolutionMixin = {\n  found: false,\n  width: 512,\n  height: 512\n};\nfunction maybeNotifyMissing(iconName, prefix) {\n  if (!PRODUCTION && !config.showMissingIcons && iconName) {\n    console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n  }\n}\nfunction findIcon(iconName, prefix) {\n  let givenPrefix = prefix;\n  if (prefix === 'fa' && config.styleDefault !== null) {\n    prefix = getDefaultUsablePrefix();\n  }\n  return new Promise((resolve, reject) => {\n    if (givenPrefix === 'fa') {\n      const shim = byOldName(iconName) || {};\n      iconName = shim.iconName || iconName;\n      prefix = shim.prefix || prefix;\n    }\n    if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n      const icon = styles$1[prefix][iconName];\n      return resolve(asFoundIcon(icon));\n    }\n    maybeNotifyMissing(iconName, prefix);\n    resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n      icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n    }));\n  });\n}\n\nconst noop$1 = () => {};\nconst p$2 = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n  mark: noop$1,\n  measure: noop$1\n};\nconst preamble = \"FA \\\"6.7.2\\\"\";\nconst begin = name => {\n  p$2.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n  return () => end(name);\n};\nconst end = name => {\n  p$2.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n  p$2.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\nvar perf = {\n  begin,\n  end\n};\n\nconst noop$2 = () => {};\nfunction isWatched(node) {\n  const i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n  return typeof i2svg === 'string';\n}\nfunction hasPrefixAndIcon(node) {\n  const prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n  const icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n  return prefix && icon;\n}\nfunction hasBeenReplaced(node) {\n  return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\nfunction getMutator() {\n  if (config.autoReplaceSvg === true) {\n    return mutators.replace;\n  }\n  const mutator = mutators[config.autoReplaceSvg];\n  return mutator || mutators.replace;\n}\nfunction createElementNS(tag) {\n  return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\nfunction createElement(tag) {\n  return DOCUMENT.createElement(tag);\n}\nfunction convertSVG(abstractObj) {\n  let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    ceFn = abstractObj.tag === 'svg' ? createElementNS : createElement\n  } = params;\n  if (typeof abstractObj === 'string') {\n    return DOCUMENT.createTextNode(abstractObj);\n  }\n  const tag = ceFn(abstractObj.tag);\n  Object.keys(abstractObj.attributes || []).forEach(function (key) {\n    tag.setAttribute(key, abstractObj.attributes[key]);\n  });\n  const children = abstractObj.children || [];\n  children.forEach(function (child) {\n    tag.appendChild(convertSVG(child, {\n      ceFn\n    }));\n  });\n  return tag;\n}\nfunction nodeAsComment(node) {\n  let comment = \" \".concat(node.outerHTML, \" \");\n  /* BEGIN.ATTRIBUTION */\n  comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n  /* END.ATTRIBUTION */\n  return comment;\n}\nconst mutators = {\n  replace: function (mutation) {\n    const node = mutation[0];\n    if (node.parentNode) {\n      mutation[1].forEach(abstract => {\n        node.parentNode.insertBefore(convertSVG(abstract), node);\n      });\n      if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n        let comment = DOCUMENT.createComment(nodeAsComment(node));\n        node.parentNode.replaceChild(comment, node);\n      } else {\n        node.remove();\n      }\n    }\n  },\n  nest: function (mutation) {\n    const node = mutation[0];\n    const abstract = mutation[1];\n\n    // If we already have a replaced node we do not want to continue nesting within it.\n    // Short-circuit to the standard replacement\n    if (~classArray(node).indexOf(config.replacementClass)) {\n      return mutators.replace(mutation);\n    }\n    const forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n    delete abstract[0].attributes.id;\n    if (abstract[0].attributes.class) {\n      const splitClasses = abstract[0].attributes.class.split(' ').reduce((acc, cls) => {\n        if (cls === config.replacementClass || cls.match(forSvg)) {\n          acc.toSvg.push(cls);\n        } else {\n          acc.toNode.push(cls);\n        }\n        return acc;\n      }, {\n        toNode: [],\n        toSvg: []\n      });\n      abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n      if (splitClasses.toNode.length === 0) {\n        node.removeAttribute('class');\n      } else {\n        node.setAttribute('class', splitClasses.toNode.join(' '));\n      }\n    }\n    const newInnerHTML = abstract.map(a => toHtml(a)).join('\\n');\n    node.setAttribute(DATA_FA_I2SVG, '');\n    node.innerHTML = newInnerHTML;\n  }\n};\nfunction performOperationSync(op) {\n  op();\n}\nfunction perform(mutations, callback) {\n  const callbackFunction = typeof callback === 'function' ? callback : noop$2;\n  if (mutations.length === 0) {\n    callbackFunction();\n  } else {\n    let frame = performOperationSync;\n    if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n      frame = WINDOW.requestAnimationFrame || performOperationSync;\n    }\n    frame(() => {\n      const mutator = getMutator();\n      const mark = perf.begin('mutate');\n      mutations.map(mutator);\n      mark();\n      callbackFunction();\n    });\n  }\n}\nlet disabled = false;\nfunction disableObservation() {\n  disabled = true;\n}\nfunction enableObservation() {\n  disabled = false;\n}\nlet mo = null;\nfunction observe(options) {\n  if (!MUTATION_OBSERVER) {\n    return;\n  }\n  if (!config.observeMutations) {\n    return;\n  }\n  const {\n    treeCallback = noop$2,\n    nodeCallback = noop$2,\n    pseudoElementsCallback = noop$2,\n    observeMutationsRoot = DOCUMENT\n  } = options;\n  mo = new MUTATION_OBSERVER(objects => {\n    if (disabled) return;\n    const defaultPrefix = getDefaultUsablePrefix();\n    toArray(objects).forEach(mutationRecord => {\n      if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n        if (config.searchPseudoElements) {\n          pseudoElementsCallback(mutationRecord.target);\n        }\n        treeCallback(mutationRecord.target);\n      }\n      if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n        pseudoElementsCallback(mutationRecord.target.parentNode);\n      }\n      if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n        if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n          const {\n            prefix,\n            iconName\n          } = getCanonicalIcon(classArray(mutationRecord.target));\n          mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n          if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n        } else if (hasBeenReplaced(mutationRecord.target)) {\n          nodeCallback(mutationRecord.target);\n        }\n      }\n    });\n  });\n  if (!IS_DOM) return;\n  mo.observe(observeMutationsRoot, {\n    childList: true,\n    attributes: true,\n    characterData: true,\n    subtree: true\n  });\n}\nfunction disconnect() {\n  if (!mo) return;\n  mo.disconnect();\n}\n\nfunction styleParser (node) {\n  const style = node.getAttribute('style');\n  let val = [];\n  if (style) {\n    val = style.split(';').reduce((acc, style) => {\n      const styles = style.split(':');\n      const prop = styles[0];\n      const value = styles.slice(1);\n      if (prop && value.length > 0) {\n        acc[prop] = value.join(':').trim();\n      }\n      return acc;\n    }, {});\n  }\n  return val;\n}\n\nfunction classParser (node) {\n  const existingPrefix = node.getAttribute('data-prefix');\n  const existingIconName = node.getAttribute('data-icon');\n  const innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n  let val = getCanonicalIcon(classArray(node));\n  if (!val.prefix) {\n    val.prefix = getDefaultUsablePrefix();\n  }\n  if (existingPrefix && existingIconName) {\n    val.prefix = existingPrefix;\n    val.iconName = existingIconName;\n  }\n  if (val.iconName && val.prefix) {\n    return val;\n  }\n  if (val.prefix && innerText.length > 0) {\n    val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n  }\n  if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n    val.iconName = node.firstChild.data;\n  }\n  return val;\n}\n\nfunction attributesParser (node) {\n  const extraAttributes = toArray(node.attributes).reduce((acc, attr) => {\n    if (acc.name !== 'class' && acc.name !== 'style') {\n      acc[attr.name] = attr.value;\n    }\n    return acc;\n  }, {});\n  const title = node.getAttribute('title');\n  const titleId = node.getAttribute('data-fa-title-id');\n  if (config.autoA11y) {\n    if (title) {\n      extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n    } else {\n      extraAttributes['aria-hidden'] = 'true';\n      extraAttributes['focusable'] = 'false';\n    }\n  }\n  return extraAttributes;\n}\n\nfunction blankMeta() {\n  return {\n    iconName: null,\n    title: null,\n    titleId: null,\n    prefix: null,\n    transform: meaninglessTransform,\n    symbol: false,\n    mask: {\n      iconName: null,\n      prefix: null,\n      rest: []\n    },\n    maskId: null,\n    extra: {\n      classes: [],\n      styles: {},\n      attributes: {}\n    }\n  };\n}\nfunction parseMeta(node) {\n  let parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    styleParser: true\n  };\n  const {\n    iconName,\n    prefix,\n    rest: extraClasses\n  } = classParser(node);\n  const extraAttributes = attributesParser(node);\n  const pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n  let extraStyles = parser.styleParser ? styleParser(node) : [];\n  return _objectSpread2({\n    iconName,\n    title: node.getAttribute('title'),\n    titleId: node.getAttribute('data-fa-title-id'),\n    prefix,\n    transform: meaninglessTransform,\n    mask: {\n      iconName: null,\n      prefix: null,\n      rest: []\n    },\n    maskId: null,\n    symbol: false,\n    extra: {\n      classes: extraClasses,\n      styles: extraStyles,\n      attributes: extraAttributes\n    }\n  }, pluginMeta);\n}\n\nconst {\n  styles: styles$2\n} = namespace;\nfunction generateMutation(node) {\n  const nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n    styleParser: false\n  }) : parseMeta(node);\n  if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n    return callProvided('generateLayersText', node, nodeMeta);\n  } else {\n    return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n  }\n}\nfunction getKnownPrefixes() {\n  return [...Ft, ...Ia];\n}\nfunction onTree(root) {\n  let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  if (!IS_DOM) return Promise.resolve();\n  const htmlClassList = DOCUMENT.documentElement.classList;\n  const hclAdd = suffix => htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  const hclRemove = suffix => htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  const prefixes = config.autoFetchSvg ? getKnownPrefixes() : P.concat(Object.keys(styles$2));\n  if (!prefixes.includes('fa')) {\n    prefixes.push('fa');\n  }\n  const prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(p$$1 => \".\".concat(p$$1, \":not([\").concat(DATA_FA_I2SVG, \"])\"))).join(', ');\n  if (prefixesDomQuery.length === 0) {\n    return Promise.resolve();\n  }\n  let candidates = [];\n  try {\n    candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n  } catch (e$$1) {\n    // noop\n  }\n  if (candidates.length > 0) {\n    hclAdd('pending');\n    hclRemove('complete');\n  } else {\n    return Promise.resolve();\n  }\n  const mark = perf.begin('onTree');\n  const mutations = candidates.reduce((acc, node) => {\n    try {\n      const mutation = generateMutation(node);\n      if (mutation) {\n        acc.push(mutation);\n      }\n    } catch (e$$1) {\n      if (!PRODUCTION) {\n        if (e$$1.name === 'MissingIcon') {\n          console.error(e$$1);\n        }\n      }\n    }\n    return acc;\n  }, []);\n  return new Promise((resolve, reject) => {\n    Promise.all(mutations).then(resolvedMutations => {\n      perform(resolvedMutations, () => {\n        hclAdd('active');\n        hclAdd('complete');\n        hclRemove('pending');\n        if (typeof callback === 'function') callback();\n        mark();\n        resolve();\n      });\n    }).catch(e$$1 => {\n      mark();\n      reject(e$$1);\n    });\n  });\n}\nfunction onNode(node) {\n  let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  generateMutation(node).then(mutation => {\n    if (mutation) {\n      perform([mutation], callback);\n    }\n  });\n}\nfunction resolveIcons(next) {\n  return function (maybeIconDefinition) {\n    let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n    let {\n      mask\n    } = params;\n    if (mask) {\n      mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n    }\n    return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n      mask\n    }));\n  };\n}\nconst render = function (iconDefinition) {\n  let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    transform = meaninglessTransform,\n    symbol = false,\n    mask = null,\n    maskId = null,\n    title = null,\n    titleId = null,\n    classes = [],\n    attributes = {},\n    styles = {}\n  } = params;\n  if (!iconDefinition) return;\n  const {\n    prefix,\n    iconName,\n    icon\n  } = iconDefinition;\n  return domVariants(_objectSpread2({\n    type: 'icon'\n  }, iconDefinition), () => {\n    callHooks('beforeDOMElementCreation', {\n      iconDefinition,\n      params\n    });\n    if (config.autoA11y) {\n      if (title) {\n        attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n      } else {\n        attributes['aria-hidden'] = 'true';\n        attributes['focusable'] = 'false';\n      }\n    }\n    return makeInlineSvgAbstract({\n      icons: {\n        main: asFoundIcon(icon),\n        mask: mask ? asFoundIcon(mask.icon) : {\n          found: false,\n          width: null,\n          height: null,\n          icon: {}\n        }\n      },\n      prefix,\n      iconName,\n      transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n      symbol,\n      title,\n      maskId,\n      titleId,\n      extra: {\n        attributes,\n        styles,\n        classes\n      }\n    });\n  });\n};\nvar ReplaceElements = {\n  mixout() {\n    return {\n      icon: resolveIcons(render)\n    };\n  },\n  hooks() {\n    return {\n      mutationObserverCallbacks(accumulator) {\n        accumulator.treeCallback = onTree;\n        accumulator.nodeCallback = onNode;\n        return accumulator;\n      }\n    };\n  },\n  provides(providers$$1) {\n    providers$$1.i2svg = function (params) {\n      const {\n        node = DOCUMENT,\n        callback = () => {}\n      } = params;\n      return onTree(node, callback);\n    };\n    providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n      const {\n        iconName,\n        title,\n        titleId,\n        prefix,\n        transform,\n        symbol,\n        mask,\n        maskId,\n        extra\n      } = nodeMeta;\n      return new Promise((resolve, reject) => {\n        Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n          found: false,\n          width: 512,\n          height: 512,\n          icon: {}\n        })]).then(_ref => {\n          let [main, mask] = _ref;\n          resolve([node, makeInlineSvgAbstract({\n            icons: {\n              main,\n              mask\n            },\n            prefix,\n            iconName,\n            transform,\n            symbol,\n            maskId,\n            title,\n            titleId,\n            extra,\n            watchable: true\n          })]);\n        }).catch(reject);\n      });\n    };\n    providers$$1.generateAbstractIcon = function (_ref2) {\n      let {\n        children,\n        attributes,\n        main,\n        transform,\n        styles\n      } = _ref2;\n      const styleString = joinStyles(styles);\n      if (styleString.length > 0) {\n        attributes['style'] = styleString;\n      }\n      let nextChild;\n      if (transformIsMeaningful(transform)) {\n        nextChild = callProvided('generateAbstractTransformGrouping', {\n          main,\n          transform,\n          containerWidth: main.width,\n          iconWidth: main.width\n        });\n      }\n      children.push(nextChild || main.icon);\n      return {\n        children,\n        attributes\n      };\n    };\n  }\n};\n\nvar Layers = {\n  mixout() {\n    return {\n      layer(assembler) {\n        let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        const {\n          classes = []\n        } = params;\n        return domVariants({\n          type: 'layer'\n        }, () => {\n          callHooks('beforeDOMElementCreation', {\n            assembler,\n            params\n          });\n          let children = [];\n          assembler(args => {\n            Array.isArray(args) ? args.map(a => {\n              children = children.concat(a.abstract);\n            }) : children = children.concat(args.abstract);\n          });\n          return [{\n            tag: 'span',\n            attributes: {\n              class: [\"\".concat(config.cssPrefix, \"-layers\"), ...classes].join(' ')\n            },\n            children\n          }];\n        });\n      }\n    };\n  }\n};\n\nvar LayersCounter = {\n  mixout() {\n    return {\n      counter(content) {\n        let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        const {\n          title = null,\n          classes = [],\n          attributes = {},\n          styles = {}\n        } = params;\n        return domVariants({\n          type: 'counter',\n          content\n        }, () => {\n          callHooks('beforeDOMElementCreation', {\n            content,\n            params\n          });\n          return makeLayersCounterAbstract({\n            content: content.toString(),\n            title,\n            extra: {\n              attributes,\n              styles,\n              classes: [\"\".concat(config.cssPrefix, \"-layers-counter\"), ...classes]\n            }\n          });\n        });\n      }\n    };\n  }\n};\n\nvar LayersText = {\n  mixout() {\n    return {\n      text(content) {\n        let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        const {\n          transform = meaninglessTransform,\n          title = null,\n          classes = [],\n          attributes = {},\n          styles = {}\n        } = params;\n        return domVariants({\n          type: 'text',\n          content\n        }, () => {\n          callHooks('beforeDOMElementCreation', {\n            content,\n            params\n          });\n          return makeLayersTextAbstract({\n            content,\n            transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n            title,\n            extra: {\n              attributes,\n              styles,\n              classes: [\"\".concat(config.cssPrefix, \"-layers-text\"), ...classes]\n            }\n          });\n        });\n      }\n    };\n  },\n  provides(providers$$1) {\n    providers$$1.generateLayersText = function (node, nodeMeta) {\n      const {\n        title,\n        transform,\n        extra\n      } = nodeMeta;\n      let width = null;\n      let height = null;\n      if (IS_IE) {\n        const computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n        const boundingClientRect = node.getBoundingClientRect();\n        width = boundingClientRect.width / computedFontSize;\n        height = boundingClientRect.height / computedFontSize;\n      }\n      if (config.autoA11y && !title) {\n        extra.attributes['aria-hidden'] = 'true';\n      }\n      return Promise.resolve([node, makeLayersTextAbstract({\n        content: node.innerHTML,\n        width,\n        height,\n        transform,\n        title,\n        extra,\n        watchable: true\n      })]);\n    };\n  }\n};\n\nconst CLEAN_CONTENT_PATTERN = new RegExp('\\u{22}', 'ug');\nconst SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nconst _FONT_FAMILY_WEIGHT_TO_PREFIX = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n  FontAwesome: {\n    normal: 'fas',\n    400: 'fas'\n  }\n}), lt), wa), Yt);\nconst FONT_FAMILY_WEIGHT_TO_PREFIX = Object.keys(_FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, key) => {\n  acc[key.toLowerCase()] = _FONT_FAMILY_WEIGHT_TO_PREFIX[key];\n  return acc;\n}, {});\nconst FONT_FAMILY_WEIGHT_FALLBACK = Object.keys(FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, fontFamily) => {\n  const weights = FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamily];\n  acc[fontFamily] = weights[900] || [...Object.entries(weights)][0][1];\n  return acc;\n}, {});\nfunction hexValueFromContent(content) {\n  const cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n  const codePoint = codePointAt(cleaned, 0);\n  const isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n  const isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n  return {\n    value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n    isSecondary: isPrependTen || isDoubled\n  };\n}\nfunction getPrefix(fontFamily, fontWeight) {\n  const fontFamilySanitized = fontFamily.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n  const fontWeightInteger = parseInt(fontWeight);\n  const fontWeightSanitized = isNaN(fontWeightInteger) ? 'normal' : fontWeightInteger;\n  return (FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamilySanitized] || {})[fontWeightSanitized] || FONT_FAMILY_WEIGHT_FALLBACK[fontFamilySanitized];\n}\nfunction replaceForPosition(node, position) {\n  const pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n  return new Promise((resolve, reject) => {\n    if (node.getAttribute(pendingAttribute) !== null) {\n      // This node is already being processed\n      return resolve();\n    }\n    const children = toArray(node.children);\n    const alreadyProcessedPseudoElement = children.filter(c$$1 => c$$1.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position)[0];\n    const styles = WINDOW.getComputedStyle(node, position);\n    const fontFamily = styles.getPropertyValue('font-family');\n    const fontFamilyMatch = fontFamily.match(FONT_FAMILY_PATTERN);\n    const fontWeight = styles.getPropertyValue('font-weight');\n    const content = styles.getPropertyValue('content');\n    if (alreadyProcessedPseudoElement && !fontFamilyMatch) {\n      // If we've already processed it but the current computed style does not result in a font-family,\n      // that probably means that a class name that was previously present to make the icon has been\n      // removed. So we now should delete the icon.\n      node.removeChild(alreadyProcessedPseudoElement);\n      return resolve();\n    } else if (fontFamilyMatch && content !== 'none' && content !== '') {\n      const content = styles.getPropertyValue('content');\n      let prefix = getPrefix(fontFamily, fontWeight);\n      const {\n        value: hexValue,\n        isSecondary\n      } = hexValueFromContent(content);\n      const isV4 = fontFamilyMatch[0].startsWith('FontAwesome');\n      let iconName = byUnicode(prefix, hexValue);\n      let iconIdentifier = iconName;\n      if (isV4) {\n        const iconName4 = byOldUnicode(hexValue);\n        if (iconName4.iconName && iconName4.prefix) {\n          iconName = iconName4.iconName;\n          prefix = iconName4.prefix;\n        }\n      }\n\n      // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n      // already done so with the same prefix and iconName\n      if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n        node.setAttribute(pendingAttribute, iconIdentifier);\n        if (alreadyProcessedPseudoElement) {\n          // Delete the old one, since we're replacing it with a new one\n          node.removeChild(alreadyProcessedPseudoElement);\n        }\n        const meta = blankMeta();\n        const {\n          extra\n        } = meta;\n        extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n        findIcon(iconName, prefix).then(main => {\n          const abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n            icons: {\n              main,\n              mask: emptyCanonicalIcon()\n            },\n            prefix,\n            iconName: iconIdentifier,\n            extra,\n            watchable: true\n          }));\n          const element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n          if (position === '::before') {\n            node.insertBefore(element, node.firstChild);\n          } else {\n            node.appendChild(element);\n          }\n          element.outerHTML = abstract.map(a$$1 => toHtml(a$$1)).join('\\n');\n          node.removeAttribute(pendingAttribute);\n          resolve();\n        }).catch(reject);\n      } else {\n        resolve();\n      }\n    } else {\n      resolve();\n    }\n  });\n}\nfunction replace(node) {\n  return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\nfunction processable(node) {\n  return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\nfunction searchPseudoElements(root) {\n  if (!IS_DOM) return;\n  return new Promise((resolve, reject) => {\n    const operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n    const end = perf.begin('searchPseudoElements');\n    disableObservation();\n    Promise.all(operations).then(() => {\n      end();\n      enableObservation();\n      resolve();\n    }).catch(() => {\n      end();\n      enableObservation();\n      reject();\n    });\n  });\n}\nvar PseudoElements = {\n  hooks() {\n    return {\n      mutationObserverCallbacks(accumulator) {\n        accumulator.pseudoElementsCallback = searchPseudoElements;\n        return accumulator;\n      }\n    };\n  },\n  provides(providers) {\n    providers.pseudoElements2svg = function (params) {\n      const {\n        node = DOCUMENT\n      } = params;\n      if (config.searchPseudoElements) {\n        searchPseudoElements(node);\n      }\n    };\n  }\n};\n\nlet _unwatched = false;\nvar MutationObserver$1 = {\n  mixout() {\n    return {\n      dom: {\n        unwatch() {\n          disableObservation();\n          _unwatched = true;\n        }\n      }\n    };\n  },\n  hooks() {\n    return {\n      bootstrap() {\n        observe(chainHooks('mutationObserverCallbacks', {}));\n      },\n      noAuto() {\n        disconnect();\n      },\n      watch(params) {\n        const {\n          observeMutationsRoot\n        } = params;\n        if (_unwatched) {\n          enableObservation();\n        } else {\n          observe(chainHooks('mutationObserverCallbacks', {\n            observeMutationsRoot\n          }));\n        }\n      }\n    };\n  }\n};\n\nconst parseTransformString = transformString => {\n  let transform = {\n    size: 16,\n    x: 0,\n    y: 0,\n    flipX: false,\n    flipY: false,\n    rotate: 0\n  };\n  return transformString.toLowerCase().split(' ').reduce((acc, n) => {\n    const parts = n.toLowerCase().split('-');\n    const first = parts[0];\n    let rest = parts.slice(1).join('-');\n    if (first && rest === 'h') {\n      acc.flipX = true;\n      return acc;\n    }\n    if (first && rest === 'v') {\n      acc.flipY = true;\n      return acc;\n    }\n    rest = parseFloat(rest);\n    if (isNaN(rest)) {\n      return acc;\n    }\n    switch (first) {\n      case 'grow':\n        acc.size = acc.size + rest;\n        break;\n      case 'shrink':\n        acc.size = acc.size - rest;\n        break;\n      case 'left':\n        acc.x = acc.x - rest;\n        break;\n      case 'right':\n        acc.x = acc.x + rest;\n        break;\n      case 'up':\n        acc.y = acc.y - rest;\n        break;\n      case 'down':\n        acc.y = acc.y + rest;\n        break;\n      case 'rotate':\n        acc.rotate = acc.rotate + rest;\n        break;\n    }\n    return acc;\n  }, transform);\n};\nvar PowerTransforms = {\n  mixout() {\n    return {\n      parse: {\n        transform: transformString => {\n          return parseTransformString(transformString);\n        }\n      }\n    };\n  },\n  hooks() {\n    return {\n      parseNodeAttributes(accumulator, node) {\n        const transformString = node.getAttribute('data-fa-transform');\n        if (transformString) {\n          accumulator.transform = parseTransformString(transformString);\n        }\n        return accumulator;\n      }\n    };\n  },\n  provides(providers) {\n    providers.generateAbstractTransformGrouping = function (_ref) {\n      let {\n        main,\n        transform,\n        containerWidth,\n        iconWidth\n      } = _ref;\n      const outer = {\n        transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n      };\n      const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n      const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n      const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n      const inner = {\n        transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n      };\n      const path = {\n        transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n      };\n      const operations = {\n        outer,\n        inner,\n        path\n      };\n      return {\n        tag: 'g',\n        attributes: _objectSpread2({}, operations.outer),\n        children: [{\n          tag: 'g',\n          attributes: _objectSpread2({}, operations.inner),\n          children: [{\n            tag: main.icon.tag,\n            children: main.icon.children,\n            attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n          }]\n        }]\n      };\n    };\n  }\n};\n\nconst ALL_SPACE = {\n  x: 0,\n  y: 0,\n  width: '100%',\n  height: '100%'\n};\nfunction fillBlack(abstract) {\n  let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  if (abstract.attributes && (abstract.attributes.fill || force)) {\n    abstract.attributes.fill = 'black';\n  }\n  return abstract;\n}\nfunction deGroup(abstract) {\n  if (abstract.tag === 'g') {\n    return abstract.children;\n  } else {\n    return [abstract];\n  }\n}\nvar Masks = {\n  hooks() {\n    return {\n      parseNodeAttributes(accumulator, node) {\n        const maskData = node.getAttribute('data-fa-mask');\n        const mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(i => i.trim()));\n        if (!mask.prefix) {\n          mask.prefix = getDefaultUsablePrefix();\n        }\n        accumulator.mask = mask;\n        accumulator.maskId = node.getAttribute('data-fa-mask-id');\n        return accumulator;\n      }\n    };\n  },\n  provides(providers) {\n    providers.generateAbstractMask = function (_ref) {\n      let {\n        children,\n        attributes,\n        main,\n        mask,\n        maskId: explicitMaskId,\n        transform\n      } = _ref;\n      const {\n        width: mainWidth,\n        icon: mainPath\n      } = main;\n      const {\n        width: maskWidth,\n        icon: maskPath\n      } = mask;\n      const trans = transformForSvg({\n        transform,\n        containerWidth: maskWidth,\n        iconWidth: mainWidth\n      });\n      const maskRect = {\n        tag: 'rect',\n        attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n          fill: 'white'\n        })\n      };\n      const maskInnerGroupChildrenMixin = mainPath.children ? {\n        children: mainPath.children.map(fillBlack)\n      } : {};\n      const maskInnerGroup = {\n        tag: 'g',\n        attributes: _objectSpread2({}, trans.inner),\n        children: [fillBlack(_objectSpread2({\n          tag: mainPath.tag,\n          attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n        }, maskInnerGroupChildrenMixin))]\n      };\n      const maskOuterGroup = {\n        tag: 'g',\n        attributes: _objectSpread2({}, trans.outer),\n        children: [maskInnerGroup]\n      };\n      const maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n      const clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n      const maskTag = {\n        tag: 'mask',\n        attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n          id: maskId,\n          maskUnits: 'userSpaceOnUse',\n          maskContentUnits: 'userSpaceOnUse'\n        }),\n        children: [maskRect, maskOuterGroup]\n      };\n      const defs = {\n        tag: 'defs',\n        children: [{\n          tag: 'clipPath',\n          attributes: {\n            id: clipId\n          },\n          children: deGroup(maskPath)\n        }, maskTag]\n      };\n      children.push(defs, {\n        tag: 'rect',\n        attributes: _objectSpread2({\n          fill: 'currentColor',\n          'clip-path': \"url(#\".concat(clipId, \")\"),\n          mask: \"url(#\".concat(maskId, \")\")\n        }, ALL_SPACE)\n      });\n      return {\n        children,\n        attributes\n      };\n    };\n  }\n};\n\nvar MissingIconIndicator = {\n  provides(providers) {\n    let reduceMotion = false;\n    if (WINDOW.matchMedia) {\n      reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    }\n    providers.missingIconAbstract = function () {\n      const gChildren = [];\n      const FILL = {\n        fill: 'currentColor'\n      };\n      const ANIMATION_BASE = {\n        attributeType: 'XML',\n        repeatCount: 'indefinite',\n        dur: '2s'\n      };\n\n      // Ring\n      gChildren.push({\n        tag: 'path',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n        })\n      });\n      const OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n        attributeName: 'opacity'\n      });\n      const dot = {\n        tag: 'circle',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          cx: '256',\n          cy: '364',\n          r: '28'\n        }),\n        children: []\n      };\n      if (!reduceMotion) {\n        dot.children.push({\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n            attributeName: 'r',\n            values: '28;14;28;28;14;28;'\n          })\n        }, {\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n            values: '1;0;1;1;0;1;'\n          })\n        });\n      }\n      gChildren.push(dot);\n      gChildren.push({\n        tag: 'path',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          opacity: '1',\n          d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n        }),\n        children: reduceMotion ? [] : [{\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n            values: '1;0;0;0;0;1;'\n          })\n        }]\n      });\n      if (!reduceMotion) {\n        // Exclamation\n        gChildren.push({\n          tag: 'path',\n          attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n            opacity: '0',\n            d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n          }),\n          children: [{\n            tag: 'animate',\n            attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n              values: '0;0;1;1;0;0;'\n            })\n          }]\n        });\n      }\n      return {\n        tag: 'g',\n        attributes: {\n          'class': 'missing'\n        },\n        children: gChildren\n      };\n    };\n  }\n};\n\nvar SvgSymbols = {\n  hooks() {\n    return {\n      parseNodeAttributes(accumulator, node) {\n        const symbolData = node.getAttribute('data-fa-symbol');\n        const symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n        accumulator['symbol'] = symbol;\n        return accumulator;\n      }\n    };\n  }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n  mixoutsTo: api\n});\nconst noAuto$1 = api.noAuto;\nconst config$1 = api.config;\nconst library$1 = api.library;\nconst dom$1 = api.dom;\nconst parse$1 = api.parse;\nconst findIconDefinition$1 = api.findIconDefinition;\nconst toHtml$1 = api.toHtml;\nconst icon = api.icon;\nconst layer = api.layer;\nconst text = api.text;\nconst counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction _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}\nfunction _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\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}\nfunction _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _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}\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\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}\nfunction _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}\nfunction _slicedToArray(r, e) {\n  return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toConsumableArray(r) {\n  return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\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}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, \"string\");\n  return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _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}\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}\n\nvar ICON_PACKS_STARTING_VERSION = '7.0.0';\n\n// Try to get version from installed package first, fallback to env var, then default\nvar SVG_CORE_VERSION;\ntry {\n  var svgCorePackageJson = require('@fortawesome/fontawesome-svg-core/package.json');\n  SVG_CORE_VERSION = svgCorePackageJson.version;\n} catch (e) {\n  // If package.json can't be loaded, try environment variable\n  SVG_CORE_VERSION = typeof process !== 'undefined' && process.env.FA_VERSION || '7.0.0';\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n  var beat = props.beat,\n    fade = props.fade,\n    beatFade = props.beatFade,\n    bounce = props.bounce,\n    shake = props.shake,\n    flash = props.flash,\n    spin = props.spin,\n    spinPulse = props.spinPulse,\n    spinReverse = props.spinReverse,\n    pulse = props.pulse,\n    fixedWidth = props.fixedWidth,\n    inverse = props.inverse,\n    border = props.border,\n    listItem = props.listItem,\n    flip = props.flip,\n    size = props.size,\n    rotation = props.rotation,\n    pull = props.pull,\n    swapOpacity = props.swapOpacity,\n    rotateBy = props.rotateBy,\n    widthAuto = props.widthAuto;\n\n  // Check if we're using version 7 or later\n  var isVersion7OrLater = versionCheckGte(SVG_CORE_VERSION, ICON_PACKS_STARTING_VERSION);\n\n  // map of CSS class names to properties\n  var classes = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({\n    'fa-beat': beat,\n    'fa-fade': fade,\n    'fa-beat-fade': beatFade,\n    'fa-bounce': bounce,\n    'fa-shake': shake,\n    'fa-flash': flash,\n    'fa-spin': spin,\n    'fa-spin-reverse': spinReverse,\n    'fa-spin-pulse': spinPulse,\n    'fa-pulse': pulse,\n    'fa-fw': fixedWidth,\n    'fa-inverse': inverse,\n    'fa-border': border,\n    'fa-li': listItem,\n    'fa-flip': flip === true,\n    'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n    'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n  }, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), 'fa-swap-opacity', swapOpacity), 'fa-rotate-by', isVersion7OrLater && rotateBy), 'fa-width-auto', isVersion7OrLater && widthAuto);\n\n  // map over all the keys in the classes object\n  // return an array of the keys where the value for the key is not null\n  return Object.keys(classes).map(function (key) {\n    return classes[key] ? key : null;\n  }).filter(function (key) {\n    return key;\n  });\n}\n\n// check if verion1 is greater than or equal to version2\nfunction versionCheckGte(version1, version2) {\n  var _version1$split = version1.split('-'),\n    _version1$split2 = _slicedToArray(_version1$split, 2),\n    v1Base = _version1$split2[0],\n    v1PreRelease = _version1$split2[1];\n  var _version2$split = version2.split('-'),\n    _version2$split2 = _slicedToArray(_version2$split, 2),\n    v2Base = _version2$split2[0],\n    v2PreRelease = _version2$split2[1];\n  var v1Parts = v1Base.split('.');\n  var v2Parts = v2Base.split('.');\n\n  // Compare version numbers first\n  for (var i = 0; i < Math.max(v1Parts.length, v2Parts.length); i++) {\n    var v1Part = v1Parts[i] || '0';\n    var v2Part = v2Parts[i] || '0';\n\n    // Compare numeric values\n    var v1Num = parseInt(v1Part, 10);\n    var v2Num = parseInt(v2Part, 10);\n    if (v1Num !== v2Num) {\n      return v1Num > v2Num;\n    }\n  }\n\n  // If numeric values are equal, look for any remaining parts\n  // that would make one version greater than the other\n  for (var _i = 0; _i < Math.max(v1Parts.length, v2Parts.length); _i++) {\n    var _v1Part = v1Parts[_i] || '0';\n    var _v2Part = v2Parts[_i] || '0';\n    if (_v1Part !== _v2Part) {\n      // When numeric values are equal but strings differ,\n      // the one without leading zeros is greater\n      if (_v1Part.length !== _v2Part.length) {\n        return _v1Part.length < _v2Part.length;\n      }\n    }\n  }\n\n  // If version numbers are equal, compare pre-release identifiers\n  // A version with a pre-release identifier is less than one without\n  if (v1PreRelease && !v2PreRelease) return false;\n  if (!v1PreRelease && v2PreRelease) return true;\n  return true;\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n  obj = obj - 0;\n\n  // eslint-disable-next-line no-self-compare\n  return obj === obj;\n}\nfunction camelize(string) {\n  if (_isNumerical(string)) {\n    return string;\n  }\n\n  // eslint-disable-next-line no-useless-escape\n  string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n    return chr ? chr.toUpperCase() : '';\n  });\n\n  // Ensure 1st char is always lowercase\n  return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\nfunction capitalize(val) {\n  return val.charAt(0).toUpperCase() + val.slice(1);\n}\nfunction styleToObject(style) {\n  return style.split(';').map(function (s) {\n    return s.trim();\n  }).filter(function (s) {\n    return s;\n  }).reduce(function (acc, pair) {\n    var i = pair.indexOf(':');\n    var prop = camelize(pair.slice(0, i));\n    var value = pair.slice(i + 1).trim();\n    prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n    return acc;\n  }, {});\n}\nfunction convert(createElement, element) {\n  var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  if (typeof element === 'string') {\n    return element;\n  }\n  var children = (element.children || []).map(function (child) {\n    return convert(createElement, child);\n  });\n\n  /* eslint-disable dot-notation */\n  var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n    var val = element.attributes[key];\n    switch (key) {\n      case 'class':\n        acc.attrs['className'] = val;\n        delete element.attributes['class'];\n        break;\n      case 'style':\n        acc.attrs['style'] = styleToObject(val);\n        break;\n      default:\n        if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n          acc.attrs[key.toLowerCase()] = val;\n        } else {\n          acc.attrs[camelize(key)] = val;\n        }\n    }\n    return acc;\n  }, {\n    attrs: {}\n  });\n  var _extraProps$style = extraProps.style,\n    existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n    remaining = _objectWithoutProperties(extraProps, _excluded);\n  mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n  /* eslint-enable */\n\n  return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\ntry {\n  PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\nfunction log () {\n  if (!PRODUCTION && console && typeof console.error === 'function') {\n    var _console;\n    (_console = console).error.apply(_console, arguments);\n  }\n}\n\n// Normalize icon arguments\nfunction normalizeIconArgs(icon) {\n  // this has everything that it needs to be rendered which means it was probably imported\n  // directly from an icon svg package\n  if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n    return icon;\n  }\n  if (parse.icon) {\n    return parse.icon(icon);\n  }\n\n  // if the icon is null, there's nothing to do\n  if (icon === null) {\n    return null;\n  }\n\n  // if the icon is an object and has a prefix and an icon name, return it\n  if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n    return icon;\n  }\n\n  // if it's an array with length of two\n  if (Array.isArray(icon) && icon.length === 2) {\n    // use the first item as prefix, second as icon name\n    return {\n      prefix: icon[0],\n      iconName: icon[1]\n    };\n  }\n\n  // if it's a string, use it as the icon name\n  if (typeof icon === 'string') {\n    return {\n      prefix: 'fas',\n      iconName: icon\n    };\n  }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n  // if the value is a non-empty array\n  // or it's not an array but it is truthy\n  // then create the object with the key and the value\n  // if not, return an empty array\n  return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar defaultProps = {\n  border: false,\n  className: '',\n  mask: null,\n  maskId: null,\n  // the fixedWidth property has been deprecated as of version 7\n  fixedWidth: false,\n  inverse: false,\n  flip: false,\n  icon: null,\n  listItem: false,\n  pull: null,\n  pulse: false,\n  rotation: null,\n  rotateBy: false,\n  size: null,\n  spin: false,\n  spinPulse: false,\n  spinReverse: false,\n  beat: false,\n  fade: false,\n  beatFade: false,\n  bounce: false,\n  shake: false,\n  symbol: false,\n  title: '',\n  titleId: null,\n  transform: null,\n  swapOpacity: false,\n  widthAuto: false\n};\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var allProps = _objectSpread2(_objectSpread2({}, defaultProps), props);\n  var iconArgs = allProps.icon,\n    maskArgs = allProps.mask,\n    symbol = allProps.symbol,\n    className = allProps.className,\n    title = allProps.title,\n    titleId = allProps.titleId,\n    maskId = allProps.maskId;\n  var iconLookup = normalizeIconArgs(iconArgs);\n  var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(allProps)), _toConsumableArray((className || '').split(' '))));\n  var transform = objectWithKey('transform', typeof allProps.transform === 'string' ? parse.transform(allProps.transform) : allProps.transform);\n  var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n  var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n    symbol: symbol,\n    title: title,\n    titleId: titleId,\n    maskId: maskId\n  }));\n  if (!renderedIcon) {\n    log('Could not find icon', iconLookup);\n    return null;\n  }\n  var abstract = renderedIcon.abstract;\n  var extraProps = {\n    ref: ref\n  };\n  Object.keys(allProps).forEach(function (key) {\n    // eslint-disable-next-line no-prototype-builtins\n    if (!defaultProps.hasOwnProperty(key)) {\n      extraProps[key] = allProps[key];\n    }\n  });\n  return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n  beat: PropTypes.bool,\n  border: PropTypes.bool,\n  beatFade: PropTypes.bool,\n  bounce: PropTypes.bool,\n  className: PropTypes.string,\n  fade: PropTypes.bool,\n  flash: PropTypes.bool,\n  mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n  maskId: PropTypes.string,\n  // the fixedWidth property has been deprecated as of version 7\n  fixedWidth: PropTypes.bool,\n  inverse: PropTypes.bool,\n  flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n  icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n  listItem: PropTypes.bool,\n  pull: PropTypes.oneOf(['right', 'left']),\n  pulse: PropTypes.bool,\n  rotation: PropTypes.oneOf([0, 90, 180, 270]),\n  rotateBy: PropTypes.bool,\n  shake: PropTypes.bool,\n  size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n  spin: PropTypes.bool,\n  spinPulse: PropTypes.bool,\n  spinReverse: PropTypes.bool,\n  symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  title: PropTypes.string,\n  titleId: PropTypes.string,\n  transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n  swapOpacity: PropTypes.bool,\n  widthAuto: PropTypes.bool\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","/*!\n * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\nconst prefix = \"far\";\nconst faTrashCan = {\n  prefix: 'far',\n  iconName: 'trash-can',\n  icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M170.5 51.6L151.5 80l145 0-19-28.4c-1.5-2.2-4-3.6-6.7-3.6l-93.7 0c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80 368 80l48 0 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 304c0 44.2-35.8 80-80 80l-224 0c-44.2 0-80-35.8-80-80l0-304-8 0c-13.3 0-24-10.7-24-24S10.7 80 24 80l8 0 48 0 13.8 0 36.7-55.1C140.9 9.4 158.4 0 177.1 0l93.7 0c18.7 0 36.2 9.4 46.6 24.9zM80 128l0 304c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-304L80 128zm80 64l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faTrashAlt = faTrashCan;\nconst faMessage = {\n  prefix: 'far',\n  iconName: 'message',\n  icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M160 368c26.5 0 48 21.5 48 48l0 16 72.5-54.4c8.3-6.2 18.4-9.6 28.8-9.6L448 368c8.8 0 16-7.2 16-16l0-288c0-8.8-7.2-16-16-16L64 48c-8.8 0-16 7.2-16 16l0 288c0 8.8 7.2 16 16 16l96 0zm48 124l-.2 .2-5.1 3.8-17.1 12.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3l0-21.3 0-6.4 0-.3 0-4 0-48-48 0-48 0c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L448 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64l-138.7 0L208 492z\"]\n};\nconst faCommentAlt = faMessage;\nconst faFileLines = {\n  prefix: 'far',\n  iconName: 'file-lines',\n  icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l160 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm56 256c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nconst faFileAlt = faFileLines;\nconst faFileText = faFileLines;\nconst faCalendarDays = {\n  prefix: 'far',\n  iconName: 'calendar-days',\n  icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L64 64C28.7 64 0 92.7 0 128l0 16 0 48L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-256 0-48 0-16c0-35.3-28.7-64-64-64l-40 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L152 64l0-40zM48 192l80 0 0 56-80 0 0-56zm0 104l80 0 0 64-80 0 0-64zm128 0l96 0 0 64-96 0 0-64zm144 0l80 0 0 64-80 0 0-64zm80-48l-80 0 0-56 80 0 0 56zm0 160l0 40c0 8.8-7.2 16-16 16l-64 0 0-56 80 0zm-128 0l0 56-96 0 0-56 96 0zm-144 0l0 56-64 0c-8.8 0-16-7.2-16-16l0-40 80 0zM272 248l-96 0 0-56 96 0 0 56z\"]\n};\nconst faCalendarAlt = faCalendarDays;\nconst faHandPointRight = {\n  prefix: 'far',\n  iconName: 'hand-point-right',\n  icon: [512, 512, [], \"f0a4\", \"M448 128l-177.6 0c1 5.2 1.6 10.5 1.6 16l0 16 32 0 144 0c8.8 0 16-7.2 16-16s-7.2-16-16-16zM224 144c0-17.7-14.3-32-32-32c0 0 0 0 0 0l-24 0c-66.3 0-120 53.7-120 120l0 48c0 52.5 33.7 97.1 80.7 113.4c-.5-3.1-.7-6.2-.7-9.4c0-20 9.2-37.9 23.6-49.7c-4.9-9-7.6-19.4-7.6-30.3c0-15.1 5.3-29 14-40c-8.8-11-14-24.9-14-40l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 8.8 7.2 16 16 16s16-7.2 16-16l0-40 0-40zM192 64s0 0 0 0c18 0 34.6 6 48 16l208 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-82 0c1.3 5.1 2 10.5 2 16c0 25.3-14.7 47.2-36 57.6c2.6 7 4 14.5 4 22.4c0 20-9.2 37.9-23.6 49.7c4.9 9 7.6 19.4 7.6 30.3c0 35.3-28.7 64-64 64l-64 0-24 0C75.2 448 0 372.8 0 280l0-48C0 139.2 75.2 64 168 64l24 0zm64 336c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0zm16-176c0 5.5-.7 10.9-2 16l2 0 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0 16zm-24 64l-40 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-24 0z\"]\n};\nconst faFaceSmileBeam = {\n  prefix: 'far',\n  iconName: 'face-smile-beam',\n  icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zm40-89.3s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faSmileBeam = faFaceSmileBeam;\nconst faFaceGrinStars = {\n  prefix: 'far',\n  iconName: 'face-grin-stars',\n  icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM183.2 132.6c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L176 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L242.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm160 0c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L336 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L402.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm6.3 175.8c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5c10.4-16.1-6.8-32.5-25.5-28.1z\"]\n};\nconst faGrinStars = faFaceGrinStars;\nconst faAddressBook = {\n  prefix: 'far',\n  iconName: 'address-book',\n  icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M384 48c8.8 0 16 7.2 16 16l0 384c0 8.8-7.2 16-16 16L96 464c-8.8 0-16-7.2-16-16L80 64c0-8.8 7.2-16 16-16l288 0zM96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L96 0zM240 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80l-64 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zM496 192c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64z\"]\n};\nconst faContactBook = faAddressBook;\nconst faComments = {\n  prefix: 'far',\n  iconName: 'comments',\n  icon: [640, 512, [128490, 61670], \"f086\", \"M88.2 309.1c9.8-18.3 6.8-40.8-7.5-55.8C59.4 230.9 48 204 48 176c0-63.5 63.8-128 160-128s160 64.5 160 128s-63.8 128-160 128c-13.1 0-25.8-1.3-37.8-3.6c-10.4-2-21.2-.6-30.7 4.2c-4.1 2.1-8.3 4.1-12.6 6c-16 7.2-32.9 13.5-49.9 18c2.8-4.6 5.4-9.1 7.9-13.6c1.1-1.9 2.2-3.9 3.2-5.9zM208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 41.8 17.2 80.1 45.9 110.3c-.9 1.7-1.9 3.5-2.8 5.1c-10.3 18.4-22.3 36.5-36.6 52.1c-6.6 7-8.3 17.2-4.6 25.9C5.8 378.3 14.4 384 24 384c43 0 86.5-13.3 122.7-29.7c4.8-2.2 9.6-4.5 14.2-6.8c15.1 3 30.9 4.5 47.1 4.5zM432 480c16.2 0 31.9-1.6 47.1-4.5c4.6 2.3 9.4 4.6 14.2 6.8C529.5 498.7 573 512 616 512c9.6 0 18.2-5.7 22-14.5c3.8-8.8 2-19-4.6-25.9c-14.2-15.6-26.2-33.7-36.6-52.1c-.9-1.7-1.9-3.4-2.8-5.1C622.8 384.1 640 345.8 640 304c0-94.4-87.9-171.5-198.2-175.8c4.1 15.2 6.2 31.2 6.2 47.8l0 .6c87.2 6.7 144 67.5 144 127.4c0 28-11.4 54.9-32.7 77.2c-14.3 15-17.3 37.6-7.5 55.8c1.1 2 2.2 4 3.2 5.9c2.5 4.5 5.2 9 7.9 13.6c-17-4.5-33.9-10.7-49.9-18c-4.3-1.9-8.5-3.9-12.6-6c-9.5-4.8-20.3-6.2-30.7-4.2c-12.1 2.4-24.8 3.6-37.8 3.6c-61.7 0-110-26.5-136.8-62.3c-16 5.4-32.8 9.4-50 11.8C279 439.8 350 480 432 480z\"]\n};\nconst faPaste = {\n  prefix: 'far',\n  iconName: 'paste',\n  icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M104.6 48L64 48C28.7 48 0 76.7 0 112L0 384c0 35.3 28.7 64 64 64l96 0 0-48-96 0c-8.8 0-16-7.2-16-16l0-272c0-8.8 7.2-16 16-16l16 0c0 17.7 14.3 32 32 32l72.4 0C202 108.4 227.6 96 256 96l62 0c-7.1-27.6-32.2-48-62-48l-40.6 0C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l140.1 0L464 243.9 464 448c0 8.8-7.2 16-16 16zM256 512l192 0c35.3 0 64-28.7 64-64l0-204.1c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1L256 128c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64z\"]\n};\nconst faFileClipboard = faPaste;\nconst faFaceGrinTongueSquint = {\n  prefix: 'far',\n  iconName: 'face-grin-tongue-squint',\n  icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4l0-23.3c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6l0 22.9c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm116-98.9c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 416l0-37.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 37.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGrinTongueSquint = faFaceGrinTongueSquint;\nconst faFaceFlushed = {\n  prefix: 'far',\n  iconName: 'face-flushed',\n  icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM160.4 248a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm216-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 336c-13.3 0-24 10.7-24 24s10.7 24 24 24l128 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-128 0zM160 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm144-80a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 0a80 80 0 1 0 -160 0 80 80 0 1 0 160 0z\"]\n};\nconst faFlushed = faFaceFlushed;\nconst faSquareCaretRight = {\n  prefix: 'far',\n  iconName: 'square-caret-right',\n  icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M400 96c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320zM384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nconst faCaretSquareRight = faSquareCaretRight;\nconst faSquareMinus = {\n  prefix: 'far',\n  iconName: 'square-minus',\n  icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM152 232l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMinusSquare = faSquareMinus;\nconst faCompass = {\n  prefix: 'far',\n  iconName: 'compass',\n  icon: [512, 512, [129517], \"f14e\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm306.7 69.1L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faSquareCaretDown = {\n  prefix: 'far',\n  iconName: 'square-caret-down',\n  icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 432c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0zm64-16c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nconst faCaretSquareDown = faSquareCaretDown;\nconst faFaceKissBeam = {\n  prefix: 'far',\n  iconName: 'face-kiss-beam',\n  icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 41.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 427.1 257.4 432 240 432c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-68.9s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faKissBeam = faFaceKissBeam;\nconst faLightbulb = {\n  prefix: 'far',\n  iconName: 'lightbulb',\n  icon: [384, 512, [128161], \"f0eb\", \"M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7c0 0 0 0 0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5L109 384c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8c0 0 0 0 0 0s0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4c0 0 0 0 0 0s0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5l-48.6 0c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80l0-16 160 0 0 16c0 44.2-35.8 80-80 80z\"]\n};\nconst faFlag = {\n  prefix: 'far',\n  iconName: 'flag',\n  icon: [448, 512, [127988, 61725], \"f024\", \"M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24L0 64 0 350.5 0 400l0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-100 80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30l0-279.7c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52l0-28zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8l0 241.8-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5l0-237z\"]\n};\nconst faSquareCheck = {\n  prefix: 'far',\n  iconName: 'square-check',\n  icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faCheckSquare = faSquareCheck;\nconst faCircleDot = {\n  prefix: 'far',\n  iconName: 'circle-dot',\n  icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faDotCircle = faCircleDot;\nconst faFaceDizzy = {\n  prefix: 'far',\n  iconName: 'face-dizzy',\n  icon: [512, 512, [\"dizzy\"], \"f567\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM103 135c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9zm192 0c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faDizzy = faFaceDizzy;\nconst faFutbol = {\n  prefix: 'far',\n  iconName: 'futbol',\n  icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M435.4 361.4l-89.7-6c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-22 87.2c-14.4 3.2-29.4 4.8-44.8 4.8s-30.3-1.7-44.8-4.8l-22-87.2c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-89.7 6C61.7 335.9 51.9 307 49 276.2L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15L100.4 118c19.9-22.4 44.6-40.5 72.4-52.7l69.1 57.6c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l69.1-57.6c27.8 12.2 52.5 30.3 72.4 52.7l-33.4 83.4c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9L463 276.2c-3 30.8-12.7 59.7-27.6 85.2zM256 48l.9 0-1.8 0 .9 0zM56.7 196.2c.9-3 1.9-6.1 2.9-9.1l-2.9 9.1zM132 423l3.8 2.7c-1.3-.9-2.5-1.8-3.8-2.7zm248.1-.1c-1.3 1-2.6 2-4 2.9l4-2.9zm75.2-226.7l-3-9.2c1.1 3 2.1 6.1 3 9.2zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6l59.2 0c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nconst faFutbolBall = faFutbol;\nconst faSoccerBall = faFutbol;\nconst faPenToSquare = {\n  prefix: 'far',\n  iconName: 'pen-to-square',\n  icon: [512, 512, [\"edit\"], \"f044\", \"M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152L0 424c0 48.6 39.4 88 88 88l272 0c48.6 0 88-39.4 88-88l0-112c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 112c0 22.1-17.9 40-40 40L88 464c-22.1 0-40-17.9-40-40l0-272c0-22.1 17.9-40 40-40l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 64z\"]\n};\nconst faEdit = faPenToSquare;\nconst faHourglassHalf = {\n  prefix: 'far',\n  iconName: 'hourglass-half',\n  icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M0 24C0 10.7 10.7 0 24 0L360 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 19c0 40.3-16 79-44.5 107.5L225.9 256l81.5 81.5C336 366 352 404.7 352 445l0 19 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-19c0-40.3 16-79 44.5-107.5L158.1 256 76.5 174.5C48 146 32 107.3 32 67l0-19-8 0C10.7 48 0 37.3 0 24zM110.5 371.5c-3.9 3.9-7.5 8.1-10.7 12.5l184.4 0c-3.2-4.4-6.8-8.6-10.7-12.5L192 289.9l-81.5 81.5zM284.2 128C297 110.4 304 89 304 67l0-19L80 48l0 19c0 22.1 7 43.4 19.8 61l184.4 0z\"]\n};\nconst faHourglass2 = faHourglassHalf;\nconst faEyeSlash = {\n  prefix: 'far',\n  iconName: 'eye-slash',\n  icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z\"]\n};\nconst faHand = {\n  prefix: 'far',\n  iconName: 'hand',\n  icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M256 0c-25.3 0-47.2 14.7-57.6 36c-7-2.6-14.5-4-22.4-4c-35.3 0-64 28.7-64 64l0 165.5-2.7-2.7c-25-25-65.5-25-90.5 0s-25 65.5 0 90.5L106.5 437c48 48 113.1 75 181 75l8.5 0 8 0c1.5 0 3-.1 4.5-.4c91.7-6.2 165-79.4 171.1-171.1c.3-1.5 .4-3 .4-4.5l0-176c0-35.3-28.7-64-64-64c-5.5 0-10.9 .7-16 2l0-2c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4C303.2 14.7 281.3 0 256 0zM240 96.1l0-.1 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 31.9 0 .1 0 136c0 13.3 10.7 24 24 24s24-10.7 24-24l0-136c0 0 0 0 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16l0 55.9c0 0 0 .1 0 .1l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-71.9c0 0 0-.1 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16l0 172.9c-.1 .6-.1 1.3-.2 1.9c-3.4 69.7-59.3 125.6-129 129c-.6 0-1.3 .1-1.9 .2l-4.9 0-8.5 0c-55.2 0-108.1-21.9-147.1-60.9L52.7 315.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L119 336.4c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2L160 96c0-8.8 7.2-16 16-16c8.8 0 16 7.1 16 15.9L192 232c0 13.3 10.7 24 24 24s24-10.7 24-24l0-135.9z\"]\n};\nconst faHandPaper = faHand;\nconst faHandSpock = {\n  prefix: 'far',\n  iconName: 'hand-spock',\n  icon: [576, 512, [128406], \"f259\", \"M170.2 80.8C161 47 180.8 12 214.6 2.4c34-9.6 69.4 10.2 79 44.2l30.3 107.1L337.1 84c6.6-34.7 40.1-57.5 74.8-50.9c31.4 6 53 33.9 52 64.9c10-2.6 20.8-2.8 31.5-.1c34.3 8.6 55.1 43.3 46.6 77.6L486.7 397.2C469.8 464.7 409.2 512 339.6 512l-33.7 0c-56.9 0-112.2-19-157.2-53.9l-92-71.6c-27.9-21.7-32.9-61.9-11.2-89.8s61.9-32.9 89.8-11.2l17 13.2L100.5 167.5c-13-32.9 3.2-70.1 36-83c11.1-4.4 22.7-5.4 33.7-3.7zm77.1-21.2c-2.4-8.5-11.2-13.4-19.7-11s-13.4 11.2-11 19.7l54.8 182.4c3.5 12.3-3.3 25.2-15.4 29.3s-25.3-2-30-13.9L174.9 138.1c-3.2-8.2-12.5-12.3-20.8-9s-12.3 12.5-9 20.8l73.3 185.6c12 30.3-23.7 57-49.4 37l-63.1-49.1c-7-5.4-17-4.2-22.5 2.8s-4.2 17 2.8 22.5l92 71.6c36.5 28.4 81.4 43.8 127.7 43.8l33.7 0c47.5 0 89-32.4 100.5-78.5l55.4-221.6c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-26 104C435.6 271.8 425 280 413 280c-16.5 0-28.9-15-25.8-31.2L415.7 99c1.7-8.7-4-17.1-12.7-18.7s-17.1 4-18.7 12.7L352.5 260c-2.2 11.6-12.4 20-24.2 20c-11 0-20.7-7.3-23.7-17.9L247.4 59.6z\"]\n};\nconst faFaceKiss = {\n  prefix: 'far',\n  iconName: 'face-kiss',\n  icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 25.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 411.1 257.4 416 240 416c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.8-.5-.1-.1-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faKiss = faFaceKiss;\nconst faFaceGrinTongue = {\n  prefix: 'far',\n  iconName: 'face-grin-tongue',\n  icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4l0-52.4c-8.9-8-16.7-17.1-23.1-27.1c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1c-6.4 9.9-14.2 19-23 27l0 52.5c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 416l0-37.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 37.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGrinTongue = faFaceGrinTongue;\nconst faChessBishop = {\n  prefix: 'far',\n  iconName: 'chess-bishop',\n  icon: [320, 512, [9821], \"f43a\", \"M104 0C90.7 0 80 10.7 80 24c0 11.2 7.6 20.6 18 23.2c-7.8 8-16.1 17-24.4 27C38.2 116.7 0 178.8 0 250.9c0 44.8 24.6 72.2 48 87.8L48 352l48 0 0-27c0-9-5-17.2-13-21.3c-18-9.3-35-24.7-35-52.7c0-55.5 29.8-106.8 62.4-145.9c16-19.2 32.1-34.8 44.2-45.5c1.9-1.7 3.7-3.2 5.3-4.6c1.7 1.4 3.4 3 5.3 4.6c12.1 10.7 28.2 26.3 44.2 45.5c5.3 6.3 10.5 13 15.5 20L159 191c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57.8-57.8c12.8 25.9 21.2 54.3 21.2 83.8c0 28-17 43.4-35 52.7c-8 4.1-13 12.3-13 21.3l0 27 48 0 0-13.3c23.4-15.6 48-42.9 48-87.8c0-72.1-38.2-134.2-73.6-176.7c-8.3-9.9-16.6-19-24.4-27c10.3-2.7 18-12.1 18-23.2c0-13.3-10.7-24-24-24L160 0 104 0zM52.7 464l16.6-32 181.6 0 16.6 32L52.7 464zm207.9-80l-201 0c-12 0-22.9 6.7-28.4 17.3L4.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C0 493.8 18.2 512 40.8 512l238.5 0c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2c-5.5-10.6-16.5-17.3-28.4-17.3z\"]\n};\nconst faFaceGrinWink = {\n  prefix: 'far',\n  iconName: 'face-grin-wink',\n  icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nconst faGrinWink = faFaceGrinWink;\nconst faFaceGrinWide = {\n  prefix: 'far',\n  iconName: 'face-grin-wide',\n  icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM224 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm96 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nconst faGrinAlt = faFaceGrinWide;\nconst faFaceFrownOpen = {\n  prefix: 'far',\n  iconName: 'face-frown-open',\n  icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM182.4 382.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faFrownOpen = faFaceFrownOpen;\nconst faHandPointUp = {\n  prefix: 'far',\n  iconName: 'hand-point-up',\n  icon: [384, 512, [9757], \"f0a6\", \"M64 64l0 177.6c5.2-1 10.5-1.6 16-1.6l16 0 0-32L96 64c0-8.8-7.2-16-16-16s-16 7.2-16 16zM80 288c-17.7 0-32 14.3-32 32c0 0 0 0 0 0l0 24c0 66.3 53.7 120 120 120l48 0c52.5 0 97.1-33.7 113.4-80.7c-3.1 .5-6.2 .7-9.4 .7c-20 0-37.9-9.2-49.7-23.6c-9 4.9-19.4 7.6-30.3 7.6c-15.1 0-29-5.3-40-14c-11 8.8-24.9 14-40 14l-40 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l40 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-40 0-40 0zM0 320s0 0 0 0c0-18 6-34.6 16-48L16 64C16 28.7 44.7 0 80 0s64 28.7 64 64l0 82c5.1-1.3 10.5-2 16-2c25.3 0 47.2 14.7 57.6 36c7-2.6 14.5-4 22.4-4c20 0 37.9 9.2 49.7 23.6c9-4.9 19.4-7.6 30.3-7.6c35.3 0 64 28.7 64 64l0 64 0 24c0 92.8-75.2 168-168 168l-48 0C75.2 512 0 436.8 0 344l0-24zm336-64c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48 0 16c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zM160 240c5.5 0 10.9 .7 16 2l0-2 0-32c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 32 16 0zm64 24l0 40c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 0-16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 24z\"]\n};\nconst faBookmark = {\n  prefix: 'far',\n  iconName: 'bookmark',\n  icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48C0 21.5 21.5 0 48 0l0 48 0 393.4 130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4 336 48 48 48 48 0 336 0c26.5 0 48 21.5 48 48l0 440c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488L0 48z\"]\n};\nconst faHandPointDown = {\n  prefix: 'far',\n  iconName: 'hand-point-down',\n  icon: [384, 512, [], \"f0a7\", \"M64 448l0-177.6c5.2 1 10.5 1.6 16 1.6l16 0 0 32 0 144c0 8.8-7.2 16-16 16s-16-7.2-16-16zM80 224c-17.7 0-32-14.3-32-32c0 0 0 0 0 0l0-24c0-66.3 53.7-120 120-120l48 0c52.5 0 97.1 33.7 113.4 80.7c-3.1-.5-6.2-.7-9.4-.7c-20 0-37.9 9.2-49.7 23.6c-9-4.9-19.4-7.6-30.3-7.6c-15.1 0-29 5.3-40 14c-11-8.8-24.9-14-40-14l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-40 0-40 0zM0 192s0 0 0 0c0 18 6 34.6 16 48l0 208c0 35.3 28.7 64 64 64s64-28.7 64-64l0-82c5.1 1.3 10.5 2 16 2c25.3 0 47.2-14.7 57.6-36c7 2.6 14.5 4 22.4 4c20 0 37.9-9.2 49.7-23.6c9 4.9 19.4 7.6 30.3 7.6c35.3 0 64-28.7 64-64l0-64 0-24C384 75.2 308.8 0 216 0L168 0C75.2 0 0 75.2 0 168l0 24zm336 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64zM160 272c5.5 0 10.9-.7 16-2l0 2 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32 16 0zm64-24l0-40c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-24z\"]\n};\nconst faFolder = {\n  prefix: 'far',\n  iconName: 'folder',\n  icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M0 96C0 60.7 28.7 32 64 32l132.1 0c19.1 0 37.4 7.6 50.9 21.1L289.9 96 448 96c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16l-161.4 0c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7L64 80z\"]\n};\nconst faFolderBlank = faFolder;\nconst faUser = {\n  prefix: 'far',\n  iconName: 'user',\n  icon: [448, 512, [128100, 62144], \"f007\", \"M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464l349.5 0c-8.9-63.3-63.3-112-129-112l-91.4 0c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3z\"]\n};\nconst faSquareCaretLeft = {\n  prefix: 'far',\n  iconName: 'square-caret-left',\n  icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M48 416c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320zm16 64c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480zm64-224c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nconst faCaretSquareLeft = faSquareCaretLeft;\nconst faStar = {\n  prefix: 'far',\n  iconName: 'star',\n  icon: [576, 512, [11088, 61446], \"f005\", \"M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.7 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z\"]\n};\nconst faChessKnight = {\n  prefix: 'far',\n  iconName: 'chess-knight',\n  icon: [448, 512, [9822], \"f441\", \"M226.6 48L117.3 48l17.1 12.8c6 4.5 9.6 11.6 9.6 19.2s-3.6 14.7-9.6 19.2l-6.5 4.9c-10 7.5-16 19.3-16 31.9l-.3 91c0 10.2 4.9 19.9 13.2 25.8l1.9 1.3c9.9 7.1 23.3 7 33.2-.1l49.9-36.3c10.7-7.8 25.7-5.4 33.5 5.3s5.4 25.7-5.3 33.5l-49.9 36.3-53.8 39.1c-7.3 5.3-13 12.2-16.9 20.1l-50.7 0c5.3-22.1 17.8-41.9 35.9-56.3c-1.3-.8-2.6-1.7-3.8-2.6L97 291.8c-21-15-33.4-39.2-33.3-65l.3-91c.1-19.8 6.7-38.7 18.6-53.9l-.4-.3C70.7 73 64 59.6 64 45.3C64 20.3 84.3 0 109.3 0L226.6 0C331.2 0 416 84.8 416 189.4c0 11.1-1 22.2-2.9 33.2L390.1 352l-48.8 0 24.5-137.8c1.5-8.2 2.2-16.5 2.2-24.8C368 111.3 304.7 48 226.6 48zM85.2 432L68.7 464l310.7 0-16.6-32L85.2 432zm315.7-30.7l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8L56.8 512C34.2 512 16 493.8 16 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C52.5 390.7 63.5 384 75.5 384l297 0c12 0 22.9 6.7 28.4 17.3zM172 128a20 20 0 1 1 0 40 20 20 0 1 1 0-40z\"]\n};\nconst faFaceLaughSquint = {\n  prefix: 'far',\n  iconName: 'face-laugh-squint',\n  icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9l212.5 0c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm2.8-183.3l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 141.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faLaughSquint = faFaceLaughSquint;\nconst faFaceLaugh = {\n  prefix: 'far',\n  iconName: 'face-laugh',\n  icon: [512, 512, [\"laugh\"], \"f599\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9l212.5 0c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faLaugh = faFaceLaugh;\nconst faFolderOpen = {\n  prefix: 'far',\n  iconName: 'folder-open',\n  icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M384 480l48 0c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224l-400 0c-11.4 0-21.9 6-27.6 15.9L48 357.1 48 96c0-8.8 7.2-16 16-16l117.5 0c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8L416 144c8.8 0 16 7.2 16 16l0 32 48 0 0-32c0-35.3-28.7-64-64-64L298.5 96c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l23.7 0L384 480z\"]\n};\nconst faClipboard = {\n  prefix: 'far',\n  iconName: 'clipboard',\n  icon: [384, 512, [128203], \"f328\", \"M280 64l40 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l40 0 9.6 0C121 27.5 153.3 0 192 0s71 27.5 78.4 64l9.6 0zM64 112c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16l-16 0 0 24c0 13.3-10.7 24-24 24l-88 0-88 0c-13.3 0-24-10.7-24-24l0-24-16 0zm128-8a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faChessQueen = {\n  prefix: 'far',\n  iconName: 'chess-queen',\n  icon: [512, 512, [9819], \"f445\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-95.2-8c-18.1 0-31.3 12.8-35.6 26.9c-8 26.2-32.4 45.2-61.2 45.2c-10 0-19.4-2.3-27.7-6.3c-7.6-3.7-16.7-3.3-24 1.2C.7 162.1-3.1 177.1 3.7 188.9L97.6 352l55.4 0-83-144.1c40.5-2.2 75.3-25.9 93.1-59.8c22 26.8 55.4 43.9 92.8 43.9s70.8-17.1 92.8-43.9c17.8 34 52.6 57.7 93.1 59.8L359 352l55.4 0 93.9-163.1c6.8-11.7 3-26.7-8.6-33.8c-7.3-4.5-16.4-4.9-24-1.2c-8.4 4-17.7 6.3-27.7 6.3c-28.8 0-53.2-19-61.2-45.2C382.5 100.8 369.3 88 351.2 88c-14.5 0-26.3 8.5-32.4 19.3c-12.4 22-35.9 36.7-62.8 36.7s-50.4-14.8-62.8-36.7C187.1 96.5 175.4 88 160.8 88zM133.2 432l245.6 0 16.6 32-278.7 0 16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3l-265 0c-12 0-22.9 6.7-28.4 17.3L68.6 452.5c-3 5.8-4.6 12.2-4.6 18.7c0 22.5 18.2 40.8 40.8 40.8l302.5 0c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z\"]\n};\nconst faHandBackFist = {\n  prefix: 'far',\n  iconName: 'hand-back-fist',\n  icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 64c0-8.8 7.2-16 16-16s16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16l0 104c0 31.3-20 58-48 67.9c-9.6 3.4-16 12.5-16 22.6L304 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-117.8c38-20.1 64-60.1 64-106.2l0-104c0-35.3-28.7-64-64-64c-2.8 0-5.6 .2-8.3 .5C332.8 77.1 311.9 64 288 64c-2.8 0-5.6 .2-8.3 .5C268.8 45.1 247.9 32 224 32c-2.8 0-5.6 .2-8.3 .5C204.8 13.1 183.9 0 160 0C124.7 0 96 28.7 96 64l0 64.3c-11.7 7.4-22.5 16.4-32 26.9l17.8 16.1L64 155.2l-9.4 10.5C40 181.8 32 202.8 32 224.6l0 12.8c0 49.6 24.2 96.1 64.8 124.5l13.8-19.7L96.8 361.9l8.9 6.2c6.9 4.8 14.4 8.6 22.3 11.3L128 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-128.1c0-12.6-9.8-23.1-22.4-23.9c-7.3-.5-14.3-2.9-20.3-7.1l-13.1 18.7 13.1-18.7-8.9-6.2C96.6 303.1 80 271.3 80 237.4l0-12.8c0-9.9 3.7-19.4 10.3-26.8l9.4-10.5c3.8-4.2 7.9-8.1 12.3-11.6l0 32.3c0 8.8 7.2 16 16 16s16-7.2 16-16l0-65.7 0-14.3 0-64z\"]\n};\nconst faHandRock = faHandBackFist;\nconst faSquareCaretUp = {\n  prefix: 'far',\n  iconName: 'square-caret-up',\n  icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm224 64c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nconst faCaretSquareUp = faSquareCaretUp;\nconst faChartBar = {\n  prefix: 'far',\n  iconName: 'chart-bar',\n  icon: [512, 512, [\"bar-chart\"], \"f080\", \"M24 32c13.3 0 24 10.7 24 24l0 352c0 13.3 10.7 24 24 24l416 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L72 480c-39.8 0-72-32.2-72-72L0 56C0 42.7 10.7 32 24 32zM128 136c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24zm24 72l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96l272 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-272 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faBarChart = faChartBar;\nconst faWindowRestore = {\n  prefix: 'far',\n  iconName: 'window-restore',\n  icon: [512, 512, [], \"f2d2\", \"M432 48L208 48c-17.7 0-32 14.3-32 32l0 16-48 0 0-16c0-44.2 35.8-80 80-80L432 0c44.2 0 80 35.8 80 80l0 224c0 44.2-35.8 80-80 80l-16 0 0-48 16 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32zM48 448c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-192L48 256l0 192zM64 128l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64z\"]\n};\nconst faSquarePlus = {\n  prefix: 'far',\n  iconName: 'square-plus',\n  icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM200 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faPlusSquare = faSquarePlus;\nconst faImage = {\n  prefix: 'far',\n  iconName: 'image',\n  icon: [512, 512, [], \"f03e\", \"M448 80c8.8 0 16 7.2 16 16l0 319.8-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3L48 96c0-8.8 7.2-16 16-16l384 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faFolderClosed = {\n  prefix: 'far',\n  iconName: 'folder-closed',\n  icon: [512, 512, [], \"e185\", \"M251.7 127.6s0 0 0 0c10.5 10.5 24.7 16.4 39.6 16.4L448 144c8.8 0 16 7.2 16 16l0 32L48 192l0-96c0-8.8 7.2-16 16-16l133.5 0c4.2 0 8.3 1.7 11.3 4.7l33.9-33.9L208.8 84.7l42.9 42.9zM48 240l416 0 0 176c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-176zM285.7 93.7L242.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L291.3 96c-2.1 0-4.2-.8-5.7-2.3z\"]\n};\nconst faLemon = {\n  prefix: 'far',\n  iconName: 'lemon',\n  icon: [448, 512, [127819], \"f094\", \"M368 80c-3.2 0-6.2 .4-8.9 1.3C340 86.8 313 91.9 284.8 84.6C227.4 69.7 160.2 92 110.1 142.1S37.7 259.4 52.6 316.8c7.3 28.2 2.2 55.2-3.3 74.3c-.8 2.8-1.3 5.8-1.3 8.9c0 17.7 14.3 32 32 32c3.2 0 6.2-.4 8.9-1.3c19.1-5.5 46.1-10.7 74.3-3.3c57.4 14.9 124.6-7.4 174.7-57.5s72.4-117.3 57.5-174.7c-7.3-28.2-2.2-55.2 3.3-74.3c.8-2.8 1.3-5.8 1.3-8.9c0-17.7-14.3-32-32-32zm0-48c44.2 0 80 35.8 80 80c0 7.7-1.1 15.2-3.1 22.3c-4.6 15.8-7.1 32.9-3 48.9c20.1 77.6-10.9 161.5-70 220.7s-143.1 90.2-220.7 70c-16-4.1-33-1.6-48.9 3c-7.1 2-14.6 3.1-22.3 3.1c-44.2 0-80-35.8-80-80c0-7.7 1.1-15.2 3.1-22.3c4.6-15.8 7.1-32.9 3-48.9C-14 251.3 17 167.3 76.2 108.2S219.3 18 296.8 38.1c16 4.1 33 1.6 48.9-3c7.1-2 14.6-3.1 22.3-3.1zM246.7 167c-52 15.2-96.5 59.7-111.7 111.7c-3.7 12.7-17.1 20-29.8 16.3s-20-17.1-16.3-29.8c19.8-67.7 76.6-124.5 144.3-144.3c12.7-3.7 26.1 3.6 29.8 16.3s-3.6 26.1-16.3 29.8z\"]\n};\nconst faHandshake = {\n  prefix: 'far',\n  iconName: 'handshake',\n  icon: [640, 512, [], \"f2b5\", \"M272.2 64.6l-51.1 51.1c-15.3 4.2-29.5 11.9-41.5 22.5L153 161.9C142.8 171 129.5 176 115.8 176L96 176l0 128c20.4 .6 39.8 8.9 54.3 23.4l35.6 35.6 7 7c0 0 0 0 0 0L219.9 397c6.2 6.2 16.4 6.2 22.6 0c1.7-1.7 3-3.7 3.7-5.8c2.8-7.7 9.3-13.5 17.3-15.3s16.4 .6 22.2 6.5L296.5 393c11.6 11.6 30.4 11.6 41.9 0c5.4-5.4 8.3-12.3 8.6-19.4c.4-8.8 5.6-16.6 13.6-20.4s17.3-3 24.4 2.1c9.4 6.7 22.5 5.8 30.9-2.6c9.4-9.4 9.4-24.6 0-33.9L340.1 243l-35.8 33c-27.3 25.2-69.2 25.6-97 .9c-31.7-28.2-32.4-77.4-1.6-106.5l70.1-66.2C303.2 78.4 339.4 64 377.1 64c36.1 0 71 13.3 97.9 37.2L505.1 128l38.9 0 40 0 40 0c8.8 0 16 7.2 16 16l0 208c0 17.7-14.3 32-32 32l-32 0c-11.8 0-22.2-6.4-27.7-16l-84.9 0c-3.4 6.7-7.9 13.1-13.5 18.7c-17.1 17.1-40.8 23.8-63 20.1c-3.6 7.3-8.5 14.1-14.6 20.2c-27.3 27.3-70 30-100.4 8.1c-25.1 20.8-62.5 19.5-86-4.1L159 404l-7-7-35.6-35.6c-5.5-5.5-12.7-8.7-20.4-9.3C96 369.7 81.6 384 64 384l-32 0c-17.7 0-32-14.3-32-32L0 144c0-8.8 7.2-16 16-16l40 0 40 0 19.8 0c2 0 3.9-.7 5.3-2l26.5-23.6C175.5 77.7 211.4 64 248.7 64L259 64c4.4 0 8.9 .2 13.2 .6zM544 320l0-144-48 0c-5.9 0-11.6-2.2-15.9-6.1l-36.9-32.8c-18.2-16.2-41.7-25.1-66.1-25.1c-25.4 0-49.8 9.7-68.3 27.1l-70.1 66.2c-10.3 9.8-10.1 26.3 .5 35.7c9.3 8.3 23.4 8.1 32.5-.3l71.9-66.4c9.7-9 24.9-8.4 33.9 1.4s8.4 24.9-1.4 33.9l-.8 .8 74.4 74.4c10 10 16.5 22.3 19.4 35.1l74.8 0zM64 336a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm528 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faGem = {\n  prefix: 'far',\n  iconName: 'gem',\n  icon: [512, 512, [128142], \"f3a5\", \"M168.5 72L256 165l87.5-93-175 0zM383.9 99.1L311.5 176l129 0L383.9 99.1zm50 124.9L256 224 78.1 224 256 420.3 433.9 224zM71.5 176l129 0L128.1 99.1 71.5 176zm434.3 40.1l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152c4.5-6.1 11.7-9.8 19.3-9.8l240 0c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4z\"]\n};\nconst faCirclePlay = {\n  prefix: 'far',\n  iconName: 'circle-play',\n  icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c7.6-4.2 16.8-4.1 24.3 .5l144 88c7.1 4.4 11.5 12.1 11.5 20.5s-4.4 16.1-11.5 20.5l-144 88c-7.4 4.5-16.7 4.7-24.3 .5s-12.3-12.2-12.3-20.9l0-176c0-8.7 4.7-16.7 12.3-20.9z\"]\n};\nconst faPlayCircle = faCirclePlay;\nconst faCircleCheck = {\n  prefix: 'far',\n  iconName: 'circle-check',\n  icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z\"]\n};\nconst faCheckCircle = faCircleCheck;\nconst faCircleStop = {\n  prefix: 'far',\n  iconName: 'circle-stop',\n  icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z\"]\n};\nconst faStopCircle = faCircleStop;\nconst faIdBadge = {\n  prefix: 'far',\n  iconName: 'id-badge',\n  icon: [384, 512, [], \"f2c1\", \"M256 48l0 16c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-16L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-384c0-8.8-7.2-16-16-16l-64 0zM0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM160 320l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L96 416c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nconst faFaceLaughBeam = {\n  prefix: 'far',\n  iconName: 'face-laugh-beam',\n  icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9l212.5 0c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm86.9-85.1s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faLaughBeam = faFaceLaughBeam;\nconst faRegistered = {\n  prefix: 'far',\n  iconName: 'registered',\n  icon: [512, 512, [174], \"f25d\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152l0 112 0 96c0 13.3 10.7 24 24 24s24-10.7 24-24l0-72 60.9 0 37.2 81.9c5.5 12.1 19.7 17.4 31.8 11.9s17.4-19.7 11.9-31.8L315.7 275c21.8-14.3 36.3-39 36.3-67c0-44.2-35.8-80-80-80l-88 0c-13.3 0-24 10.7-24 24zm48 88l0-64 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0z\"]\n};\nconst faAddressCard = {\n  prefix: 'far',\n  iconName: 'address-card',\n  icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M512 80c8.8 0 16 7.2 16 16l0 320c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16L48 96c0-8.8 7.2-16 16-16l448 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM208 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80l-64 0zM376 144c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0z\"]\n};\nconst faContactCard = faAddressCard;\nconst faVcard = faAddressCard;\nconst faFaceTired = {\n  prefix: 'far',\n  iconName: 'face-tired',\n  icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.5 64.3C196.1 302.1 223.8 288 256 288s59.9 14.1 79.5 32.3C354.5 338.1 368 362 368 384c0 5.4-2.7 10.4-7.2 13.4s-10.2 3.4-15.2 1.3l-17.2-7.5c-22.8-10-47.5-15.1-72.4-15.1s-49.6 5.2-72.4 15.1l-17.2 7.5c-4.9 2.2-10.7 1.7-15.2-1.3s-7.2-8-7.2-13.4c0-22 13.5-45.9 32.5-63.7zm-43-173.6l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faTired = faFaceTired;\nconst faFontAwesome = {\n  prefix: 'far',\n  iconName: 'font-awesome',\n  icon: [512, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 48 0 256 0 48 0 64 48 0 0-64 389.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96zM80 400l0-256 356.4 0L388.1 252.5c-5.5 12.4-5.5 26.6 0 39L436.4 400 80 400z\"]\n};\nconst faFontAwesomeFlag = faFontAwesome;\nconst faFontAwesomeLogoFull = faFontAwesome;\nconst faFaceSmileWink = {\n  prefix: 'far',\n  iconName: 'face-smile-wink',\n  icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nconst faSmileWink = faFaceSmileWink;\nconst faFileWord = {\n  prefix: 'far',\n  iconName: 'file-word',\n  icon: [384, 512, [], \"f1c2\", \"M48 448L48 64c0-8.8 7.2-16 16-16l160 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm55 241.1c-3.8-12.7-17.2-19.9-29.9-16.1s-19.9 17.2-16.1 29.9l48 160c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l25-83.4 25 83.4c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l48-160c3.8-12.7-3.4-26.1-16.1-29.9s-26.1 3.4-29.9 16.1l-25 83.4-25-83.4c-3-10.2-12.4-17.1-23-17.1s-19.9 7-23 17.1l-25 83.4-25-83.4z\"]\n};\nconst faFilePowerpoint = {\n  prefix: 'far',\n  iconName: 'file-powerpoint',\n  icon: [384, 512, [], \"f1c4\", \"M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l160 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm72 208c-13.3 0-24 10.7-24 24l0 104 0 56c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32 44 0c42 0 76-34 76-76s-34-76-76-76l-68 0zm68 104l-44 0 0-56 44 0c15.5 0 28 12.5 28 28s-12.5 28-28 28z\"]\n};\nconst faEnvelopeOpen = {\n  prefix: 'far',\n  iconName: 'envelope-open',\n  icon: [512, 512, [62135], \"f2b6\", \"M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5l0 13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1l0-13.6c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2 464 456c0 4.4-3.6 8-8 8L56 464c-4.4 0-8-3.6-8-8l0-179.8zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5L0 456c0 30.9 25.1 56 56 56l400 0c30.9 0 56-25.1 56-56l0-255.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z\"]\n};\nconst faFileZipper = {\n  prefix: 'far',\n  iconName: 'file-zipper',\n  icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l48 0c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l48 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm48 112c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8l-14.8 0c-14.5 0-27.2 9.7-30.9 23.8zM128 336l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faFileArchive = faFileZipper;\nconst faSquare = {\n  prefix: 'far',\n  iconName: 'square',\n  icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M384 80c8.8 0 16 7.2 16 16l0 320c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16L48 96c0-8.8 7.2-16 16-16l320 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faSnowflake = {\n  prefix: 'far',\n  iconName: 'snowflake',\n  icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c13.3 0 24 10.7 24 24l0 46.1 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-57 57 0 76.5 66.2-38.2 20.9-77.8c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4L373 142.2l37.1-21.4c11.5-6.6 26.2-2.7 32.8 8.8s2.7 26.2-8.8 32.8L397 183.8l31.5 8.4c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-77.8-20.9L272 256l66.2 38.2 77.8-20.9c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4L397 328.2l37.1 21.4c11.5 6.6 15.4 21.3 8.8 32.8s-21.3 15.4-32.8 8.8L373 369.8l8.4 31.5c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-20.9-77.8L248 297.6l0 76.5 57 57c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23 0 46.1c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-46.1-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57 0-76.5-66.2 38.2-20.9 77.8c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4L75 369.8 37.9 391.2c-11.5 6.6-26.2 2.7-32.8-8.8s-2.7-26.2 8.8-32.8L51 328.2l-31.5-8.4c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l77.8 20.9L176 256l-66.2-38.2L31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4L51 183.8 13.9 162.4c-11.5-6.6-15.4-21.3-8.8-32.8s21.3-15.4 32.8-8.8L75 142.2l-8.4-31.5c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l20.9 77.8L200 214.4l0-76.5L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23L200 24c0-13.3 10.7-24 24-24z\"]\n};\nconst faNewspaper = {\n  prefix: 'far',\n  iconName: 'newspaper',\n  icon: [512, 512, [128240], \"f1ea\", \"M168 80c-13.3 0-24 10.7-24 24l0 304c0 8.4-1.4 16.5-4.1 24L440 432c13.3 0 24-10.7 24-24l0-304c0-13.3-10.7-24-24-24L168 80zM72 480c-39.8 0-72-32.2-72-72L0 112C0 98.7 10.7 88 24 88s24 10.7 24 24l0 296c0 13.3 10.7 24 24 24s24-10.7 24-24l0-304c0-39.8 32.2-72 72-72l272 0c39.8 0 72 32.2 72 72l0 304c0 39.8-32.2 72-72 72L72 480zM176 136c0-13.3 10.7-24 24-24l96 0c13.3 0 24 10.7 24 24l0 80c0 13.3-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24l0-80zm200-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM200 272l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faFaceKissWinkHeart = {\n  prefix: 'far',\n  iconName: 'face-kiss-wink-heart',\n  icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M338.9 446.8c-25.4 11-53.4 17.2-82.9 17.2C141.1 464 48 370.9 48 256S141.1 48 256 48s208 93.1 208 208c0 22.4-3.5 43.9-10.1 64.1c3.1 4.5 5.7 9.4 7.8 14.6c12.7-1.6 25.1 .4 36.2 5c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-6.5-25.3zM296 316c0-6.9-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4C258.7 276.9 241.4 272 224 272c-3.6 0-6.8 2.5-7.7 6s.6 7.2 3.8 9c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c-2.5 1.4-4.1 4.1-4.1 7s1.6 5.6 4.1 7c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-3.2 1.8-4.7 5.5-3.8 9s4.1 6 7.7 6c17.4 0 34.7-4.9 47.9-12.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3s-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4c-2.7-1.5-5.7-3-8.7-4.3c3.1-1.3 6-2.7 8.7-4.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm159.3-20c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C375.7 186.8 355 180 335.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nconst faKissWinkHeart = faFaceKissWinkHeart;\nconst faStarHalfStroke = {\n  prefix: 'far',\n  iconName: 'star-half-stroke',\n  icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M309.5 13.5C305.5 5.2 297.1 0 287.9 0s-17.6 5.2-21.6 13.5L197.7 154.8 44.5 177.5c-9 1.3-16.5 7.6-19.3 16.3s-.5 18.1 5.9 24.5L142.2 328.4 116 483.9c-1.5 9 2.2 18.1 9.7 23.5s17.3 6 25.3 1.7l137-73.2 137 73.2c8.1 4.3 17.9 3.7 25.3-1.7s11.2-14.5 9.7-23.5L433.6 328.4 544.8 218.2c6.5-6.4 8.7-15.9 5.9-24.5s-10.3-14.9-19.3-16.3L378.1 154.8 309.5 13.5zM288 384.7l0-305.6 52.5 108.1c3.5 7.1 10.2 12.1 18.1 13.3l118.3 17.5L391 303c-5.5 5.5-8.1 13.3-6.8 21l20.2 119.6L299.2 387.5c-3.5-1.9-7.4-2.8-11.2-2.8z\"]\n};\nconst faStarHalfAlt = faStarHalfStroke;\nconst faFileExcel = {\n  prefix: 'far',\n  iconName: 'file-excel',\n  icon: [384, 512, [], \"f1c3\", \"M48 448L48 64c0-8.8 7.2-16 16-16l160 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm90.9 233.3c-8.1-10.5-23.2-12.3-33.7-4.2s-12.3 23.2-4.2 33.7L161.6 320l-44.5 57.3c-8.1 10.5-6.3 25.5 4.2 33.7s25.5 6.3 33.7-4.2L192 359.1l37.1 47.6c8.1 10.5 23.2 12.3 33.7 4.2s12.3-23.2 4.2-33.7L222.4 320l44.5-57.3c8.1-10.5 6.3-25.5-4.2-33.7s-25.5-6.3-33.7 4.2L192 280.9l-37.1-47.6z\"]\n};\nconst faFaceGrinBeam = {\n  prefix: 'far',\n  iconName: 'face-grin-beam',\n  icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM217.6 228.8s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faGrinBeam = faFaceGrinBeam;\nconst faObjectUngroup = {\n  prefix: 'far',\n  iconName: 'object-ungroup',\n  icon: [640, 512, [], \"f248\", \"M48.2 66.8c-.1-.8-.2-1.7-.2-2.5l0-.2c0-8.8 7.2-16 16-16c.9 0 1.9 .1 2.8 .2C74.3 49.5 80 56.1 80 64c0 8.8-7.2 16-16 16c-7.9 0-14.5-5.7-15.8-13.2zM0 64c0 26.9 16.5 49.9 40 59.3l0 105.3C16.5 238.1 0 261.1 0 288c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40l201.3 0c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3l0-105.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40L123.3 40C113.9 16.5 90.9 0 64 0C28.7 0 0 28.7 0 64zm368 0a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM324.7 88c6.5 16 19.3 28.9 35.3 35.3l0 105.3c-16 6.5-28.9 19.3-35.3 35.3l-201.3 0c-6.5-16-19.3-28.9-35.3-35.3l0-105.3c16-6.5 28.9-19.3 35.3-35.3l201.3 0zM384 272a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM80 288c0 7.9-5.7 14.5-13.2 15.8c-.8 .1-1.7 .2-2.5 .2l-.2 0c-8.8 0-16-7.2-16-16c0-.9 .1-1.9 .2-2.8C49.5 277.7 56.1 272 64 272c8.8 0 16 7.2 16 16zm391.3-40l45.4 0c6.5 16 19.3 28.9 35.3 35.3l0 105.3c-16 6.5-28.9 19.3-35.3 35.3l-201.3 0c-6.5-16-19.3-28.9-35.3-35.3l0-36.7-48 0 0 36.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40l201.3 0c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3l0-105.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40L448 200l0 16.4c9.8 8.8 17.8 19.5 23.3 31.6zm88.9-26.7a16 16 0 1 1 31.5 5.5 16 16 0 1 1 -31.5-5.5zM271.8 450.7a16 16 0 1 1 -31.5-5.5 16 16 0 1 1 31.5 5.5zm307-18.5a16 16 0 1 1 -5.5 31.5 16 16 0 1 1 5.5-31.5z\"]\n};\nconst faCircleRight = {\n  prefix: 'far',\n  iconName: 'circle-right',\n  icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 151.2c-4.2-4.6-10.1-7.2-16.4-7.2C266 144 256 154 256 166.3l0 41.7-96 0c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l96 0 0 41.7c0 12.3 10 22.3 22.3 22.3c6.2 0 12.1-2.6 16.4-7.2l84-91c3.5-3.8 5.4-8.7 5.4-13.9s-1.9-10.1-5.4-13.9l-84-91z\"]\n};\nconst faArrowAltCircleRight = faCircleRight;\nconst faFaceRollingEyes = {\n  prefix: 'far',\n  iconName: 'face-rolling-eyes',\n  icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM168 376c0 13.3 10.7 24 24 24l128 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-128 0c-13.3 0-24 10.7-24 24zm-8-104c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm192-32c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nconst faMehRollingEyes = faFaceRollingEyes;\nconst faObjectGroup = {\n  prefix: 'far',\n  iconName: 'object-group',\n  icon: [576, 512, [], \"f247\", \"M48 115.8C38.2 107 32 94.2 32 80c0-26.5 21.5-48 48-48c14.2 0 27 6.2 35.8 16l344.4 0c8.8-9.8 21.6-16 35.8-16c26.5 0 48 21.5 48 48c0 14.2-6.2 27-16 35.8l0 280.4c9.8 8.8 16 21.6 16 35.8c0 26.5-21.5 48-48 48c-14.2 0-27-6.2-35.8-16l-344.4 0c-8.8 9.8-21.6 16-35.8 16c-26.5 0-48-21.5-48-48c0-14.2 6.2-27 16-35.8l0-280.4zM125.3 96c-4.8 13.6-15.6 24.4-29.3 29.3l0 261.5c13.6 4.8 24.4 15.6 29.3 29.3l325.5 0c4.8-13.6 15.6-24.4 29.3-29.3l0-261.5c-13.6-4.8-24.4-15.6-29.3-29.3L125.3 96zm2.7 64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-96zM256 320l32 0c35.3 0 64-28.7 64-64l0-32 64 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-32z\"]\n};\nconst faHeart = {\n  prefix: 'far',\n  iconName: 'heart',\n  icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8l0-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5l0 3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20-.1-.1s0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5l0 3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2l0-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z\"]\n};\nconst faFaceSurprise = {\n  prefix: 'far',\n  iconName: 'face-surprise',\n  icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faSurprise = faFaceSurprise;\nconst faCirclePause = {\n  prefix: 'far',\n  iconName: 'circle-pause',\n  icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm224-72l0 144c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144c0-13.3 10.7-24 24-24s24 10.7 24 24zm112 0l0 144c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faPauseCircle = faCirclePause;\nconst faCircle = {\n  prefix: 'far',\n  iconName: 'circle',\n  icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faCircleUp = {\n  prefix: 'far',\n  iconName: 'circle-up',\n  icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM151.2 217.4c-4.6 4.2-7.2 10.1-7.2 16.4c0 12.3 10 22.3 22.3 22.3l41.7 0 0 96c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-96 41.7 0c12.3 0 22.3-10 22.3-22.3c0-6.2-2.6-12.1-7.2-16.4l-91-84c-3.8-3.5-8.7-5.4-13.9-5.4s-10.1 1.9-13.9 5.4l-91 84z\"]\n};\nconst faArrowAltCircleUp = faCircleUp;\nconst faFileAudio = {\n  prefix: 'far',\n  iconName: 'file-audio',\n  icon: [384, 512, [], \"f1c7\", \"M64 464l256 0c8.8 0 16-7.2 16-16l0-288-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16zM0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM192 272l0 128c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L129.4 376 112 376c-8.8 0-16-7.2-16-16l0-48c0-8.8 7.2-16 16-16l17.4 0 35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8zm85.8-4c11.6 20 18.2 43.3 18.2 68s-6.6 48-18.2 68c-6.6 11.5-21.3 15.4-32.8 8.8s-15.4-21.3-8.8-32.8c7.5-12.9 11.8-27.9 11.8-44s-4.3-31.1-11.8-44c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8z\"]\n};\nconst faFileImage = {\n  prefix: 'far',\n  iconName: 'file-image',\n  icon: [384, 512, [128443], \"f1c5\", \"M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l160 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm96 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm69.2 46.9c-3-4.3-7.9-6.9-13.2-6.9s-10.2 2.6-13.2 6.9l-41.3 59.7-11.9-19.1c-2.9-4.7-8.1-7.5-13.6-7.5s-10.6 2.8-13.6 7.5l-40 64c-3.1 4.9-3.2 11.1-.4 16.2s8.2 8.2 14 8.2l48 0 32 0 40 0 72 0c6 0 11.4-3.3 14.2-8.6s2.4-11.6-1-16.5l-72-104z\"]\n};\nconst faCircleQuestion = {\n  prefix: 'far',\n  iconName: 'circle-question',\n  icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm169.8-90.7c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faQuestionCircle = faCircleQuestion;\nconst faFaceMehBlank = {\n  prefix: 'far',\n  iconName: 'face-meh-blank',\n  icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faMehBlank = faFaceMehBlank;\nconst faEye = {\n  prefix: 'far',\n  iconName: 'eye',\n  icon: [576, 512, [128065], \"f06e\", \"M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z\"]\n};\nconst faFaceSadCry = {\n  prefix: 'far',\n  iconName: 'face-sad-cry',\n  icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M400 406.1L400 288c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 152.6c-28.7 15-61.4 23.4-96 23.4s-67.3-8.5-96-23.4L160 288c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 118.1C72.6 368.2 48 315 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 59-24.6 112.2-64 150.1zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm166.6 9.7c5.5-5.8 14.8-9.7 25.4-9.7s19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C391.7 186.8 371 180 351.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9zM208 320l0 32c0 26.5 21.5 48 48 48s48-21.5 48-48l0-32c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nconst faSadCry = faFaceSadCry;\nconst faFileCode = {\n  prefix: 'far',\n  iconName: 'file-code',\n  icon: [384, 512, [], \"f1c9\", \"M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l160 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z\"]\n};\nconst faWindowMaximize = {\n  prefix: 'far',\n  iconName: 'window-maximize',\n  icon: [512, 512, [128470], \"f2d0\", \"M.3 89.5C.1 91.6 0 93.8 0 96L0 224 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-192 0-128c0-35.3-28.7-64-64-64L64 32c-2.2 0-4.4 .1-6.5 .3c-9.2 .9-17.8 3.8-25.5 8.2C21.8 46.5 13.4 55.1 7.7 65.5c-3.9 7.3-6.5 15.4-7.4 24zM48 224l416 0 0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192z\"]\n};\nconst faFaceFrown = {\n  prefix: 'far',\n  iconName: 'face-frown',\n  icon: [512, 512, [9785, \"frown\"], \"f119\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM174.6 384.1c-4.5 12.5-18.2 18.9-30.7 14.4s-18.9-18.2-14.4-30.7C146.9 319.4 198.9 288 256 288s109.1 31.4 126.6 79.9c4.5 12.5-2 26.2-14.4 30.7s-26.2-2-30.7-14.4C328.2 358.5 297.2 336 256 336s-72.2 22.5-81.4 48.1zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faFrown = faFaceFrown;\nconst faFloppyDisk = {\n  prefix: 'far',\n  iconName: 'floppy-disk',\n  icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M48 96l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-245.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3L448 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l245.5 0c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8L320 184c0 13.3-10.7 24-24 24l-192 0c-13.3 0-24-10.7-24-24L80 80 64 80c-8.8 0-16 7.2-16 16zm80-16l0 80 144 0 0-80L128 80zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nconst faSave = faFloppyDisk;\nconst faCommentDots = {\n  prefix: 'far',\n  iconName: 'comment-dots',\n  icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M168.2 384.9c-15-5.4-31.7-3.1-44.6 6.4c-8.2 6-22.3 14.8-39.4 22.7c5.6-14.7 9.9-31.3 11.3-49.4c1-12.9-3.3-25.7-11.8-35.5C60.4 302.8 48 272 48 240c0-79.5 83.3-160 208-160s208 80.5 208 160s-83.3 160-208 160c-31.6 0-61.3-5.5-87.8-15.1zM26.3 423.8c-1.6 2.7-3.3 5.4-5.1 8.1l-.3 .5c-1.6 2.3-3.2 4.6-4.8 6.9c-3.5 4.7-7.3 9.3-11.3 13.5c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c5.1 0 10.2-.3 15.3-.8l.7-.1c4.4-.5 8.8-1.1 13.2-1.9c.8-.1 1.6-.3 2.4-.5c17.8-3.5 34.9-9.5 50.1-16.1c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9zM144 272a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm80 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faCommenting = faCommentDots;\nconst faFaceGrinSquint = {\n  prefix: 'far',\n  iconName: 'face-grin-squint',\n  icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zm-216-161.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faGrinSquint = faFaceGrinSquint;\nconst faHandPointer = {\n  prefix: 'far',\n  iconName: 'hand-pointer',\n  icon: [448, 512, [], \"f25a\", \"M160 64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 136c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c8.8 0 16 7.2 16 16c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c7.8 0 14.3 5.6 15.7 13c1.6 8.2 7.3 15.1 15.1 18s16.7 1.6 23.3-3.6c2.7-2.1 6.1-3.4 9.9-3.4c8.8 0 16 7.2 16 16l0 16 0 104c0 39.8-32.2 72-72 72l-56 0-59.8 0-.9 0c-37.4 0-72.4-18.7-93.2-49.9L50.7 312.9c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4L116 353.2c5.9 8.8 16.8 12.7 26.9 9.7s17-12.4 17-23l0-19.9 0-256zM176 0c-35.3 0-64 28.7-64 64l0 197.7C91.2 238 55.5 232.8 28.5 250.7C-.9 270.4-8.9 310.1 10.8 339.5L78.3 440.8c29.7 44.5 79.6 71.2 133.1 71.2l.9 0 59.8 0 56 0c66.3 0 120-53.7 120-120l0-104 0-16c0-35.3-28.7-64-64-64c-4.5 0-8.8 .5-13 1.3c-11.7-15.4-30.2-25.3-51-25.3c-6.9 0-13.5 1.1-19.7 3.1C288.7 170.7 269.6 160 248 160c-2.7 0-5.4 .2-8 .5L240 64c0-35.3-28.7-64-64-64zm48 304c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96zm48-16c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96z\"]\n};\nconst faHandScissors = {\n  prefix: 'far',\n  iconName: 'hand-scissors',\n  icon: [512, 512, [], \"f257\", \"M.2 276.3c-1.2-35.3 26.4-65 61.7-66.2l3.3-.1L57 208.1C22.5 200.5 .7 166.3 8.3 131.8S50.2 75.5 84.7 83.2l173 38.3c2.3-2.9 4.7-5.7 7.1-8.5l18.4-20.3C299.9 74.5 323.5 64 348.3 64l10.2 0c54.1 0 104.1 28.7 131.3 75.4l1.5 2.6c13.6 23.2 20.7 49.7 20.7 76.6L512 344c0 66.3-53.7 120-120 120l-8 0-96 0c-35.3 0-64-28.7-64-64c0-2.8 .2-5.6 .5-8.3c-19.4-11-32.5-31.8-32.5-55.7c0-.8 0-1.6 0-2.4L66.4 338c-35.3 1.2-65-26.4-66.2-61.7zm63.4-18.2c-8.8 .3-15.7 7.7-15.4 16.5s7.7 15.7 16.5 15.4l161.5-5.6c9.8-.3 18.7 5.3 22.7 14.2s2.2 19.3-4.5 26.4c-2.8 2.9-4.4 6.7-4.4 11c0 8.8 7.2 16 16 16c9.1 0 17.4 5.1 21.5 13.3s3.2 17.9-2.3 25.1c-2 2.7-3.2 6-3.2 9.6c0 8.8 7.2 16 16 16l96 0 8 0c39.8 0 72-32.2 72-72l0-125.4c0-18.4-4.9-36.5-14.2-52.4l-1.5-2.6c-18.6-32-52.8-51.6-89.8-51.6l-10.2 0c-11.3 0-22 4.8-29.6 13.1l-17.5-15.9 17.5 15.9-18.4 20.3c-.6 .6-1.1 1.3-1.7 1.9l57 13.2c8.6 2 14 10.6 12 19.2s-10.6 14-19.2 12l-85.6-19.7L74.3 130c-8.6-1.9-17.2 3.5-19.1 12.2s3.5 17.2 12.2 19.1l187.5 41.6c10.2 2.3 17.8 10.9 18.7 21.4l.1 1c.6 6.6-1.5 13.1-5.8 18.1s-10.6 7.9-17.2 8.2L63.6 258.1z\"]\n};\nconst faFaceGrinTears = {\n  prefix: 'far',\n  iconName: 'face-grin-tears',\n  icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M516.1 325.5c1 3 2.1 6 3.3 8.9c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c1.2-2.9 2.3-5.9 3.3-8.9C152.5 406.2 229.5 464 320 464s167.5-57.8 196.1-138.5zM320 48c-101.4 0-185.8 72.5-204.3 168.5c-6.7-3.1-14.3-4.3-22.3-3.1c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-8-1.2-15.7 .1-22.3 3.1C505.8 120.5 421.4 48 320 48zM78.5 341.1C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7zm483 0c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zM439 336.5C414.4 374.6 370.3 400 319.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1zM281.6 228.8c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0zm160 0s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0z\"]\n};\nconst faGrinTears = faFaceGrinTears;\nconst faCalendarXmark = {\n  prefix: 'far',\n  iconName: 'calendar-xmark',\n  icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c13.3 0 24 10.7 24 24l0 40 144 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 40 0c35.3 0 64 28.7 64 64l0 16 0 48 0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192l0-48 0-16C0 92.7 28.7 64 64 64l40 0 0-40c0-13.3 10.7-24 24-24zM400 192L48 192l0 256c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-256zm-95 89l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faCalendarTimes = faCalendarXmark;\nconst faFileVideo = {\n  prefix: 'far',\n  iconName: 'file-video',\n  icon: [384, 512, [], \"f1c8\", \"M320 464c8.8 0 16-7.2 16-16l0-288-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0zM0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM80 288c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 16 44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3l0 103.4c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1L240 368l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-96z\"]\n};\nconst faFilePdf = {\n  prefix: 'far',\n  iconName: 'file-pdf',\n  icon: [512, 512, [], \"f1c1\", \"M64 464l48 0 0 48-48 0c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 304l-48 0 0-144-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z\"]\n};\nconst faComment = {\n  prefix: 'far',\n  iconName: 'comment',\n  icon: [512, 512, [128489, 61669], \"f075\", \"M123.6 391.3c12.9-9.4 29.6-11.8 44.6-6.4c26.5 9.6 56.2 15.1 87.8 15.1c124.7 0 208-80.5 208-160s-83.3-160-208-160S48 160.5 48 240c0 32 12.4 62.8 35.7 89.2c8.6 9.7 12.8 22.5 11.8 35.5c-1.4 18.1-5.7 34.7-11.3 49.4c17-7.9 31.1-16.7 39.4-22.7zM21.2 431.9c1.8-2.7 3.5-5.4 5.1-8.1c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208s-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6c-15.1 6.6-32.3 12.6-50.1 16.1c-.8 .2-1.6 .3-2.4 .5c-4.4 .8-8.7 1.5-13.2 1.9c-.2 0-.5 .1-.7 .1c-5.1 .5-10.2 .8-15.3 .8c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c4.1-4.2 7.8-8.7 11.3-13.5c1.7-2.3 3.3-4.6 4.8-6.9l.3-.5z\"]\n};\nconst faEnvelope = {\n  prefix: 'far',\n  iconName: 'envelope',\n  icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M64 112c-8.8 0-16 7.2-16 16l0 22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1l0-22.1c0-8.8-7.2-16-16-16L64 112zM48 212.2L48 384c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-171.8L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128z\"]\n};\nconst faHourglass = {\n  prefix: 'far',\n  iconName: 'hourglass',\n  icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l8 0 0 19c0 40.3 16 79 44.5 107.5L158.1 256 76.5 337.5C48 366 32 404.7 32 445l0 19-8 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-19c0-40.3-16-79-44.5-107.5L225.9 256l81.5-81.5C336 146 352 107.3 352 67l0-19 8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 0zM192 289.9l81.5 81.5C293 391 304 417.4 304 445l0 19L80 464l0-19c0-27.6 11-54 30.5-73.5L192 289.9zm0-67.9l-81.5-81.5C91 121 80 94.6 80 67l0-19 224 0 0 19c0 27.6-11 54-30.5 73.5L192 222.1z\"]\n};\nconst faHourglassEmpty = faHourglass;\nconst faCalendarCheck = {\n  prefix: 'far',\n  iconName: 'calendar-check',\n  icon: [448, 512, [], \"f274\", \"M128 0c13.3 0 24 10.7 24 24l0 40 144 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 40 0c35.3 0 64 28.7 64 64l0 16 0 48 0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192l0-48 0-16C0 92.7 28.7 64 64 64l40 0 0-40c0-13.3 10.7-24 24-24zM400 192L48 192l0 256c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-256zM329 297L217 409c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 95-95c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faHardDrive = {\n  prefix: 'far',\n  iconName: 'hard-drive',\n  icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M64 80c-8.8 0-16 7.2-16 16l0 162c5.1-1.3 10.5-2 16-2l384 0c5.5 0 10.9 .7 16 2l0-162c0-8.8-7.2-16-16-16L64 80zM48 320l0 96c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16L64 304c-8.8 0-16 7.2-16 16zM0 320L0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 224 0 96c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-96zm280 48a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faHdd = faHardDrive;\nconst faFaceGrinSquintTears = {\n  prefix: 'far',\n  iconName: 'face-grin-squint-tears',\n  icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-14.8 14.8-65.7 23.6-88.3 26.7c-5.6 .9-10.3-3.9-9.5-9.5C403.3 79.9 412 29 426.8 14.2zM75 75C158.2-8.3 284.5-22.2 382.2 33.2c-1.5 4.8-2.9 9.6-4.1 14.3c-3.1 12.2-5.5 24.6-7.3 35c-80.8-53.6-190.7-44.8-261.9 26.4C37.7 180.1 28.9 290 82.5 370.8c-10.5 1.8-22.9 4.2-35 7.3c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75zm389.6 58.9c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c3.1-12.2 5.5-24.6 7.3-35c80.8 53.6 190.7 44.8 261.9-26.4c71.2-71.2 80-181.1 26.4-261.9c10.5-1.8 22.9-4.2 35-7.3zm-105.4 93c10.1-16.3 33.9-16.9 37.9 1.9c9.5 44.4-3.7 93.5-39.3 129.1s-84.8 48.8-129.1 39.3c-18.7-4-18.2-27.8-1.9-37.9c25.2-15.7 50.2-35.4 73.6-58.8s43.1-48.4 58.8-73.6zM92 265.3l97.4-29.7c11.6-3.5 22.5 7.3 19 19l-29.7 97.4c-2.6 8.6-13.4 11.3-19.8 4.9c-2-2-3.2-4.6-3.4-7.3l-5.1-56.1-56.1-5.1c-2.8-.3-5.4-1.5-7.3-3.4c-6.3-6.3-3.6-17.2 4.9-19.8zm193-178.2c2 2 3.2 4.6 3.4 7.3l5.1 56.1 56.1 5.1c2.8 .3 5.4 1.5 7.3 3.4c6.3 6.3 3.6 17.2-4.9 19.8l-97.4 29.7c-11.6 3.5-22.5-7.3-19-19L265.3 92c2.6-8.6 13.4-11.3 19.8-4.9zM14.9 497.1c-19.6-19.6-20-51-.7-70.3C29 412 79.8 403.2 102.4 400.1c5.6-.9 10.3 3.9 9.5 9.5c-3.2 22.5-11.9 73.5-26.7 88.3C66 517 34.5 516.6 14.9 497.1z\"]\n};\nconst faGrinSquintTears = faFaceGrinSquintTears;\nconst faRectangleList = {\n  prefix: 'far',\n  iconName: 'rectangle-list',\n  icon: [576, 512, [\"list-alt\"], \"f022\", \"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l448 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm96 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm104 0c0-13.3 10.7-24 24-24l224 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-224 0c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24l224 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-224 0c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24l224 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-224 0c-13.3 0-24-10.7-24-24zm-72-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faListAlt = faRectangleList;\nconst faCalendarPlus = {\n  prefix: 'far',\n  iconName: 'calendar-plus',\n  icon: [448, 512, [], \"f271\", \"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L64 64C28.7 64 0 92.7 0 128l0 16 0 48L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-256 0-48 0-16c0-35.3-28.7-64-64-64l-40 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L152 64l0-40zM48 192l352 0 0 256c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256zm176 40c-13.3 0-24 10.7-24 24l0 48-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0 0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48 48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-48c0-13.3-10.7-24-24-24z\"]\n};\nconst faCircleLeft = {\n  prefix: 'far',\n  iconName: 'circle-left',\n  icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M48 256a208 208 0 1 1 416 0A208 208 0 1 1 48 256zm464 0A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9c4.2 4.5 10.1 7.1 16.3 7.1c12.3 0 22.3-10 22.3-22.3l0-57.7 96 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-96 0 0-57.7c0-12.3-10-22.3-22.3-22.3c-6.2 0-12.1 2.6-16.3 7.1L117.5 242.2c-3.5 3.8-5.5 8.7-5.5 13.8s2 10.1 5.5 13.8l99.9 107.1z\"]\n};\nconst faArrowAltCircleLeft = faCircleLeft;\nconst faMoneyBill1 = {\n  prefix: 'far',\n  iconName: 'money-bill-1',\n  icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M112 112c0 35.3-28.7 64-64 64l0 160c35.3 0 64 28.7 64 64l352 0c0-35.3 28.7-64 64-64l0-160c-35.3 0-64-28.7-64-64l-352 0zM0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm80-48c0 8.8 7.2 16 16 16l0 64-8 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l24 0 24 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-8 0 0-80c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faMoneyBillAlt = faMoneyBill1;\nconst faClock = {\n  prefix: 'far',\n  iconName: 'clock',\n  icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faClockFour = faClock;\nconst faKeyboard = {\n  prefix: 'far',\n  iconName: 'keyboard',\n  icon: [576, 512, [9000], \"f11c\", \"M64 112c-8.8 0-16 7.2-16 16l0 256c0 8.8 7.2 16 16 16l448 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16L64 112zM0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM176 320l224 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm-72-72c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16z\"]\n};\nconst faClosedCaptioning = {\n  prefix: 'far',\n  iconName: 'closed-captioning',\n  icon: [576, 512, [], \"f20a\", \"M512 80c8.8 0 16 7.2 16 16l0 320c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16L48 96c0-8.8 7.2-16 16-16l448 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nconst faImages = {\n  prefix: 'far',\n  iconName: 'images',\n  icon: [576, 512, [], \"f302\", \"M160 80l352 0c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-21.2 0L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336 160 336c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16zM96 96l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 344c0 75.1 60.9 136 136 136l320 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-320 0c-48.6 0-88-39.4-88-88l0-224zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faFaceGrin = {\n  prefix: 'far',\n  iconName: 'face-grin',\n  icon: [512, 512, [128512, \"grin\"], \"f580\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrin = faFaceGrin;\nconst faFaceMeh = {\n  prefix: 'far',\n  iconName: 'face-meh',\n  icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm192-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM184 328c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nconst faMeh = faFaceMeh;\nconst faIdCard = {\n  prefix: 'far',\n  iconName: 'id-card',\n  icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M528 160l0 256c0 8.8-7.2 16-16 16l-192 0c0-44.2-35.8-80-80-80l-64 0c-44.2 0-80 35.8-80 80l-32 0c-8.8 0-16-7.2-16-16l0-256 480 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM272 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm104-48c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0z\"]\n};\nconst faDriversLicense = faIdCard;\nconst faSun = {\n  prefix: 'far',\n  iconName: 'sun',\n  icon: [512, 512, [9728], \"f185\", \"M375.7 19.7c-1.5-8-6.9-14.7-14.4-17.8s-16.1-2.2-22.8 2.4L256 61.1 173.5 4.2c-6.7-4.6-15.3-5.5-22.8-2.4s-12.9 9.8-14.4 17.8l-18.1 98.5L19.7 136.3c-8 1.5-14.7 6.9-17.8 14.4s-2.2 16.1 2.4 22.8L61.1 256 4.2 338.5c-4.6 6.7-5.5 15.3-2.4 22.8s9.8 13 17.8 14.4l98.5 18.1 18.1 98.5c1.5 8 6.9 14.7 14.4 17.8s16.1 2.2 22.8-2.4L256 450.9l82.5 56.9c6.7 4.6 15.3 5.5 22.8 2.4s12.9-9.8 14.4-17.8l18.1-98.5 98.5-18.1c8-1.5 14.7-6.9 17.8-14.4s2.2-16.1-2.4-22.8L450.9 256l56.9-82.5c4.6-6.7 5.5-15.3 2.4-22.8s-9.8-12.9-17.8-14.4l-98.5-18.1L375.7 19.7zM269.6 110l65.6-45.2 14.4 78.3c1.8 9.8 9.5 17.5 19.3 19.3l78.3 14.4L402 242.4c-5.7 8.2-5.7 19 0 27.2l45.2 65.6-78.3 14.4c-9.8 1.8-17.5 9.5-19.3 19.3l-14.4 78.3L269.6 402c-8.2-5.7-19-5.7-27.2 0l-65.6 45.2-14.4-78.3c-1.8-9.8-9.5-17.5-19.3-19.3L64.8 335.2 110 269.6c5.7-8.2 5.7-19 0-27.2L64.8 176.8l78.3-14.4c9.8-1.8 17.5-9.5 19.3-19.3l14.4-78.3L242.4 110c8.2 5.7 19 5.7 27.2 0zM256 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM192 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nconst faFaceLaughWink = {\n  prefix: 'far',\n  iconName: 'face-laugh-wink',\n  icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9l212.5 0c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nconst faLaughWink = faFaceLaughWink;\nconst faCircleDown = {\n  prefix: 'far',\n  iconName: 'circle-down',\n  icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 464a208 208 0 1 1 0-416 208 208 0 1 1 0 416zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6c4.5-4.2 7.1-10.1 7.1-16.3c0-12.3-10-22.3-22.3-22.3L304 256l0-96c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 96-57.7 0C138 256 128 266 128 278.3c0 6.2 2.6 12.1 7.1 16.3l107.1 99.9c3.8 3.5 8.7 5.5 13.8 5.5s10.1-2 13.8-5.5l107.1-99.9z\"]\n};\nconst faArrowAltCircleDown = faCircleDown;\nconst faThumbsDown = {\n  prefix: 'far',\n  iconName: 'thumbs-down',\n  icon: [512, 512, [128078, 61576], \"f165\", \"M323.8 477.2c-38.2 10.9-78.1-11.2-89-49.4l-5.7-20c-3.7-13-10.4-25-19.5-35l-51.3-56.4c-8.9-9.8-8.2-25 1.6-33.9s25-8.2 33.9 1.6l51.3 56.4c14.1 15.5 24.4 34 30.1 54.1l5.7 20c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7l-5.7-20c-5.7-19.9-14.7-38.7-26.6-55.5c-5.2-7.3-5.8-16.9-1.7-24.9s12.3-13 21.3-13L448 288c8.8 0 16-7.2 16-16c0-6.8-4.3-12.7-10.4-15c-7.4-2.8-13-9-14.9-16.7s.1-15.8 5.3-21.7c2.5-2.8 4-6.5 4-10.6c0-7.8-5.6-14.3-13-15.7c-8.2-1.6-15.1-7.3-18-15.2s-1.6-16.7 3.6-23.3c2.1-2.7 3.4-6.1 3.4-9.9c0-6.7-4.2-12.6-10.2-14.9c-11.5-4.5-17.7-16.9-14.4-28.8c.4-1.3 .6-2.8 .6-4.3c0-8.8-7.2-16-16-16l-97.5 0c-12.6 0-25 3.7-35.5 10.7l-61.7 41.1c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l61.7-41.1c18.4-12.3 40-18.8 62.1-18.8L384 32c34.7 0 62.9 27.6 64 62c14.6 11.7 24 29.7 24 50c0 4.5-.5 8.8-1.3 13c15.4 11.7 25.3 30.2 25.3 51c0 6.5-1 12.8-2.8 18.7C504.8 238.3 512 254.3 512 272c0 35.3-28.6 64-64 64l-92.3 0c4.7 10.4 8.7 21.2 11.8 32.2l5.7 20c10.9 38.2-11.2 78.1-49.4 89zM32 384c-17.7 0-32-14.3-32-32L0 128c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32l-64 0z\"]\n};\nconst faChessPawn = {\n  prefix: 'far',\n  iconName: 'chess-pawn',\n  icon: [320, 512, [9823], \"f443\", \"M232 152A72 72 0 1 0 88 152a72 72 0 1 0 144 0zm24 120l-12.6 0 10.7 80-48.4 0L195 272l-35 0-35 0-10.7 80-48.4 0 10.7-80L64 272c-13.3 0-24-10.7-24-24s10.7-24 24-24c-15.1-20.1-24-45-24-72C40 85.7 93.7 32 160 32s120 53.7 120 120c0 27-8.9 51.9-24 72c13.3 0 24 10.7 24 24s-10.7 24-24 24zM52.7 464l214.7 0-16.6-32L69.2 432 52.7 464zm207.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8L40.8 512C18.2 512 0 493.8 0 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C36.5 390.7 47.5 384 59.5 384l201 0z\"]\n};\nconst faCreditCard = {\n  prefix: 'far',\n  iconName: 'credit-card',\n  icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M512 80c8.8 0 16 7.2 16 16l0 32L48 128l0-32c0-8.8 7.2-16 16-16l448 0zm16 144l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192 480 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0z\"]\n};\nconst faCreditCardAlt = faCreditCard;\nconst faBell = {\n  prefix: 'far',\n  iconName: 'bell',\n  icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416l400 0c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4l0-25.4c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm0 96c61.9 0 112 50.1 112 112l0 25.4c0 47.9 13.9 94.6 39.7 134.6L72.3 368C98.1 328 112 281.3 112 233.4l0-25.4c0-61.9 50.1-112 112-112zm64 352l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nconst faFile = {\n  prefix: 'far',\n  iconName: 'file',\n  icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M320 464c8.8 0 16-7.2 16-16l0-288-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0zM0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64z\"]\n};\nconst faHospital = {\n  prefix: 'far',\n  iconName: 'hospital',\n  icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M232 0c-39.8 0-72 32.2-72 72l0 8L72 80C32.2 80 0 112.2 0 152L0 440c0 39.8 32.2 72 72 72l.2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0s0 0 0 0l272 0 8 0s0 0 0 0l104 0c39.8 0 72-32.2 72-72l0-288c0-39.8-32.2-72-72-72l-88 0 0-8c0-39.8-32.2-72-72-72L232 0zM480 128l88 0c13.3 0 24 10.7 24 24l0 40-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0 0 48-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0 0 104c0 13.3-10.7 24-24 24l-88 0 0-128 0-208zM72 128l88 0 0 336c0 0 0 0-.1 0l-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0c-13.2 0-24-10.7-24-24l0-104 56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0 0-48 56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0 0-40c0-13.3 10.7-24 24-24zM208 72c0-13.3 10.7-24 24-24l176 0c13.3 0 24 10.7 24 24l0 264 0 128-64 0 0-64c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 64-64 0 0-392zm88 24l0 24-24 0c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l24 0 0 24c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-24 24 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-24 0 0-24c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faHospitalAlt = faHospital;\nconst faHospitalWide = faHospital;\nconst faChessRook = {\n  prefix: 'far',\n  iconName: 'chess-rook',\n  icon: [448, 512, [9820], \"f447\", \"M80 80l0 112c0 2.5 1.2 4.9 3.2 6.4l51.2 38.4c6.8 5.1 10.4 13.4 9.5 21.9L133.5 352l-48.3 0 9.4-85L54.4 236.8C40.3 226.2 32 209.6 32 192L32 72c0-22.1 17.9-40 40-40l304 0c22.1 0 40 17.9 40 40l0 120c0 17.6-8.3 34.2-22.4 44.8L353.4 267l9.4 85-48.3 0-10.4-93.3c-.9-8.4 2.7-16.8 9.5-21.9l51.2-38.4c2-1.5 3.2-3.9 3.2-6.4l0-112-64 0 0 24c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-24-64 0 0 24c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-24L80 80zm4.7 384l278.7 0-16.6-32-245.6 0L84.7 464zm271.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8L72.8 512C50.2 512 32 493.8 32 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C68.5 390.7 79.5 384 91.5 384l265 0zM208 288c-8.8 0-16-7.2-16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 8.8-7.2 16-16 16l-32 0z\"]\n};\nconst faStarHalf = {\n  prefix: 'far',\n  iconName: 'star-half',\n  icon: [576, 512, [61731], \"f089\", \"M293.3 .6c10.9 2.5 18.6 12.2 18.6 23.4l0 384.7c0 8.9-4.9 17-12.7 21.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.3c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5c4.9-10.1 16.1-15.4 27-12.9zM263.9 128.4l-28.6 58.8c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l92.5-49.4 0-265.9z\"]\n};\nconst faChessKing = {\n  prefix: 'far',\n  iconName: 'chess-king',\n  icon: [448, 512, [9818], \"f43f\", \"M248 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 32-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 40L59.6 144C26.7 144 0 170.7 0 203.6c0 8.2 1.7 16.3 4.9 23.8L59.1 352l52.3 0L49 208.2c-.6-1.5-1-3-1-4.6c0-6.4 5.2-11.6 11.6-11.6L224 192l164.4 0c6.4 0 11.6 5.2 11.6 11.6c0 1.6-.3 3.2-1 4.6L336.5 352l52.3 0 54.2-124.6c3.3-7.5 4.9-15.6 4.9-23.8c0-32.9-26.7-59.6-59.6-59.6L248 144l0-40 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-32zM101.2 432l245.6 0 16.6 32L84.7 464l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3l-265 0c-12 0-22.9 6.7-28.4 17.3L36.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C32 493.8 50.2 512 72.8 512l302.5 0c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z\"]\n};\nconst faCircleUser = {\n  prefix: 'far',\n  iconName: 'circle-user',\n  icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M406.5 399.6C387.4 352.9 341.5 320 288 320l-64 0c-53.5 0-99.4 32.9-118.5 79.6C69.9 362.2 48 311.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 55.7-21.9 106.2-57.5 143.6zm-40.1 32.7C334.4 452.4 296.6 464 256 464s-78.4-11.6-110.5-31.7c7.3-36.7 39.7-64.3 78.5-64.3l64 0c38.8 0 71.2 27.6 78.5 64.3zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-272a40 40 0 1 1 0-80 40 40 0 1 1 0 80zm-88-40a88 88 0 1 0 176 0 88 88 0 1 0 -176 0z\"]\n};\nconst faUserCircle = faCircleUser;\nconst faCopy = {\n  prefix: 'far',\n  iconName: 'copy',\n  icon: [448, 512, [], \"f0c5\", \"M384 336l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l140.1 0L400 115.9 400 320c0 8.8-7.2 16-16 16zM192 384l192 0c35.3 0 64-28.7 64-64l0-204.1c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1L192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-32-48 0 0 32c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l32 0 0-48-32 0z\"]\n};\nconst faShareFromSquare = {\n  prefix: 'far',\n  iconName: 'share-from-square',\n  icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M400 255.4l0-15.4 0-32c0-8.8-7.2-16-16-16l-32 0-16 0-46.5 0c-50.9 0-93.9 33.5-108.3 79.6c-3.3-9.4-5.2-19.8-5.2-31.6c0-61.9 50.1-112 112-112l48 0 16 0 32 0c8.8 0 16-7.2 16-16l0-32 0-15.4L506 160 400 255.4zM336 240l16 0 0 48c0 17.7 14.3 32 32 32l3.7 0c7.9 0 15.5-2.9 21.4-8.2l139-125.1c7.6-6.8 11.9-16.5 11.9-26.7s-4.3-19.9-11.9-26.7L409.9 8.9C403.5 3.2 395.3 0 386.7 0C367.5 0 352 15.5 352 34.7L352 80l-16 0-32 0-16 0c-88.4 0-160 71.6-160 160c0 60.4 34.6 99.1 63.9 120.9c5.9 4.4 11.5 8.1 16.7 11.2c4.4 2.7 8.5 4.9 11.9 6.6c3.4 1.7 6.2 3 8.2 3.9c2.2 1 4.6 1.4 7.1 1.4l2.5 0c9.8 0 17.8-8 17.8-17.8c0-7.8-5.3-14.7-11.6-19.5c0 0 0 0 0 0c-.4-.3-.7-.5-1.1-.8c-1.7-1.1-3.4-2.5-5-4.1c-.8-.8-1.7-1.6-2.5-2.6s-1.6-1.9-2.4-2.9c-1.8-2.5-3.5-5.3-5-8.5c-2.6-6-4.3-13.3-4.3-22.4c0-36.1 29.3-65.5 65.5-65.5l14.5 0 32 0zM72 32C32.2 32 0 64.2 0 104L0 440c0 39.8 32.2 72 72 72l336 0c39.8 0 72-32.2 72-72l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64c0 13.3-10.7 24-24 24L72 464c-13.3 0-24-10.7-24-24l0-336c0-13.3 10.7-24 24-24l64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L72 32z\"]\n};\nconst faShareSquare = faShareFromSquare;\nconst faCopyright = {\n  prefix: 'far',\n  iconName: 'copyright',\n  icon: [512, 512, [169], \"f1f9\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c-31.2-31.2-31.2-81.9 0-113.1s81.9-31.2 113.1 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-50-50-131-50-181 0s-50 131 0 181s131 50 181 0c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-31.2 31.2-81.9 31.2-113.1 0z\"]\n};\nconst faMap = {\n  prefix: 'far',\n  iconName: 'map',\n  icon: [576, 512, [128506, 62072], \"f279\", \"M565.6 36.2C572.1 40.7 576 48.1 576 56l0 336c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456L0 120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5l0 284.6 120-45.7 0-284.6L48 136.5zM360 422.7l0-285.4-144-48 0 285.4 144 48zm48-1.5l120-45.7 0-284.6L408 136.5l0 284.6z\"]\n};\nconst faBellSlash = {\n  prefix: 'far',\n  iconName: 'bell-slash',\n  icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L542.6 400c2.7-7.8 1.3-16.5-3.9-23l-14.9-18.6C495.5 322.9 480 278.8 480 233.4l0-33.4c0-75.8-55.5-138.6-128-150.1L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 17.9c-43.9 7-81.5 32.7-104.4 68.7L38.8 5.1zM221.7 148.4C239.6 117.1 273.3 96 312 96l8 0 8 0c57.4 0 104 46.6 104 104l0 33.4c0 32.7 6.4 64.8 18.7 94.5L221.7 148.4zM406.2 416l-60.9-48-176.9 0c21.2-32.8 34.4-70.3 38.4-109.1L160 222.1l0 11.4c0 45.4-15.5 89.5-43.8 124.9L101.3 377c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l286.2 0zM384 448l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nconst faHandLizard = {\n  prefix: 'far',\n  iconName: 'hand-lizard',\n  icon: [512, 512, [], \"f258\", \"M72 112c-13.3 0-24 10.7-24 24s10.7 24 24 24l168 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-104 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l152 0c4.5 0 8.9 1.3 12.7 3.6l64 40c7 4.4 11.3 12.1 11.3 20.4l0 24c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-10.7L281.1 384 136 384c-39.8 0-72-32.2-72-72s32.2-72 72-72l104 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L72 208c-39.8 0-72-32.2-72-72S32.2 64 72 64l209.6 0c46.7 0 90.9 21.5 119.7 58.3l78.4 100.1c20.9 26.7 32.3 59.7 32.3 93.7L512 424c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-107.9c0-23.2-7.8-45.8-22.1-64.1L363.5 151.9c-19.7-25.2-49.9-39.9-81.9-39.9L72 112z\"]\n};\nconst faFaceSmile = {\n  prefix: 'far',\n  iconName: 'face-smile',\n  icon: [512, 512, [128578, \"smile\"], \"f118\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSmile = faFaceSmile;\nconst faHandPeace = {\n  prefix: 'far',\n  iconName: 'hand-peace',\n  icon: [512, 512, [9996], \"f25b\", \"M250.8 1.4c-35.2-3.7-66.6 21.8-70.3 57L174 119 156.7 69.6C145 36.3 108.4 18.8 75.1 30.5S24.2 78.8 35.9 112.1L88.7 262.2C73.5 276.7 64 297.3 64 320c0 0 0 0 0 0l0 24c0 92.8 75.2 168 168 168l48 0c92.8 0 168-75.2 168-168l0-72 0-16 0-32c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4c-10.4-21.3-32.3-36-57.6-36c-.7 0-1.5 0-2.2 0l5.9-56.3c3.7-35.2-21.8-66.6-57-70.3zm-.2 155.4C243.9 166.9 240 179 240 192l0 48c0 .7 0 1.4 0 2c-5.1-1.3-10.5-2-16-2l-7.4 0-5.4-15.3 17-161.3c.9-8.8 8.8-15.2 17.6-14.2s15.2 8.8 14.2 17.6l-9.5 90.1zM111.4 85.6L165.7 240 144 240c-4 0-8 .3-11.9 .9L81.2 96.2c-2.9-8.3 1.5-17.5 9.8-20.4s17.5 1.5 20.4 9.8zM288 192c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48zm38.4 108c10.4 21.3 32.3 36 57.6 36c5.5 0 10.9-.7 16-2l0 10c0 66.3-53.7 120-120 120l-48 0c-66.3 0-120-53.7-120-120l0-24s0 0 0 0c0-17.7 14.3-32 32-32l80 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c35.3 0 64-28.7 64-64c0-.7 0-1.4 0-2c5.1 1.3 10.5 2 16 2c7.9 0 15.4-1.4 22.4-4zM400 272c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 0 16z\"]\n};\nconst faFaceGrinHearts = {\n  prefix: 'far',\n  iconName: 'face-grin-hearts',\n  icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM215.3 137.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm122.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nconst faGrinHearts = faFaceGrinHearts;\nconst faBuilding = {\n  prefix: 'far',\n  iconName: 'building',\n  icon: [384, 512, [127970, 61687], \"f1ad\", \"M64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l80 0 0-64c0-26.5 21.5-48 48-48s48 21.5 48 48l0 64 80 0c8.8 0 16-7.2 16-16l0-384c0-8.8-7.2-16-16-16L64 48zM0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm88 40c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16l0 48c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-48zM232 88l48 0c8.8 0 16 7.2 16 16l0 48c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-48c0-8.8 7.2-16 16-16zM88 232c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16l0 48c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-48zm144-16l48 0c8.8 0 16 7.2 16 16l0 48c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-48c0-8.8 7.2-16 16-16z\"]\n};\nconst faFaceGrinBeamSweat = {\n  prefix: 'far',\n  iconName: 'face-grin-beam-sweat',\n  icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3C497.1 120.8 512 102.7 512 81c0-20-28.6-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0c-9.5 12.6-27.1 37.2-36 57.5c-.3 .7-.6 1.4-.9 2.1C417.8 69.7 416 76 416 81c0 26 21.5 47 48 47c4.4 0 8.7-.6 12.8-1.7zM395.4 41.2C355.3 15.2 307.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256c0-35.8-7.3-69.9-20.6-100.8c-8.6 3.1-17.8 4.8-27.4 4.8c-8.9 0-17.6-1.5-25.7-4.2C454.7 185.5 464 219.7 464 256c0 114.9-93.1 208-208 208S48 370.9 48 256S141.1 48 256 48c48.7 0 93.4 16.7 128.9 44.7c-.6-3.8-.9-7.7-.9-11.7c0-11.4 3.8-22.4 7.1-30.5c1.3-3.1 2.7-6.2 4.3-9.3zM375 336.5c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5zM217.6 228.8s0 0 0 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0zm160 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0c0 0 0 0 0 0z\"]\n};\nconst faGrinBeamSweat = faFaceGrinBeamSweat;\nconst faMoon = {\n  prefix: 'far',\n  iconName: 'moon',\n  icon: [384, 512, [127769, 9214], \"f186\", \"M144.7 98.7c-21 34.1-33.1 74.3-33.1 117.3c0 98 62.8 181.4 150.4 211.7c-12.4 2.8-25.3 4.3-38.6 4.3C126.6 432 48 353.3 48 256c0-68.9 39.4-128.4 96.8-157.3zm62.1-66C91.1 41.2 0 137.9 0 256C0 379.7 100 480 223.5 480c47.8 0 92-15 128.4-40.6c1.9-1.3 3.7-2.7 5.5-4c4.8-3.6 9.4-7.4 13.9-11.4c2.7-2.4 5.3-4.8 7.9-7.3c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-3.7 .6-7.4 1.2-11.1 1.6c-5 .5-10.1 .9-15.3 1c-1.2 0-2.5 0-3.7 0l-.3 0c-96.8-.2-175.2-78.9-175.2-176c0-54.8 24.9-103.7 64.1-136c1-.9 2.1-1.7 3.2-2.6c4-3.2 8.2-6.2 12.5-9c3.1-2 6.3-4 9.6-5.8c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-3.6-.3-7.1-.5-10.7-.6c-2.7-.1-5.5-.1-8.2-.1c-3.3 0-6.5 .1-9.8 .2c-2.3 .1-4.6 .2-6.9 .4z\"]\n};\nconst faCalendar = {\n  prefix: 'far',\n  iconName: 'calendar',\n  icon: [448, 512, [128197, 128198], \"f133\", \"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L64 64C28.7 64 0 92.7 0 128l0 16 0 48L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-256 0-48 0-16c0-35.3-28.7-64-64-64l-40 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L152 64l0-40zM48 192l352 0 0 256c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256z\"]\n};\nconst faFaceGrinTongueWink = {\n  prefix: 'far',\n  iconName: 'face-grin-tongue-wink',\n  icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M348.3 442.4c2.4-8.4 3.7-17.3 3.7-26.4l0-52.5c8.8-8 16.6-17.1 23-27c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c6.5 10 14.3 19.1 23.1 27.1l0 52.4c0 9.2 1.3 18 3.7 26.4C95.1 408.4 48 337.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 81.7-47.1 152.4-115.7 186.4zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm176.7 12a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-.4-72a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM320 416c0 35.3-28.7 64-64 64s-64-28.7-64-64l0-37.4c0-14.7 11.9-26.6 26.6-26.6l2 0c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9l2 0c14.7 0 26.6 11.9 26.6 26.6l0 37.4z\"]\n};\nconst faGrinTongueWink = faFaceGrinTongueWink;\nconst faClone = {\n  prefix: 'far',\n  iconName: 'clone',\n  icon: [512, 512, [], \"f24d\", \"M64 464l224 0c8.8 0 16-7.2 16-16l0-64 48 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l64 0 0 48-64 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16zM224 304l224 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16L224 48c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16zm-64-16l0-224c0-35.3 28.7-64 64-64L448 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-224 0c-35.3 0-64-28.7-64-64z\"]\n};\nconst faFaceAngry = {\n  prefix: 'far',\n  iconName: 'face-angry',\n  icon: [512, 512, [128544, \"angry\"], \"f556\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm72.4-118.5c9.7-9 10.2-24.2 1.2-33.9C315.3 344.3 290.6 328 256 328s-59.3 16.3-73.5 31.6c-9 9.7-8.5 24.9 1.2 33.9s24.9 8.5 33.9-1.2c7.4-7.9 20-16.4 38.5-16.4s31.1 8.5 38.5 16.4c9 9.7 24.2 10.2 33.9 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faAngry = faFaceAngry;\nconst faRectangleXmark = {\n  prefix: 'far',\n  iconName: 'rectangle-xmark',\n  icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm175 79c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faRectangleTimes = faRectangleXmark;\nconst faTimesRectangle = faRectangleXmark;\nconst faWindowClose = faRectangleXmark;\nconst faPaperPlane = {\n  prefix: 'far',\n  iconName: 'paper-plane',\n  icon: [512, 512, [61913], \"f1d8\", \"M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376l0 103.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z\"]\n};\nconst faLifeRing = {\n  prefix: 'far',\n  iconName: 'life-ring',\n  icon: [512, 512, [], \"f1cd\", \"M385.1 419.1C349.7 447.2 304.8 464 256 464s-93.7-16.8-129.1-44.9l80.4-80.4c14.3 8.4 31 13.3 48.8 13.3s34.5-4.8 48.8-13.3l80.4 80.4zm68.1 .2C489.9 374.9 512 318.1 512 256s-22.1-118.9-58.8-163.3L465 81c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L419.3 58.8C374.9 22.1 318.1 0 256 0S137.1 22.1 92.7 58.8L81 47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L58.8 92.7C22.1 137.1 0 193.9 0 256s22.1 118.9 58.8 163.3L47 431c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l11.8-11.8C137.1 489.9 193.9 512 256 512s118.9-22.1 163.3-58.8L431 465c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-11.8-11.8zm-34.1-34.1l-80.4-80.4c8.4-14.3 13.3-31 13.3-48.8s-4.8-34.5-13.3-48.8l80.4-80.4C447.2 162.3 464 207.2 464 256s-16.8 93.7-44.9 129.1zM385.1 92.9l-80.4 80.4c-14.3-8.4-31-13.3-48.8-13.3s-34.5 4.8-48.8 13.3L126.9 92.9C162.3 64.8 207.2 48 256 48s93.7 16.8 129.1 44.9zM173.3 304.8L92.9 385.1C64.8 349.7 48 304.8 48 256s16.8-93.7 44.9-129.1l80.4 80.4c-8.4 14.3-13.3 31-13.3 48.8s4.8 34.5 13.3 48.8zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faFaceGrimace = {\n  prefix: 'far',\n  iconName: 'face-grimace',\n  icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM168 320c-13.3 0-24 10.7-24 24s10.7 24 24 24l8 0 0-48-8 0zm40 48l32 0 0-48-32 0 0 48zm96 0l0-48-32 0 0 48 32 0zm32 0l8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 48zM168 288l176 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-176 0c-30.9 0-56-25.1-56-56s25.1-56 56-56zm-23.6-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrimace = faFaceGrimace;\nconst faCalendarMinus = {\n  prefix: 'far',\n  iconName: 'calendar-minus',\n  icon: [448, 512, [], \"f272\", \"M128 0c13.3 0 24 10.7 24 24l0 40 144 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 40 0c35.3 0 64 28.7 64 64l0 16 0 48 0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192l0-48 0-16C0 92.7 28.7 64 64 64l40 0 0-40c0-13.3 10.7-24 24-24zM400 192L48 192l0 256c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-256zM296 352l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n};\nconst faCircleXmark = {\n  prefix: 'far',\n  iconName: 'circle-xmark',\n  icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nconst faTimesCircle = faCircleXmark;\nconst faXmarkCircle = faCircleXmark;\nconst faThumbsUp = {\n  prefix: 'far',\n  iconName: 'thumbs-up',\n  icon: [512, 512, [128077, 61575], \"f164\", \"M323.8 34.8c-38.2-10.9-78.1 11.2-89 49.4l-5.7 20c-3.7 13-10.4 25-19.5 35l-51.3 56.4c-8.9 9.8-8.2 25 1.6 33.9s25 8.2 33.9-1.6l51.3-56.4c14.1-15.5 24.4-34 30.1-54.1l5.7-20c3.6-12.7 16.9-20.1 29.7-16.5s20.1 16.9 16.5 29.7l-5.7 20c-5.7 19.9-14.7 38.7-26.6 55.5c-5.2 7.3-5.8 16.9-1.7 24.9s12.3 13 21.3 13L448 224c8.8 0 16 7.2 16 16c0 6.8-4.3 12.7-10.4 15c-7.4 2.8-13 9-14.9 16.7s.1 15.8 5.3 21.7c2.5 2.8 4 6.5 4 10.6c0 7.8-5.6 14.3-13 15.7c-8.2 1.6-15.1 7.3-18 15.2s-1.6 16.7 3.6 23.3c2.1 2.7 3.4 6.1 3.4 9.9c0 6.7-4.2 12.6-10.2 14.9c-11.5 4.5-17.7 16.9-14.4 28.8c.4 1.3 .6 2.8 .6 4.3c0 8.8-7.2 16-16 16l-97.5 0c-12.6 0-25-3.7-35.5-10.7l-61.7-41.1c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3l61.7 41.1c18.4 12.3 40 18.8 62.1 18.8l97.5 0c34.7 0 62.9-27.6 64-62c14.6-11.7 24-29.7 24-50c0-4.5-.5-8.8-1.3-13c15.4-11.7 25.3-30.2 25.3-51c0-6.5-1-12.8-2.8-18.7C504.8 273.7 512 257.7 512 240c0-35.3-28.6-64-64-64l-92.3 0c4.7-10.4 8.7-21.2 11.8-32.2l5.7-20c10.9-38.2-11.2-78.1-49.4-89zM32 192c-17.7 0-32 14.3-32 32L0 448c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32l-64 0z\"]\n};\nconst faWindowMinimize = {\n  prefix: 'far',\n  iconName: 'window-minimize',\n  icon: [512, 512, [128469], \"f2d1\", \"M24 432c-13.3 0-24 10.7-24 24s10.7 24 24 24l464 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 432z\"]\n};\nconst faSquareFull = {\n  prefix: 'far',\n  iconName: 'square-full',\n  icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M464 48l0 416L48 464 48 48l416 0zM48 0L0 0 0 48 0 464l0 48 48 0 416 0 48 0 0-48 0-416 0-48L464 0 48 0z\"]\n};\nconst faNoteSticky = {\n  prefix: 'far',\n  iconName: 'note-sticky',\n  icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l224 0 0-80c0-17.7 14.3-32 32-32l80 0 0-224c0-8.8-7.2-16-16-16L64 80zM288 480L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 224 0 5.5c0 17-6.7 33.3-18.7 45.3l-90.5 90.5c-12 12-28.3 18.7-45.3 18.7l-5.5 0z\"]\n};\nconst faStickyNote = faNoteSticky;\nconst faFaceSadTear = {\n  prefix: 'far',\n  iconName: 'face-sad-tear',\n  icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M175.9 448c-35-.1-65.5-22.6-76-54.6C67.6 356.8 48 308.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208s-93.1 208-208 208c-28.4 0-55.5-5.7-80.1-16zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM128 369c0 26 21.5 47 48 47s48-21 48-47c0-20-28.4-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0C156.6 308.6 128 349 128 369zm128-65c-13.3 0-24 10.7-24 24s10.7 24 24 24c30.7 0 58.7 11.5 80 30.6c9.9 8.8 25 8 33.9-1.9s8-25-1.9-33.9C338.3 320.2 299 304 256 304zm47.6-96a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faSadTear = faFaceSadTear;\nconst faHandPointLeft = {\n  prefix: 'far',\n  iconName: 'hand-point-left',\n  icon: [512, 512, [], \"f0a5\", \"M64 128l177.6 0c-1 5.2-1.6 10.5-1.6 16l0 16-32 0L64 160c-8.8 0-16-7.2-16-16s7.2-16 16-16zm224 16c0-17.7 14.3-32 32-32c0 0 0 0 0 0l24 0c66.3 0 120 53.7 120 120l0 48c0 52.5-33.7 97.1-80.7 113.4c.5-3.1 .7-6.2 .7-9.4c0-20-9.2-37.9-23.6-49.7c4.9-9 7.6-19.4 7.6-30.3c0-15.1-5.3-29-14-40c8.8-11 14-24.9 14-40l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-40 0-40zm32-80s0 0 0 0c-18 0-34.6 6-48 16L64 80C28.7 80 0 108.7 0 144s28.7 64 64 64l82 0c-1.3 5.1-2 10.5-2 16c0 25.3 14.7 47.2 36 57.6c-2.6 7-4 14.5-4 22.4c0 20 9.2 37.9 23.6 49.7c-4.9 9-7.6 19.4-7.6 30.3c0 35.3 28.7 64 64 64l64 0 24 0c92.8 0 168-75.2 168-168l0-48c0-92.8-75.2-168-168-168l-24 0zM256 400c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0zM240 224c0 5.5 .7 10.9 2 16l-2 0-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0 16zm24 64l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l24 0z\"]\n};\nvar icons = {\n  faTrashCan,\n  faTrashAlt,\n  faMessage,\n  faCommentAlt,\n  faFileLines,\n  faFileAlt,\n  faFileText,\n  faCalendarDays,\n  faCalendarAlt,\n  faHandPointRight,\n  faFaceSmileBeam,\n  faSmileBeam,\n  faFaceGrinStars,\n  faGrinStars,\n  faAddressBook,\n  faContactBook,\n  faComments,\n  faPaste,\n  faFileClipboard,\n  faFaceGrinTongueSquint,\n  faGrinTongueSquint,\n  faFaceFlushed,\n  faFlushed,\n  faSquareCaretRight,\n  faCaretSquareRight,\n  faSquareMinus,\n  faMinusSquare,\n  faCompass,\n  faSquareCaretDown,\n  faCaretSquareDown,\n  faFaceKissBeam,\n  faKissBeam,\n  faLightbulb,\n  faFlag,\n  faSquareCheck,\n  faCheckSquare,\n  faCircleDot,\n  faDotCircle,\n  faFaceDizzy,\n  faDizzy,\n  faFutbol,\n  faFutbolBall,\n  faSoccerBall,\n  faPenToSquare,\n  faEdit,\n  faHourglassHalf,\n  faHourglass2,\n  faEyeSlash,\n  faHand,\n  faHandPaper,\n  faHandSpock,\n  faFaceKiss,\n  faKiss,\n  faFaceGrinTongue,\n  faGrinTongue,\n  faChessBishop,\n  faFaceGrinWink,\n  faGrinWink,\n  faFaceGrinWide,\n  faGrinAlt,\n  faFaceFrownOpen,\n  faFrownOpen,\n  faHandPointUp,\n  faBookmark,\n  faHandPointDown,\n  faFolder,\n  faFolderBlank,\n  faUser,\n  faSquareCaretLeft,\n  faCaretSquareLeft,\n  faStar,\n  faChessKnight,\n  faFaceLaughSquint,\n  faLaughSquint,\n  faFaceLaugh,\n  faLaugh,\n  faFolderOpen,\n  faClipboard,\n  faChessQueen,\n  faHandBackFist,\n  faHandRock,\n  faSquareCaretUp,\n  faCaretSquareUp,\n  faChartBar,\n  faBarChart,\n  faWindowRestore,\n  faSquarePlus,\n  faPlusSquare,\n  faImage,\n  faFolderClosed,\n  faLemon,\n  faHandshake,\n  faGem,\n  faCirclePlay,\n  faPlayCircle,\n  faCircleCheck,\n  faCheckCircle,\n  faCircleStop,\n  faStopCircle,\n  faIdBadge,\n  faFaceLaughBeam,\n  faLaughBeam,\n  faRegistered,\n  faAddressCard,\n  faContactCard,\n  faVcard,\n  faFaceTired,\n  faTired,\n  faFontAwesome,\n  faFontAwesomeFlag,\n  faFontAwesomeLogoFull,\n  faFaceSmileWink,\n  faSmileWink,\n  faFileWord,\n  faFilePowerpoint,\n  faEnvelopeOpen,\n  faFileZipper,\n  faFileArchive,\n  faSquare,\n  faSnowflake,\n  faNewspaper,\n  faFaceKissWinkHeart,\n  faKissWinkHeart,\n  faStarHalfStroke,\n  faStarHalfAlt,\n  faFileExcel,\n  faFaceGrinBeam,\n  faGrinBeam,\n  faObjectUngroup,\n  faCircleRight,\n  faArrowAltCircleRight,\n  faFaceRollingEyes,\n  faMehRollingEyes,\n  faObjectGroup,\n  faHeart,\n  faFaceSurprise,\n  faSurprise,\n  faCirclePause,\n  faPauseCircle,\n  faCircle,\n  faCircleUp,\n  faArrowAltCircleUp,\n  faFileAudio,\n  faFileImage,\n  faCircleQuestion,\n  faQuestionCircle,\n  faFaceMehBlank,\n  faMehBlank,\n  faEye,\n  faFaceSadCry,\n  faSadCry,\n  faFileCode,\n  faWindowMaximize,\n  faFaceFrown,\n  faFrown,\n  faFloppyDisk,\n  faSave,\n  faCommentDots,\n  faCommenting,\n  faFaceGrinSquint,\n  faGrinSquint,\n  faHandPointer,\n  faHandScissors,\n  faFaceGrinTears,\n  faGrinTears,\n  faCalendarXmark,\n  faCalendarTimes,\n  faFileVideo,\n  faFilePdf,\n  faComment,\n  faEnvelope,\n  faHourglass,\n  faHourglassEmpty,\n  faCalendarCheck,\n  faHardDrive,\n  faHdd,\n  faFaceGrinSquintTears,\n  faGrinSquintTears,\n  faRectangleList,\n  faListAlt,\n  faCalendarPlus,\n  faCircleLeft,\n  faArrowAltCircleLeft,\n  faMoneyBill1,\n  faMoneyBillAlt,\n  faClock,\n  faClockFour,\n  faKeyboard,\n  faClosedCaptioning,\n  faImages,\n  faFaceGrin,\n  faGrin,\n  faFaceMeh,\n  faMeh,\n  faIdCard,\n  faDriversLicense,\n  faSun,\n  faFaceLaughWink,\n  faLaughWink,\n  faCircleDown,\n  faArrowAltCircleDown,\n  faThumbsDown,\n  faChessPawn,\n  faCreditCard,\n  faCreditCardAlt,\n  faBell,\n  faFile,\n  faHospital,\n  faHospitalAlt,\n  faHospitalWide,\n  faChessRook,\n  faStarHalf,\n  faChessKing,\n  faCircleUser,\n  faUserCircle,\n  faCopy,\n  faShareFromSquare,\n  faShareSquare,\n  faCopyright,\n  faMap,\n  faBellSlash,\n  faHandLizard,\n  faFaceSmile,\n  faSmile,\n  faHandPeace,\n  faFaceGrinHearts,\n  faGrinHearts,\n  faBuilding,\n  faFaceGrinBeamSweat,\n  faGrinBeamSweat,\n  faMoon,\n  faCalendar,\n  faFaceGrinTongueWink,\n  faGrinTongueWink,\n  faClone,\n  faFaceAngry,\n  faAngry,\n  faRectangleXmark,\n  faRectangleTimes,\n  faTimesRectangle,\n  faWindowClose,\n  faPaperPlane,\n  faLifeRing,\n  faFaceGrimace,\n  faGrimace,\n  faCalendarMinus,\n  faCircleXmark,\n  faTimesCircle,\n  faXmarkCircle,\n  faThumbsUp,\n  faWindowMinimize,\n  faSquareFull,\n  faNoteSticky,\n  faStickyNote,\n  faFaceSadTear,\n  faSadTear,\n  faHandPointLeft\n};\n\nexport { icons as far, prefix, faTrashCan, faTrashAlt, faMessage, faCommentAlt, faFileLines, faFileAlt, faFileText, faCalendarDays, faCalendarAlt, faHandPointRight, faFaceSmileBeam, faSmileBeam, faFaceGrinStars, faGrinStars, faAddressBook, faContactBook, faComments, faPaste, faFileClipboard, faFaceGrinTongueSquint, faGrinTongueSquint, faFaceFlushed, faFlushed, faSquareCaretRight, faCaretSquareRight, faSquareMinus, faMinusSquare, faCompass, faSquareCaretDown, faCaretSquareDown, faFaceKissBeam, faKissBeam, faLightbulb, faFlag, faSquareCheck, faCheckSquare, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faFutbol, faFutbolBall, faSoccerBall, faPenToSquare, faEdit, faHourglassHalf, faHourglass2, faEyeSlash, faHand, faHandPaper, faHandSpock, faFaceKiss, faKiss, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faFaceGrinWide, faGrinAlt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faBookmark, faHandPointDown, faFolder, faFolderBlank, faUser, faSquareCaretLeft, faCaretSquareLeft, faStar, faChessKnight, faFaceLaughSquint, faLaughSquint, faFaceLaugh, faLaugh, faFolderOpen, faClipboard, faChessQueen, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faChartBar, faBarChart, faWindowRestore, faSquarePlus, faPlusSquare, faImage, faFolderClosed, faLemon, faHandshake, faGem, faCirclePlay, faPlayCircle, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faIdBadge, faFaceLaughBeam, faLaughBeam, faRegistered, faAddressCard, faContactCard, faVcard, faFaceTired, faTired, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faEnvelopeOpen, faFileZipper, faFileArchive, faSquare, faSnowflake, faNewspaper, faFaceKissWinkHeart, faKissWinkHeart, faStarHalfStroke, faStarHalfAlt, faFileExcel, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faCircleRight, faArrowAltCircleRight, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faHeart, faFaceSurprise, faSurprise, faCirclePause, faPauseCircle, faCircle, faCircleUp, faArrowAltCircleUp, faFileAudio, faFileImage, faCircleQuestion, faQuestionCircle, faFaceMehBlank, faMehBlank, faEye, faFaceSadCry, faSadCry, faFileCode, faWindowMaximize, faFaceFrown, faFrown, faFloppyDisk, faSave, faCommentDots, faCommenting, faFaceGrinSquint, faGrinSquint, faHandPointer, faHandScissors, faFaceGrinTears, faGrinTears, faCalendarXmark, faCalendarTimes, faFileVideo, faFilePdf, faComment, faEnvelope, faHourglass, faHourglassEmpty, faCalendarCheck, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faRectangleList, faListAlt, faCalendarPlus, faCircleLeft, faArrowAltCircleLeft, faMoneyBill1, faMoneyBillAlt, faClock, faClockFour, faKeyboard, faClosedCaptioning, faImages, faFaceGrin, faGrin, faFaceMeh, faMeh, faIdCard, faDriversLicense, faSun, faFaceLaughWink, faLaughWink, faCircleDown, faArrowAltCircleDown, faThumbsDown, faChessPawn, faCreditCard, faCreditCardAlt, faBell, faFile, faHospital, faHospitalAlt, faHospitalWide, faChessRook, faStarHalf, faChessKing, faCircleUser, faUserCircle, faCopy, faShareFromSquare, faShareSquare, faCopyright, faMap, faBellSlash, faHandLizard, faFaceSmile, faSmile, faHandPeace, faFaceGrinHearts, faGrinHearts, faBuilding, faFaceGrinBeamSweat, faGrinBeamSweat, faMoon, faCalendar, faFaceGrinTongueWink, faGrinTongueWink, faClone, faFaceAngry, faAngry, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faPaperPlane, faLifeRing, faFaceGrimace, faGrimace, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faThumbsUp, faWindowMinimize, faSquareFull, faNoteSticky, faStickyNote, faFaceSadTear, faSadTear, faHandPointLeft };\n","import React from \"react\";\nimport {\n  FontAwesomeIcon,\n  FontAwesomeIconProps,\n} from \"@fortawesome/react-fontawesome\";\nimport { faClock } from \"@fortawesome/free-regular-svg-icons\";\nimport { useTheme } from \"@mui/material/styles\";\n\ntype ClockIconProps = Omit<FontAwesomeIconProps, \"icon\"> & {\n  color?: \"primary\" | \"inherit\";\n};\n\nconst ClockIcon: React.FC<ClockIconProps> = ({ color, ...iconProps }) => {\n  const theme = useTheme();\n\n  return (\n    <FontAwesomeIcon\n      icon={faClock}\n      css={{\n        color: color === \"primary\" ? theme.palette.primary.main : \"inherit\",\n      }}\n      {...iconProps}\n    />\n  );\n};\n\nexport default ClockIcon;\n","/*!\n * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\nconst prefix = \"fas\";\nconst fa0 = {\n  prefix: 'fas',\n  iconName: '0',\n  icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160l0 128c0 88.4-71.6 160-160 160S0 408.4 0 320L0 192zM160 96c-53 0-96 43-96 96l0 128c0 53 43 96 96 96s96-43 96-96l0-128c0-53-43-96-96-96z\"]\n};\nconst fa1 = {\n  prefix: 'fas',\n  iconName: '1',\n  icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8 96 416l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-352z\"]\n};\nconst fa2 = {\n  prefix: 'fas',\n  iconName: '2',\n  icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416 288 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nconst fa3 = {\n  prefix: 'fas',\n  iconName: '3',\n  icon: [320, 512, [], \"33\", \"M0 64C0 46.3 14.3 32 32 32l240 0c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208l21.7 0c75.1 0 136 60.9 136 136s-60.9 136-136 136l-78.6 0C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5l78.6 0c39.8 0 72-32.2 72-72s-32.2-72-72-72L80 272c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst fa4 = {\n  prefix: 'fas',\n  iconName: '4',\n  icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368l224 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-144c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L82.4 304 189 77.6z\"]\n};\nconst fa5 = {\n  prefix: 'fas',\n  iconName: '5',\n  icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L90.7 96 70.3 208 184 208c75.1 0 136 60.9 136 136s-60.9 136-136 136l-83.5 0c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1l83.5 0c39.8 0 72-32.2 72-72s-32.2-72-72-72L32 272c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nconst fa6 = {\n  prefix: 'fas',\n  iconName: '6',\n  icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3l0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z\"]\n};\nconst fa7 = {\n  prefix: 'fas',\n  iconName: '7',\n  icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32l256 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst fa8 = {\n  prefix: 'fas',\n  iconName: '8',\n  icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128l-32 0C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128l64 0c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288l15.9 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64s28.7-64 64-64l15.9 0c0 0 .1 0 .1 0l32 0c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0l-32 0c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64l32 0c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nconst fa9 = {\n  prefix: 'fas',\n  iconName: '9',\n  icon: [320, 512, [], \"39\", \"M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nconst faFillDrip = {\n  prefix: 'fas',\n  iconName: 'fill-drip',\n  icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6l319.2 0 42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nconst faArrowsToCircle = {\n  prefix: 'fas',\n  iconName: 'arrows-to-circle',\n  icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7 160 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l18.7 0L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352L96 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0s0 0 0 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160l18.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1s0 0 0 0l0-96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3l0 18.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96s0 0 0 0l0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4l.1 0s0 0 0 0l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.7 0z\"]\n};\nconst faCircleChevronRight = {\n  prefix: 'fas',\n  iconName: 'circle-chevron-right',\n  icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nconst faChevronCircleRight = faCircleChevronRight;\nconst faAt = {\n  prefix: 'fas',\n  iconName: 'at',\n  icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256l0 32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32l0 80 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faTrashCan = {\n  prefix: 'fas',\n  iconName: 'trash-can',\n  icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm96 64c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16z\"]\n};\nconst faTrashAlt = faTrashCan;\nconst faTextHeight = {\n  prefix: 'fas',\n  iconName: 'text-height',\n  icon: [576, 512, [], \"f034\", \"M64 128l0-32 64 0 0 320-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-320 64 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48c0-26.5-21.5-48-48-48L160 32 48 32C21.5 32 0 53.5 0 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 192-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-192 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nconst faUserXmark = {\n  prefix: 'fas',\n  iconName: 'user-xmark',\n  icon: [640, 512, [\"user-times\"], \"f235\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faUserTimes = faUserXmark;\nconst faStethoscope = {\n  prefix: 'fas',\n  iconName: 'stethoscope',\n  icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1 96 192c0 53 43 96 96 96s96-43 96-96l0-120.9-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1L352 192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112l0-70.7c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 70.7c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192L32 71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMessage = {\n  prefix: 'fas',\n  iconName: 'message',\n  icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l96 0 0 80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416 448 416c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0z\"]\n};\nconst faCommentAlt = faMessage;\nconst faInfo = {\n  prefix: 'fas',\n  iconName: 'info',\n  icon: [192, 512, [], \"f129\", \"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 224 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-192-32 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faDownLeftAndUpRightToCenter = {\n  prefix: 'fas',\n  iconName: 'down-left-and-up-right-to-center',\n  icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272l144 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z\"]\n};\nconst faCompressAlt = faDownLeftAndUpRightToCenter;\nconst faExplosion = {\n  prefix: 'fas',\n  iconName: 'explosion',\n  icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87-71.4 0c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64l-79.6 0L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448s0 0 0 0l448 0s0 0 0 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0zM288 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24z\"]\n};\nconst faFileLines = {\n  prefix: 'fas',\n  iconName: 'file-lines',\n  icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM112 256l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faFileAlt = faFileLines;\nconst faFileText = faFileLines;\nconst faWaveSquare = {\n  prefix: 'fas',\n  iconName: 'wave-square',\n  icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 352 96 0 0-160c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 160c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-352-96 0 0 160c0 17.7-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0 0-160z\"]\n};\nconst faRing = {\n  prefix: 'fas',\n  iconName: 'ring',\n  icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8l0 96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304l0-96z\"]\n};\nconst faBuildingUn = {\n  prefix: 'fas',\n  iconName: 'building-un',\n  icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM237.3 71.1l34.7 52L272 80c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faDiceThree = {\n  prefix: 'fas',\n  iconName: 'dice-three',\n  icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCalendarDays = {\n  prefix: 'fas',\n  iconName: 'calendar-days',\n  icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm64 80l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm128 0l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 400l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faCalendarAlt = faCalendarDays;\nconst faAnchorCircleCheck = {\n  prefix: 'fas',\n  iconName: 'anchor-circle-check',\n  icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faBuildingCircleArrowRight = {\n  prefix: 'fas',\n  iconName: 'building-circle-arrow-right',\n  icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 184.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352 432 352c-8.8 0-16 7.2-16 16s7.2 16 16 16l89.4 0-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nconst faVolleyball = {\n  prefix: 'fas',\n  iconName: 'volleyball',\n  icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nconst faVolleyballBall = faVolleyball;\nconst faArrowsUpToLine = {\n  prefix: 'fas',\n  iconName: 'arrows-up-to-line',\n  icon: [576, 512, [], \"e4c2\", \"M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nconst faSortDown = {\n  prefix: 'fas',\n  iconName: 'sort-down',\n  icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l256 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nconst faSortDesc = faSortDown;\nconst faCircleMinus = {\n  prefix: 'fas',\n  iconName: 'circle-minus',\n  icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMinusCircle = faCircleMinus;\nconst faDoorOpen = {\n  prefix: 'fas',\n  iconName: 'door-open',\n  icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5L64 448l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 192 0 32 0 0-32 0-448zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128l96 0 0 352c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-320c0-35.3-28.7-64-64-64l-96 0 0 64z\"]\n};\nconst faRightFromBracket = {\n  prefix: 'fas',\n  iconName: 'right-from-bracket',\n  icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nconst faSignOutAlt = faRightFromBracket;\nconst faAtom = {\n  prefix: 'fas',\n  iconName: 'atom',\n  icon: [512, 512, [9883], \"f5d2\", \"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSoap = {\n  prefix: 'fas',\n  iconName: 'soap',\n  icon: [512, 512, [129532], \"e06e\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96s43-96 96-96l88.4 0c-15.2-17-24.4-39.4-24.4-64L96 192c-53 0-96 43-96 96L0 416c0 53 43 96 96 96l320 0c53 0 96-43 96-96l0-128c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64l192 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0-160 0z\"]\n};\nconst faIcons = {\n  prefix: 'fas',\n  iconName: 'icons',\n  icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32l0 144c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48l0-57L352 90.2 352 208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48l0-96c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2l61.7 0c10.7 0 20.7 5.3 26.6 14.2L213.3 304l26.7 0c26.5 0 48 21.5 48 48l0 112c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 352c0-26.5 21.5-48 48-48l26.7 0zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368l55.7 0c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400 336 400c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nconst faHeartMusicCameraBolt = faIcons;\nconst faMicrophoneLinesSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-lines-slash',\n  icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24 0 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8l0-44.8-57.1 0-34.5-27c2.9-3.1 7-5 11.6-5l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0c0-53-43-96-96-96s-96 43-96 96l0 54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128l0-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nconst faMicrophoneAltSlash = faMicrophoneLinesSlash;\nconst faBridgeCircleCheck = {\n  prefix: 'fas',\n  iconName: 'bridge-circle-check',\n  icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faPumpMedical = {\n  prefix: 'fas',\n  iconName: 'pump-medical',\n  icon: [448, 512, [], \"e06a\", \"M128 32l0 96 128 0 0-32 60.1 0c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4L256 32c0-17.7-14.3-32-32-32L160 0c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512l186.4 0c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7l-149.1 0zM216 280l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFingerprint = {\n  prefix: 'fas',\n  iconName: 'fingerprint',\n  icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256l0 24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z\"]\n};\nconst faHandPointRight = {\n  prefix: 'fas',\n  iconName: 'hand-point-right',\n  icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm64-64c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32l-8.6 0C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64l0 88c0 22.1-17.9 40-40 40s-40-17.9-40-40l0-56c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 56c0 39.8 32.2 72 72 72z\"]\n};\nconst faMagnifyingGlassLocation = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-location',\n  icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faSearchLocation = faMagnifyingGlassLocation;\nconst faForwardStep = {\n  prefix: 'fas',\n  iconName: 'forward-step',\n  icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416L0 96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241l0-145c0-17.7 14.3-32 32-32s32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-145-11.5 9.6-192 160z\"]\n};\nconst faStepForward = faForwardStep;\nconst faFaceSmileBeam = {\n  prefix: 'fas',\n  iconName: 'face-smile-beam',\n  icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faSmileBeam = faFaceSmileBeam;\nconst faFlagCheckered = {\n  prefix: 'fas',\n  iconName: 'flag-checkered',\n  icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 279.7c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80 0-66L0 64 0 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9 0 65.5L64 252.6 64 318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3l0-63.9 38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9 0 66.7-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8l0 71.4c21.8 1.9 43.3 6.7 64 14.4l0-69.8 22.7 6.7c13.5 4 27.3 6.4 41.3 7.4l0-64.2c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12 0-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8l0 72.4c-13-.4-26 .8-38.7 3.6L128 173.2 128 98 64 114l0 73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2 0-71.7-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5l0 77.4zm64-149.4l0-70.8c-20.9 6.1-42.4 9.1-64 9.1l0 69.4c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nconst faFootball = {\n  prefix: 'fas',\n  iconName: 'football',\n  icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6C47.8 183.4 35.1 215.9 26.9 249L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faFootballBall = faFootball;\nconst faSchoolCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'school-circle-exclamation',\n  icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faCrop = {\n  prefix: 'fas',\n  iconName: 'crop',\n  icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64l0 64 178.7 0L128 338.7 128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l224 0 0-64-178.7 0L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-274.7z\"]\n};\nconst faAnglesDown = {\n  prefix: 'fas',\n  iconName: 'angles-down',\n  icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nconst faAngleDoubleDown = faAnglesDown;\nconst faUsersRectangle = {\n  prefix: 'fas',\n  iconName: 'users-rectangle',\n  icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l448 0c53 0 96-43 96-96l0-320c0-53-43-96-96-96L96 0zM64 96c0-17.7 14.3-32 32-32l448 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32L64 96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0C119.9 256 96 279.9 96 309.3zM461.2 336l56.1 0c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nconst faPeopleRoof = {\n  prefix: 'fas',\n  iconName: 'people-roof',\n  icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5l0 38.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-38.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3l19.5 0c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3l19.5 0c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6l19.5 0c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5l0 38.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-38.5-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5l0 54.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-54.5-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nconst faPeopleLine = {\n  prefix: 'fas',\n  iconName: 'people-line',\n  icon: [640, 512, [], \"e534\", \"M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5l0 54.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-54.5 26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5l0 38.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5 88 352c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5z\"]\n};\nconst faBeerMugEmpty = {\n  prefix: 'fas',\n  iconName: 'beer-mug-empty',\n  icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 32 51.2 0c42.4 0 76.8 34.4 76.8 76.8l0 102.1c0 30.4-17.9 57.9-45.6 70.2L384 381.7l0 34.3c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64L32 64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7l0-102.1c0-7.1-5.7-12.8-12.8-12.8L384 160l0 151.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224z\"]\n};\nconst faBeer = faBeerMugEmpty;\nconst faDiagramPredecessor = {\n  prefix: 'fas',\n  iconName: 'diagram-predecessor',\n  icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nconst faArrowUpLong = {\n  prefix: 'fas',\n  iconName: 'arrow-up-long',\n  icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-370.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nconst faLongArrowUp = faArrowUpLong;\nconst faFireFlameSimple = {\n  prefix: 'fas',\n  iconName: 'fire-flame-simple',\n  icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nconst faBurn = faFireFlameSimple;\nconst faPerson = {\n  prefix: 'fas',\n  iconName: 'person',\n  icon: [320, 512, [129485, \"male\"], \"f183\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0z\"]\n};\nconst faMale = faPerson;\nconst faLaptop = {\n  prefix: 'fas',\n  iconName: 'laptop',\n  icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96l0 256 64 0 0-256 384 0 0 256 64 0 0-256c0-35.3-28.7-64-64-64L128 32zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480l486.4 0c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2L19.2 384z\"]\n};\nconst faFileCsv = {\n  prefix: 'fas',\n  iconName: 'file-csv',\n  icon: [512, 512, [], \"f6dd\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM200 352l16 0c22.1 0 40 17.9 40 40l0 8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-8c0-4.4-3.6-8-8-8l-16 0c-4.4 0-8 3.6-8 8l0 80c0 4.4 3.6 8 8 8l16 0c4.4 0 8-3.6 8-8l0-8c0-8.8 7.2-16 16-16s16 7.2 16 16l0 8c0 22.1-17.9 40-40 40l-16 0c-22.1 0-40-17.9-40-40l0-80c0-22.1 17.9-40 40-40zm133.1 0l34.9 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-34.9 0c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1L304 512c-8.8 0-16-7.2-16-16s7.2-16 16-16l42.9 0c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16l0 31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66l0-31.6c0-8.8 7.2-16 16-16s16 7.2 16 16l0 31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6l0-31.6c0-8.8 7.2-16 16-16z\"]\n};\nconst faMenorah = {\n  prefix: 'fas',\n  iconName: 'menorah',\n  icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1L64 64c0 17.7-14.3 32-32 32S0 81.7 0 64l0-1.2c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32l0 128c0 17.7 14.3 32 32 32l192 0 0-160c0-17.7 14.3-32 32-32s32 14.3 32 32l0 160 192 0c17.7 0 32-14.3 32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 128c0 53-43 96-96 96l-192 0 0 64 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0 0-64L96 384c-53 0-96-43-96-96L0 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32z\"]\n};\nconst faTruckPlane = {\n  prefix: 'fas',\n  iconName: 'truck-plane',\n  icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1l0 106.5L7.8 274.3C2.9 277.2 0 282.4 0 288l0 64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37 0 81.2-50 40c-3.8 3-6 7.6-6 12.5l0 32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15l0-32.6c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1 0-3.5 0-82.5L256 184l0-1.1s0 0 0 0l0-96.9C256 54.7 231.5 0 200 0zm88 176l0 224c0 20.9 13.4 38.7 32 45.3l0 42.7c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-40 160 0 0 40c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-42.7c18.6-6.6 32-24.4 32-45.3l0-224c0-26.5-21.5-48-48-48l-256 0c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7l151.4 0c9.2 0 17.2 6 20.5 14.7L576 304l-224 0 15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faRecordVinyl = {\n  prefix: 'fas',\n  iconName: 'record-vinyl',\n  icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faFaceGrinStars = {\n  prefix: 'fas',\n  iconName: 'face-grin-stars',\n  icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nconst faGrinStars = faFaceGrinStars;\nconst faBong = {\n  prefix: 'fas',\n  iconName: 'bong',\n  icon: [448, 512, [], \"f55c\", \"M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7l221.8 0c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8L224 64l-64 0 0 144.5zM288 64l0 144.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5L76.1 512c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14L96 64C78.3 64 64 49.7 64 32S78.3 0 96 0l16 0L272 0l16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nconst faSpaghettiMonsterFlying = {\n  prefix: 'fas',\n  iconName: 'spaghetti-monster-flying',\n  icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1c0 0 0 0 0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faPastafarianism = faSpaghettiMonsterFlying;\nconst faArrowDownUpAcrossLine = {\n  prefix: 'fas',\n  iconName: 'arrow-down-up-across-line',\n  icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7 192 288l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0 0-114.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3 384 224l-192 0-64 0-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 114.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192l64 0 0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128zM448 320l-64 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128z\"]\n};\nconst faSpoon = {\n  prefix: 'fas',\n  iconName: 'spoon',\n  icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nconst faUtensilSpoon = faSpoon;\nconst faJarWheat = {\n  prefix: 'fas',\n  iconName: 'jar-wheat',\n  icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0L256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64l192 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 160zm112 0l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224l21.8 0 32 0 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 160c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320l21.8 0 32 0 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 256c-19.1 0-36.3 8.4-48 21.7zM112 352l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416l21.8 0 0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 352c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nconst faEnvelopesBulk = {\n  prefix: 'fas',\n  iconName: 'envelopes-bulk',\n  icon: [640, 512, [\"mail-bulk\"], \"f674\", \"M128 0C110.3 0 96 14.3 96 32l0 192 96 0 0-32c0-35.3 28.7-64 64-64l224 0 0-96c0-17.7-14.3-32-32-32L128 0zM256 160c-17.7 0-32 14.3-32 32l0 32 96 0c35.3 0 64 28.7 64 64l0 128 192 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-320 0zm240 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32l0 13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301l0-13c0-17.7-14.3-32-32-32L64 256zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8 32 480c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32l0-139.2z\"]\n};\nconst faMailBulk = faEnvelopesBulk;\nconst faFileCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'file-circle-exclamation',\n  icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faCircleH = {\n  prefix: 'fas',\n  iconName: 'circle-h',\n  icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152l0 104 0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80-128 0 0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80 128 0 0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faHospitalSymbol = faCircleH;\nconst faPager = {\n  prefix: 'fas',\n  iconName: 'pager',\n  icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 64c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z\"]\n};\nconst faAddressBook = {\n  prefix: 'fas',\n  iconName: 'address-book',\n  icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L96 0zM208 288l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zM496 192c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64z\"]\n};\nconst faContactBook = faAddressBook;\nconst faStrikethrough = {\n  prefix: 'fas',\n  iconName: 'strikethrough',\n  icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-209.9 0-.4-.1-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3c0 0 0 0 0 0s0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6c0 0 0 0 0 0l.2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1l-75.7 0c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nconst faK = {\n  prefix: 'fas',\n  iconName: 'k',\n  icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 328 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-107 64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nconst faLandmarkFlag = {\n  prefix: 'fas',\n  iconName: 'landmark-flag',\n  icon: [512, 512, [], \"e51c\", \"M272 0l80 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-80 0 0 32 192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L48 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0 0-112c0-8.8 7.2-16 16-16l16 0zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z\"]\n};\nconst faPencil = {\n  prefix: 'fas',\n  iconName: 'pencil',\n  icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1 0 32c0 8.8 7.2 16 16 16l32 0zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faPencilAlt = faPencil;\nconst faBackward = {\n  prefix: 'fas',\n  iconName: 'backward',\n  icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-320c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3l0 41.7 0 41.7L459.5 440.6zM256 352l0-96 0-128 0-32c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-64z\"]\n};\nconst faCaretRight = {\n  prefix: 'fas',\n  iconName: 'caret-right',\n  icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nconst faComments = {\n  prefix: 'fas',\n  iconName: 'comments',\n  icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2s0 0 0 0s0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.2-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9c0 0 0 0 0 0s0 0 0 0l-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nconst faPaste = {\n  prefix: 'fas',\n  iconName: 'paste',\n  icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32L48 32C21.5 32 0 53.5 0 80L0 400c0 26.5 21.5 48 48 48l144 0 0-272c0-44.2 35.8-80 80-80l48 0 0-16c0-26.5-21.5-48-48-48l-56.6 0C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48l0 272 0 16c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-220.1c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1L320 128l-48 0zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faFileClipboard = faPaste;\nconst faCodePullRequest = {\n  prefix: 'fas',\n  iconName: 'code-pull-request',\n  icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24l0 40 16 0c70.7 0 128 57.3 128 128l0 166.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3L400 192c0-35.3-28.7-64-64-64l-16 0 0 40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3l0 205.3c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-205.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faClipboardList = {\n  prefix: 'fas',\n  iconName: 'clipboard-list',\n  icon: [384, 512, [], \"f46d\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faTruckRampBox = {\n  prefix: 'fas',\n  iconName: 'truck-ramp-box',\n  icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0l0 400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8 352 64c0-35.3 28.7-64 64-64L640 0zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nconst faTruckLoading = faTruckRampBox;\nconst faUserCheck = {\n  prefix: 'fas',\n  iconName: 'user-check',\n  icon: [640, 512, [], \"f4fc\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faVialVirus = {\n  prefix: 'fas',\n  iconName: 'vial-virus',\n  icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l0 288c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5L224 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0L96 32 32 32zM96 192l0-96 64 0 0 96-64 0zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faSheetPlastic = {\n  prefix: 'fas',\n  iconName: 'sheet-plastic',\n  icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64l160 0 0-128c0-17.7 14.3-32 32-32l128 0 0-288c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384l-128 0 0 128L384 384z\"]\n};\nconst faBlog = {\n  prefix: 'fas',\n  iconName: 'blog',\n  icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144L0 368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144l-16 0 0 96 16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48l0-224z\"]\n};\nconst faUserNinja = {\n  prefix: 'fas',\n  iconName: 'user-ninja',\n  icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L160 96z\"]\n};\nconst faPersonArrowUpFromLine = {\n  prefix: 'fas',\n  iconName: 'person-arrow-up-from-line',\n  icon: [640, 512, [], \"e539\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352l0-96 16 0 0 96-16 0zm-64 0l-88 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l120 0 80 0 376 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-344 0 0-191.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-242.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nconst faScrollTorah = {\n  prefix: 'fas',\n  iconName: 'scroll-torah',\n  icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480L96 32C96 14.3 74.5 0 48 0S0 14.3 0 32L0 480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32L128 32l0 448 384 0 0-448zM592 0c-26.5 0-48 14.3-48 32l0 448c0 17.7 21.5 32 48 32s48-14.3 48-32l0-448c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3l56.7 0 31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180l56.7 0c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3L369 332l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332l-56.7 0c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332l-42.4 0L320 368.4zM254.5 256l30.3 52 70.4 0 30.3-52-30.3-52-70.4 0-30.3 52zm144.9 23.8L383 308l32.8 0-16.4-28.2zM415.8 204L383 204l16.4 28.2L415.8 204zM320 143.6L298.8 180l42.4 0L320 143.6zM224.2 204l16.4 28.2L257 204l-32.8 0zM257 308l-16.4-28.2L224.2 308l32.8 0z\"]\n};\nconst faTorah = faScrollTorah;\nconst faBroomBall = {\n  prefix: 'fas',\n  iconName: 'broom-ball',\n  icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6l-29.1 0L256 211.7l0-29.1c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faQuidditch = faBroomBall;\nconst faQuidditchBroomBall = faBroomBall;\nconst faToggleOff = {\n  prefix: 'fas',\n  iconName: 'toggle-off',\n  icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128l-192 0c-70.7 0-128-57.3-128-128s57.3-128 128-128l192 0zM576 256c0-106-86-192-192-192L192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faBoxArchive = {\n  prefix: 'fas',\n  iconName: 'box-archive',\n  icon: [512, 512, [\"archive\"], \"f187\", \"M32 32l448 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96L0 64C0 46.3 14.3 32 32 32zm0 128l448 0 0 256c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64l0-256zm128 80c0 8.8 7.2 16 16 16l160 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-160 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faArchive = faBoxArchive;\nconst faPersonDrowning = {\n  prefix: 'fas',\n  iconName: 'person-drowning',\n  icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3L192 64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faArrowDown91 = {\n  prefix: 'fas',\n  iconName: 'arrow-down-9-1',\n  icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 301.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l48 0 48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nconst faSortNumericDesc = faArrowDown91;\nconst faSortNumericDownAlt = faArrowDown91;\nconst faFaceGrinTongueSquint = {\n  prefix: 'fas',\n  iconName: 'face-grin-tongue-squint',\n  icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448l0-47.3c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6l0 46.9c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGrinTongueSquint = faFaceGrinTongueSquint;\nconst faSprayCan = {\n  prefix: 'fas',\n  iconName: 'spray-can',\n  icon: [512, 512, [], \"f5bd\", \"M128 0l64 0c17.7 0 32 14.3 32 32l0 96L96 128l0-96c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96l128 0c53 0 96 43 96 96l0 208c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faTruckMonster = {\n  prefix: 'fas',\n  iconName: 'truck-monster',\n  icon: [640, 512, [], \"f63b\", \"M288 64l0 64 128 0L368 64l-80 0zM419.2 25.6L496 128l80 0c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64l-64 0c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l160 0 0-80c0-26.5 21.5-48 48-48l96 0c20.1 0 39.1 9.5 51.2 25.6zM152 256l16 0c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8l0 16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512l-16 0c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392l0-16c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6l16 0c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8l0 16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512l-16 0c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392l0-16c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faW = {\n  prefix: 'fas',\n  iconName: 'w',\n  icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nconst faEarthAfrica = {\n  prefix: 'fas',\n  iconName: 'earth-africa',\n  icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9l0 41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32l0 28c0 26.5 21.5 48 48 48l32 0c8.8 0 16 7.2 16 16l0 48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4l0-12.1c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faGlobeAfrica = faEarthAfrica;\nconst faRainbow = {\n  prefix: 'fas',\n  iconName: 'rainbow',\n  icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96C0 175.3 143.3 32 320 32s320 143.3 320 320l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-70.7 57.3-128 128-128s128 57.3 128 128l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-35.3-28.7-64-64-64zM160 352l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-123.7 100.3-224 224-224s224 100.3 224 224l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nconst faCircleNotch = {\n  prefix: 'fas',\n  iconName: 'circle-notch',\n  icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nconst faTabletScreenButton = {\n  prefix: 'fas',\n  iconName: 'tablet-screen-button',\n  icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0L384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64L64 64l0 320 320 0 0-320z\"]\n};\nconst faTabletAlt = faTabletScreenButton;\nconst faPaw = {\n  prefix: 'fas',\n  iconName: 'paw',\n  icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5l0 1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3l0-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nconst faCloud = {\n  prefix: 'fas',\n  iconName: 'cloud',\n  icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nconst faTrowelBricks = {\n  prefix: 'fas',\n  iconName: 'trowel-bricks',\n  icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32l0 72 89 0c3.6-13.8 16.1-24 31-24l88 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-88 0c-14.9 0-27.4-10.2-31-24l-89 0 0 72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-64zM32 384l96 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm192 0l256 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32z\"]\n};\nconst faFaceFlushed = {\n  prefix: 'fas',\n  iconName: 'face-flushed',\n  icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faFlushed = faFaceFlushed;\nconst faHospitalUser = {\n  prefix: 'fas',\n  iconName: 'hospital-user',\n  icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48L0 256l144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L0 288l0 64 144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L0 384l0 80c0 26.5 21.5 48 48 48l217.9 0c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2l0-95.9L320 48c0-26.5-21.5-48-48-48L48 0zM152 64l16 0c8.8 0 16 7.2 16 16l0 24 24 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-24 0 0 24c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-24-24 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16l24 0 0-24c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9l218.2 0c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1l-101.8 0c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nconst faTentArrowLeftRight = {\n  prefix: 'fas',\n  iconName: 'tent-arrow-left-right',\n  icon: [576, 512, [], \"e57f\", \"M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faGavel = {\n  prefix: 'fas',\n  iconName: 'gavel',\n  icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nconst faLegal = faGavel;\nconst faBinoculars = {\n  prefix: 'fas',\n  iconName: 'binoculars',\n  icon: [512, 512, [], \"f1e5\", \"M128 32l32 0c17.7 0 32 14.3 32 32l0 32L96 96l0-32c0-17.7 14.3-32 32-32zm64 96l0 320c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32l0-59.1c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28l99.8 0zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3l0 59.1c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-320 99.8 0zM320 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 32-96 0 0-32zm-32 64l0 160-64 0 0-160 64 0z\"]\n};\nconst faMicrophoneSlash = {\n  prefix: 'fas',\n  iconName: 'microphone-slash',\n  icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 21.2-5.1 41.1-14.2 58.7L416 300.8 416 96c0-53-43-96-96-96s-96 43-96 96l0 54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128l0-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6z\"]\n};\nconst faBoxTissue = {\n  prefix: 'fas',\n  iconName: 'box-tissue',\n  icon: [512, 512, [], \"e05b\", \"M92.5 0L208 0c40 0 52 24 64 48s24 48 64 48l85.2 0C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288l-256 0-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64-15 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 256 0 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-13.5 0 25.6-64 19.9 0c26.5 0 48 21.5 48 48l0 112L0 384 0 272c0-26.5 21.5-48 48-48l31 0zM0 416l512 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48l0-48z\"]\n};\nconst faMotorcycle = {\n  prefix: 'fas',\n  iconName: 'motorcycle',\n  icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l57.7 0 16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7L64 128c-17.7 0-32 14.3-32 32l0 32 96 0c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32l70.4 0c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128l61.8 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-20.4 0c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21L280 32zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40l66.4 0C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104l-66.4 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBellConcierge = {\n  prefix: 'fas',\n  iconName: 'bell-concierge',\n  icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.3C119.6 157.2 32 252.4 32 368l448 0c0-115.6-87.6-210.8-200-222.7l0-33.3 16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0-40 0zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24l464 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 400z\"]\n};\nconst faConciergeBell = faBellConcierge;\nconst faPenRuler = {\n  prefix: 'fas',\n  iconName: 'pen-ruler',\n  icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nconst faPencilRuler = faPenRuler;\nconst faPeopleArrows = {\n  prefix: 'fas',\n  iconName: 'people-arrows',\n  icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160l44.8 0c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2l0 72.8c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-115.7c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1l44.8 0c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6L576 464c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-72.8 47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240l0 32 96 0 0-32c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-32-96 0 0 32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nconst faPeopleArrowsLeftRight = faPeopleArrows;\nconst faMarsAndVenusBurst = {\n  prefix: 'fas',\n  iconName: 'mars-and-venus-burst',\n  icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8l0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .3 0 .4 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1c0 0 0 .1 0 .1s0 .1 0 .1l0 .1c0 0 0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0l24 0-24 0c0 13.3 10.7 24 24 24s24-10.7 24-24l-24 0 24 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1l0-.1c0 0 0-.1 0-.1s0-.1 0-.1l0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 24 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-24 0 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.4 0-.3 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L504 0zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nconst faSquareCaretRight = {\n  prefix: 'fas',\n  iconName: 'square-caret-right',\n  icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nconst faCaretSquareRight = faSquareCaretRight;\nconst faScissors = {\n  prefix: 'fas',\n  iconName: 'scissors',\n  icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCut = faScissors;\nconst faSunPlantWilt = {\n  prefix: 'fas',\n  iconName: 'sun-plant-wilt',\n  icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32l0 53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6l0-53.4c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80l0 21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6l0-21.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 8 0 168L32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-104 0 0-168 0-8 0-96z\"]\n};\nconst faToiletsPortable = {\n  prefix: 'fas',\n  iconName: 'toilets-portable',\n  icon: [576, 512, [], \"e584\", \"M32 0L224 0c17.7 0 32 14.3 32 32l0 32L0 64 0 32C0 14.3 14.3 0 32 0zM0 96l24 0 208 0 24 0 0 24 0 368c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8L48 480l0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24L0 120 0 96zM192 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zM352 0L544 0c17.7 0 32 14.3 32 32l0 32L320 64l0-32c0-17.7 14.3-32 32-32zM320 96l24 0 208 0 24 0 0 24 0 368c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-160 0 0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-368 0-24zM512 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16z\"]\n};\nconst faHockeyPuck = {\n  prefix: 'fas',\n  iconName: 'hockey-puck',\n  icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6L512 352c0 53-114.6 96-256 96S0 405 0 352L0 222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nconst faTable = {\n  prefix: 'fas',\n  iconName: 'table',\n  icon: [512, 512, [], \"f0ce\", \"M64 256l0-96 160 0 0 96L64 256zm0 64l160 0 0 96L64 416l0-96zm224 96l0-96 160 0 0 96-160 0zM448 256l-160 0 0-96 160 0 0 96zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faMagnifyingGlassArrowRight = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-arrow-right',\n  icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31L120 184c-13.3 0-24 10.7-24 24s10.7 24 24 24l118.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nconst faTachographDigital = {\n  prefix: 'fas',\n  iconName: 'tachograph-digital',\n  icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l512 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm32 64l224 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 256c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16l256 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faDigitalTachograph = faTachographDigital;\nconst faUsersSlash = {\n  prefix: 'fas',\n  iconName: 'users-slash',\n  icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320l178.1 0c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192l-42.7 0c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320l213.3 0c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192l-15.2 0zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7l330.7 0c10.5 0 19.5-6 23.9-14.8L324.9 352l-63.6 0zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z\"]\n};\nconst faClover = {\n  prefix: 'fas',\n  iconName: 'clover',\n  icon: [448, 512, [], \"e139\", \"M216.6 49.9C205.1 38.5 189.5 32 173.3 32C139.4 32 112 59.4 112 93.3l0 4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4l-4.9 0C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368l4.9 0c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34l0 4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3l0-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4l4.9 0c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3l-4.9 0c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34l0-4.9C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2z\"]\n};\nconst faReply = {\n  prefix: 'fas',\n  iconName: 'reply',\n  icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2l0 64 112 0c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96l-96 0 0 64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nconst faMailReply = faReply;\nconst faStarAndCrescent = {\n  prefix: 'fas',\n  iconName: 'star-and-crescent',\n  icon: [512, 512, [9770], \"f699\", \"M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nconst faHouseFire = {\n  prefix: 'fas',\n  iconName: 'house-fire',\n  icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9-32 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM480 512c-88.4 0-160-71.6-160-160c0-76.7 62.5-144.7 107.2-179.4c5-3.9 10.9-5.8 16.8-5.8c7.9-.1 16 3.1 22 9.2l46 46 11.3-11.3c11.7-11.7 30.6-12.7 42.3-1C624.5 268 640 320.2 640 352c0 88.4-71.6 160-160 160zm64-111.8c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 327.1 416 363.6 416 400.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faSquareMinus = {\n  prefix: 'fas',\n  iconName: 'square-minus',\n  icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 200l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMinusSquare = faSquareMinus;\nconst faHelicopter = {\n  prefix: 'fas',\n  iconName: 'helicopter',\n  icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32L544 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L384 64l0 64 32 0c88.4 0 160 71.6 160 160l0 64c0 17.7-14.3 32-32 32l-160 0-64 0c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64L48 64c10.1 0 19.6 4.7 25.6 12.8L112 128l208 0 0-64L160 64c-17.7 0-32-14.3-32-32zM384 320l128 0 0-32c0-53-43-96-96-96l-32 0 0 128zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5L256 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l280.2 0c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nconst faCompass = {\n  prefix: 'fas',\n  iconName: 'compass',\n  icon: [512, 512, [129517], \"f14e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faSquareCaretDown = {\n  prefix: 'fas',\n  iconName: 'square-caret-down',\n  icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nconst faCaretSquareDown = faSquareCaretDown;\nconst faFileCircleQuestion = {\n  prefix: 'fas',\n  iconName: 'file-circle-question',\n  icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6l0 6.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-6.4c0-5.3 4.3-9.6 9.6-9.6l40.5 0c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2l0 14.8c0 8.8 7.2 16 16 16s16-7.2 16-16l0-5.1 23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9l-40.5 0c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nconst faLaptopCode = {\n  prefix: 'fas',\n  iconName: 'laptop-code',\n  icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 256-64 0 0-256L128 96l0 256-64 0L64 96zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faSwatchbook = {\n  prefix: 'fas',\n  iconName: 'swatchbook',\n  icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0L160 0c17.7 0 32 14.3 32 32l0 384c0 53-43 96-96 96s-96-43-96-96L0 32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9l0-262 75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192L480 320c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-297.2 0zM128 64L64 64l0 64 64 0 0-64zM64 192l0 64 64 0 0-64-64 0zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faPrescriptionBottle = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle',\n  icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zm32 96l320 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-32 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 384l0-64 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 288l0-64 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 192l0-64z\"]\n};\nconst faBars = {\n  prefix: 'fas',\n  iconName: 'bars',\n  icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faNavicon = faBars;\nconst faPeopleGroup = {\n  prefix: 'fas',\n  iconName: 'people-group',\n  icon: [640, 512, [], \"e533\", \"M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3l0-84.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5l0 21.5c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-26.8C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112l32 0c24 0 46.2 7.5 64.4 20.3zM448 416l0-21.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176l32 0c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2l0 26.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3l0-84.7c-10 11.3-16 26.1-16 42.3zm144-42.3l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2l0 42.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-42.8c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112l32 0c61.9 0 112 50.1 112 112z\"]\n};\nconst faHourglassEnd = {\n  prefix: 'fas',\n  iconName: 'hourglass-end',\n  icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM96 75l0-11 192 0 0 11c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nconst faHourglass3 = faHourglassEnd;\nconst faHeartCrack = {\n  prefix: 'fas',\n  iconName: 'heart-crack',\n  icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1l0 5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9l0-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nconst faHeartBroken = faHeartCrack;\nconst faSquareUpRight = {\n  prefix: 'fas',\n  iconName: 'square-up-right',\n  icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM160 160c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l40 40-71 71C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7l71-71 40 40c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8l0-144c0-8.8-7.2-16-16-16l-144 0z\"]\n};\nconst faExternalLinkSquareAlt = faSquareUpRight;\nconst faFaceKissBeam = {\n  prefix: 'fas',\n  iconName: 'face-kiss-beam',\n  icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faKissBeam = faFaceKissBeam;\nconst faFilm = {\n  prefix: 'fas',\n  iconName: 'film',\n  icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM48 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 240l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L64 96c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM160 128l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L192 96c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0z\"]\n};\nconst faRulerHorizontal = {\n  prefix: 'fas',\n  iconName: 'ruler-horizontal',\n  icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nconst faPeopleRobbery = {\n  prefix: 'fas',\n  iconName: 'people-robbery',\n  icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6L328 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-305.7c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64l0 96 0 .6L8 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-227.3 13 20.5c5.9 9.2 16.1 14.9 27 14.9l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-30.4 0-37.4-58.9C157.6 142 132.1 128 104.7 128L72 128z\"]\n};\nconst faLightbulb = {\n  prefix: 'fas',\n  iconName: 'lightbulb',\n  icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2c0 0 0 0 0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4c0 0 0 0 0 0c19.8 27.1 39.7 54.4 49.2 86.2l160 0zM192 512c44.2 0 80-35.8 80-80l0-16-160 0 0 16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nconst faCaretLeft = {\n  prefix: 'fas',\n  iconName: 'caret-left',\n  icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nconst faCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'circle-exclamation',\n  icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faExclamationCircle = faCircleExclamation;\nconst faSchoolCircleXmark = {\n  prefix: 'fas',\n  iconName: 'school-circle-xmark',\n  icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nconst faArrowRightFromBracket = {\n  prefix: 'fas',\n  iconName: 'arrow-right-from-bracket',\n  icon: [512, 512, [\"sign-out\"], \"f08b\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nconst faSignOut = faArrowRightFromBracket;\nconst faCircleChevronDown = {\n  prefix: 'fas',\n  iconName: 'circle-chevron-down',\n  icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nconst faChevronCircleDown = faCircleChevronDown;\nconst faUnlockKeyhole = {\n  prefix: 'fas',\n  iconName: 'unlock-keyhole',\n  icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80l0 48 240 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0 0-48C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0z\"]\n};\nconst faUnlockAlt = faUnlockKeyhole;\nconst faCloudShowersHeavy = {\n  prefix: 'fas',\n  iconName: 'cloud-showers-heavy',\n  icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96L96 320zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nconst faHeadphonesSimple = {\n  prefix: 'fas',\n  iconName: 'headphones-simple',\n  icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24L0 288C0 146.6 114.6 32 256 32s256 114.6 256 256l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64l16 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-16 0c-35.3 0-64-28.7-64-64l0-64zm288-64c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-16 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l16 0z\"]\n};\nconst faHeadphonesAlt = faHeadphonesSimple;\nconst faSitemap = {\n  prefix: 'fas',\n  iconName: 'sitemap',\n  icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-8 0 0 40 152 0c30.9 0 56 25.1 56 56l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-4.4-3.6-8-8-8l-152 0 0 40 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-40-152 0c-4.4 0-8 3.6-8 8l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-30.9 25.1-56 56-56l152 0 0-40-8 0c-26.5 0-48-21.5-48-48l0-64z\"]\n};\nconst faCircleDollarToSlot = {\n  prefix: 'fas',\n  iconName: 'circle-dollar-to-slot',\n  icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3l-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1l0 6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1l0 6.4c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1l0-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4l0-6.3c0-11.1-9-20.1-20.1-20.1zM48 352l16 0c19.5 25.9 44 47.7 72.2 64L64 416l0 32 192 0 192 0 0-32-72.2 0c28.2-16.3 52.8-38.1 72.2-64l16 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48z\"]\n};\nconst faDonate = faCircleDollarToSlot;\nconst faMemory = {\n  prefix: 'fas',\n  iconName: 'memory',\n  icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128l0 7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6L0 320l576 0 0-71.4c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3l0-7.4c0-35.3-28.7-64-64-64L64 64zM576 352L0 352l0 64c0 17.7 14.3 32 32 32l48 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 48 0c17.7 0 32-14.3 32-32l0-64zM192 160l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faRoadSpikes = {\n  prefix: 'fas',\n  iconName: 'road-spikes',\n  icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256l0-139.2c0-15.8 20.5-22 29.3-8.9L320 256l0-139.2c0-15.8 20.5-22 29.3-8.9L448 256l0-139.2c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7L512 352l-64 0-64 0-64 0-64 0-64 0L64 352l0-235.2zM32 384l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFireBurner = {\n  prefix: 'fas',\n  iconName: 'fire-burner',\n  icon: [640, 512, [], \"e4f1\", \"M345.7 48.3L358 34.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C469 131.2 480 162.2 480 192.2C480 280.8 408.7 352 320 352c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2C273.4 2.3 280.7-.2 288 0c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM384 240.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C293 167.1 256 203.6 256 240.2c0 35.3 28.7 64 64 64s64-28.7 64-64zM32 288c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64 448 0 0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l0-96zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faFlag = {\n  prefix: 'fas',\n  iconName: 'flag',\n  icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32L0 64 0 368 0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30l0-247.7c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48l0-16z\"]\n};\nconst faHanukiah = {\n  prefix: 'fas',\n  iconName: 'hanukiah',\n  icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176L96 320c-17.7 0-32-14.3-32-32l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 53 43 96 96 96l192 0 0 64-128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-64 192 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32l-192 0 0-176z\"]\n};\nconst faFeather = {\n  prefix: 'fas',\n  iconName: 'feather',\n  icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57 68 0c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330l0 55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nconst faVolumeLow = {\n  prefix: 'fas',\n  iconName: 'volume-low',\n  icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nconst faVolumeDown = faVolumeLow;\nconst faCommentSlash = {\n  prefix: 'fas',\n  iconName: 'comment-slash',\n  icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zm385.2 425L82.9 161.3C70.7 185.6 64 212.2 64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104.1-17.9z\"]\n};\nconst faCloudSunRain = {\n  prefix: 'fas',\n  iconName: 'cloud-sun-rain',\n  icon: [640, 512, [127782], \"f743\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faCompress = {\n  prefix: 'fas',\n  iconName: 'compress',\n  icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 320c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0z\"]\n};\nconst faWheatAwn = {\n  prefix: 'fas',\n  iconName: 'wheat-awn',\n  icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nconst faWheatAlt = faWheatAwn;\nconst faAnkh = {\n  prefix: 'fas',\n  iconName: 'ankh',\n  icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-46.8 0c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nconst faHandsHoldingChild = {\n  prefix: 'fas',\n  iconName: 'hands-holding-child',\n  icon: [640, 512, [], \"e4fa\", \"M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35-7.6 0-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40l0 40 0 80 0 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2c0 0 0 0 0 0l25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 224l0-64 0-56C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 56 0 64 0 101.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3c0 0 0 0 0 0l15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3l0-40.2 0-80 0-40c0-22.1 17.9-40 40-40z\"]\n};\nconst faAsterisk = {\n  prefix: 'fas',\n  iconName: 'asterisk',\n  icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32l0 135.5 111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5 224 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-135.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5 160 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faSquareCheck = {\n  prefix: 'fas',\n  iconName: 'square-check',\n  icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faCheckSquare = faSquareCheck;\nconst faPesetaSign = {\n  prefix: 'fas',\n  iconName: 'peseta-sign',\n  icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64l0 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 96 0c77.4 0 142-55 156.8-128l3.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-3.2 0C334 87 269.4 32 192 32L64 32zM282.5 160L96 160l0-64 96 0c41.8 0 77.4 26.7 90.5 64zM96 224l186.5 0c-13.2 37.3-48.7 64-90.5 64l-96 0 0-64z\"]\n};\nconst faHeading = {\n  prefix: 'fas',\n  iconName: 'heading',\n  icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32l48 0 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 112 224 0 0-112-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 144 0 176 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-144-224 0 0 144 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-176L48 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faHeader = faHeading;\nconst faGhost = {\n  prefix: 'fas',\n  iconName: 'ghost',\n  icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2L0 192C0 86 86 0 192 0S384 86 384 192l0 270.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faList = {\n  prefix: 'fas',\n  iconName: 'list',\n  icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24L40 48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM16 232l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0z\"]\n};\nconst faListSquares = faList;\nconst faSquarePhoneFlip = {\n  prefix: 'fas',\n  iconName: 'square-phone-flip',\n  icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nconst faPhoneSquareAlt = faSquarePhoneFlip;\nconst faCartPlus = {\n  prefix: 'fas',\n  iconName: 'cart-plus',\n  icon: [576, 512, [], \"f217\", \"M0 24C0 10.7 10.7 0 24 0L69.5 0c22 0 41.5 12.8 50.6 32l411 0c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3l-288.5 0 5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5L488 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-288.3 0c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5L24 48C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20l44 0 0 44c0 11 9 20 20 20s20-9 20-20l0-44 44 0c11 0 20-9 20-20s-9-20-20-20l-44 0 0-44c0-11-9-20-20-20s-20 9-20 20l0 44-44 0c-11 0-20 9-20 20z\"]\n};\nconst faGamepad = {\n  prefix: 'fas',\n  iconName: 'gamepad',\n  icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448l256 0c106 0 192-86 192-192s-86-192-192-192L192 64zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32z\"]\n};\nconst faCircleDot = {\n  prefix: 'fas',\n  iconName: 'circle-dot',\n  icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faDotCircle = faCircleDot;\nconst faFaceDizzy = {\n  prefix: 'fas',\n  iconName: 'face-dizzy',\n  icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faDizzy = faFaceDizzy;\nconst faEgg = {\n  prefix: 'fas',\n  iconName: 'egg',\n  icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nconst faHouseMedicalCircleXmark = {\n  prefix: 'fas',\n  iconName: 'house-medical-circle-xmark',\n  icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nconst faCampground = {\n  prefix: 'fas',\n  iconName: 'campground',\n  icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4L0 464c0 26.5 21.5 48 48 48l240 0 240 0c26.5 0 48-21.5 48-48l0-23.6c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448l-119.5 0L288 291.7 407.5 448 288 448z\"]\n};\nconst faFolderPlus = {\n  prefix: 'fas',\n  iconName: 'folder-plus',\n  icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64l0 256zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z\"]\n};\nconst faFutbol = {\n  prefix: 'fas',\n  iconName: 'futbol',\n  icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6l59.2 0c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nconst faFutbolBall = faFutbol;\nconst faSoccerBall = faFutbol;\nconst faPaintbrush = {\n  prefix: 'fas',\n  iconName: 'paintbrush',\n  icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448L64 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nconst faPaintBrush = faPaintbrush;\nconst faLock = {\n  prefix: 'fas',\n  iconName: 'lock',\n  icon: [448, 512, [128274], \"f023\", \"M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z\"]\n};\nconst faGasPump = {\n  prefix: 'fas',\n  iconName: 'gas-pump',\n  icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0L256 0c35.3 0 64 28.7 64 64l0 192 8 0c48.6 0 88 39.4 88 88l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-154c-27.6-7.1-48-32.2-48-62l0-64L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3l0 13.5 0 24 0 32 0 152c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-32c0-22.1-17.9-40-40-40l-8 0 0 144c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 64zM96 80l0 96c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16L112 64c-8.8 0-16 7.2-16 16z\"]\n};\nconst faHotTubPerson = {\n  prefix: 'fas',\n  iconName: 'hot-tub-person',\n  icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5l0 13.2c0 13.3 10.7 24 24 24s24-10.7 24-24l0-13.2c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2l0-5.2zM0 320l0 16L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-170.7 0c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96l0 64zm128 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zm112 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24l0 5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5l0 13.2c0 13.3 10.7 24 24 24s24-10.7 24-24l0-13.2c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2l0-5.2c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z\"]\n};\nconst faHotTub = faHotTubPerson;\nconst faMapLocation = {\n  prefix: 'fas',\n  iconName: 'map-location',\n  icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3L576 152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6L416 503zM15.1 187.3C6 191 0 199.8 0 209.6L0 480.4c0 17 17.1 28.6 32.9 22.3L160 451.8l0-251.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77l0 194.4 192 54.9L384 255z\"]\n};\nconst faMapMarked = faMapLocation;\nconst faHouseFloodWater = {\n  prefix: 'fas',\n  iconName: 'house-flood-water',\n  icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192l16 0 0 73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2 16.6 0c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nconst faTree = {\n  prefix: 'fas',\n  iconName: 'tree',\n  icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208l24.9 0L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320L80 320 5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5L192 448l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 168.5 0c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320l33.4 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208l24.9 0c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nconst faBridgeLock = {\n  prefix: 'fas',\n  iconName: 'bridge-lock',\n  icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-40 0 0 64-8 0c-61.9 0-112 50.1-112 112l0 24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c0-53-43-96-96-96l0-128 72 0 0-64L64 96C46.3 96 32 81.7 32 64zM408 96l0 64 80 0 0-64-80 0zm-48 64l0-64-80 0 0 64 80 0zM152 96l0 64 80 0 0-64-80 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faSackDollar = {\n  prefix: 'fas',\n  iconName: 'sack-dollar',\n  icon: [512, 512, [128176], \"f81d\", \"M320 96L192 96 144.6 24.9C137.5 14.2 145.1 0 157.9 0L354.1 0c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128l128 0c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96L96 512c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4c0 0 0 0 0 0s0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15c0 0 0 0 0 0l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7l0-13.9z\"]\n};\nconst faPenToSquare = {\n  prefix: 'fas',\n  iconName: 'pen-to-square',\n  icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 64z\"]\n};\nconst faEdit = faPenToSquare;\nconst faCarSide = {\n  prefix: 'fas',\n  iconName: 'car-side',\n  icon: [640, 512, [128663], \"f5e4\", \"M171.3 96L224 96l0 96-112.7 0 30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192l0-96 81.2 0c9.7 0 18.9 4.4 25 12l67.2 84L272 192zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36L171.3 32c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256L0 368c0 17.7 14.3 32 32 32l33.3 0c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80l130.7 0c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80l33.3 0c17.7 0 32-14.3 32-32l0-48c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faShareNodes = {\n  prefix: 'fas',\n  iconName: 'share-nodes',\n  icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nconst faShareAlt = faShareNodes;\nconst faHeartCircleMinus = {\n  prefix: 'fas',\n  iconName: 'heart-circle-minus',\n  icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faHourglassHalf = {\n  prefix: 'fas',\n  iconName: 'hourglass-half',\n  icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM96 75l0-11 192 0 0 11c0 19-5.6 37.4-16 53L112 128c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9L112 384z\"]\n};\nconst faHourglass2 = faHourglassHalf;\nconst faMicroscope = {\n  prefix: 'fas',\n  iconName: 'microscope',\n  icon: [512, 512, [128300], \"f610\", \"M160 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32l0-224c0-17.7 14.3-32 32-32zM32 448l288 0c70.7 0 128-57.3 128-128s-57.3-128-128-128l0-64c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128l16.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faSink = {\n  prefix: 'fas',\n  iconName: 'sink',\n  icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96l0 192-64 0 0-24c0-30.9-25.1-56-56-56l-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c4.4 0 8 3.6 8 8l0 24-80 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0 224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-24c0-4.4 3.6-8 8-8l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0c-30.9 0-56 25.1-56 56l0 24-64 0 0-192zM480 416l0-32L32 384l0 32c0 53 43 96 96 96l256 0c53 0 96-43 96-96z\"]\n};\nconst faBagShopping = {\n  prefix: 'fas',\n  iconName: 'bag-shopping',\n  icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64l0 48-128 0 0-48zm-48 48l-64 0c-26.5 0-48 21.5-48 48L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-208c0-26.5-21.5-48-48-48l-64 0 0-48C336 50.1 285.9 0 224 0S112 50.1 112 112l0 48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faShoppingBag = faBagShopping;\nconst faArrowDownZA = {\n  prefix: 'fas',\n  iconName: 'arrow-down-z-a',\n  icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7 128 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96 352 96c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448l-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400l40.4 0L416 359.6 395.8 400z\"]\n};\nconst faSortAlphaDesc = faArrowDownZA;\nconst faSortAlphaDownAlt = faArrowDownZA;\nconst faMitten = {\n  prefix: 'fas',\n  iconName: 'mitten',\n  icon: [448, 512, [], \"f7b5\", \"M352 384L64 384 5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0l3.4 0c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192l2.8 0c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32l0-32z\"]\n};\nconst faPersonRays = {\n  prefix: 'fas',\n  iconName: 'person-rays',\n  icon: [512, 512, [], \"e54d\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9 328 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nconst faUsers = {\n  prefix: 'fas',\n  iconName: 'users',\n  icon: [640, 512, [], \"f0c0\", \"M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192l42.7 0c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0L21.3 320C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7l42.7 0C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3l-213.3 0zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352l117.3 0C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7l-330.7 0c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nconst faEyeSlash = {\n  prefix: 'fas',\n  iconName: 'eye-slash',\n  icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"]\n};\nconst faFlaskVial = {\n  prefix: 'fas',\n  iconName: 'flask-vial',\n  icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96L32 64C14.3 64 0 49.7 0 32S14.3 0 32 0L96 0l64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 245.9-49 79.6zM96 64l0 96 64 0 0-96L96 64zM352 0L480 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 150.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4l-309.2 0c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9 320 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0zm32 64l0 160c0 5.9-1.6 11.7-4.7 16.8L330.5 320l171 0-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8l0-160-64 0z\"]\n};\nconst faHand = {\n  prefix: 'fas',\n  iconName: 'hand',\n  icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208z\"]\n};\nconst faHandPaper = faHand;\nconst faOm = {\n  prefix: 'fas',\n  iconName: 'om',\n  icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM281 66.7c-2.2-1.5-4.9-2.5-7.7-2.7c-.6 0-1.3-.1-1.9 0c-3.9 .2-7.4 1.7-10.1 4.2c-.9 .8-1.6 1.7-2.3 2.6c-1.7 2.4-2.7 5.3-2.9 8.5c0 .7 0 1.4 0 2.1c.2 2.2 .9 4.3 1.9 6.2l.3 .6c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .1-.1 .1-.1s0 0 0 0s0 0 0 0c5.9-5.8 9.5-13.9 9.5-22.8c0-17.7-14.3-32-32-32c-8.7 0-16.7 3.5-22.4 9.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48l-34.2 0c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9l8.9 0 16 0c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5c-.3-.9-.7-1.8-1.1-2.6c-1.2-2.2-2.8-4-4.7-5.4c-1.9-1.4-4.1-2.3-6.5-2.8c-1.4-.3-2.9-.3-4.4-.2c-2.5 .2-4.8 1-6.8 2.3c-1.1 .7-2.2 1.5-3.1 2.5c-2.4 2.5-4.1 5.8-4.5 9.5c-.1 .6-.1 1.1-.1 1.7c0 0 0 0 0 0c0 .8 .1 1.7 .2 2.5l0 .1c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64l22.6 0c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4l5.5 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.2c-.3-1.3-.8-2.6-1.5-3.8c-1.1-2-2.6-3.8-4.4-5.1c-2.7-2-6-3.2-9.6-3.2l-.2 0c-8 .1-14.6 6.1-15.6 13.9c0 0 0 0 0 0c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96l0-96c0-53-43-96-96-96l-5.5 0c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4l-48.3 0c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4z\"]\n};\nconst faWorm = {\n  prefix: 'fas',\n  iconName: 'worm',\n  icon: [512, 512, [], \"e599\", \"M256 96c0-53 43-96 96-96l38.4 0C439.9 0 480 40.1 480 89.6l0 86.4 0 16 0 184c0 75.1-60.9 136-136 136s-136-60.9-136-136l0-80c0-22.1-17.9-40-40-40s-40 17.9-40 40l0 168c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-168c0-75.1 60.9-136 136-136s136 60.9 136 136l0 80c0 22.1 17.9 40 40 40s40-17.9 40-40l0-184-32 0c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faHouseCircleXmark = {\n  prefix: 'fas',\n  iconName: 'house-circle-xmark',\n  icon: [640, 512, [], \"e50b\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faPlug = {\n  prefix: 'fas',\n  iconName: 'plug',\n  icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2C297 398 352 333.4 352 256l0-32c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nconst faChevronUp = {\n  prefix: 'fas',\n  iconName: 'chevron-up',\n  icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nconst faHandSpock = {\n  prefix: 'fas',\n  iconName: 'hand-spock',\n  icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64l10.9 0 8.2 0c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nconst faStopwatch = {\n  prefix: 'fas',\n  iconName: 'stopwatch',\n  icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 34.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6L256 64l16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L224 0 176 0zm72 192l0 128c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-128c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFaceKiss = {\n  prefix: 'fas',\n  iconName: 'face-kiss',\n  icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faKiss = faFaceKiss;\nconst faBridgeCircleXmark = {\n  prefix: 'fas',\n  iconName: 'bridge-circle-xmark',\n  icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faFaceGrinTongue = {\n  prefix: 'fas',\n  iconName: 'face-grin-tongue',\n  icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448l0-47.3c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6l0 46.9c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGrinTongue = faFaceGrinTongue;\nconst faChessBishop = {\n  prefix: 'fas',\n  iconName: 'chess-bishop',\n  icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7L64 400l192 0 0-27.3c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32L128 0zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512l274.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432 48 432z\"]\n};\nconst faFaceGrinWink = {\n  prefix: 'fas',\n  iconName: 'face-grin-wink',\n  icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrinWink = faFaceGrinWink;\nconst faEarDeaf = {\n  prefix: 'fas',\n  iconName: 'ear-deaf',\n  icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7l0 6.1c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48l0-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nconst faDeaf = faEarDeaf;\nconst faDeafness = faEarDeaf;\nconst faHardOfHearing = faEarDeaf;\nconst faRoadCircleCheck = {\n  prefix: 'fas',\n  iconName: 'road-circle-check',\n  icon: [640, 512, [], \"e564\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faDiceFive = {\n  prefix: 'fas',\n  iconName: 'dice-five',\n  icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSquareRss = {\n  prefix: 'fas',\n  iconName: 'square-rss',\n  icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faRssSquare = faSquareRss;\nconst faLandMineOn = {\n  prefix: 'fas',\n  iconName: 'land-mine-on',\n  icon: [640, 512, [], \"e51b\", \"M344 24l0 144c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 32-256 0 0-32zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5l324.7 0c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512l-408.4 0c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nconst faICursor = {\n  prefix: 'fas',\n  iconName: 'i-cursor',\n  icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3L96 224l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7l0-95.7 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-95.7c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nconst faStamp = {\n  prefix: 'fas',\n  iconName: 'stamp',\n  icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2L112 256C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3L32 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-50.7c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112l-33.8 0c-29.9 0-54.2-24.3-54.2-54.2zM416 416l0 32L96 448l0-32 320 0z\"]\n};\nconst faStairs = {\n  prefix: 'fas',\n  iconName: 'stairs',\n  icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96z\"]\n};\nconst faI = {\n  prefix: 'fas',\n  iconName: 'i',\n  icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l96 0 0 320-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0 0-320 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L160 32 32 32z\"]\n};\nconst faHryvniaSign = {\n  prefix: 'fas',\n  iconName: 'hryvnia-sign',\n  icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96L223 96c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31L32 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l123.5 0-50.6 28.9c-1.7 1-3.4 2-5.1 3.1L32 272c-17.7 0-32 14.3-32 32s14.3 32 32 32l20.3 0c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113l43.4 0c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2L161 416c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31L352 336c17.7 0 32-14.3 32-32s-14.3-32-32-32l-123.5 0 50.6-28.9c1.7-1 3.4-2 5.1-3.1l67.8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-20.3 0c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113l-43.4 0c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nconst faHryvnia = faHryvniaSign;\nconst faPills = {\n  prefix: 'fas',\n  iconName: 'pills',\n  icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48l0 112 96 0 0-112c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112l0 224c0 61.9-50.1 112-112 112S0 429.9 0 368L0 144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nconst faFaceGrinWide = {\n  prefix: 'fas',\n  iconName: 'face-grin-wide',\n  icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nconst faGrinAlt = faFaceGrinWide;\nconst faTooth = {\n  prefix: 'fas',\n  iconName: 'tooth',\n  icon: [448, 512, [129463], \"f5c9\", \"M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5l0 6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5l0-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nconst faV = {\n  prefix: 'fas',\n  iconName: 'v',\n  icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nconst faBangladeshiTakaSign = {\n  prefix: 'fas',\n  iconName: 'bangladeshi-taka-sign',\n  icon: [384, 512, [], \"e2e6\", \"M36 32.3C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8L64 160l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 160c0 53 43 96 96 96l32 0c106 0 192-86 192-192l0-32c0-53-43-96-96-96l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0c17.7 0 32 14.3 32 32l0 32c0 70.7-57.3 128-128 128l-32 0c-17.7 0-32-14.3-32-32l0-160 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-31.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"]\n};\nconst faBicycle = {\n  prefix: 'fas',\n  iconName: 'bicycle',\n  icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l25.7 0 34.6 64-149.4 0-27.4-38C191 99.7 183.7 96 176 96l-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l43.7 0 22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112l49 0c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32L312 32zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368l65 0c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1-123.5 0zm90.6-128l108.5 0L317 274.8 257.4 192z\"]\n};\nconst faStaffSnake = {\n  prefix: 'fas',\n  iconName: 'staff-snake',\n  icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.1 4.8L288 48c53 0 96 43 96 96s-43 96-96 96l-40 0 0-80 40 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-40 0-28 0-4.5 144 40.5 0c53 0 96 43 96 96s-43 96-96 96l-16 0 0-80 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-43 0-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31L136 464c-22.1 0-40-17.9-40-40s17.9-40 40-40l36 0-1-32-19 0c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7l0 94.7c0 8.8 7.2 16 16 16l16.5 0L164 128l-28 0-13.4 0c-9 18.9-28.3 32-50.6 32l-16 0c-30.9 0-56-25.1-56-56S25.1 48 56 48l8 0 8 0 89.5 0-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faRodAsclepius = faStaffSnake;\nconst faRodSnake = faStaffSnake;\nconst faStaffAesculapius = faStaffSnake;\nconst faHeadSideCoughSlash = {\n  prefix: 'fas',\n  iconName: 'head-side-cough-slash',\n  icon: [640, 512, [], \"e062\", \"M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8l-3.9 0c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320s0 0 0 0l0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480l-80 0 0 8c0 13.3-10.7 24-24 24l-40 0s0 0 0 0L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faTruckMedical = {\n  prefix: 'fas',\n  iconName: 'truck-medical',\n  icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faAmbulance = faTruckMedical;\nconst faWheatAwnCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'wheat-awn-circle-exclamation',\n  icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faSnowman = {\n  prefix: 'fas',\n  iconName: 'snowman',\n  icon: [512, 512, [9731, 9924], \"f7d0\", \"M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2l0-40.2c0-13.3 10.7-24 24-24s24 10.7 24 24l0 19.6 22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9l-149.3 0c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6 56 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24l0 3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9l0-3.2c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nconst faMortarPestle = {\n  prefix: 'fas',\n  iconName: 'mortar-pestle',\n  icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160l144.9 0L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512l192 0c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 192z\"]\n};\nconst faRoadBarrier = {\n  prefix: 'fas',\n  iconName: 'road-barrier',\n  icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-181.7L149.2 96 64 96l0-32c0-17.7-14.3-32-32-32zM405.2 96l-74.3 0-5.4 10.7L234.8 288l74.3 0 5.4-10.7L405.2 96zM362.8 288l74.3 0 5.4-10.7L533.2 96l-74.3 0-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288l74.3 0 5.4-10.7L277.2 96l-74.3 0zm288 192l85.2 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.7L490.8 288z\"]\n};\nconst faSchool = {\n  prefix: 'fas',\n  iconName: 'school',\n  icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l208 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 208 0c26.5 0 48-21.5 48-48l0-320c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64zM96 320l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16z\"]\n};\nconst faIgloo = {\n  prefix: 'fas',\n  iconName: 'igloo',\n  icon: [576, 512, [], \"f7ae\", \"M320 33.8L320 160 48.5 160C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160l0-120.9C424.9 55.7 487.2 99.8 527.5 160L352 160zM29.9 192L96 192l0 128L0 320c0-46 10.8-89.4 29.9-128zM192 320l-64 0 0-128 320 0 0 128-64 0 0 32 192 0 0 80c0 26.5-21.5 48-48 48l-176 0 0-128c0-35.3-28.7-64-64-64s-64 28.7-64 64l0 128L48 480c-26.5 0-48-21.5-48-48l0-80 192 0 0-32zm288 0l0-128 66.1 0c19.2 38.6 29.9 82 29.9 128l-96 0z\"]\n};\nconst faJoint = {\n  prefix: 'fas',\n  iconName: 'joint',\n  icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9l0 11c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43l0-11zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9l0-11c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8l0 11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512l67.3 0c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512l19 0 51.3 0c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352l-19 0-48 0c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9l0-80c0-22.1-17.9-40-40-40l-155.3 0c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nconst faAngleRight = {\n  prefix: 'fas',\n  iconName: 'angle-right',\n  icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nconst faHorse = {\n  prefix: 'fas',\n  iconName: 'horse',\n  icon: [576, 512, [128014], \"f6f0\", \"M448 238.1l0-78.1 16 0 9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1L576 80c0-19.1-8.4-36.3-21.7-48l5.7 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L480 0 448 0C377.3 0 320 57.3 320 128l-96 0-20.8 0-54.4 0c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256l0 56c0 13.3 10.7 24 24 24s24-10.7 24-24l0-56c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9l33.7 0c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8L320 480c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-164.3c19.2-19.2 31.5-45.7 32-75.7c0 0 0 0 0 0l0-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faQ = {\n  prefix: 'fas',\n  iconName: 'q',\n  icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nconst faG = {\n  prefix: 'fas',\n  iconName: 'g',\n  icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128L256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l144 0c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nconst faNotesMedical = {\n  prefix: 'fas',\n  iconName: 'notes-medical',\n  icon: [512, 512, [], \"f481\", \"M96 352L96 96c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 197.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7L160 416c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-160 0C60.9 512 0 451.1 0 376L0 152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88l160 0z\"]\n};\nconst faTemperatureHalf = {\n  prefix: 'fas',\n  iconName: 'temperature-half',\n  icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 208c0-8.8 7.2-16 16-16s16 7.2 16 16l0 114.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature2 = faTemperatureHalf;\nconst faThermometer2 = faTemperatureHalf;\nconst faThermometerHalf = faTemperatureHalf;\nconst faDongSign = {\n  prefix: 'fas',\n  iconName: 'dong-sign',\n  icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32l0-96 0-160c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448z\"]\n};\nconst faCapsules = {\n  prefix: 'fas',\n  iconName: 'capsules',\n  icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112-96 0 0-112zM0 144L0 368c0 61.9 50.1 112 112 112s112-50.1 112-112l0-178.4c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83l0-24.2c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nconst faPooStorm = {\n  prefix: 'fas',\n  iconName: 'poo-storm',\n  icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17L128 112c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 40.9 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320l18.3 0c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9l10.7 0c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64l-1.4 0c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7l70.1 0L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7l-70.1 0 52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z\"]\n};\nconst faPooBolt = faPooStorm;\nconst faFaceFrownOpen = {\n  prefix: 'fas',\n  iconName: 'face-frown-open',\n  icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nconst faFrownOpen = faFaceFrownOpen;\nconst faHandPointUp = {\n  prefix: 'fas',\n  iconName: 'hand-point-up',\n  icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32l0 208-64 0L32 32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-64-64c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n};\nconst faMoneyBill = {\n  prefix: 'fas',\n  iconName: 'money-bill',\n  icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm64 320l-64 0 0-64c35.3 0 64 28.7 64 64zM64 192l0-64 64 0c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faBookmark = {\n  prefix: 'fas',\n  iconName: 'bookmark',\n  icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nconst faAlignJustify = {\n  prefix: 'fas',\n  iconName: 'align-justify',\n  icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32L32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z\"]\n};\nconst faUmbrellaBeach = {\n  prefix: 'fas',\n  iconName: 'umbrella-beach',\n  icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448 32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-261.9 0 64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nconst faHelmetUn = {\n  prefix: 'fas',\n  iconName: 'helmet-un',\n  icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240l0 56.3C0 344.8 39.2 384 87.7 384L200 384l14.9 0L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-86.5 0-1.5-1.5L368 288l80 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-.5 0zM320 417.2l-78-73.7L274.4 288l45.6 0 0 129.2zM285.3 103.1l34.7 52 0-43.2c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faBullseye = {\n  prefix: 'fas',\n  iconName: 'bullseye',\n  icon: [512, 512, [], \"f140\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faBacon = {\n  prefix: 'fas',\n  iconName: 'bacon',\n  icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6c0 0 0 0 0 0l.2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nconst faHandPointDown = {\n  prefix: 'fas',\n  iconName: 'hand-point-down',\n  icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208-64 0 0 208zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-64 64c17.7 0 32-14.3 32-32l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6l0-8.6C384 71.6 312.4 0 224 0L162.3 0C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149l0 27c0 35.3 28.7 64 64 64l88 0c22.1 0 40-17.9 40-40s-17.9-40-40-40l-56 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l56 0c39.8 0 72 32.2 72 72z\"]\n};\nconst faArrowUpFromBracket = {\n  prefix: 'fas',\n  iconName: 'arrow-up-from-bracket',\n  icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3 192 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-64z\"]\n};\nconst faFolder = {\n  prefix: 'fas',\n  iconName: 'folder',\n  icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nconst faFolderBlank = faFolder;\nconst faFileWaveform = {\n  prefix: 'fas',\n  iconName: 'file-waveform',\n  icon: [448, 512, [\"file-medical-alt\"], \"f478\", \"M96 0C60.7 0 32 28.7 32 64l0 224 112 0c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288l70.1 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-80 0c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320 32 320l0 128c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L256 0 96 0zM288 0l0 128 128 0L288 0z\"]\n};\nconst faFileMedicalAlt = faFileWaveform;\nconst faRadiation = {\n  prefix: 'fas',\n  iconName: 'radiation',\n  icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faChartSimple = {\n  prefix: 'fas',\n  iconName: 'chart-simple',\n  icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM368 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z\"]\n};\nconst faMarsStroke = {\n  prefix: 'fas',\n  iconName: 'mars-stroke',\n  icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L376 0zm88 48s0 0 0 0s0 0 0 0s0 0 0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z\"]\n};\nconst faVial = {\n  prefix: 'fas',\n  iconName: 'vial',\n  icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5L0 416c0 53 43 96 96 96l5.5 0c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96-101.5 0z\"]\n};\nconst faGauge = {\n  prefix: 'fas',\n  iconName: 'gauge',\n  icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3L280 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 204.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faDashboard = faGauge;\nconst faGaugeMed = faGauge;\nconst faTachometerAltAverage = faGauge;\nconst faWandMagicSparkles = {\n  prefix: 'fas',\n  iconName: 'wand-magic-sparkles',\n  icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nconst faMagicWandSparkles = faWandMagicSparkles;\nconst faE = {\n  prefix: 'fas',\n  iconName: 'e',\n  icon: [320, 512, [101], \"45\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 416c0 35.3 28.7 64 64 64l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 416l0-128 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 224 64 96l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32z\"]\n};\nconst faPenClip = {\n  prefix: 'fas',\n  iconName: 'pen-clip',\n  icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1s0 0 0 0l-1-1s0 0 0 0l-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nconst faPenAlt = faPenClip;\nconst faBridgeCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'bridge-circle-exclamation',\n  icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faUser = {\n  prefix: 'fas',\n  iconName: 'user',\n  icon: [448, 512, [128100, 62144], \"f007\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z\"]\n};\nconst faSchoolCircleCheck = {\n  prefix: 'fas',\n  iconName: 'school-circle-check',\n  icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nconst faDumpster = {\n  prefix: 'fas',\n  iconName: 'dumpster',\n  icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160l94 0L140.5 32 49.7 32zM272 160l0-128-98.9 0L147.5 160 272 160zm32 0l124.5 0L402.9 32 304 32l0 128zm157.1 0l94 0c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32l-90.8 0 25.6 128zM32 192l4 32-4 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l12 0L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32l320 0c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160 12 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-4 0 4-32L32 192z\"]\n};\nconst faVanShuttle = {\n  prefix: 'fas',\n  iconName: 'van-shuttle',\n  icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104l0 88 96 0 0-96L72 96c-4.4 0-8 3.6-8 8zm482 88L465.1 96 384 96l0 96 162 0zm-226 0l0-96-96 0 0 96 96 0zM592 384l-16 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 104C0 64.2 32.2 32 72 32l120 0 160 0 113.1 0c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2L640 336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faShuttleVan = faVanShuttle;\nconst faBuildingUser = {\n  prefix: 'fas',\n  iconName: 'building-user',\n  icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 89.9 0c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2l0-95.9L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9l218.2 0c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1l-101.8 0c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nconst faSquareCaretLeft = {\n  prefix: 'fas',\n  iconName: 'square-caret-left',\n  icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nconst faCaretSquareLeft = faSquareCaretLeft;\nconst faHighlighter = {\n  prefix: 'fas',\n  iconName: 'highlighter',\n  icon: [576, 512, [], \"f591\", \"M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5s0 0 0 0l0-71.7c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5L224 416l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7L24 512c-13.3 0-24-10.7-24-24l0-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nconst faKey = {\n  prefix: 'fas',\n  iconName: 'key',\n  icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-40 40 0c13.3 0 24-10.7 24-24l0-40 40 0c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nconst faBullhorn = {\n  prefix: 'fas',\n  iconName: 'bullhorn',\n  icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75l-8.7 0-32 0-96 0c-35.3 0-64 28.7-64 64l0 96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-128 8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-147.6c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4L480 32zm-64 76.7L416 240l0 131.3C357.2 317.8 280.5 288 200.7 288l-8.7 0 0-96 8.7 0c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nconst faGlobe = {\n  prefix: 'fas',\n  iconName: 'globe',\n  icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64l-185.3 0c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64l185.3 0c2.2 20.4 3.3 41.8 3.3 64zm28.8-64l123.1 0c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64l-123.1 0c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32l-116.7 0c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0l-176.6 0c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0L18.6 160C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192l123.1 0c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64L8.1 320C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6l176.6 0c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352l116.7 0zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6l116.7 0z\"]\n};\nconst faSynagogue = {\n  prefix: 'fas',\n  iconName: 'synagogue',\n  icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166l0 114.1L480 512l-16 0-112 0 0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96-112 0-16 0 0-231.9L160 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512l0-267.5 28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1L640 448c0 35.3-28.7 64-64 64l-64 0zM128 244.5L128 512l-64 0c-35.3 0-64-28.7-64-64L0 316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nconst faPersonHalfDress = {\n  prefix: 'fas',\n  iconName: 'person-half-dress',\n  icon: [320, 512, [], \"e548\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352l0-224 6.9 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128s0 0 0 0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3l0 256s0 0 0 0l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-17.8 0c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nconst faRoadBridge = {\n  prefix: 'fas',\n  iconName: 'road-bridge',\n  icon: [640, 512, [], \"e563\", \"M352 0L608 0c17.7 0 32 14.3 32 32l0 448c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64zM480 40c-13.3 0-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24zM32 96l256 0 0 64-40 0 0 64 40 0 0 96c-53 0-96 43-96 96l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c0-53-43-96-96-96l0-96 72 0 0-64-40 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64l-80 0 0 64 80 0 0-64z\"]\n};\nconst faLocationArrow = {\n  prefix: 'fas',\n  iconName: 'location-arrow',\n  icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8l176 0 0 176c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nconst faC = {\n  prefix: 'fas',\n  iconName: 'c',\n  icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nconst faTabletButton = {\n  prefix: 'fas',\n  iconName: 'tablet-button',\n  icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBuildingLock = {\n  prefix: 'fas',\n  iconName: 'building-lock',\n  icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 88.6 0c-5.4-9.4-8.6-20.3-8.6-32l0-128c0-23.7 12.9-44.4 32-55.4l0-24.6c0-30.5 12.2-58.2 32-78.4L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faPizzaSlice = {\n  prefix: 'fas',\n  iconName: 'pizza-slice',\n  icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faMoneyBillWave = {\n  prefix: 'fas',\n  iconName: 'money-bill-wave',\n  icon: [576, 512, [], \"f53a\", \"M0 112.5L0 422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4l0-309.9c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64l-64 0 0-64zm64-208c0 35.3-28.7 64-64 64l0-64 64 0zM512 304l0 64-64 0c0-35.3 28.7-64 64-64zM448 96l64 0 0 64c-35.3 0-64-28.7-64-64z\"]\n};\nconst faChartArea = {\n  prefix: 'fas',\n  iconName: 'chart-area',\n  icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm96 288l288 0c17.7 0 32-14.3 32-32l0-68.2c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1l0 84c0 17.7 14.3 32 32 32z\"]\n};\nconst faAreaChart = faChartArea;\nconst faHouseFlag = {\n  prefix: 'fas',\n  iconName: 'house-flag',\n  icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32l0 160 0 320 64 0 0-320 112 0c8.8 0 16-7.2 16-16l0-128c0-8.8-7.2-16-16-16L512 32c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288l32 0 0 192c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-96c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 96c0 17.7 14.3 32 32 32l64.7 0 .2 0-1 0 0-353z\"]\n};\nconst faPersonCircleMinus = {\n  prefix: 'fas',\n  iconName: 'person-circle-minus',\n  icon: [576, 512, [], \"e540\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faBan = {\n  prefix: 'fas',\n  iconName: 'ban',\n  icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faCancel = faBan;\nconst faCameraRotate = {\n  prefix: 'fas',\n  iconName: 'camera-rotate',\n  icon: [640, 512, [], \"e0d8\", \"M213.1 64.8L202.7 96 128 96c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0L426.9 64.8C420.4 45.2 402.1 32 381.4 32L258.6 32c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16l-76.7 0c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3l0 76.7zM192 320c0-8.8 7.2-16 16-16l76.7 0c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3l0-76.7z\"]\n};\nconst faSprayCanSparkles = {\n  prefix: 'fas',\n  iconName: 'spray-can-sparkles',\n  icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32l0 96 128 0 0-96c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96L0 464c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-208c0-53-43-96-96-96L96 160zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nconst faAirFreshener = faSprayCanSparkles;\nconst faStar = {\n  prefix: 'fas',\n  iconName: 'star',\n  icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nconst faRepeat = {\n  prefix: 'fas',\n  iconName: 'repeat',\n  icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96l160 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32l0 32L160 64C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96l-160 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 160 0c88.4 0 160-71.6 160-160z\"]\n};\nconst faCross = {\n  prefix: 'fas',\n  iconName: 'cross',\n  icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48l0 80-80 0c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l80 0 0 208c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-208 80 0c26.5 0 48-21.5 48-48l0-32c0-26.5-21.5-48-48-48l-80 0 0-80c0-26.5-21.5-48-48-48L176 0z\"]\n};\nconst faBox = {\n  prefix: 'fas',\n  iconName: 'box',\n  icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160l208 0 0-128L93.7 32C75.5 32 58.9 42.3 50.7 58.5zM240 160l208 0L397.3 58.5C389.1 42.3 372.5 32 354.3 32L240 32l0 128zm208 32L0 192 0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-224z\"]\n};\nconst faVenusMars = {\n  prefix: 'fas',\n  iconName: 'venus-mars',\n  icon: [640, 512, [9892], \"f228\", \"M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0L616 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nconst faArrowPointer = {\n  prefix: 'fas',\n  iconName: 'arrow-pointer',\n  icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2L0 426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320l118.1 0c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nconst faMousePointer = faArrowPointer;\nconst faMaximize = {\n  prefix: 'fas',\n  iconName: 'maximize',\n  icon: [512, 512, [\"expand-arrows-alt\"], \"f31e\", \"M200 32L56 32C42.7 32 32 42.7 32 56l0 144c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312l0 144c0 13.3 10.7 24 24 24l144 0c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l144 0c13.3 0 24-10.7 24-24l0-144c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-144c0-13.3-10.7-24-24-24L312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z\"]\n};\nconst faExpandArrowsAlt = faMaximize;\nconst faChargingStation = {\n  prefix: 'fas',\n  iconName: 'charging-station',\n  icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64l0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-144 16 0c22.1 0 40 17.9 40 40l0 32c0 39.8 32.2 72 72 72s72-32.2 72-72l0-123.7c32.5-10.2 56-40.5 56-76.3l0-32c0-8.8-7.2-16-16-16l-16 0 0-48c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-32 0 0-48c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-16 0c-8.8 0-16 7.2-16 16l0 32c0 35.8 23.5 66.1 56 76.3L472 376c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-48.6-39.4-88-88-88l-16 0 0-192c0-35.3-28.7-64-64-64L96 0zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9 57.8 0c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9L96 208c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nconst faShapes = {\n  prefix: 'fas',\n  iconName: 'shapes',\n  icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2l192 0c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312l0 144c0 22.1 17.9 40 40 40l144 0c22.1 0 40-17.9 40-40l0-144c0-22.1-17.9-40-40-40l-144 0c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z\"]\n};\nconst faTriangleCircleSquare = faShapes;\nconst faShuffle = {\n  prefix: 'fas',\n  iconName: 'shuffle',\n  icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nconst faRandom = faShuffle;\nconst faPersonRunning = {\n  prefix: 'fas',\n  iconName: 'person-running',\n  icon: [448, 512, [127939, \"running\"], \"f70c\", \"M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288l21.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-21.3 0c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352L32 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l69.6 0c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z\"]\n};\nconst faRunning = faPersonRunning;\nconst faMobileRetro = {\n  prefix: 'fas',\n  iconName: 'mobile-retro',\n  icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0L256 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm64 96l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0z\"]\n};\nconst faGripLinesVertical = {\n  prefix: 'fas',\n  iconName: 'grip-lines-vertical',\n  icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384z\"]\n};\nconst faSpider = {\n  prefix: 'fas',\n  iconName: 'spider',\n  icon: [512, 512, [128375], \"f717\", \"M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1l0-14.1c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4l0 10.8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-10.8c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160l0 14.1-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nconst faHandsBound = {\n  prefix: 'fas',\n  iconName: 'hands-bound',\n  icon: [640, 512, [], \"e4f9\", \"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32l0 64 0 59.1 0 .7L32 192l0 21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352l-3.6 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 128 0 64 0 128 0 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-3.6 0 85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7l0-21.9 0-36.2 0-.7L608 96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64 0 48.8-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1l0 61.9 0 32-64 0 0-32 0-61.9c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8 96 96l0-64zm64 448l0 32 128 0 0-32 64 0 0 32 128 0 0-32 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0-128 0-64 0-128 0-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0z\"]\n};\nconst faFileInvoiceDollar = {\n  prefix: 'fas',\n  iconName: 'file-invoice-dollar',\n  icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 80c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16l0 17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1s0 0 0 0s0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1l0 17.1c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-17.8c-11.2-2.1-21.7-5.7-30.9-8.9c0 0 0 0 0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4c0 0 0 0 0 0s0 0 0 0s0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5s0 0 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7l0-17.3c0-8.8 7.2-16 16-16z\"]\n};\nconst faPlaneCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'plane-circle-exclamation',\n  icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faXRay = {\n  prefix: 'fas',\n  iconName: 'x-ray',\n  icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 320c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16l0 32-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 48-112 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l112 0 0 70.6L189.1 307c-5.2-2-10.6-3-16.2-3l-2.1 0c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6l120.8 0c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8l-2.2 0c-5.5 0-11 1-16.2 3L272 326.6l0-70.6 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-112 0 0-48 80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-80 0 0-32c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faSpellCheck = {\n  prefix: 'fas',\n  iconName: 'spell-check',\n  icon: [576, 512, [], \"f891\", \"M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224l90.7 0 5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160l-37.3 0L112 115.2 130.7 160zM256 32l0 96 0 96c0 17.7 14.3 32 32 32l80 0c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80L288 0c-17.7 0-32 14.3-32 32zm96 64l-32 0 0-32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64l32 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0-32zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nconst faSlash = {\n  prefix: 'fas',\n  iconName: 'slash',\n  icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nconst faComputerMouse = {\n  prefix: 'fas',\n  iconName: 'computer-mouse',\n  icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192l176 0L176 0 160 0C71.6 0 0 71.6 0 160l0 32zm0 32L0 352c0 88.4 71.6 160 160 160l64 0c88.4 0 160-71.6 160-160l0-128-192 0L0 224zm384-32l0-32C384 71.6 312.4 0 224 0L208 0l0 192 176 0z\"]\n};\nconst faMouse = faComputerMouse;\nconst faArrowRightToBracket = {\n  prefix: 'fas',\n  iconName: 'arrow-right-to-bracket',\n  icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nconst faSignIn = faArrowRightToBracket;\nconst faShopSlash = {\n  prefix: 'fas',\n  iconName: 'shop-slash',\n  icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43L576 224l-64 0 0 152L384 275.7l0-51.7-64 0 0 1.5L277.2 192l325.9 0c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192l85 0L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384l-192 0 0-160-64 0 0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-65.5-64-50.4 0 35.9z\"]\n};\nconst faStoreAltSlash = faShopSlash;\nconst faServer = {\n  prefix: 'fas',\n  iconName: 'server',\n  icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 288zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faVirusCovidSlash = {\n  prefix: 'fas',\n  iconName: 'virus-covid-slash',\n  icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7l33.6 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-33.6 0c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6L344 48l16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L280 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5L112 232l0-16c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 33.6 0c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1l0 33.6-16 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0-33.6c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nconst faShopLock = {\n  prefix: 'fas',\n  iconName: 'shop-lock',\n  icon: [640, 512, [], \"e4a5\", \"M36.8 192l412.8 0c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224l-64 0 0 160-192 0 0-160-64 0 0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-80 0-32 0-128zm144 16c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faHourglassStart = {\n  prefix: 'fas',\n  iconName: 'hourglass-start',\n  icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM288 437l0 11L96 448l0-11c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nconst faHourglass1 = faHourglassStart;\nconst faBlenderPhone = {\n  prefix: 'fas',\n  iconName: 'blender-phone',\n  icon: [576, 512, [], \"f6b6\", \"M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0L534.1 0c21.1 0 36.4 20.1 30.9 40.4L558.5 64 400 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l149.8 0-17.5 64L400 160c-8.8 0-16 7.2-16 16s7.2 16 16 16l123.6 0-17.5 64L400 256c-8.8 0-16 7.2-16 16s7.2 16 16 16l97.5 0L480 352l-256 0zm-16 32l288 0c26.5 0 48 21.5 48 48l0 32c0 26.5-21.5 48-48 48l-288 0c-26.5 0-48-21.5-48-48l0-32c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nconst faBuildingWheat = {\n  prefix: 'fas',\n  iconName: 'building-wheat',\n  icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm384 80l0 16c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0zm0 128c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0 0 16zm0 112c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0 0 16zM512 496l0 16-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80zm0-96l-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80l0 16zm0-128l0 16-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-13.3 10.7-24 24-24zm96 64l0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24l0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-13.3 10.7-24 24-24z\"]\n};\nconst faPersonBreastfeeding = {\n  prefix: 'fas',\n  iconName: 'person-breastfeeding',\n  icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8l0-36.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1l75.2 0c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n};\nconst faRightToBracket = {\n  prefix: 'fas',\n  iconName: 'right-to-bracket',\n  icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSignInAlt = faRightToBracket;\nconst faVenus = {\n  prefix: 'fas',\n  iconName: 'venus',\n  icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1l0 34.9-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-34.9z\"]\n};\nconst faPassport = {\n  prefix: 'fas',\n  iconName: 'passport',\n  icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0L384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8l39.1 0c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5l47.1 0c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8l39.1 0c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8l-39.1 0zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5l-47.1 0c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8l-39.1 0c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16l224 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-224 0z\"]\n};\nconst faThumbtackSlash = {\n  prefix: 'fas',\n  iconName: 'thumbtack-slash',\n  icon: [640, 512, [\"thumb-tack-slash\"], \"e68f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L481.4 352c9.8-.4 18.9-5.3 24.6-13.3c6-8.3 7.7-19.1 4.4-28.8l-1-3c-13.8-41.5-42.8-74.8-79.5-94.7L418.5 64 448 64c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l29.5 0-6.1 79.5L38.8 5.1zM324.9 352L177.1 235.6c-20.9 18.9-37.2 43.3-46.5 71.3l-1 3c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l164.9 0zM288 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96-64 0z\"]\n};\nconst faThumbTackSlash = faThumbtackSlash;\nconst faHeartPulse = {\n  prefix: 'fas',\n  iconName: 'heart-pulse',\n  icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4l87 0c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31l104.5 0c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240l-132 0c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9L16 240c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9l0-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1l0 5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nconst faHeartbeat = faHeartPulse;\nconst faPeopleCarryBox = {\n  prefix: 'fas',\n  iconName: 'people-carry-box',\n  icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7l0 65.1 51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7l0-88.1c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5 0-76.2c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 76.2 10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6l0 88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51 0-65.1-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8l-126.7 0c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nconst faPeopleCarry = faPeopleCarryBox;\nconst faTemperatureHigh = {\n  prefix: 'fas',\n  iconName: 'temperature-high',\n  icon: [512, 512, [], \"f769\", \"M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5L96 112zM144 0C82.1 0 32 50.2 32 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L256 112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3L160 112c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 210.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nconst faMicrochip = {\n  prefix: 'fas',\n  iconName: 'microchip',\n  icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c-35.3 0-64 28.7-64 64l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c0 35.3 28.7 64 64 64l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c35.3 0 64-28.7 64-64l40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0c0-35.3-28.7-64-64-64l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40zM160 128l192 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32l0-192c0-17.7 14.3-32 32-32zm192 32l-192 0 0 192 192 0 0-192z\"]\n};\nconst faCrown = {\n  prefix: 'fas',\n  iconName: 'crown',\n  icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6l277.2 0c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nconst faWeightHanging = {\n  prefix: 'fas',\n  iconName: 'weight-hanging',\n  icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32L120 128c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512l416 0c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128l-45.5 0z\"]\n};\nconst faXmarksLines = {\n  prefix: 'fas',\n  iconName: 'xmarks-lines',\n  icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nconst faFilePrescription = {\n  prefix: 'fas',\n  iconName: 'file-prescription',\n  icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM104 196l72 0c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6l-20 0 0 44c0 11-9 20-20 20s-20-9-20-20l0-64 0-80c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20l-52 0 0 40 52 0z\"]\n};\nconst faWeightScale = {\n  prefix: 'fas',\n  iconName: 'weight-scale',\n  icon: [512, 512, [\"weight\"], \"f496\", \"M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-56.2 0zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nconst faWeight = faWeightScale;\nconst faUserGroup = {\n  prefix: 'fas',\n  iconName: 'user-group',\n  icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM609.3 512l-137.8 0c5.4-9.4 8.6-20.3 8.6-32l0-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2l61.4 0C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nconst faUserFriends = faUserGroup;\nconst faArrowUpAZ = {\n  prefix: 'fas',\n  iconName: 'arrow-up-a-z',\n  icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-128 0c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176l-40.4 0z\"]\n};\nconst faSortAlphaUp = faArrowUpAZ;\nconst faChessKnight = {\n  prefix: 'fas',\n  iconName: 'chess-knight',\n  icon: [448, 512, [9822], \"f441\", \"M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5l0 132.4c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400l320 0 28.9-159c2.1-11.3 3.1-22.8 3.1-34.3l0-14.7C416 86 330 0 224 0L83.8 0C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512l370.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432 64 432 22.6 473.4z\"]\n};\nconst faFaceLaughSquint = {\n  prefix: 'fas',\n  iconName: 'face-laugh-squint',\n  icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faLaughSquint = faFaceLaughSquint;\nconst faWheelchair = {\n  prefix: 'fas',\n  iconName: 'wheelchair',\n  icon: [512, 512, [], \"f193\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4l5.1 0c.4 0 .8 0 1.3 0l94.1 0c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9l-68.5 0-9.6-48 63.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-76.2 0z\"]\n};\nconst faCircleArrowUp = {\n  prefix: 'fas',\n  iconName: 'circle-arrow-up',\n  icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 215c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71L280 392c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-214.1-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 103c9.4-9.4 24.6-9.4 33.9 0L385 215z\"]\n};\nconst faArrowCircleUp = faCircleArrowUp;\nconst faToggleOn = {\n  prefix: 'fas',\n  iconName: 'toggle-on',\n  icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192s-86-192-192-192L192 64zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faPersonWalking = {\n  prefix: 'fas',\n  iconName: 'person-walking',\n  icon: [320, 512, [128694, \"walking\"], \"f554\", \"M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nconst faWalking = faPersonWalking;\nconst faL = {\n  prefix: 'fas',\n  iconName: 'l',\n  icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32l0 352 192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-17.7 0-32-14.3-32-32L32 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faFire = {\n  prefix: 'fas',\n  iconName: 'fire',\n  icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z\"]\n};\nconst faBedPulse = {\n  prefix: 'fas',\n  iconName: 'bed-pulse',\n  icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64l92 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-104 0c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112 216 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l136 0c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160l12.7 0 20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160l82.1 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 448l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64s32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faProcedures = faBedPulse;\nconst faShuttleSpace = {\n  prefix: 'fas',\n  iconName: 'shuttle-space',\n  icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96 2 0zM352 128L245.2 63.9C210.4 43 170.6 32 130 32l-2 0 0 96 224 0zM96 128l0-96L80 32C53.5 32 32 53.5 32 80l0 48 8 0c-22.1 0-40 17.9-40 40l0 16L0 328l0 16c0 22.1 17.9 40 40 40l-8 0 0 48c0 26.5 21.5 48 48 48l16 0 0-96 8 0c26.2 0 49.4-12.6 64-32l288 0c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160l-288 0c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6l0 24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4l0-87.1c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nconst faSpaceShuttle = faShuttleSpace;\nconst faFaceLaugh = {\n  prefix: 'fas',\n  iconName: 'face-laugh',\n  icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faLaugh = faFaceLaugh;\nconst faFolderOpen = {\n  prefix: 'fas',\n  iconName: 'folder-open',\n  icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8 0 96C0 60.7 28.7 32 64 32l117.5 0c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7L416 96c35.3 0 64 28.7 64 64l0 32-336 0c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224l400 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480L32 480c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nconst faHeartCirclePlus = {\n  prefix: 'fas',\n  iconName: 'heart-circle-plus',\n  icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faCodeFork = {\n  prefix: 'fas',\n  iconName: 'code-fork',\n  icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 38.7c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-38.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 38.7c0 53-43 96-96 96l-48 0 0 70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-70.7-48 0c-53 0-96-43-96-96l0-38.7C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faCity = {\n  prefix: 'fas',\n  iconName: 'city',\n  icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48L336 0c-26.5 0-48 21.5-48 48l0 48-64 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-64 0 0-72c0-13.3-10.7-24-24-24S64 10.7 64 24l0 72L48 96C21.5 96 0 117.5 0 144l0 96L0 464c0 26.5 21.5 48 48 48l256 0 32 0 96 0 160 0c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48l-112 0 0-144zm96 320l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM240 416l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM560 256c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM256 176l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM256 304c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM112 320l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zm304-48l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zm16 112l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faMicrophoneLines = {\n  prefix: 'fas',\n  iconName: 'microphone-lines',\n  icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96l0 160c0 53 43 96 96 96s96-43 96-96l-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0c0-53-43-96-96-96S96 43 96 96zM320 240l0 16c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c85.8-11.7 152-85.3 152-174.4l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24z\"]\n};\nconst faMicrophoneAlt = faMicrophoneLines;\nconst faPepperHot = {\n  prefix: 'fas',\n  iconName: 'pepper-hot',\n  icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3L360 256c-13.3 0-24-10.7-24-24l0-80c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0 0 80c0 26.5 21.5 48 48 48l76.2 0 23.9 47.8C372.3 443.9 244.3 512 103.2 512l-58.8 0C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nconst faUnlock = {\n  prefix: 'fas',\n  iconName: 'unlock',\n  icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144l0 48-16 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-240 0 0-48z\"]\n};\nconst faColonSign = {\n  prefix: 'fas',\n  iconName: 'colon-sign',\n  icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nconst faHeadset = {\n  prefix: 'fas',\n  iconName: 'headset',\n  icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256l0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40C0 114.6 114.6 0 256 0S512 114.6 512 256l0 144.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24l-32 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l32 0c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40L464 256c0-114.9-93.1-208-208-208zM144 208l16 0c17.7 0 32 14.3 32 32l0 112c0 17.7-14.3 32-32 32l-16 0c-35.3 0-64-28.7-64-64l0-48c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64l0 48c0 35.3-28.7 64-64 64l-16 0c-17.7 0-32-14.3-32-32l0-112c0-17.7 14.3-32 32-32l16 0z\"]\n};\nconst faStoreSlash = {\n  prefix: 'fas',\n  iconName: 'store-slash',\n  icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68 0-17.1 0-131.4c-4 1-8 1.8-12.3 2.3c0 0 0 0-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3l0 100.3L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0L141.6 0c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384l0-133.4c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3L96 384l0 64c0 35.3 28.7 64 64 64l320 0c12.9 0 24.8-3.8 34.9-10.3L365.5 384 160 384z\"]\n};\nconst faRoadCircleXmark = {\n  prefix: 'fas',\n  iconName: 'road-circle-xmark',\n  icon: [640, 512, [], \"e566\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nconst faUserMinus = {\n  prefix: 'fas',\n  iconName: 'user-minus',\n  icon: [640, 512, [], \"f503\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM472 200l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMarsStrokeUp = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-up',\n  icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9l-40 0 0 24 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8l0-24-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-24L96 96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z\"]\n};\nconst faMarsStrokeV = faMarsStrokeUp;\nconst faChampagneGlasses = {\n  prefix: 'fas',\n  iconName: 'champagne-glasses',\n  icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z\"]\n};\nconst faGlassCheers = faChampagneGlasses;\nconst faClipboard = {\n  prefix: 'fas',\n  iconName: 'clipboard',\n  icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faHouseCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'house-circle-exclamation',\n  icon: [640, 512, [], \"e50a\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faFileArrowUp = {\n  prefix: 'fas',\n  iconName: 'file-arrow-up',\n  icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-102.1-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31L216 408z\"]\n};\nconst faFileUpload = faFileArrowUp;\nconst faWifi = {\n  prefix: 'fas',\n  iconName: 'wifi',\n  icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faWifi3 = faWifi;\nconst faWifiStrong = faWifi;\nconst faBath = {\n  prefix: 'fas',\n  iconName: 'bath',\n  icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 256 96 77.3zM32 352l0 16c0 28.4 12.4 54 32 71.6L64 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-16 256 0 0 16c0 17.7 14.3 32 32 32s32-14.3 32-32l0-40.4c19.6-17.6 32-43.1 32-71.6l0-16L32 352z\"]\n};\nconst faBathtub = faBath;\nconst faUnderline = {\n  prefix: 'fas',\n  iconName: 'underline',\n  icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 128c0 53 43 96 96 96s96-43 96-96l0-128-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 128c0 88.4-71.6 160-160 160s-160-71.6-160-160L64 96 48 96C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32z\"]\n};\nconst faUserPen = {\n  prefix: 'fas',\n  iconName: 'user-pen',\n  icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l293.1 0c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1l-91.4 0zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nconst faUserEdit = faUserPen;\nconst faSignature = {\n  prefix: 'fas',\n  iconName: 'signature',\n  icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92l0 71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-83.6 0 18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3l0-7.8c0-53-43-96-96-96s-96 43-96 96l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5l0-71.9c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24l40.3 0c-.2-2.8-.3-5.6-.3-8.5L64 368l-40 0zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24l-310.1 0c-6.7 16.3-14.2 32.3-22.3 48L616 416z\"]\n};\nconst faStroopwafel = {\n  prefix: 'fas',\n  iconName: 'stroopwafel',\n  icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z\"]\n};\nconst faBold = {\n  prefix: 'fas',\n  iconName: 'bold',\n  icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32l48 0 16 0 128 0c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128L96 480l-16 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-160L48 96 32 96C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64L112 96l0 128 112 0zM112 288l0 128 144 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0-112 0z\"]\n};\nconst faAnchorLock = {\n  prefix: 'fas',\n  iconName: 'anchor-lock',\n  icon: [640, 512, [], \"e4ad\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3l0-33.3c-5.2 .9-10.5 1.3-16 1.3l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM528 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faBuildingNgo = {\n  prefix: 'fas',\n  iconName: 'building-ngo',\n  icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM168 64l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 64 16 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 24c0 13.3-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24l0-88c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48l0 32c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-32zM61.3 71.1l34.7 52L96 80c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8 64 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nconst faManatSign = {\n  prefix: 'fas',\n  iconName: 'manat-sign',\n  icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32l0 34.7C69.2 113.9 0 192.9 0 288L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-59.6 40.8-109.8 96-124l0 284c0 17.7 14.3 32 32 32s32-14.3 32-32l0-284c55.2 14.2 96 64.3 96 124l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-95.1-69.2-174.1-160-189.3L224 64c0-17.7-14.3-32-32-32z\"]\n};\nconst faNotEqual = {\n  prefix: 'fas',\n  iconName: 'not-equal',\n  icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144l62.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-105.5 0-64 96L400 304c17.7 0 32 14.3 32 32s-14.3 32-32 32l-212.2 0-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368 48 368c-17.7 0-32-14.3-32-32s14.3-32 32-32l105.5 0 64-96L48 208c-17.7 0-32-14.3-32-32s14.3-32 32-32l212.2 0 65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nconst faBorderTopLeft = {\n  prefix: 'fas',\n  iconName: 'border-top-left',\n  icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBorderStyle = faBorderTopLeft;\nconst faMapLocationDot = {\n  prefix: 'fas',\n  iconName: 'map-location-dot',\n  icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152l0 270.8c0 9.8-6 18.6-15.1 22.3L416 503l0-302.6zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6l0 251.4L32.9 502.7C17.1 509 0 497.4 0 480.4L0 209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77l0 249.3L192 449.4 192 255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faMapMarkedAlt = faMapLocationDot;\nconst faJedi = {\n  prefix: 'fas',\n  iconName: 'jedi',\n  icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9l26 0c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9l14.6 0c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9l14.6 0c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6l26 0c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nconst faSquarePollVertical = {\n  prefix: 'fas',\n  iconName: 'square-poll-vertical',\n  icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 192c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192zM320 288c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32z\"]\n};\nconst faPoll = faSquarePollVertical;\nconst faMugHot = {\n  prefix: 'fas',\n  iconName: 'mug-hot',\n  icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32L0 416c0 53 43 96 96 96l192 0c53 0 96-43 96-96l16 0c61.9 0 112-50.1 112-112s-50.1-112-112-112l-48 0L32 192zm352 64l16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0 0-96zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nconst faCarBattery = {\n  prefix: 'fas',\n  iconName: 'car-battery',\n  icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l16 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 32-32 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0 0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0-32zM80 240c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faBatteryCar = faCarBattery;\nconst faGift = {\n  prefix: 'fas',\n  iconName: 'gift',\n  icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128l-1.3 0-72 0c-22.1 0-40-17.9-40-40s17.9-40 40-40l2.2 0c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40L32 128c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l448 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-41.6 0c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88l-2.2 0c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0L152 0C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40l-72 0-1.3 0 34.8-59.2C329.1 55.9 342.9 48 357.8 48l2.2 0c22.1 0 40 17.9 40 40zM32 288l0 176c0 26.5 21.5 48 48 48l144 0 0-224L32 288zM288 512l144 0c26.5 0 48-21.5 48-48l0-176-192 0 0 224z\"]\n};\nconst faDiceTwo = {\n  prefix: 'fas',\n  iconName: 'dice-two',\n  icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faChessQueen = {\n  prefix: 'fas',\n  iconName: 'chess-queen',\n  icon: [512, 512, [9819], \"f445\", \"M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400 384 400l-40.4 0-175.1 0L128 400l-15.7 0L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224s0 0 0 0s0 0 0 0s0 0 0 0zM112 432l288 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L86.6 512C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z\"]\n};\nconst faGlasses = {\n  prefix: 'fas',\n  iconName: 'glasses',\n  icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1c0 0 .1 0 .1 0c0 0 0 0 0 0s0 0 0 0L247.9 288s0 0 0 0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7l40.6 0c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7s0 0 0 0c-6.3-12.7-6.3-12.7-6.3-12.7s0 0 0 0s0 0 0 0c0 0 .1 0 .1 0l.2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7l0 6.7 0 41.3 0 16c0 61.9-50.1 112-112 112l-44.3 0c-59.4 0-108.5-46.4-111.8-105.8L306.6 352l-37.2 0-1.2 22.2C264.9 433.6 215.8 480 156.3 480L112 480C50.1 480 0 429.9 0 368l0-16 0-41.3L0 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4L64 368c0 26.5 21.5 48 48 48l44.3 0c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368l0-42.6c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3l44.3 0c26.5 0 48-21.5 48-48z\"]\n};\nconst faChessBoard = {\n  prefix: 'fas',\n  iconName: 'chess-board',\n  icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 64l0 64 64 0 0-64 64 0 0 64 64 0 0-64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64 64 0 0-64-64 0 0-64 64 0 0-64-64 0 0-64 64 0zm64 128l64 0 0-64-64 0 0 64zm0 64l0-64-64 0 0 64 64 0zm64 0l-64 0 0 64 64 0 0-64zm0 0l64 0 0-64-64 0 0 64z\"]\n};\nconst faBuildingCircleCheck = {\n  prefix: 'fas',\n  iconName: 'building-circle-check',\n  icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faPersonChalkboard = {\n  prefix: 'fas',\n  iconName: 'person-chalkboard',\n  icon: [640, 512, [], \"e53d\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-288 56 0 64 0 16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-64 192 0 0 192-192 0 0-32-64 0 0 48c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48L368 0c-26.5 0-48 21.5-48 48l0 80-76.9 0-65.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faMarsStrokeRight = {\n  prefix: 'fas',\n  iconName: 'mars-stroke-right',\n  icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152l33.6 0 0-56c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56 32 0 0-56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-56-32 0 0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56-33.6 0z\"]\n};\nconst faMarsStrokeH = faMarsStrokeRight;\nconst faHandBackFist = {\n  prefix: 'fas',\n  iconName: 'hand-back-fist',\n  icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48l0 48 0 28.5L96 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-26.7-9 7.5C40.4 169 32 187 32 206L32 244c0 38 16.9 74 46.1 98.3L128 384l0 96c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-105.3c46.9-19 80-65 80-118.7l0-80 0-16 0-16c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nconst faHandRock = faHandBackFist;\nconst faSquareCaretUp = {\n  prefix: 'fas',\n  iconName: 'square-caret-up',\n  icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nconst faCaretSquareUp = faSquareCaretUp;\nconst faCloudShowersWater = {\n  prefix: 'fas',\n  iconName: 'cloud-showers-water',\n  icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64l1.6 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faChartBar = {\n  prefix: 'fas',\n  iconName: 'chart-bar',\n  icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faBarChart = faChartBar;\nconst faHandsBubbles = {\n  prefix: 'fas',\n  iconName: 'hands-bubbles',\n  icon: [576, 512, [\"hands-wash\"], \"e05e\", \"M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7l0-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8s0 0 0 0s0 0 0 0l-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.8 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4l4.7 0 13.3 0s0 0 0 0l31.8 0 23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352l0 8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-92 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-124 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l156 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-156 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-136 0s0 0 0 0s0 0 0 0l-93.2 0L305 219.1c15-9.4 19.5-29.1 10.2-44.1z\"]\n};\nconst faHandsWash = faHandsBubbles;\nconst faLessThanEqual = {\n  prefix: 'fas',\n  iconName: 'less-than-equal',\n  icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faTrain = {\n  prefix: 'fas',\n  iconName: 'train',\n  icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96L0 352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512l39.7 0c8.5 0 16.6-3.4 22.6-9.4L160 448l128 0 54.6 54.6c6 6 14.1 9.4 22.6 9.4l39.7 0c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9l0-256c0-53-43-96-96-96L96 0zM64 96c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L96 224c-17.7 0-32-14.3-32-32l0-96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faEyeLowVision = {\n  prefix: 'fas',\n  iconName: 'eye-low-vision',\n  icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nconst faLowVision = faEyeLowVision;\nconst faCrow = {\n  prefix: 'fas',\n  iconName: 'crow',\n  icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88l0 29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384l133.1 0 46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384l40.9 0c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192l0-64 0-8 80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32l-50.1 0C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faSailboat = {\n  prefix: 'fas',\n  iconName: 'sailboat',\n  icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6l-224 0c-8.8 0-16-7.2-16-16l0-320zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5l0 224c0 8.8-7.2 16-16 16L80 352c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384l533.8 0c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512L133 512C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nconst faWindowRestore = {\n  prefix: 'fas',\n  iconName: 'window-restore',\n  icon: [512, 512, [], \"f2d2\", \"M432 64L208 64c-8.8 0-16 7.2-16 16l0 16-64 0 0-16c0-44.2 35.8-80 80-80L432 0c44.2 0 80 35.8 80 80l0 224c0 44.2-35.8 80-80 80l-16 0 0-64 16 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192zm64 32c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 192c-17.7 0-32 14.3-32 32z\"]\n};\nconst faSquarePlus = {\n  prefix: 'fas',\n  iconName: 'square-plus',\n  icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faPlusSquare = faSquarePlus;\nconst faToriiGate = {\n  prefix: 'fas',\n  iconName: 'torii-gate',\n  icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48l16 0 0 64 64 0 0-64 96 0 0 64 64 0 0-64 96 0 0 64 64 0 0-64 16 0c26.5 0 48-21.5 48-48l0-66.6C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32L126.8 32c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4L0 80zM64 288l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0 0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0z\"]\n};\nconst faFrog = {\n  prefix: 'fas',\n  iconName: 'frog',\n  icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416l90.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faBucket = {\n  prefix: 'fas',\n  iconName: 'bucket',\n  icon: [448, 512, [], \"e4cf\", \"M96 152l0 8-48 0 0-8C48 68.1 116.1 0 200 0l48 0c83.9 0 152 68.1 152 152l0 8-48 0 0-8c0-57.4-46.6-104-104-104l-48 0C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-5.1 0L388.5 469c-2.6 24.4-23.2 43-47.7 43l-233.6 0c-24.6 0-45.2-18.5-47.7-43L37.1 256 32 256c-17.7 0-32-14.3-32-32z\"]\n};\nconst faImage = {\n  prefix: 'fas',\n  iconName: 'image',\n  icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faMicrophone = {\n  prefix: 'fas',\n  iconName: 'microphone',\n  icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96l0 160c0 53 43 96 96 96s96-43 96-96l0-160c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c85.8-11.7 152-85.3 152-174.4l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40z\"]\n};\nconst faCow = {\n  prefix: 'fas',\n  iconName: 'cow',\n  icon: [640, 512, [128004], \"f6c8\", \"M96 224l0 32 0 160c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-88.2c9.9 6.6 20.6 12 32 16.1l0 24.2c0 8.8 7.2 16 16 16s16-7.2 16-16l0-16.9c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9l0 16.9c0 8.8 7.2 16 16 16s16-7.2 16-16l0-24.2c11.4-4 22.1-9.4 32-16.1l0 88.2c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-160 32 32 0 49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5 0-81.6c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 14.4-52.9-74.1C496 86.5 452.4 64 405.9 64L272 64l-16 0-64 0-48 0C77.7 64 24 117.7 24 184l0 54C9.4 249.8 0 267.8 0 288l0 17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4l0-6.4 0-32 0-40c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160l0 64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6l178.7 0c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nconst faCaretUp = {\n  prefix: 'fas',\n  iconName: 'caret-up',\n  icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nconst faScrewdriver = {\n  prefix: 'fas',\n  iconName: 'screwdriver',\n  icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19l0 54.1-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192l54.1 0c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nconst faFolderClosed = {\n  prefix: 'fas',\n  iconName: 'folder-closed',\n  icon: [512, 512, [], \"e185\", \"M448 480L64 480c-35.3 0-64-28.7-64-64L0 192l512 0 0 224c0 35.3-28.7 64-64 64zm64-320L0 160 0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64z\"]\n};\nconst faHouseTsunami = {\n  prefix: 'fas',\n  iconName: 'house-tsunami',\n  icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1c0 0 0 0 0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6l0 121c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nconst faSquareNfi = {\n  prefix: 'fas',\n  iconName: 'square-nfi',\n  icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm75.7 64.6C68.8 162.5 64 168.8 64 176l0 160c0 8.8 7.2 16 16 16s16-7.2 16-16l0-102.2 66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4l0-160c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 102.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176l0 64 0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-32 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 160c0 8.8 7.2 16 16 16s16-7.2 16-16l0-160z\"]\n};\nconst faArrowUpFromGroundWater = {\n  prefix: 'fas',\n  iconName: 'arrow-up-from-ground-water',\n  icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32l0-210.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3 256 320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192L48 192c-26.5 0-48 21.5-48 48L0 425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3L192 192zm384 48c0-26.5-21.5-48-48-48l-144 0 0 224.5s0 0 0 0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9l0-185z\"]\n};\nconst faMartiniGlass = {\n  prefix: 'fas',\n  iconName: 'martini-glass',\n  icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3 224 448l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-178.7L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0L32 0zM173.3 128l-64-64 293.5 0-64 64-165.5 0z\"]\n};\nconst faGlassMartiniAlt = faMartiniGlass;\nconst faSquareBinary = {\n  prefix: 'fas',\n  iconName: 'square-binary',\n  icon: [448, 512, [], \"e69b\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm144 4c-24.3 0-44 19.7-44 44l0 48c0 24.3 19.7 44 44 44l32 0c24.3 0 44-19.7 44-44l0-48c0-24.3-19.7-44-44-44l-32 0zm-4 44c0-2.2 1.8-4 4-4l32 0c2.2 0 4 1.8 4 4l0 48c0 2.2-1.8 4-4 4l-32 0c-2.2 0-4-1.8-4-4l0-48zm140-44c-11 0-20 9-20 20c0 9.7 6.9 17.7 16 19.6l0 76.4c0 11 9 20 20 20s20-9 20-20l0-96c0-11-9-20-20-20l-16 0zM132 296c0 9.7 6.9 17.7 16 19.6l0 76.4c0 11 9 20 20 20s20-9 20-20l0-96c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20zm96 24l0 48c0 24.3 19.7 44 44 44l32 0c24.3 0 44-19.7 44-44l0-48c0-24.3-19.7-44-44-44l-32 0c-24.3 0-44 19.7-44 44zm44-4l32 0c2.2 0 4 1.8 4 4l0 48c0 2.2-1.8 4-4 4l-32 0c-2.2 0-4-1.8-4-4l0-48c0-2.2 1.8-4 4-4z\"]\n};\nconst faRotateLeft = {\n  prefix: 'fas',\n  iconName: 'rotate-left',\n  icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224L40 224c-13.3 0-24-10.7-24-24L16 72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8L48.5 224z\"]\n};\nconst faRotateBack = faRotateLeft;\nconst faRotateBackward = faRotateLeft;\nconst faUndoAlt = faRotateLeft;\nconst faTableColumns = {\n  prefix: 'fas',\n  iconName: 'table-columns',\n  icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 64l0 256 160 0 0-256L64 160zm384 0l-160 0 0 256 160 0 0-256z\"]\n};\nconst faColumns = faTableColumns;\nconst faLemon = {\n  prefix: 'fas',\n  iconName: 'lemon',\n  icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nconst faHeadSideMask = {\n  prefix: 'fas',\n  iconName: 'head-side-mask',\n  icon: [576, 512, [], \"e063\", \"M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31l0 160-128 0c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2L336 272c-21.7 0-41.3 8.6-55.7 22.6zM336 304l198 0s0 0 0 0l10 0-19.7 64L368 368c-8.8 0-16 7.2-16 16s7.2 16 16 16l146.5 0-9.8 32L368 432c-8.8 0-16 7.2-16 16s7.2 16 16 16l126.8 0-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2L288 512l0-160c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faHandshake = {\n  prefix: 'fas',\n  iconName: 'handshake',\n  icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8 512 128l-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48 0 224 28.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16L0 352c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-224-80 0zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128l0 224c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-208c0-8.8-7.2-16-16-16l-80 0zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faGem = {\n  prefix: 'fas',\n  iconName: 'gem',\n  icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8l240 0c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nconst faDolly = {\n  prefix: 'fas',\n  iconName: 'dolly',\n  icon: [576, 512, [\"dolly-box\"], \"f472\", \"M0 32C0 14.3 14.3 0 32 0l72.9 0c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64 32 64C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z\"]\n};\nconst faDollyBox = faDolly;\nconst faSmoking = {\n  prefix: 'fas',\n  iconName: 'smoking',\n  icon: [640, 512, [128684], \"f48d\", \"M448 32l0 11c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2l0 11c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-11c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43l0-11c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256l0-11c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2l0-11c0-17.7 14.3-32 32-32s32 14.3 32 32l0 11c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1l0 11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64l352 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L64 512c-35.3 0-64-28.7-64-64l0-32zm224 0l0 32 160 0 0-32-160 0zm288-64c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32z\"]\n};\nconst faMinimize = {\n  prefix: 'fas',\n  iconName: 'minimize',\n  icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-144c0-13.3 10.7-24 24-24l144 0zm-256 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8l144 0zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 144c0 13.3-10.7 24-24 24L56 224z\"]\n};\nconst faCompressArrowsAlt = faMinimize;\nconst faMonument = {\n  prefix: 'fas',\n  iconName: 'monument',\n  icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322L55.9 416 96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zM32 448l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSnowplow = {\n  prefix: 'fas',\n  iconName: 'snowplow',\n  icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160L256 224l-64-64 0-96 106.9 0zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0L176 0c-26.5 0-48 21.5-48 48l0 112-32 0c-17.7 0-32 14.3-32 32l0 106.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112l256 0c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48l42.8 0 0 50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7l0-82.7 0-84.8L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40l0 52.8-64 0 0-31.3c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48l-256 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l256 0zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faAnglesRight = {\n  prefix: 'fas',\n  iconName: 'angles-right',\n  icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nconst faAngleDoubleRight = faAnglesRight;\nconst faCannabis = {\n  prefix: 'fas',\n  iconName: 'cannabis',\n  icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2l0 70.8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-70.8-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nconst faCirclePlay = {\n  prefix: 'fas',\n  iconName: 'circle-play',\n  icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nconst faPlayCircle = faCirclePlay;\nconst faTablets = {\n  prefix: 'fas',\n  iconName: 'tablets',\n  icon: [640, 512, [], \"f490\", \"M614.3 247c-5.2 7.9-16.2 8.5-22.9 1.8L391.2 48.6c-6.7-6.7-6.2-17.8 1.8-22.9C418.1 9.4 447.9 0 480 0c88.4 0 160 71.6 160 160c0 32.1-9.4 61.9-25.7 87zM567 294.3c-25 16.3-54.9 25.7-87 25.7c-88.4 0-160-71.6-160-160c0-32.1 9.4-61.9 25.7-87c5.2-7.9 16.2-8.5 22.9-1.8L568.8 271.4c6.7 6.7 6.2 17.8-1.8 22.9zM301.5 368c9.5 0 16.9 8.2 15 17.5C301.1 457.8 236.9 512 160 512S18.9 457.8 3.5 385.5c-2-9.3 5.5-17.5 15-17.5l283.1 0zm0-32L18.5 336c-9.5 0-16.9-8.2-15-17.5C18.9 246.2 83.1 192 160 192s141.1 54.2 156.5 126.5c2 9.3-5.5 17.5-15 17.5z\"]\n};\nconst faEthernet = {\n  prefix: 'fas',\n  iconName: 'ethernet',\n  icon: [512, 512, [], \"f796\", \"M0 224L0 416c0 17.7 14.3 32 32 32l64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32L160 64c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faEuroSign = {\n  prefix: 'fas',\n  iconName: 'euro-sign',\n  icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8l0 16c0 2.7 0 5.3 .1 8L32 272c-17.7 0-32 14.3-32 32s14.3 32 32 32l28.3 0C89.9 419.9 170 480 264 480l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-24 0c-57.9 0-108.2-32.4-133.9-80L256 336c17.7 0 32-14.3 32-32s-14.3-32-32-32l-143.8 0c-.1-2.6-.2-5.3-.2-8l0-16c0-2.7 .1-5.4 .2-8L256 240c17.7 0 32-14.3 32-32s-14.3-32-32-32l-125.9 0c25.7-47.6 76-80 133.9-80l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-24 0C170 32 89.9 92.1 60.3 176L32 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l16.1 0z\"]\n};\nconst faEur = faEuroSign;\nconst faEuro = faEuroSign;\nconst faChair = {\n  prefix: 'fas',\n  iconName: 'chair',\n  icon: [448, 512, [129681], \"f6c0\", \"M248 48l0 208 48 0 0-197.3c23.9 13.8 40 39.7 40 69.3l0 128 48 0 0-128C384 57.3 326.7 0 256 0L192 0C121.3 0 64 57.3 64 128l0 128 48 0 0-128c0-29.6 16.1-55.5 40-69.3L152 256l48 0 0-208 48 0zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 256 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288L48 288z\"]\n};\nconst faCircleCheck = {\n  prefix: 'fas',\n  iconName: 'circle-check',\n  icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faCheckCircle = faCircleCheck;\nconst faCircleStop = {\n  prefix: 'fas',\n  iconName: 'circle-stop',\n  icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z\"]\n};\nconst faStopCircle = faCircleStop;\nconst faCompassDrafting = {\n  prefix: 'fas',\n  iconName: 'compass-drafting',\n  icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192c0 0 0 0 0 0s0 0 0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496l0-55.4c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1l0 55.4c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faDraftingCompass = faCompassDrafting;\nconst faPlateWheat = {\n  prefix: 'fas',\n  iconName: 'plate-wheat',\n  icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zM56 64l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16zM400 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zm80 160l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80zm-96 16l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320l456.4 0c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446l0 2c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nconst faIcicles = {\n  prefix: 'fas',\n  iconName: 'icicles',\n  icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nconst faPersonShelter = {\n  prefix: 'fas',\n  iconName: 'person-shelter',\n  icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.4L256 68.9 448 178.6 448 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280l0-88 16 0 0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-174.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5 200 488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nconst faNeuter = {\n  prefix: 'fas',\n  iconName: 'neuter',\n  icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1L160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-130.9z\"]\n};\nconst faIdBadge = {\n  prefix: 'fas',\n  iconName: 'id-badge',\n  icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zm96 320l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L96 416c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMarker = {\n  prefix: 'fas',\n  iconName: 'marker',\n  icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nconst faFaceLaughBeam = {\n  prefix: 'fas',\n  iconName: 'face-laugh-beam',\n  icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faLaughBeam = faFaceLaughBeam;\nconst faHelicopterSymbol = {\n  prefix: 'fas',\n  iconName: 'helicopter-symbol',\n  icon: [512, 512, [], \"e502\", \"M445.3 224l64.7 0C495.6 108.2 403.8 16.4 288 2l0 64.7C368.4 80.1 431.9 143.6 445.3 224zM510 288l-64.7 0C431.9 368.4 368.4 431.9 288 445.3l0 64.7c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510l0-64.7C143.6 431.9 80.1 368.4 66.7 288L2 288zm0-64l64.7 0C80.1 143.6 143.6 80.1 224 66.7L224 2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 96 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-96 0 0-64z\"]\n};\nconst faUniversalAccess = {\n  prefix: 'fas',\n  iconName: 'universal-access',\n  icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3l0 50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6l0-50.1c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faCircleChevronUp = {\n  prefix: 'fas',\n  iconName: 'circle-chevron-up',\n  icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nconst faChevronCircleUp = faCircleChevronUp;\nconst faLariSign = {\n  prefix: 'fas',\n  iconName: 'lari-sign',\n  icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32l0 32.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7L208 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3l0 67.9c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-95c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1l0 95c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-67.9C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l16.9 0C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6L112 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faVolcano = {\n  prefix: 'fas',\n  iconName: 'volcano',\n  icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1l-41.8 0c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2l41.8 0c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2L52.2 512C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nconst faPersonWalkingDashedLineArrowRight = {\n  prefix: 'fas',\n  iconName: 'person-walking-dashed-line-arrow-right',\n  icon: [640, 512, [], \"e553\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224 384 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16zM392 320c-13.3 0-24 10.7-24 24l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48z\"]\n};\nconst faSterlingSign = {\n  prefix: 'fas',\n  iconName: 'sterling-sign',\n  icon: [320, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4L48 224l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L88.5 416l.7-1.1C104.1 390 112 361.5 112 332.5l0-44.5 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-63.6z\"]\n};\nconst faGbp = faSterlingSign;\nconst faPoundSign = faSterlingSign;\nconst faViruses = {\n  prefix: 'fas',\n  iconName: 'viruses',\n  icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24l0 13.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168l13.5 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-13.5 0c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5l0 13.5c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-13.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216L24 216c-13.3 0-24-10.7-24-24s10.7-24 24-24l13.5 0c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5L168 24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faSquarePersonConfined = {\n  prefix: 'fas',\n  iconName: 'square-person-confined',\n  icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56l0 102.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7l0-58.7z\"]\n};\nconst faUserTie = {\n  prefix: 'fas',\n  iconName: 'user-tie',\n  icon: [448, 512, [], \"f508\", \"M96 128a128 128 0 1 0 256 0A128 128 0 1 0 96 128zm94.5 200.2l18.6 31L175.8 483.1l-36-146.9c-2-8.1-9.8-13.4-17.9-11.3C51.9 342.4 0 405.8 0 481.3c0 17 13.8 30.7 30.7 30.7l131.7 0c0 0 0 0 .1 0l5.5 0 112 0 5.5 0c0 0 0 0 .1 0l131.7 0c17 0 30.7-13.8 30.7-30.7c0-75.5-51.9-138.9-121.9-156.4c-8.1-2-15.9 3.3-17.9 11.3l-36 146.9L238.9 359.2l18.6-31c6.4-10.7-1.3-24.2-13.7-24.2L224 304l-19.7 0c-12.4 0-20.1 13.6-13.7 24.2z\"]\n};\nconst faArrowDownLong = {\n  prefix: 'fas',\n  iconName: 'arrow-down-long',\n  icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n};\nconst faLongArrowDown = faArrowDownLong;\nconst faTentArrowDownToLine = {\n  prefix: 'fas',\n  iconName: 'tent-arrow-down-to-line',\n  icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l127.6 0 .7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448l80 0L402.7 325.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9L384 448z\"]\n};\nconst faCertificate = {\n  prefix: 'fas',\n  iconName: 'certificate',\n  icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.4-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nconst faReplyAll = {\n  prefix: 'fas',\n  iconName: 'reply-all',\n  icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2l0-64 32 0c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176l-48 0 0-64z\"]\n};\nconst faMailReplyAll = faReplyAll;\nconst faSuitcase = {\n  prefix: 'fas',\n  iconName: 'suitcase',\n  icon: [512, 512, [129523], \"f0f2\", \"M176 56l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 48c-4.4 0-8 3.6-8 8zM128 96l0-40c0-30.9 25.1-56 56-56L328 0c30.9 0 56 25.1 56 56l0 40 0 32 0 352-256 0 0-352 0-32zM64 96l32 0 0 384-32 0c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64zM448 480l-32 0 0-384 32 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64z\"]\n};\nconst faPersonSkating = {\n  prefix: 'fas',\n  iconName: 'person-skating',\n  icon: [448, 512, [\"skating\"], \"f7c5\", \"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32l159.4 0c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9l0 73.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17L160 160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4L272 512c-8.8 0-16-7.2-16-16s7.2-16 16-16l88.8 0c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nconst faSkating = faPersonSkating;\nconst faFilterCircleDollar = {\n  prefix: 'fas',\n  iconName: 'filter-circle-dollar',\n  icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0L472 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7l0-9.4c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6c0 0 0 0 0 0s0 0 0 0c7 2.3 15.1 4.8 23.7 6.6l0 11.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-10.8c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5c0 0 0 0 0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nconst faFunnelDollar = faFilterCircleDollar;\nconst faCameraRetro = {\n  prefix: 'fas',\n  iconName: 'camera-retro',\n  icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96l0 96-114.8 0c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24L64 192l0-64 128 0c9.9 0 19.7-2.3 28.6-6.8zM0 128L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L271.1 32c-9.9 0-19.7 2.3-28.6 6.8L192 64l-32 0 0-16c0-8.8-7.2-16-16-16L80 32c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z\"]\n};\nconst faCircleArrowDown = {\n  prefix: 'fas',\n  iconName: 'circle-arrow-down',\n  icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 297c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 214.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 409c-9.4 9.4-24.6 9.4-33.9 0L127 297z\"]\n};\nconst faArrowCircleDown = faCircleArrowDown;\nconst faFileImport = {\n  prefix: 'fas',\n  iconName: 'file-import',\n  icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64L352 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64l-256 0c-35.3 0-64-28.7-64-64l0-112 174.1 0-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39L128 288l0-224zm0 224l0 48L24 336c-13.3 0-24-10.7-24-24s10.7-24 24-24l104 0zM512 128l-128 0L384 0 512 128z\"]\n};\nconst faArrowRightToFile = faFileImport;\nconst faSquareArrowUpRight = {\n  prefix: 'fas',\n  iconName: 'square-arrow-up-right',\n  icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24l94.1 0L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135L288 328c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24l-152 0z\"]\n};\nconst faExternalLinkSquare = faSquareArrowUpRight;\nconst faBoxOpen = {\n  prefix: 'fas',\n  iconName: 'box-open',\n  icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6l0 167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5l0-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128l2.2 0z\"]\n};\nconst faScroll = {\n  prefix: 'fas',\n  iconName: 'scroll',\n  icon: [576, 512, [128220], \"f70e\", \"M0 80l0 48c0 17.7 14.3 32 32 32l16 0 48 0 0-80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48l0 304c0 35.3 28.7 64 64 64s64-28.7 64-64l0-5.3c0-32.4 26.3-58.7 58.7-58.7L480 320l0-192c0-53-43-96-96-96L112 32zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16l-245.3 0c-14.7 0-26.7 11.9-26.7 26.7l0 5.3c0 53-43 96-96 96l176 0 96 0z\"]\n};\nconst faSpa = {\n  prefix: 'fas',\n  iconName: 'spa',\n  icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192l9.9 0c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480L288 480l-20.1 0C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192l9.9 0c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nconst faLocationPinLock = {\n  prefix: 'fas',\n  iconName: 'location-pin-lock',\n  icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3l0-94.8c0-23.7 12.9-44.4 32-55.4l0-24.6c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faPause = {\n  prefix: 'fas',\n  iconName: 'pause',\n  icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112L0 400c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48L48 64zm192 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-32 0z\"]\n};\nconst faHillAvalanche = {\n  prefix: 'fas',\n  iconName: 'hill-avalanche',\n  icon: [576, 512, [], \"e507\", \"M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3L0 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.3 87z\"]\n};\nconst faTemperatureEmpty = {\n  prefix: 'fas',\n  iconName: 'temperature-empty',\n  icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L112 112zM160 0C98.1 0 48 50.2 48 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L272 112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faTemperature0 = faTemperatureEmpty;\nconst faThermometer0 = faTemperatureEmpty;\nconst faThermometerEmpty = faTemperatureEmpty;\nconst faBomb = {\n  prefix: 'fas',\n  iconName: 'bomb',\n  icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104l0 8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-8c0-75.1 60.9-136 136-136l8 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-8 0z\"]\n};\nconst faRegistered = {\n  prefix: 'fas',\n  iconName: 'registered',\n  icon: [512, 512, [174], \"f25d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24l88 0c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288 208 288l0 72c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-96 0-112zm48 88l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0 64z\"]\n};\nconst faAddressCard = {\n  prefix: 'fas',\n  iconName: 'address-card',\n  icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 256l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faContactCard = faAddressCard;\nconst faVcard = faAddressCard;\nconst faScaleUnbalancedFlip = {\n  prefix: 'fas',\n  iconName: 'scale-unbalanced-flip',\n  icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2L352 480c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288l144.9 0zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416l144.9 0L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n};\nconst faBalanceScaleRight = faScaleUnbalancedFlip;\nconst faSubscript = {\n  prefix: 'fas',\n  iconName: 'subscript',\n  icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l15.3 0 89.6 128L47.3 384 32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0L215.1 256l89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64L32 64zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128z\"]\n};\nconst faDiamondTurnRight = {\n  prefix: 'fas',\n  iconName: 'diamond-turn-right',\n  icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8l0 56-64 0c-35.3 0-64 28.7-64 64l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-8.8 7.2-16 16-16l64 0 0 56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nconst faDirections = faDiamondTurnRight;\nconst faBurst = {\n  prefix: 'fas',\n  iconName: 'burst',\n  icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nconst faHouseLaptop = {\n  prefix: 'fas',\n  iconName: 'house-laptop',\n  icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5l-144 0c-19.1 0-36.3 8.4-48 21.7l0-37.7c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0 0 128-160 0c-26.5 0-48-21.5-48-48l0-112-32 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304l0 144 192 0 0-144-192 0zm-48-16c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32l0 160 32 0c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48l-48 0-192 0-48 0c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16l32 0 0-160z\"]\n};\nconst faLaptopHouse = faHouseLaptop;\nconst faFaceTired = {\n  prefix: 'fas',\n  iconName: 'face-tired',\n  icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3l-3.2 0c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faTired = faFaceTired;\nconst faMoneyBills = {\n  prefix: 'fas',\n  iconName: 'money-bills',\n  icon: [640, 512, [], \"e1f3\", \"M96 96l0 224c0 35.3 28.7 64 64 64l416 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64l-64 0 0-64zM224 96c0 35.3-28.7 64-64 64l0-64 64 0zM576 256l0 64-64 0c0-35.3 28.7-64 64-64zM512 96l64 0 0 64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 360c0 66.3 53.7 120 120 120l400 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-400 0c-39.8 0-72-32.2-72-72l0-240z\"]\n};\nconst faSmog = {\n  prefix: 'fas',\n  iconName: 'smog',\n  icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144l123.3 0c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32l27.3 0c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368l-336 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96l-112 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0L24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24L96 368c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0c13.3 0 24-10.7 24-24z\"]\n};\nconst faCrutch = {\n  prefix: 'fas',\n  iconName: 'crutch',\n  icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nconst faFontAwesome = {\n  prefix: 'fas',\n  iconName: 'font-awesome',\n  icon: [512, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 352 0 64 64 0 0-64 373.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96z\"]\n};\nconst faFontAwesomeFlag = faFontAwesome;\nconst faFontAwesomeLogoFull = faFontAwesome;\nconst faCloudArrowUp = {\n  prefix: 'fas',\n  iconName: 'cloud-arrow-up',\n  icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L296 392c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nconst faCloudUpload = faCloudArrowUp;\nconst faCloudUploadAlt = faCloudArrowUp;\nconst faPalette = {\n  prefix: 'fas',\n  iconName: 'palette',\n  icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3L344 320c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faArrowsTurnRight = {\n  prefix: 'fas',\n  iconName: 'arrows-turn-right',\n  icon: [448, 512, [], \"e4c0\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160 128 160c-35.3 0-64 28.7-64 64l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32C0 153.3 57.3 96 128 96l210.7 0L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-53 43-96 96-96l146.7 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faVest = {\n  prefix: 'fas',\n  iconName: 'vest',\n  icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2L224 464c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-193.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6l0-17.5 0-73.7 0-6.3c0-26.5-21.5-48-48-48l-4.5 0c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0L112 0C85.5 0 64 21.5 64 48l0 6.3L64 128l0 17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5L0 464c0 26.5 21.5 48 48 48l128 0c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464l0-168.2c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nconst faFerry = {\n  prefix: 'fas',\n  iconName: 'ferry',\n  icon: [576, 512, [], \"e4ea\", \"M224 0L352 0c17.7 0 32 14.3 32 32l75.1 0c20.6 0 31.6 24.3 18.1 39.8L456 96 120 96 98.8 71.8C85.3 56.3 96.3 32 116.9 32L192 32c0-17.7 14.3-32 32-32zM96 128l384 0c17.7 0 32 14.3 32 32l0 123.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9l-16.5 0c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9l-16.6 0c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5L64 160c0-17.7 14.3-32 32-32zm32 64l0 96 320 0 0-96-320 0zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faArrowsDownToPeople = {\n  prefix: 'fas',\n  iconName: 'arrows-down-to-people',\n  icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24l0 118.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23L168 24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5l0 54.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-54.5 26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5l0 38.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5 88 480c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23L520 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 118.1-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nconst faSeedling = {\n  prefix: 'fas',\n  iconName: 'seedling',\n  icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0l32 0c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64l32 0c123.7 0 224 100.3 224 224l0 32 0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160C100.3 320 0 219.7 0 96z\"]\n};\nconst faSprout = faSeedling;\nconst faLeftRight = {\n  prefix: 'fas',\n  iconName: 'left-right',\n  icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nconst faArrowsAltH = faLeftRight;\nconst faBoxesPacking = {\n  prefix: 'fas',\n  iconName: 'boxes-packing',\n  icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48L592 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48l-210.7 0c1.8-5 2.7-10.4 2.7-16l0-242.7c18.6-6.6 32-24.4 32-45.3l0-32c0-26.5-21.5-48-48-48l-112 0 0-80zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6 480 432c0 8.8 7.2 16 16 16s16-7.2 16-16l0-121.4 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16L16 224c-8.8 0-16-7.2-16-16l0-32zm352 80l0 224c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32l0-224 320 0zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0z\"]\n};\nconst faCircleArrowLeft = {\n  prefix: 'fas',\n  iconName: 'circle-arrow-left',\n  icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM215 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L392 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-214.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L103 273c-9.4-9.4-9.4-24.6 0-33.9L215 127z\"]\n};\nconst faArrowCircleLeft = faCircleArrowLeft;\nconst faGroupArrowsRotate = {\n  prefix: 'fas',\n  iconName: 'group-arrows-rotate',\n  icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4l0-60.5c0-5.7-4.7-10.4-10.4-10.4l-60.5 0c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4l0 60.5c0 5.7 4.7 10.4 10.4 10.4l60.5 0c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nconst faBowlFood = {\n  prefix: 'fas',\n  iconName: 'bowl-food',\n  icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32L8.6 224C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nconst faCandyCane = {\n  prefix: 'fas',\n  iconName: 'candy-cane',\n  icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23l0 5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8l0-5.6C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nconst faArrowDownWideShort = {\n  prefix: 'fas',\n  iconName: 'arrow-down-wide-short',\n  icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L320 96z\"]\n};\nconst faSortAmountAsc = faArrowDownWideShort;\nconst faSortAmountDown = faArrowDownWideShort;\nconst faCloudBolt = {\n  prefix: 'fas',\n  iconName: 'cloud-bolt',\n  icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96l47.2 0L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320l18.3 0 64 0c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7l70.1 0L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7l-70.1 0 52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nconst faThunderstorm = faCloudBolt;\nconst faTextSlash = {\n  prefix: 'fas',\n  iconName: 'text-slash',\n  icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96 503 96 497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32L376.1 32l-.3 0L204.5 32c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96l116.7 0L301.3 210.8l-94.5-74.1zM243.3 416L192 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-42.2 0 17.6-62.1L272.9 311 243.3 416z\"]\n};\nconst faRemoveFormat = faTextSlash;\nconst faFaceSmileWink = {\n  prefix: 'fas',\n  iconName: 'face-smile-wink',\n  icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nconst faSmileWink = faFaceSmileWink;\nconst faFileWord = {\n  prefix: 'fas',\n  iconName: 'file-word',\n  icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nconst faFilePowerpoint = {\n  prefix: 'fas',\n  iconName: 'file-powerpoint',\n  icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM136 240l68 0c42 0 76 34 76 76s-34 76-76 76l-44 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56 0-104c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28l-44 0 0 56 44 0z\"]\n};\nconst faArrowsLeftRight = {\n  prefix: 'fas',\n  iconName: 'arrows-left-right',\n  icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nconst faArrowsH = faArrowsLeftRight;\nconst faHouseLock = {\n  prefix: 'fas',\n  iconName: 'house-lock',\n  icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32l-.6 0c-22.1 0-40-17.9-40-40l0-24 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272l0 24.6c-19.1 11.1-32 31.7-32 55.4l0 128zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faCloudArrowDown = {\n  prefix: 'fas',\n  iconName: 'cloud-arrow-down',\n  icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39L344 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 134.1-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nconst faCloudDownload = faCloudArrowDown;\nconst faCloudDownloadAlt = faCloudArrowDown;\nconst faChildren = {\n  prefix: 'fas',\n  iconName: 'children',\n  icon: [640, 512, [], \"e4e1\", \"M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480l0-80-17.8 0c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1L232 400l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80-16 0 0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-179.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9l12.3 0c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5 552 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0z\"]\n};\nconst faChalkboard = {\n  prefix: 'fas',\n  iconName: 'chalkboard',\n  icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96l0 288 64 0L96 96l384 0 0 288 64 0 0-288c0-35.3-28.7-64-64-64L96 32zM224 384l0 32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-32c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faBlackboard = faChalkboard;\nconst faUserLargeSlash = {\n  prefix: 'fas',\n  iconName: 'user-large-slash',\n  icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512L528 512 284.3 320l-59 0C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0 .3 0z\"]\n};\nconst faUserAltSlash = faUserLargeSlash;\nconst faEnvelopeOpen = {\n  prefix: 'fas',\n  iconName: 'envelope-open',\n  icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1l0 47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5l0-47.4zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-239.9c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nconst faHandshakeSimpleSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-simple-slash',\n  icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352l41.8 0c26.5 0 48-21.5 48-48l0-128c0-26.5-21.5-48-48-48l-76 0-4 0-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176L0 304c0 26.5 21.5 48 48 48l108.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nconst faHandshakeAltSlash = faHandshakeSimpleSlash;\nconst faMattressPillow = {\n  prefix: 'fas',\n  iconName: 'mattress-pillow',\n  icon: [640, 512, [], \"e525\", \"M256 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l192 0 0-384zm32 384l288 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L288 64l0 384zM64 160c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-192z\"]\n};\nconst faGuaraniSign = {\n  prefix: 'fas',\n  iconName: 'guarani-sign',\n  icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32l0 34.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3l0 34.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-34.7c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32l-128 0 0-92c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7L224 32c0-17.7-14.3-32-32-32zM160 132L160 380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380l0-92 92 0c-11.6 45-47 80.4-92 92z\"]\n};\nconst faArrowsRotate = {\n  prefix: 'fas',\n  iconName: 'arrows-rotate',\n  icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160 352 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l111.5 0c0 0 0 0 0 0l.4 0c17.7 0 32-14.3 32-32l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1L16 432c0 17.7 14.3 32 32 32s32-14.3 32-32l0-35.1 17.6 17.5c0 0 0 0 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.8c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352l34.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48.4 288c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nconst faRefresh = faArrowsRotate;\nconst faSync = faArrowsRotate;\nconst faFireExtinguisher = {\n  prefix: 'fas',\n  iconName: 'fire-extinguisher',\n  icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32l0 96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104l-65 0 0 34.8c37.8 18 64 56.5 64 101.2l0 144L64 384l0-144c0-44.7 26.2-83.2 64-101.2l0-28.8c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4L128 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 24 65 0c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416l0 32c0 35.3-28.7 64-64 64l-96 0c-35.3 0-64-28.7-64-64l0-32 224 0zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faCruzeiroSign = {\n  prefix: 'fas',\n  iconName: 'cruzeiro-sign',\n  icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416l0-96 0-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32l0 55.3 0 8.7 0 82.7C135.5 378 96 321.6 96 256z\"]\n};\nconst faGreaterThanEqual = {\n  prefix: 'fas',\n  iconName: 'greater-than-equal',\n  icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0z\"]\n};\nconst faShieldHalved = {\n  prefix: 'fas',\n  iconName: 'shield-halved',\n  icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8l0 378.1C394 378 431.1 230.1 432 141.4L256 66.8s0 0 0 0z\"]\n};\nconst faShieldAlt = faShieldHalved;\nconst faBookAtlas = {\n  prefix: 'fas',\n  iconName: 'book-atlas',\n  icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9l63 0c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9l31.1 0c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9l-31.1 0c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208l31.1 0c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32l-31.1 0c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9l-63 0c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nconst faAtlas = faBookAtlas;\nconst faVirus = {\n  prefix: 'fas',\n  iconName: 'virus',\n  icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l11.5 0c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6l0 11.5c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6l11.5 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-11.5 0c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5L288 32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faEnvelopeCircleCheck = {\n  prefix: 'fas',\n  iconName: 'envelope-circle-check',\n  icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176 0 384c0 35.3 28.7 64 64 64l296.2 0C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faLayerGroup = {\n  prefix: 'fas',\n  iconName: 'layer-group',\n  icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nconst faArrowsToDot = {\n  prefix: 'fas',\n  iconName: 'arrows-to-dot',\n  icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32l0 32 32 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l32 0 0-32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 32 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArchway = {\n  prefix: 'fas',\n  iconName: 'archway',\n  icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 64 0 0-128c0-53 43-96 96-96s96 43 96 96l0 128 64 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-288L32 128l0 288z\"]\n};\nconst faHeartCircleCheck = {\n  prefix: 'fas',\n  iconName: 'heart-circle-check',\n  icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faHouseChimneyCrack = {\n  prefix: 'fas',\n  iconName: 'house-chimney-crack',\n  icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-122.1 0L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512l-102.3 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24z\"]\n};\nconst faHouseDamage = faHouseChimneyCrack;\nconst faFileZipper = {\n  prefix: 'fas',\n  iconName: 'file-zipper',\n  icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM96 48c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8l14.8 0c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0z\"]\n};\nconst faFileArchive = faFileZipper;\nconst faSquare = {\n  prefix: 'fas',\n  iconName: 'square',\n  icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nconst faMartiniGlassEmpty = {\n  prefix: 'fas',\n  iconName: 'martini-glass-empty',\n  icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3 224 448l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-178.7L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0L32 0zM256 210.7L109.3 64l293.5 0L256 210.7z\"]\n};\nconst faGlassMartini = faMartiniGlassEmpty;\nconst faCouch = {\n  prefix: 'fas',\n  iconName: 'couch',\n  icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32l256 0c70.7 0 128 57.3 128 128l0 33.6c-36.5 7.4-64 39.7-64 78.4l0 48-384 0 0-48c0-38.7-27.5-71-64-78.4L64 160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48l0 176c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32L96 448c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32L0 272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3l0 48 0 32 32 0 384 0 32 0 0-32 0-48z\"]\n};\nconst faCediSign = {\n  prefix: 'fas',\n  iconName: 'cedi-sign',\n  icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 34.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3l0 34.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-34.7c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6L256 132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8L256 32zM192 132L192 380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nconst faItalic = {\n  prefix: 'fas',\n  iconName: 'italic',\n  icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-58.7 0L160 416l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l58.7 0L224 96l-64 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faTableCellsColumnLock = {\n  prefix: 'fas',\n  iconName: 'table-cells-column-lock',\n  icon: [640, 512, [], \"e678\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zm208 0l0 64 88 0 0-64-88 0zm240 0l-88 0 0 64 88 0 0-64zM208 224l0 64 88 0 0-64-88 0zm0 128l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faChurch = {\n  prefix: 'fas',\n  iconName: 'church',\n  icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2L160 512l96 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 96 0 0-260.8c0-16.9-8.8-32.5-23.3-41.2L344 142.4 344 96l32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4L0 464c0 26.5 21.5 48 48 48l80 0 0-238.4L24.9 330.3zM592 512c26.5 0 48-21.5 48-48l0-91.6c0-17.5-9.5-33.6-24.9-42.1L512 273.6 512 512l80 0z\"]\n};\nconst faCommentsDollar = {\n  prefix: 'fas',\n  iconName: 'comments-dollar',\n  icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9c0 0 0 0 0 0s0 0 0 0l.2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2s0 0 0 0s0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7L228 72z\"]\n};\nconst faDemocrat = {\n  prefix: 'fas',\n  iconName: 'democrat',\n  icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8L480 160l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17l0 87.4-352 0-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3l-2 0C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352l96 0 0 64 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64-160 0 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64 0-64 96 0 160 0zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nconst faZ = {\n  prefix: 'fas',\n  iconName: 'z',\n  icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32l320 0c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416 352 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faPersonSkiing = {\n  prefix: 'fas',\n  iconName: 'person-skiing',\n  icon: [512, 512, [9975, \"skiing\"], \"f7c9\", \"M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nconst faSkiing = faPersonSkiing;\nconst faRoadLock = {\n  prefix: 'fas',\n  iconName: 'road-lock',\n  icon: [640, 512, [], \"e567\", \"M288 32l-74.8 0c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480L288 480l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64 32 0 0-128c0-23.7 12.9-44.4 32-55.4l0-24.6c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32L352 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faA = {\n  prefix: 'fas',\n  iconName: 'a',\n  icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384l197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320l-144 0 72-172.8L264 320z\"]\n};\nconst faTemperatureArrowDown = {\n  prefix: 'fas',\n  iconName: 'temperature-arrow-down',\n  icon: [576, 512, [\"temperature-down\"], \"e03f\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L128 112zM176 0C114.1 0 64 50.1 64 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L288 112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3l0-50.7c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64l-32 0 0-288c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 288-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nconst faTemperatureDown = faTemperatureArrowDown;\nconst faFeatherPointed = {\n  prefix: 'fas',\n  iconName: 'feather-pointed',\n  icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nconst faFeatherAlt = faFeatherPointed;\nconst faP = {\n  prefix: 'fas',\n  iconName: 'p',\n  icon: [320, 512, [112], \"50\", \"M0 96C0 60.7 28.7 32 64 32l96 0c88.4 0 160 71.6 160 160s-71.6 160-160 160l-96 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 320 0 96zM64 288l96 0c53 0 96-43 96-96s-43-96-96-96L64 96l0 192z\"]\n};\nconst faSnowflake = {\n  prefix: 'fas',\n  iconName: 'snowflake',\n  icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32l0 30.1 15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49 0 70.3 61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7l0 70.3 49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15 0 30.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-30.1-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49 0-70.3-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3l0-70.3L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15L192 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faNewspaper = {\n  prefix: 'fas',\n  iconName: 'newspaper',\n  icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L80 480c-44.2 0-80-35.8-80-80L0 128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 272c0 8.8 7.2 16 16 16s16-7.2 16-16L96 96zm64 24l0 80c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24L184 96c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-256 0c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-256 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faRectangleAd = {\n  prefix: 'fas',\n  iconName: 'rectangle-ad',\n  icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328l-90.3 0-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280l42.3 0L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9l0-28.1c0-13.3 10.7-24 24-24s24 10.7 24 24l0 96 0 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nconst faAd = faRectangleAd;\nconst faCircleArrowRight = {\n  prefix: 'fas',\n  iconName: 'circle-arrow-right',\n  icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM297 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L120 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l214.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L409 239c9.4 9.4 9.4 24.6 0 33.9L297 385z\"]\n};\nconst faArrowCircleRight = faCircleArrowRight;\nconst faFilterCircleXmark = {\n  prefix: 'fas',\n  iconName: 'filter-circle-xmark',\n  icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0L472 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faLocust = {\n  prefix: 'fas',\n  iconName: 'locust',\n  icon: [576, 512, [], \"e520\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4l-64.2 0-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400l74.5 0-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400l80.4 0 38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400l12.4 0c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3l0-40C576 143 465 32 328 32l-16 0zm50.5 168l17.1 40L333 240l29.5-40zm-87.7 38.1l-1.4 1.9-48.2 0 32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240l-37.9 0zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faSort = {\n  prefix: 'fas',\n  iconName: 'sort',\n  icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8L32 224c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l256 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nconst faUnsorted = faSort;\nconst faListOl = {\n  prefix: 'fas',\n  iconName: 'list-ol',\n  icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24l0 120 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-96-8 0C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432l33.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-88 0c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faList12 = faListOl;\nconst faListNumeric = faListOl;\nconst faPersonDressBurst = {\n  prefix: 'fas',\n  iconName: 'person-dress-burst',\n  icon: [640, 512, [], \"e544\", \"M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384l17.8 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 16 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 17.8 0c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3l-11.6 0c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nconst faMoneyCheckDollar = {\n  prefix: 'fas',\n  iconName: 'money-check-dollar',\n  icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM272 192l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16zM164 152l0 13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9l0 13.8c0 11-9 20-20 20s-20-9-20-20l0-14.6c-10.3-2.2-20-5.5-28.2-8.4c0 0 0 0 0 0s0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5l0-14c0-11 9-20 20-20s20 9 20 20z\"]\n};\nconst faMoneyCheckAlt = faMoneyCheckDollar;\nconst faVectorSquare = {\n  prefix: 'fas',\n  iconName: 'vector-square',\n  icon: [448, 512, [], \"f5cb\", \"M368 80l32 0 0 32-32 0 0-32zM352 32c-17.7 0-32 14.3-32 32L128 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64l0 64c0 17.7 14.3 32 32 32l0 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l192 0c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-192c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zM96 160c17.7 0 32-14.3 32-32l192 0c0 17.7 14.3 32 32 32l0 192c-17.7 0-32 14.3-32 32l-192 0c0-17.7-14.3-32-32-32l0-192zM48 400l32 0 0 32-32 0 0-32zm320 32l0-32 32 0 0 32-32 0zM48 112l0-32 32 0 0 32-32 0z\"]\n};\nconst faBreadSlice = {\n  prefix: 'fas',\n  iconName: 'bread-slice',\n  icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nconst faLanguage = {\n  prefix: 'fas',\n  iconName: 'language',\n  icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64l192 0 48 0 16 0 256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64l-256 0-16 0-48 0L64 448c-35.3 0-64-28.7-64-64L0 128zm320 0l0 256 256 0 0-256-256 0zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1 73.6 0 8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276l-38 0 19-42.8zM448 164c11 0 20 9 20 20l0 4 44 0 16 0c11 0 20 9 20 20s-9 20-20 20l-2 0-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45L448 228l-72 0c-11 0-20-9-20-20s9-20 20-20l52 0 0-4c0-11 9-20 20-20z\"]\n};\nconst faFaceKissWinkHeart = {\n  prefix: 'fas',\n  iconName: 'face-kiss-wink-heart',\n  icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nconst faKissWinkHeart = faFaceKissWinkHeart;\nconst faFilter = {\n  prefix: 'fas',\n  iconName: 'filter',\n  icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32l432 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9 320 448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nconst faQuestion = {\n  prefix: 'fas',\n  iconName: 'question',\n  icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M80 160c0-35.3 28.7-64 64-64l32 0c35.3 0 64 28.7 64 64l0 3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74l0 1.4c0 17.7 14.3 32 32 32s32-14.3 32-32l0-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7l0-3.6c0-70.7-57.3-128-128-128l-32 0C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faFileSignature = {\n  prefix: 'fas',\n  iconName: 'file-signature',\n  icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-19.3c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2l-64 0c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2L80 448c-8.8 0-16-7.2-16-16s7.2-16 16-16l8.2 0c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8 8.9 0c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6l0-43.6-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nconst faUpDownLeftRight = {\n  prefix: 'fas',\n  iconName: 'up-down-left-right',\n  icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 96-96 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 96 0 0 96-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-96 96 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 32-96 0 0-96 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nconst faArrowsAlt = faUpDownLeftRight;\nconst faHouseChimneyUser = {\n  prefix: 'fas',\n  iconName: 'house-chimney-user',\n  icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185l0-121c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l320.4 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faHandHoldingHeart = {\n  prefix: 'fas',\n  iconName: 'hand-holding-heart',\n  icon: [576, 512, [], \"f4be\", \"M163.9 136.9c-29.4-29.8-29.4-78.2 0-108s77-29.8 106.4 0l17.7 18 17.7-18c29.4-29.8 77-29.8 106.4 0s29.4 78.2 0 108L310.5 240.1c-6.2 6.3-14.3 9.4-22.5 9.4s-16.3-3.1-22.5-9.4L163.9 136.9zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faPuzzlePiece = {\n  prefix: 'fas',\n  iconName: 'puzzle-piece',\n  icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2l56.8 0c26.5 0 48 21.5 48 48l0 56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2L384 464c0 26.5-21.5 48-48 48l-56.8 0c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2L48 512c-26.5 0-48-21.5-48-48L0 343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8L0 176c0-26.5 21.5-48 48-48l120.8 0c12.8 0 23.2-10.4 23.2-23.2z\"]\n};\nconst faMoneyCheck = {\n  prefix: 'fas',\n  iconName: 'money-check',\n  icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm48 160l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-352 0c-8.8 0-16-7.2-16-16zM376 160l80 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24z\"]\n};\nconst faStarHalfStroke = {\n  prefix: 'fas',\n  iconName: 'star-half-stroke',\n  icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M288 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L288.1 86.9l-.1 .3 0 289.2zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7z\"]\n};\nconst faStarHalfAlt = faStarHalfStroke;\nconst faCode = {\n  prefix: 'fas',\n  iconName: 'code',\n  icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nconst faWhiskeyGlass = {\n  prefix: 'fas',\n  iconName: 'whiskey-glass',\n  icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5l253 0c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32L32 32zM87.7 224L69 96l374 0L424.3 224 87.7 224z\"]\n};\nconst faGlassWhiskey = faWhiskeyGlass;\nconst faBuildingCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'building-circle-exclamation',\n  icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faMagnifyingGlassChart = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-chart',\n  icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64l0 96c0 13.3 10.7 24 24 24s24-10.7 24-24l0-96c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faArrowUpRightFromSquare = {\n  prefix: 'fas',\n  iconName: 'arrow-up-right-from-square',\n  icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faExternalLink = faArrowUpRightFromSquare;\nconst faCubesStacked = {\n  prefix: 'fas',\n  iconName: 'cubes-stacked',\n  icon: [448, 512, [], \"e4e6\", \"M192 64l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zm64 160c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zM160 384l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0z\"]\n};\nconst faWonSign = {\n  prefix: 'fas',\n  iconName: 'won-sign',\n  icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l40.9 0 56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288l46 0L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288l40.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-19.6 0 50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224l-64 0L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224l-64 0L62.4 53.9zm78 234.1l26.6 0-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1-14 0zm96 64l26.6 0-15.2 45.6L345 288z\"]\n};\nconst faKrw = faWonSign;\nconst faWon = faWonSign;\nconst faVirusCovid = {\n  prefix: 'fas',\n  iconName: 'virus-covid',\n  icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 33.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3l33.6 0 0-16c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16-33.6 0c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1l0 33.6 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-33.6c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280L48 280l0 16c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80c0-13.3 10.7-24 24-24s24 10.7 24 24l0 16 33.6 0c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1L232 48l-16 0c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faAustralSign = {\n  prefix: 'fas',\n  iconName: 'austral-sign',\n  icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0L82.7 320 32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l24 0L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384l197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0L352 288l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-90.7 0L253.5 51.7zM256 224l-64 0 32-76.8L256 224zm-90.7 64l117.3 0L296 320l-144 0 13.3-32z\"]\n};\nconst faF = {\n  prefix: 'fas',\n  iconName: 'f',\n  icon: [320, 512, [102], \"46\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 224 64 96l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32z\"]\n};\nconst faLeaf = {\n  prefix: 'fas',\n  iconName: 'leaf',\n  icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5l88 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0-72 0s0 0 0 0c-16.6 0-32.7 1.9-48.3 5.4c-25.9 5.9-49.9 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nconst faRoad = {\n  prefix: 'fas',\n  iconName: 'road',\n  icon: [576, 512, [128739], \"f018\", \"M256 32l-74.8 0c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480L256 480l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64 201.4 0c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32L320 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faTaxi = {\n  prefix: 'fas',\n  iconName: 'taxi',\n  icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32l0 32 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288L0 432l0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 320 0 0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 0-144c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1l0-.2 0-32c0-17.7-14.3-32-32-32L192 0zM165.4 128l181.2 0c13.6 0 25.7 8.6 30.2 21.4L402.9 224l-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faCab = faTaxi;\nconst faPersonCirclePlus = {\n  prefix: 'fas',\n  iconName: 'person-circle-plus',\n  icon: [576, 512, [], \"e541\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n};\nconst faChartPie = {\n  prefix: 'fas',\n  iconName: 'chart-pie',\n  icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240l0-223.4c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16L304 240zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4L256 288 412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288l238.4 0z\"]\n};\nconst faPieChart = faChartPie;\nconst faBoltLightning = {\n  prefix: 'fas',\n  iconName: 'bolt-lightning',\n  icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nconst faSackXmark = {\n  prefix: 'fas',\n  iconName: 'sack-xmark',\n  icon: [512, 512, [], \"e56a\", \"M192 96l128 0 47.4-71.1C374.5 14.2 366.9 0 354.1 0L157.9 0c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32l-128 0c-3.8 2.5-8.1 5.3-13 8.4c0 0 0 0 0 0s0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96l320 0c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nconst faFileExcel = {\n  prefix: 'fas',\n  iconName: 'file-excel',\n  icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nconst faFileContract = {\n  prefix: 'fas',\n  iconName: 'file-contract',\n  icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM80 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2L80 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l8.2 0c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8 54.1 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nconst faFishFins = {\n  prefix: 'fas',\n  iconName: 'fish-fins',\n  icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.6 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.6 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faBuildingFlag = {\n  prefix: 'fas',\n  iconName: 'building-flag',\n  icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32l0 480 64 0 0-320 144 0c8.8 0 16-7.2 16-16l0-128c0-8.8-7.2-16-16-16L480 32c0-17.7-14.3-32-32-32z\"]\n};\nconst faFaceGrinBeam = {\n  prefix: 'fas',\n  iconName: 'face-grin-beam',\n  icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faGrinBeam = faFaceGrinBeam;\nconst faObjectUngroup = {\n  prefix: 'fas',\n  iconName: 'object-ungroup',\n  icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32l209.1 0C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-113.1zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 113.1c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1c-9.7-5.6-17.8-13.7-23.4-23.4L119.4 96zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-40.6 64 0 0 40.6c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1c-9.7-5.6-17.8-13.7-23.4-23.4l-46 0c-5.4-15.4-14.6-28.9-26.5-39.6l0-24.4 72.6 0c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0z\"]\n};\nconst faPoop = {\n  prefix: 'fas',\n  iconName: 'poop',\n  icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32l5.5 0c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48l13.7 0c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72L72 512c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72l13.7 0C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64l16.2 0c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nconst faLocationPin = {\n  prefix: 'fas',\n  iconName: 'location-pin',\n  icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nconst faMapMarker = faLocationPin;\nconst faKaaba = {\n  prefix: 'fas',\n  iconName: 'kaaba',\n  icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112l0 16s0 0 0 0l0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2 0 128l0-16C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8l0 46.5-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8 576 400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400L0 262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2l0-46.5 273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nconst faToiletPaper = {\n  prefix: 'fas',\n  iconName: 'toilet-paper',\n  icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1L48 512c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0L444.2 0zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faHelmetSafety = {\n  prefix: 'fas',\n  iconName: 'helmet-safety',\n  icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32l0 2.3 0 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288l0 64 512 0 0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1l0-99.6 0-2.3c0-17.7-14.3-32-32-32l-64 0zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6L16.6 384z\"]\n};\nconst faHardHat = faHelmetSafety;\nconst faHatHard = faHelmetSafety;\nconst faEject = {\n  prefix: 'fas',\n  iconName: 'eject',\n  icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320L48 320c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48l352 0c26.5 0 48 21.5 48 48s-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48z\"]\n};\nconst faCircleRight = {\n  prefix: 'fas',\n  iconName: 'circle-right',\n  icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm395.3 11.3l-112 112c-4.6 4.6-11.5 5.9-17.4 3.5s-9.9-8.3-9.9-14.8l0-64-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-64c0-6.5 3.9-12.3 9.9-14.8s12.9-1.1 17.4 3.5l112 112c6.2 6.2 6.2 16.4 0 22.6z\"]\n};\nconst faArrowAltCircleRight = faCircleRight;\nconst faPlaneCircleCheck = {\n  prefix: 'fas',\n  iconName: 'plane-circle-check',\n  icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faFaceRollingEyes = {\n  prefix: 'fas',\n  iconName: 'face-rolling-eyes',\n  icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nconst faMehRollingEyes = faFaceRollingEyes;\nconst faObjectGroup = {\n  prefix: 'fas',\n  iconName: 'object-group',\n  icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32l337.1 0C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 273.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-337.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-273.1zM456.6 96L119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 273.1c9.7 5.6 17.8 13.7 23.4 23.4l337.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-273.1c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-96zM256 320l32 0c35.3 0 64-28.7 64-64l0-32 64 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-32z\"]\n};\nconst faChartLine = {\n  prefix: 'fas',\n  iconName: 'chart-line',\n  icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nconst faLineChart = faChartLine;\nconst faMaskVentilator = {\n  prefix: 'fas',\n  iconName: 'mask-ventilator',\n  icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269l0-85c0-4.4 3.6-8 8-8l103.1 0zm26-48L56 128c-30.9 0-56 25.1-56 56l0 85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6l0-76.6c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8l0 76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269l0-85c0-30.9-25.1-56-56-56l-129.5 0C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48L584 176c4.4 0 8 3.6 8 8l0 85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320l0 192 64 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faArrowRight = {\n  prefix: 'fas',\n  iconName: 'arrow-right',\n  icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nconst faSignsPost = {\n  prefix: 'fas',\n  iconName: 'signs-post',\n  icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32L64 32C46.3 32 32 46.3 32 64l0 64c0 17.7 14.3 32 32 32l377.4 0c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7L288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32l-160 0 0-32-64 0 0 32L70.6 224c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7L448 352c17.7 0 32-14.3 32-32l0-64zM288 480l0-96-64 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faMapSigns = faSignsPost;\nconst faCashRegister = {\n  prefix: 'fas',\n  iconName: 'cash-register',\n  icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32l0 64c0 17.7 14.3 32 32 32l80 0 0 32-57 0c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-69.6c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160l-217 0 0-32 80 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L64 0zM96 48l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L96 80c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n};\nconst faPersonCircleQuestion = {\n  prefix: 'fas',\n  iconName: 'person-circle-question',\n  icon: [576, 512, [], \"e542\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6l0 6.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-6.4c0-5.3 4.3-9.6 9.6-9.6l40.5 0c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2l0 14.8c0 8.8 7.2 16 16 16s16-7.2 16-16l0-5.1 23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9l-40.5 0c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nconst faH = {\n  prefix: 'fas',\n  iconName: 'h',\n  icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224 0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nconst faTarp = {\n  prefix: 'fas',\n  iconName: 'tarp',\n  icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32l128 0 0-160zM448 448L576 320l-128 0 0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faScrewdriverWrench = {\n  prefix: 'fas',\n  iconName: 'screwdriver-wrench',\n  icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4l54.1 0 109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109 0-54.1c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7L352 176c-8.8 0-16-7.2-16-16l0-57.4c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faTools = faScrewdriverWrench;\nconst faArrowsToEye = {\n  prefix: 'fas',\n  iconName: 'arrows-to-eye',\n  icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63L112 40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 96c0 13.3-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l38.1 0L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63 38.1 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24l0-96c0-13.3 10.7-24 24-24s24 10.7 24 24l0 38.1 63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63L40 400c-13.3 0-24-10.7-24-24s10.7-24 24-24l96 0c13.3 0 24 10.7 24 24l0 96c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-38.1L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63 0 38.1c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-96c0-13.3 10.7-24 24-24l96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-38.1 0 63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nconst faPlugCircleBolt = {\n  prefix: 'fas',\n  iconName: 'plug-circle-bolt',\n  icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nconst faHeart = {\n  prefix: 'fas',\n  iconName: 'heart',\n  icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nconst faMarsAndVenus = {\n  prefix: 'fas',\n  iconName: 'mars-and-venus',\n  icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0L472 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59 146.6-136 158.2l0 25.8 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-24 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-25.8C155 370.6 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48s0 0 0 0s0 0 0 0s0 0 0 0zM352 224a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nconst faHouseUser = {\n  prefix: 'fas',\n  iconName: 'house-user',\n  icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80l-64 0z\"]\n};\nconst faHomeUser = faHouseUser;\nconst faDumpsterFire = {\n  prefix: 'fas',\n  iconName: 'dumpster-fire',\n  icon: [640, 512, [], \"f794\", \"M49.7 32l90.8 0L114.9 160l-94 0C9.3 160 0 150.7 0 139.1c0-2.1 .3-4.1 .9-6.1L26.8 48.9C29.9 38.9 39.2 32 49.7 32zM272 160l-124.5 0L173.1 32 272 32l0 128zm32 0l0-128 98.9 0 14.4 72.1c-1.7 1.1-3.3 2.4-4.8 3.8c-18.4 16.4-35.4 34-50.5 52.1l-58 0zm209.9-23.7c-1.7 1.6-3.4 3.2-5 4.8C498 129.6 486.7 118.6 475 108c-7.6-6.9-17-10.8-26.6-11.8L435.5 32l90.8 0c10.5 0 19.8 6.9 22.9 16.9L575.1 133c.2 .7 .4 1.4 .5 2.1c-17.8-15-44.3-14.6-61.7 1.2zM325.2 210.7C304.3 244.5 288 282.9 288 318.1c0 49.3 18.6 95.2 49.6 129.9L128 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L44 288l-12 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l4 0-4-32 305.5 0c-4.4 6.2-8.5 12.5-12.3 18.7zm180.6-34.5L518 162.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C629 259.2 640 290.2 640 320.2C640 408.8 568.7 480 480 480c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2c5.7-5.2 13.1-7.7 20.3-7.5c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM544 368.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 295.1 416 331.6 416 368.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faHouseCrack = {\n  prefix: 'fas',\n  iconName: 'house-crack',\n  icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l102.3 0-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64 122.1 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0z\"]\n};\nconst faMartiniGlassCitrus = {\n  prefix: 'fas',\n  iconName: 'martini-glass-citrus',\n  icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48l-52.6 0C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128l368 0c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177L232 464l64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-88 0-88 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-118.1L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nconst faCocktail = faMartiniGlassCitrus;\nconst faFaceSurprise = {\n  prefix: 'fas',\n  iconName: 'face-surprise',\n  icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faSurprise = faFaceSurprise;\nconst faBottleWater = {\n  prefix: 'fas',\n  iconName: 'bottle-water',\n  icon: [320, 512, [], \"e4c5\", \"M120 0l80 0c13.3 0 24 10.7 24 24l0 40L96 64l0-40c0-13.3 10.7-24 24-24zM32 167.5c0-19.5 10-37.6 26.6-47.9l15.8-9.9C88.7 100.7 105.2 96 122.1 96l75.8 0c16.9 0 33.4 4.7 47.7 13.7l15.8 9.9C278 129.9 288 148 288 167.5c0 17-7.5 32.3-19.4 42.6C280.6 221.7 288 238 288 256c0 19.1-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48s-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64c0-19.1 8.4-36.3 21.7-48C40.4 388.3 32 371.1 32 352s8.4-36.3 21.7-48C40.4 292.3 32 275.1 32 256c0-18 7.4-34.3 19.4-45.9C39.5 199.7 32 184.5 32 167.5zM96 240c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0z\"]\n};\nconst faCirclePause = {\n  prefix: 'fas',\n  iconName: 'circle-pause',\n  icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faPauseCircle = faCirclePause;\nconst faToiletPaperSlash = {\n  prefix: 'fas',\n  iconName: 'toilet-paper-slash',\n  icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192L160 0c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512l237.9 0c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nconst faAppleWhole = {\n  prefix: 'fas',\n  iconName: 'apple-whole',\n  icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80l16 0c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80l-16 0zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nconst faAppleAlt = faAppleWhole;\nconst faKitchenSet = {\n  prefix: 'fas',\n  iconName: 'kitchen-set',\n  icon: [576, 512, [], \"e51a\", \"M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112l71.8 0c8.8-9.8 21.6-16 35.8-16l104 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-104 0c-14.2 0-27-6.2-35.8-16l-71.8 0zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24l0 8 96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-240 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l96 0 0-8c0-13.3 10.7-24 24-24zM288 464l0-112 224 0 0 112c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48zM48 320l80 0 16 0 32 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-80c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0 32 16 0zM24 464l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faR = {\n  prefix: 'fas',\n  iconName: 'r',\n  icon: [320, 512, [114], \"52\", \"M64 32C28.7 32 0 60.7 0 96L0 288 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 95.3 0L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144L64 32zM176 256L64 256 64 96l112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nconst faTemperatureQuarter = {\n  prefix: 'fas',\n  iconName: 'temperature-quarter',\n  icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3l0-50.7c0-8.8 7.2-16 16-16s16 7.2 16 16l0 50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature1 = faTemperatureQuarter;\nconst faThermometer1 = faTemperatureQuarter;\nconst faThermometerQuarter = faTemperatureQuarter;\nconst faCube = {\n  prefix: 'fas',\n  iconName: 'cube',\n  icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6l0 242.9c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4L0 134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1 0-188L288 246.6l0 188z\"]\n};\nconst faBitcoinSign = {\n  prefix: 'fas',\n  iconName: 'bitcoin-sign',\n  icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32l0 32 32 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-6.3 0C18.7 448 0 429.3 0 406.3L0 288l0-22.3L0 224 0 101.6C0 80.8 16.8 64 37.6 64L48 64l0-32zM64 224l112 0c26.5 0 48-21.5 48-48s-21.5-48-48-48L64 128l0 96zm112 64L64 288l0 96 144 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-32 0z\"]\n};\nconst faShieldDog = {\n  prefix: 'fas',\n  iconName: 'shield-dog',\n  icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64l0-64 44.2 0c12.1 0 23.2 6.8 28.6 17.7L320 192l64 0c8.8 0 16 7.2 16 16l0 32c0 44.2-35.8 80-80 80l-48 0 0 50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160l40 0 8 0 0 32 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faSolarPanel = {\n  prefix: 'fas',\n  iconName: 'solar-panel',\n  icon: [640, 512, [], \"f5ba\", \"M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384l217 0 0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64 217 0c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0L122.2 0zM260.9 64l118.2 0 10.4 104-139 0L260.9 64zM202.3 168l-100.8 0L122.2 64l90.4 0L202.3 168zM91.8 216l105.6 0L187.1 320 71 320 91.8 216zm153.9 0l148.6 0 10.4 104-169.4 0 10.4-104zm196.8 0l105.6 0L569 320l-116 0L442.5 216zm96-48l-100.8 0L427.3 64l90.4 0 31.4-6.3L517.8 64l20.8 104z\"]\n};\nconst faLockOpen = {\n  prefix: 'fas',\n  iconName: 'lock-open',\n  icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48C576 64.5 511.5 0 432 0S288 64.5 288 144l0 48L64 192c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-32 0 0-48z\"]\n};\nconst faElevator = {\n  prefix: 'fas',\n  iconName: 'elevator',\n  icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9l128 0c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 128zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm192 0c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0L304 0c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nconst faMoneyBillTransfer = {\n  prefix: 'fas',\n  iconName: 'money-bill-transfer',\n  icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64l241.9 0c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5 608 384c0 35.3-28.7 64-64 64l-241.9 0c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5 32 128c0-35.3 28.7-64 64-64zm64 64l-64 0 0 64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64l64 0 0-64zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faMoneyBillTrendUp = {\n  prefix: 'fas',\n  iconName: 'money-bill-trend-up',\n  icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2c0 0 0 .1 0 .1c0 0 0 0 0 0l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64 352 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0s0 0 0 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 304zM48 416l0 48 48 0c0-26.5-21.5-48-48-48zM96 304l-48 0 0 48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48l48 0 0-48zM416 304c0 26.5 21.5 48 48 48l0-48-48 0zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faHouseFloodWaterCircleArrowRight = {\n  prefix: 'fas',\n  iconName: 'house-flood-water-circle-arrow-right',\n  icon: [640, 512, [], \"e50f\", \"M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160 80 160c-8.8 0-16-7.2-16-16s7.2-16 16-16l89.4 0L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4 16.6 0c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faSquarePollHorizontal = {\n  prefix: 'fas',\n  iconName: 'square-poll-horizontal',\n  icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faPollH = faSquarePollHorizontal;\nconst faCircle = {\n  prefix: 'fas',\n  iconName: 'circle',\n  icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"]\n};\nconst faBackwardFast = {\n  prefix: 'fas',\n  iconName: 'backward-fast',\n  icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7 288 416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7 64 416c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64s32 14.3 32 32l0 118.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96l0 118.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96l0 320c0 12.4-7.2 23.7-18.4 29z\"]\n};\nconst faFastBackward = faBackwardFast;\nconst faRecycle = {\n  prefix: 'fas',\n  iconName: 'recycle',\n  icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448l0 32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 32 96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nconst faUserAstronaut = {\n  prefix: 'fas',\n  iconName: 'user-astronaut',\n  icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128l0 64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9l0-64c0-16.8-12.9-30.5-29.3-31.9zM336 144l0 16c0 53-43 96-96 96l-32 0c-53 0-96-43-96-96l0-16c0-26.5 21.5-48 48-48l128 0c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512l98.3 0 0-64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 64 98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16l0 48 32 0 0-48c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faPlaneSlash = {\n  prefix: 'fas',\n  iconName: 'plane-slash',\n  icon: [640, 512, [], \"e069\", \"M514.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-73.8 0L630.8 469.1c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L238.1 161.3 197.8 20.4C194.9 10.2 202.6 0 213.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L397.7 192l116.6 0zM41.5 128.7l321 252.9L297.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L144 320l-43.2 57.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L64 256 32.5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-6.2 4-11.4 9.5-13.3z\"]\n};\nconst faTrademark = {\n  prefix: 'fas',\n  iconName: 'trademark',\n  icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32l64 0 0 224c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 96C14.3 96 0 110.3 0 128z\"]\n};\nconst faBasketball = {\n  prefix: 'fas',\n  iconName: 'basketball',\n  icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z\"]\n};\nconst faBasketballBall = faBasketball;\nconst faSatelliteDish = {\n  prefix: 'fas',\n  iconName: 'satellite-dish',\n  icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faCircleUp = {\n  prefix: 'fas',\n  iconName: 'circle-up',\n  icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm11.3-395.3l112 112c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9l-64 0 0 96c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96-64 0c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l112-112c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faArrowAltCircleUp = faCircleUp;\nconst faMobileScreenButton = {\n  prefix: 'fas',\n  iconName: 'mobile-screen-button',\n  icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64L80 64l0 320 224 0 0-320z\"]\n};\nconst faMobileAlt = faMobileScreenButton;\nconst faVolumeHigh = {\n  prefix: 'fas',\n  iconName: 'volume-high',\n  icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.2 640 165.8 640 256s-41.5 170.7-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nconst faVolumeUp = faVolumeHigh;\nconst faUsersRays = {\n  prefix: 'fas',\n  iconName: 'users-rays',\n  icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6l56.1 0zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faWallet = {\n  prefix: 'fas',\n  iconName: 'wallet',\n  icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L80 128c-8.8 0-16-7.2-16-16s7.2-16 16-16l368 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faClipboardCheck = {\n  prefix: 'fas',\n  iconName: 'clipboard-check',\n  icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faFileAudio = {\n  prefix: 'fas',\n  iconName: 'file-audio',\n  icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8l0 128c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376 80 376c-8.8 0-16-7.2-16-16l0-48c0-8.8 7.2-16 16-16l33.4 0 35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nconst faBurger = {\n  prefix: 'fas',\n  iconName: 'burger',\n  icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1L61.1 224zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48l384 0c26.5 0 48 21.5 48 48s-21.5 48-48 48L64 352c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16l416 0c8.8 0 16 7.2 16 16l0 16c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64l0-16z\"]\n};\nconst faHamburger = faBurger;\nconst faWrench = {\n  prefix: 'fas',\n  iconName: 'wrench',\n  icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7L336 192c-8.8 0-16-7.2-16-16l0-57.4c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBugs = {\n  prefix: 'fas',\n  iconName: 'bugs',\n  icon: [576, 512, [], \"e4d0\", \"M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6l-17 0-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184l32 0 0 23.3-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3l0-23.3 32 0c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136l-17 0c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nconst faRupeeSign = {\n  prefix: 'fas',\n  iconName: 'rupee-sign',\n  icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0s0 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9c0 0 0 0 0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1c0 0 0 0 0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nconst faRupee = faRupeeSign;\nconst faFileImage = {\n  prefix: 'fas',\n  iconName: 'file-image',\n  icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6l-88 0-40 0-48 0-48 0c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nconst faCircleQuestion = {\n  prefix: 'fas',\n  iconName: 'circle-question',\n  icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faQuestionCircle = faCircleQuestion;\nconst faPlaneDeparture = {\n  prefix: 'fas',\n  iconName: 'plane-departure',\n  icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2l137.7 0c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48l-57.4 0c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z\"]\n};\nconst faHandshakeSlash = {\n  prefix: 'fas',\n  iconName: 'handshake-slash',\n  icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8 512 128l-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128 0 128 0 352c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-180.4zM413.6 421.9L128 196.9 128 352l28.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128l0 224c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-224-96 0zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faBookBookmark = {\n  prefix: 'fas',\n  iconName: 'book-bookmark',\n  icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0l96 0 0 190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5L352 0l32 0 32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32z\"]\n};\nconst faCodeBranch = {\n  prefix: 'fas',\n  iconName: 'code-branch',\n  icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 87.8c18.8-10.9 40.7-17.1 64-17.1l96 0c35.3 0 64-28.7 64-64l0-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 6.7c0 70.7-57.3 128-128 128l-96 0c-35.3 0-64 28.7-64 64l0 6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-6.7 0-198.7C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faHatCowboy = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy',\n  icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nconst faBridge = {\n  prefix: 'fas',\n  iconName: 'bridge',\n  icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l40 0 0 64L0 160 0 288c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96s96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96l0-128-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM456 96l0 64-80 0 0-64 80 0zM328 96l0 64-80 0 0-64 80 0zM200 96l0 64-80 0 0-64 80 0z\"]\n};\nconst faPhoneFlip = {\n  prefix: 'fas',\n  iconName: 'phone-flip',\n  icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nconst faPhoneAlt = faPhoneFlip;\nconst faTruckFront = {\n  prefix: 'fas',\n  iconName: 'truck-front',\n  icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0L432 0c44.2 0 80 35.8 80 80l0 288c0 26.2-12.6 49.4-32 64l0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-256 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48C12.6 417.4 0 394.2 0 368L0 80zm129.9 72.2L112 224l288 0-17.9-71.8C378.5 138 365.7 128 351 128l-190 0c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faCat = {\n  prefix: 'fas',\n  iconName: 'cat',\n  icon: [576, 512, [128008], \"f6be\", \"M320 192l17.1 0c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4l0 4 0 32 0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-140.8L280 448l56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-144 0c-53 0-96-43-96-96l0-223.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3l0 85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5s0 0 0 0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32c0 0 0 0 0 0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128c0 0 0 0 0 0l0-96 0-20 0-1.3C352 4.8 356.7 .1 362.6 0l.2 0c3.3 0 6.4 1.6 8.4 4.2c0 0 0 0 0 .1L384 21.3l27.2 36.3L416 64l64 0 4.8-6.4L512 21.3 524.8 4.3c0 0 0 0 0-.1c2-2.6 5.1-4.2 8.4-4.2l.2 0C539.3 .1 544 4.8 544 10.7l0 1.3 0 20 0 96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faAnchorCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'anchor-circle-exclamation',\n  icon: [640, 512, [], \"e4ab\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faTruckField = {\n  prefix: 'fas',\n  iconName: 'truck-field',\n  icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64l224 0c23.7 0 44.4 12.9 55.4 32l51.8 0c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2l4.2 0c35.3 0 64 28.7 64 64l0 32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-32c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l0-32zM384 224l85.9 0-42.7-96L384 128l0 96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faRoute = {\n  prefix: 'fas',\n  iconName: 'route',\n  icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5L320 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96 43 96 96s-43 96-96 96l-276.4 0c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2L416 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-53 0-96-43-96-96s43-96 96-96l39.8 0c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faClipboardQuestion = {\n  prefix: 'fas',\n  iconName: 'clipboard-question',\n  icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faPanorama = {\n  prefix: 'fas',\n  iconName: 'panorama',\n  icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6L0 434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6l0-356.7C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nconst faCommentMedical = {\n  prefix: 'fas',\n  iconName: 'comment-medical',\n  icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faTeethOpen = {\n  prefix: 'fas',\n  iconName: 'teeth-open',\n  icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-53-43-96-96-96L96 32zM224 96c26.5 0 48 21.5 48 48l0 56c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-56c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48l0 56c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-56zM96 128c26.5 0 48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24zM96 480l384 0c53 0 96-43 96-96l0-32c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48zm80-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48zm80-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nconst faFileCircleMinus = {\n  prefix: 'fas',\n  iconName: 'file-circle-minus',\n  icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faTags = {\n  prefix: 'fas',\n  iconName: 'tags',\n  icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5L0 80C0 53.5 21.5 32 48 32l149.5 0c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faWineGlass = {\n  prefix: 'fas',\n  iconName: 'wine-glass',\n  icon: [320, 512, [127863], \"f4e3\", \"M32.1 29.3C33.5 12.8 47.4 0 64 0L256 0c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6l0 99.6 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-80 0-80 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0 0-99.6C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7l143.8 0-5.3-64L93.4 64l-5.3 64z\"]\n};\nconst faForwardFast = {\n  prefix: 'fas',\n  iconName: 'forward-fast',\n  icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7 224 416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7 448 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 118.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96l0 118.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96L0 416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nconst faFastForward = faForwardFast;\nconst faFaceMehBlank = {\n  prefix: 'fas',\n  iconName: 'face-meh-blank',\n  icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMehBlank = faFaceMehBlank;\nconst faSquareParking = {\n  prefix: 'fas',\n  iconName: 'square-parking',\n  icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM192 256l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0 64zm48 64l-48 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-120c0-22.1 17.9-40 40-40l72 0c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nconst faParking = faSquareParking;\nconst faHouseSignal = {\n  prefix: 'fas',\n  iconName: 'house-signal',\n  icon: [576, 512, [], \"e012\", \"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6L464 416c26.5 0 48-21.5 48-48l0-112 32 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16l0-64zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"]\n};\nconst faBarsProgress = {\n  prefix: 'fas',\n  iconName: 'bars-progress',\n  icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160l-128 0 0-32 128 0 0 32zM48 64C21.5 64 0 85.5 0 112l0 64c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48L48 64zM448 352l0 32-256 0 0-32 256 0zM48 288c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48L48 288z\"]\n};\nconst faTasksAlt = faBarsProgress;\nconst faFaucetDrip = {\n  prefix: 'fas',\n  iconName: 'faucet-drip',\n  icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32l0 12 96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12 0-12c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32l96 0 22.6-22.6c6-6 14.1-9.4 22.6-9.4l18.7 0 0-43.8 32-4 32 4 0 43.8 18.7 0c8.5 0 16.6 3.4 22.6 9.4L320 192l32 0c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s-14.3-32-32-32l-36.1 0c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48L32 320c-17.7 0-32-14.3-32-32l0-64zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nconst faCartFlatbed = {\n  prefix: 'fas',\n  iconName: 'cart-flatbed',\n  icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l16 0c8.8 0 16 7.2 16 16l0 288c0 44.2 35.8 80 80 80l18.7 0c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l197.5 0c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l66.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-464 0c-8.8 0-16-7.2-16-16l0-288C128 35.8 92.2 0 48 0L32 0zM192 80l0 192c0 26.5 21.5 48 48 48l320 0c26.5 0 48-21.5 48-48l0-192c0-26.5-21.5-48-48-48l-96 0 0 144c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1l0-144-96 0c-26.5 0-48 21.5-48 48z\"]\n};\nconst faDollyFlatbed = faCartFlatbed;\nconst faBanSmoking = {\n  prefix: 'fas',\n  iconName: 'ban-smoking',\n  icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32 82.7 0 0 32-50.7 0zm32 32l34.7 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-130.7 0L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48l32 0c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48l-32 0c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96L112 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l117.5 0z\"]\n};\nconst faSmokingBan = faBanSmoking;\nconst faTerminal = {\n  prefix: 'fas',\n  iconName: 'terminal',\n  icon: [576, 512, [], \"f120\", \"M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faMobileButton = {\n  prefix: 'fas',\n  iconName: 'mobile-button',\n  icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faHouseMedicalFlag = {\n  prefix: 'fas',\n  iconName: 'house-medical-flag',\n  icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32l112 0c8.8 0 16 7.2 16 16l0 128c0 8.8-7.2 16-16 16l-112 0 0 320-64 0 0-320 0-160c0-17.7 14.3-32 32-32zM276.8 39.7L416 159l0 353 1 0-.2 0L96 512c-17.7 0-32-14.3-32-32l0-192-32 0c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faBasketShopping = {\n  prefix: 'fas',\n  iconName: 'basket-shopping',\n  icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192 32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512L430 512c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32l-85.6 0L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192l-232.6 0L253.3 35.1zM192 304l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zm128 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faShoppingBasket = faBasketShopping;\nconst faTape = {\n  prefix: 'fas',\n  iconName: 'tape',\n  icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-163.2 0zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faBusSimple = {\n  prefix: 'fas',\n  iconName: 'bus-simple',\n  icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80l0 16 0 320c0 17.7-14.3 32-32 32l0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-192 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32L0 96 0 80C0 35.2 99.2 0 224 0zM64 128l0 128c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L96 96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBusAlt = faBusSimple;\nconst faEye = {\n  prefix: 'fas',\n  iconName: 'eye',\n  icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"]\n};\nconst faFaceSadCry = {\n  prefix: 'fas',\n  iconName: 'face-sad-cry',\n  icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6L160 288c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 189.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8L384 288c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 205.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336l0 32c0 26.5 21.5 48 48 48s48-21.5 48-48l0-32c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nconst faSadCry = faFaceSadCry;\nconst faAudioDescription = {\n  prefix: 'fas',\n  iconName: 'audio-description',\n  icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9-82.2 0-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2 42.2 0zM304 184c0-13.3 10.7-24 24-24l56 0c53 0 96 43 96 96s-43 96-96 96l-56 0c-13.3 0-24-10.7-24-24l0-144zm48 24l0 96 32 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-32 0z\"]\n};\nconst faPersonMilitaryToPerson = {\n  prefix: 'fas',\n  iconName: 'person-military-to-person',\n  icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9l111.4 0c8.8-.1 15.9-7.2 15.9-16L200 16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1l-122.9 0C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256l0 32c0 17.7 14.3 32 32 32l128 0c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5l0-32c0-35.3-28.7-64-64-64l-64 0c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-35.3-28.7-64-64-64l-64 0zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376l0 32-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0 0 32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nconst faFileShield = {\n  prefix: 'fas',\n  iconName: 'file-shield',\n  icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 47-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8l0 187.8c68.2-33 91.5-99 95.4-149.7z\"]\n};\nconst faUserSlash = {\n  prefix: 'fas',\n  iconName: 'user-slash',\n  icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7l388.6 0c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nconst faPen = {\n  prefix: 'fas',\n  iconName: 'pen',\n  icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nconst faTowerObservation = {\n  prefix: 'fas',\n  iconName: 'tower-observation',\n  icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144l0 80c0 17.7-14.3 32-32 32l-4.9 0 32 192 68.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-95.5 0c-.4 0-.8 0-1.1 0l-254.8 0c-.4 0-.8 0-1.1 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 32-192-4.9 0c-17.7 0-32-14.3-32-32l0-80c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448l117 0zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256l-116.5 0zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16l160 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-160 0z\"]\n};\nconst faFileCode = {\n  prefix: 'fas',\n  iconName: 'file-code',\n  icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faSignal = {\n  prefix: 'fas',\n  iconName: 'signal',\n  icon: [640, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M576 0c17.7 0 32 14.3 32 32l0 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352c0-17.7 14.3-32 32-32zM352 224l0 256c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32zM96 416l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faSignal5 = faSignal;\nconst faSignalPerfect = faSignal;\nconst faBus = {\n  prefix: 'fas',\n  iconName: 'bus',\n  icon: [576, 512, [128653], \"f207\", \"M288 0C422.4 0 512 35.2 512 80l0 16 0 32c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32l0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-192 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32c0 0 0 0 0 0l0-32s0 0 0 0l0-16C64 35.2 153.6 0 288 0zM128 160l0 96c0 17.7 14.3 32 32 32l112 0 0-160-112 0c-17.7 0-32 14.3-32 32zM304 288l112 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-112 0 0 160zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16L208 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l160 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faHeartCircleXmark = {\n  prefix: 'fas',\n  iconName: 'heart-circle-xmark',\n  icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faHouseChimney = {\n  prefix: 'fas',\n  iconName: 'house-chimney',\n  icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185l0-121c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 64 0 24c0 22.1 17.9 40 40 40l24 0 32.5 0c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1l16 0c22.1 0 40-17.9 40-40l0-16.2c.3-2.6 .5-5.3 .5-8.1l-.7-160.2 32 0z\"]\n};\nconst faHomeLg = faHouseChimney;\nconst faWindowMaximize = {\n  prefix: 'fas',\n  iconName: 'window-maximize',\n  icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 96l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFaceFrown = {\n  prefix: 'fas',\n  iconName: 'face-frown',\n  icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faFrown = faFaceFrown;\nconst faPrescription = {\n  prefix: 'fas',\n  iconName: 'prescription',\n  icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32L0 192l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 50.7 0 128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0L32 0zM176 160L64 160l0-96 112 0c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nconst faShop = {\n  prefix: 'fas',\n  iconName: 'shop',\n  icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192l566.3 0c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224l0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-80 0-160-64 0 0 160-192 0 0-160-64 0zm448 0l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256-64 0z\"]\n};\nconst faStoreAlt = faShop;\nconst faFloppyDisk = {\n  prefix: 'fas',\n  iconName: 'floppy-disk',\n  icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-242.7c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32L64 32zm0 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 224c-17.7 0-32-14.3-32-32l0-64zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faSave = faFloppyDisk;\nconst faVihara = {\n  prefix: 'fas',\n  iconName: 'vihara',\n  icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9l-7.5 0 0 56.1 6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4L544 288l0 65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24l-40 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-160 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-160 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-40 0c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7L96 288l-39.4 0c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1 0-8.1 0-48-7.5 0c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128l-96 0-96 0 0 64 72 0 48 0 72 0 0-64zM160 288l0 64 136 0 24 0 24 0 136 0 0-64-136 0-24 0s0 0 0 0l-24 0-136 0z\"]\n};\nconst faScaleUnbalanced = {\n  prefix: 'fas',\n  iconName: 'scale-unbalanced',\n  icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2L288 480c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-294.7c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288l-144.9 0zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416 56.7 416l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n};\nconst faBalanceScaleLeft = faScaleUnbalanced;\nconst faSortUp = {\n  prefix: 'fas',\n  iconName: 'sort-up',\n  icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nconst faSortAsc = faSortUp;\nconst faCommentDots = {\n  prefix: 'fas',\n  iconName: 'comment-dots',\n  icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faCommenting = faCommentDots;\nconst faPlantWilt = {\n  prefix: 'fas',\n  iconName: 'plant-wilt',\n  icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56l0 13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1l0-13C464 53.7 410.3 0 344 0S224 53.7 224 120l0 21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120l0 13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1l0-13c0-30.9 25.1-56 56-56s56 25.1 56 56l0 32 0 200c0 17.7 14.3 32 32 32s32-14.3 32-32l0-200 0-32 0-128z\"]\n};\nconst faDiamond = {\n  prefix: 'fas',\n  iconName: 'diamond',\n  icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nconst faFaceGrinSquint = {\n  prefix: 'fas',\n  iconName: 'face-grin-squint',\n  icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faGrinSquint = faFaceGrinSquint;\nconst faHandHoldingDollar = {\n  prefix: 'fas',\n  iconName: 'hand-holding-dollar',\n  icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24l0 10.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3s0 0 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8l0 10.6c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-11.4c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2L264 24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faHandHoldingUsd = faHandHoldingDollar;\nconst faChartDiagram = {\n  prefix: 'fas',\n  iconName: 'chart-diagram',\n  icon: [512, 512, [], \"e695\", \"M80 32C53.5 32 32 53.5 32 80s21.5 48 48 48l152 0 0 40-48 48-56 0c-48.6 0-88 39.4-88 88l0 48-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-48c0-22.1 17.9-40 40-40l56 0 48 48 0 40-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-40 48-48 56 0c22.1 0 40 17.9 40 40l0 48-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-48c0-48.6-39.4-88-88-88l-56 0-48-48 0-40 152 0c26.5 0 48-21.5 48-48s-21.5-48-48-48L80 32z\"]\n};\nconst faBacterium = {\n  prefix: 'fas',\n  iconName: 'bacterium',\n  icon: [512, 512, [], \"e05a\", \"M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7c0 0 0 0 0 0l-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3s0 0 0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faHandPointer = {\n  prefix: 'fas',\n  iconName: 'hand-pointer',\n  icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40l0 148.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48l0 48 0 16 0 48c0 70.7-57.3 128-128 128l-16 0-64 0-.1 0-5.2 0c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7L128 40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96zm48-16c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96z\"]\n};\nconst faDrumSteelpan = {\n  prefix: 'fas',\n  iconName: 'drum-steelpan',\n  icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128l0 192c0 80-128.9 128-288 128S0 432 0 352L0 160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nconst faHandScissors = {\n  prefix: 'fas',\n  iconName: 'hand-scissors',\n  icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9c0 0 0 .1 0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nconst faHandsPraying = {\n  prefix: 'fas',\n  iconName: 'hands-praying',\n  icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4l0 73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384l0 96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7L336 224c0-17.7 14.3-32 32-32s32 14.3 32 32l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-84.9c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8l0 84.9c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-17.7 14.3-32 32-32s32 14.3 32 32l0 118.2c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480l0-96c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2l0-73.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nconst faPrayingHands = faHandsPraying;\nconst faArrowRotateRight = {\n  prefix: 'fas',\n  iconName: 'arrow-rotate-right',\n  icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160L336 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nconst faArrowRightRotate = faArrowRotateRight;\nconst faArrowRotateForward = faArrowRotateRight;\nconst faRedo = faArrowRotateRight;\nconst faWebAwesome = {\n  prefix: 'fas',\n  iconName: 'web-awesome',\n  icon: [640, 512, [], \"e682\", \"M372.2 52c0 20.9-12.4 39-30.2 47.2L448 192l104.4-20.9c-5.3-7.7-8.4-17.1-8.4-27.1c0-26.5 21.5-48 48-48s48 21.5 48 48c0 26-20.6 47.1-46.4 48L481 442.3c-10.3 23-33.2 37.7-58.4 37.7l-205.2 0c-25.2 0-48-14.8-58.4-37.7L46.4 192C20.6 191.1 0 170 0 144c0-26.5 21.5-48 48-48s48 21.5 48 48c0 10.1-3.1 19.4-8.4 27.1L192 192 298.1 99.1c-17.7-8.3-30-26.3-30-47.1c0-28.7 23.3-52 52-52s52 23.3 52 52z\"]\n};\nconst faBiohazard = {\n  prefix: 'fas',\n  iconName: 'biohazard',\n  icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nconst faLocationCrosshairs = {\n  prefix: 'fas',\n  iconName: 'location-crosshairs',\n  icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32l0 34.7C368.4 80.1 431.9 143.6 445.3 224l34.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-34.7 0C431.9 368.4 368.4 431.9 288 445.3l0 34.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.7C143.6 431.9 80.1 368.4 66.7 288L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l34.7 0C80.1 143.6 143.6 80.1 224 66.7L224 32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faLocation = faLocationCrosshairs;\nconst faMarsDouble = {\n  prefix: 'fas',\n  iconName: 'mars-double',\n  icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L312 32zm88 48s0 0 0 0s0 0 0 0s0 0 0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L504 32c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2 0 .2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7l0 21.3c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nconst faChildDress = {\n  prefix: 'fas',\n  iconName: 'child-dress',\n  icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400l0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 16 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 17.8 0c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400L88 400z\"]\n};\nconst faUsersBetweenLines = {\n  prefix: 'fas',\n  iconName: 'users-between-lines',\n  icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0L616 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 48C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24l592 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64l96 0c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6L64 352c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6l96 0c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32l-82.4 0zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1l96 0c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faLungsVirus = {\n  prefix: 'fas',\n  iconName: 'lungs-virus',\n  icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32l0 124.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2L288 32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1l0-24.1C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4l0 7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89l0-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3l0 24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faFaceGrinTears = {\n  prefix: 'fas',\n  iconName: 'face-grin-tears',\n  icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8s0 0 0 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0zm160 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0c0 0 0 0 0 0z\"]\n};\nconst faGrinTears = faFaceGrinTears;\nconst faPhone = {\n  prefix: 'fas',\n  iconName: 'phone',\n  icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nconst faCalendarXmark = {\n  prefix: 'fas',\n  iconName: 'calendar-xmark',\n  icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM305 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nconst faCalendarTimes = faCalendarXmark;\nconst faChildReaching = {\n  prefix: 'fas',\n  iconName: 'child-reaching',\n  icon: [384, 512, [], \"e59d\", \"M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4L112 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-258.4c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nconst faHeadSideVirus = {\n  prefix: 'fas',\n  iconName: 'head-side-virus',\n  icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320l0 64c0 35.3-28.7 64-64 64l-64 0 0 32c0 17.7-14.3 32-32 32L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faUserGear = {\n  prefix: 'fas',\n  iconName: 'user-gear',\n  icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304l91.4 0c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7l0 .9c0 9.2 2.7 18.5 7.9 26.3L29.7 512C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8l0 30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8l0-30.5c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9l0-30.5zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"]\n};\nconst faUserCog = faUserGear;\nconst faArrowUp19 = {\n  prefix: 'fas',\n  iconName: 'arrow-up-1-9',\n  icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M450.7 38c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3 192 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-301.7L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nconst faSortNumericUp = faArrowUp19;\nconst faDoorClosed = {\n  prefix: 'fas',\n  iconName: 'door-closed',\n  icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64L416 0c35.3 0 64 28.7 64 64l0 384 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-112 0-288 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0L96 64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faShieldVirus = {\n  prefix: 'fas',\n  iconName: 'shield-virus',\n  icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faDiceSix = {\n  prefix: 'fas',\n  iconName: 'dice-six',\n  icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMosquitoNet = {\n  prefix: 'fas',\n  iconName: 'mosquito-net',\n  icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4l0-23.1L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5l0-22.6c0-14.9 10.1-27.3 23.8-31l0-43.3c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2l0 43.3c13.7 3.6 23.8 16.1 23.8 31l0 22.6 45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35 0 23.1 32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6l0 50c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16l0 16 48 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 16 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 48 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 48 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-48 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-48 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-48-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-48-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 16 48 0 0-16c0-8.8 7.2-16 16-16zm16 112l48 0 0-48-48 0 0 48zm0 80l48 0 0-48-48 0 0 48zM448 320l0 48 48 0 0-48-48 0zm0 80l0 48 48 0 0-48-48 0z\"]\n};\nconst faFileFragment = {\n  prefix: 'fas',\n  iconName: 'file-fragment',\n  icon: [384, 512, [], \"e697\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64l-128 0 0-128c0-35.3-28.7-64-64-64L0 320 0 64zm384 64l-128 0L256 0 384 128zM32 352l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32z\"]\n};\nconst faBridgeWater = {\n  prefix: 'fas',\n  iconName: 'bridge-water',\n  icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64l512 0c17.7 0 32 14.3 32 32l0 35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6l0 124.9c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3c0 0 0 0 0 0l0-.5 0-128c0-53-43-96-96-96s-96 43-96 96l0 128 0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7l0-124.9C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6L0 96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faPersonBooth = {\n  prefix: 'fas',\n  iconName: 'person-booth',\n  icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160 64 0 0-160zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-448zM224 512c17.7 0 32-14.3 32-32l0-160-64 0 0 160c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32L320 0zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3l0-72.1 4.7 4.7c9 9 21.2 14.1 33.9 14.1l73.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-66.7 0-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6l0 55.7 0 .9L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 42.7L96 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-58.7c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nconst faTextWidth = {\n  prefix: 'fas',\n  iconName: 'text-width',\n  icon: [448, 512, [], \"f035\", \"M64 128l0-32 128 0 0 128-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-128 128 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48c0-26.5-21.5-48-48-48L224 32 48 32C21.5 32 0 53.5 0 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 192 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 32-192 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nconst faHatWizard = {\n  prefix: 'fas',\n  iconName: 'hat-wizard',\n  icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6l0 1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416l-207.1 0 11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416 64 416zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faPenFancy = {\n  prefix: 'fas',\n  iconName: 'pen-fancy',\n  icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.3 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nconst faPersonDigging = {\n  prefix: 'fas',\n  iconName: 'person-digging',\n  icon: [576, 512, [\"digging\"], \"f85e\", \"M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2l-256 0c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7l32 0 22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-74.9-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nconst faDigging = faPersonDigging;\nconst faTrash = {\n  prefix: 'fas',\n  iconName: 'trash',\n  icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-7.2-14.3C307.4 6.8 296.3 0 284.2 0L163.8 0c-12.1 0-23.2 6.8-28.6 17.7zM416 128L32 128 53.2 467c1.6 25.3 22.6 45 47.9 45l245.8 0c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nconst faGaugeSimple = {\n  prefix: 'fas',\n  iconName: 'gauge-simple',\n  icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3L280 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 204.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGaugeSimpleMed = faGaugeSimple;\nconst faTachometerAverage = faGaugeSimple;\nconst faBookMedical = {\n  prefix: 'fas',\n  iconName: 'book-medical',\n  icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM208 112l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPoo = {\n  prefix: 'fas',\n  iconName: 'poo',\n  icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80L160 128c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48L104 240c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72l368 0c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72l-13.7 0c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64l-5.5 0c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3l167.4 0c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nconst faQuoteRight = {\n  prefix: 'fas',\n  iconName: 'quote-right',\n  icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 32 0 32 0 72zm-256 0c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 32 0 32 0 72z\"]\n};\nconst faQuoteRightAlt = faQuoteRight;\nconst faShirt = {\n  prefix: 'fas',\n  iconName: 'shirt',\n  icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0l12.6 0c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7 480 448c0 35.3-28.7 64-64 64l-192 0c-35.3 0-64-28.7-64-64l0-250.3-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0l12.6 0z\"]\n};\nconst faTShirt = faShirt;\nconst faTshirt = faShirt;\nconst faCubes = {\n  prefix: 'fas',\n  iconName: 'cubes',\n  icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5l0 112.2c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7L0 413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3l0-119.1c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3l0-112.2c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2 0-89.2L392 121l0 89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4l0-100.5L256 323.2l0 95.9-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1 0-100.5L528 323.2l0 90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nconst faDivide = {\n  prefix: 'fas',\n  iconName: 'divide',\n  icon: [448, 512, [10135, 247], \"f529\", \"M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0z\"]\n};\nconst faTengeSign = {\n  prefix: 'fas',\n  iconName: 'tenge-sign',\n  icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32l160 0 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0 0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224L32 224c-17.7 0-32-14.3-32-32z\"]\n};\nconst faTenge = faTengeSign;\nconst faHeadphones = {\n  prefix: 'fas',\n  iconName: 'headphones',\n  icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nconst faHandsHolding = {\n  prefix: 'fas',\n  iconName: 'hands-holding',\n  icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104l0 56 0 64L0 325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7l66.7 0c26.5 0 48-21.5 48-48l0-78.9c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3c0 0 0 0 0 0l-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3L80 224l0-80 0-40zm480 0l0 40 0 80 0 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2c0 0 0 0 0 0l-25.3 25.3c-21 21-32.8 49.5-32.8 79.2l0 78.9c0 26.5 21.5 48 48 48l66.7 0c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9L640 224l0-64 0-56c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nconst faHandsClapping = {\n  prefix: 'fas',\n  iconName: 'hands-clapping',\n  icon: [512, 512, [], \"e1a8\", \"M336 16l0 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nconst faRepublican = {\n  prefix: 'fas',\n  iconName: 'republican',\n  icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32l224 0c88.4 0 160 71.6 160 160l0 64L0 256l0-64zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160l192 0 96 0 32 0 64 0 32 0 0 32 0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 44.2-35.8 80-80 80s-80-35.8-80-80l0-48-32 0 0 32 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64-192 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64 0-96 128 0z\"]\n};\nconst faArrowLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-left',\n  icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nconst faPersonCircleXmark = {\n  prefix: 'fas',\n  iconName: 'person-circle-xmark',\n  icon: [576, 512, [], \"e543\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faRuler = {\n  prefix: 'fas',\n  iconName: 'ruler',\n  icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nconst faAlignLeft = {\n  prefix: 'fas',\n  iconName: 'align-left',\n  icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32L32 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faDiceD6 = {\n  prefix: 'fas',\n  iconName: 'dice-d6',\n  icon: [448, 512, [], \"f6d1\", \"M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14l0 216c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381L0 184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8l0 197c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8l0-216c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nconst faRestroom = {\n  prefix: 'fas',\n  iconName: 'restroom',\n  icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-154.8c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128l8 0c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4L200 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM320 0c13.3 0 24 10.7 24 24l0 464c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-464c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480l0-96-17.8 0c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1L584 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nconst faJ = {\n  prefix: 'fas',\n  iconName: 'j',\n  icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32l0 256c0 88.4-71.6 160-160 160S0 408.4 0 320l0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32c0 53 43 96 96 96s96-43 96-96l0-256c0-17.7 14.3-32 32-32z\"]\n};\nconst faUsersViewfinder = {\n  prefix: 'fas',\n  iconName: 'users-viewfinder',\n  icon: [640, 512, [], \"e595\", \"M48 48l88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L32 0C14.3 0 0 14.3 0 32L0 136c0 13.3 10.7 24 24 24s24-10.7 24-24l0-88zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6l56.1 0zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48l88 0 0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104c0-17.7-14.3-32-32-32L504 0c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464l0-88c0-13.3-10.7-24-24-24s-24 10.7-24 24L0 480c0 17.7 14.3 32 32 32l104 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0c17.7 0 32-14.3 32-32l0-104c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 88-88 0z\"]\n};\nconst faFileVideo = {\n  prefix: 'fas',\n  iconName: 'file-video',\n  icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 288c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-96zM300.9 397.9L256 368l0-64 44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3l0 103.4c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nconst faUpRightFromSquare = {\n  prefix: 'fas',\n  iconName: 'up-right-from-square',\n  icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-128c0-17.7-14.3-32-32-32L352 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faExternalLinkAlt = faUpRightFromSquare;\nconst faTableCells = {\n  prefix: 'fas',\n  iconName: 'table-cells',\n  icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 64l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0zM64 224l88 0 0 64-88 0 0-64zm232 0l0 64-88 0 0-64 88 0zm64 0l88 0 0 64-88 0 0-64zM152 352l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0z\"]\n};\nconst faTh = faTableCells;\nconst faFilePdf = {\n  prefix: 'fas',\n  iconName: 'file-pdf',\n  icon: [512, 512, [], \"f1c1\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z\"]\n};\nconst faBookBible = {\n  prefix: 'fas',\n  iconName: 'book-bible',\n  icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l288 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L384 0 96 0zm0 384l256 0 0 64L96 448c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 112c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-112-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faBible = faBookBible;\nconst faO = {\n  prefix: 'fas',\n  iconName: 'o',\n  icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z\"]\n};\nconst faSuitcaseMedical = {\n  prefix: 'fas',\n  iconName: 'suitcase-medical',\n  icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40 0 32 0 352 256 0 0-352 0-32 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM96 96L64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l32 0L96 96zM416 480l32 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-32 0 0 384zM224 208c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faMedkit = faSuitcaseMedical;\nconst faUserSecret = {\n  prefix: 'fas',\n  iconName: 'user-secret',\n  icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48l-59.9 0C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4l-59.9 0c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208l-12.4 0c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2L168 224c-22.1 0-40-17.9-40-40l0-14.4c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4l0 14.4c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nconst faOtter = {\n  prefix: 'fas',\n  iconName: 'otter',\n  icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6l0-21.4c0-35.3-28.7-64-64-64l-64 0c-35.3 0-64 28.7-64 64l0 21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3l0-3.7c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24l0 3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6l0 .6c0 35.3 28.7 64 64 64l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l160 0 0-48 0-16c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6l0-16c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16l0 32 0 16 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-99.7c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1s0 0 0 0c0 123.7-100.3 224-224 224l-1.1 0L256 480l-.6 0C132 480 32 380 32 256.6l0-.6 0-39.2c-10.1-14.6-16-32.3-16-51.4L16 144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24l2.8 0C44.8 58.2 83.3 32 128 32l64 0c44.7 0 83.2 26.2 101.2 64l2.8 0c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4 0 21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-13.3 0-24 10.7-24 24l0 8 56.4 0c-15.2 17-24.4 39.4-24.4 64l-32 0c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faPersonDress = {\n  prefix: 'fas',\n  iconName: 'person-dress',\n  icon: [320, 512, [\"female\"], \"f182\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384l-17.8 0c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3l11.6 0c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1L232 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96z\"]\n};\nconst faFemale = faPersonDress;\nconst faCommentDollar = {\n  prefix: 'fas',\n  iconName: 'comment-dollar',\n  icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312l0 13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9l0 13.8c0 11-9 20-20 20s-20-9-20-20l0-14.6c-10.3-2.2-20-5.5-28.2-8.4c0 0 0 0 0 0s0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c0 0 0 0 0 0c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5l0-14c0-11 9-20 20-20s20 9 20 20z\"]\n};\nconst faBusinessTime = {\n  prefix: 'fas',\n  iconName: 'business-time',\n  icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160l0 96 192 0 160 0 8.2 0c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7l0-32.7c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM320 352l-96 0c-17.7 0-32-14.3-32-32l0-32L0 288 0 416c0 35.3 28.7 64 64 64l296.2 0C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16l0 48 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16z\"]\n};\nconst faBriefcaseClock = faBusinessTime;\nconst faTableCellsLarge = {\n  prefix: 'fas',\n  iconName: 'table-cells-large',\n  icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96l0 128-160 0 0-128 160 0zm0 192l0 128-160 0 0-128 160 0zM224 224L64 224 64 96l160 0 0 128zM64 288l160 0 0 128L64 416l0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faThLarge = faTableCellsLarge;\nconst faBookTanakh = {\n  prefix: 'fas',\n  iconName: 'book-tanakh',\n  icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96l0 320c0 53-43 96-96 96L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c-17.7 0-32-14.3-32-32L0 32C0 14.3 14.3 0 32 0L64 0 352 0zm0 384L96 384l0 64 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24-27.7 0 13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24l55.4 0 27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48 55.4 0c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24l-55.4 0L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48L111 112c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48 55.4 0 27.7 48-27.7 48-55.4 0-27.7-48zm0-48l-13.9 24-13.9-24 27.7 0zm41.6-24L208 88l13.9 24-27.7 0zm69.3 24l27.7 0-13.9 24-13.9-24zm13.9 72l13.9 24-27.7 0 13.9-24zm-55.4 48L208 280l-13.9-24 27.7 0z\"]\n};\nconst faTanakh = faBookTanakh;\nconst faPhoneVolume = {\n  prefix: 'fas',\n  iconName: 'phone-volume',\n  icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nconst faVolumeControlPhone = faPhoneVolume;\nconst faHatCowboySide = {\n  prefix: 'fas',\n  iconName: 'hat-cowboy-side',\n  icon: [640, 512, [], \"f8c1\", \"M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1l10.7 0c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32l-2.7 0c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64l480 0L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9l-10.7 0c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2L0 384z\"]\n};\nconst faClipboardUser = {\n  prefix: 'fas',\n  iconName: 'clipboard-user',\n  icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L96 448c-8.8 0-16-7.2-16-16z\"]\n};\nconst faChild = {\n  prefix: 'fas',\n  iconName: 'child',\n  icon: [320, 512, [], \"f1ae\", \"M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192.2L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8 240 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-32 0z\"]\n};\nconst faLiraSign = {\n  prefix: 'fas',\n  iconName: 'lira-sign',\n  icon: [320, 512, [8356], \"f195\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4L48 192l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 32-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l14 0c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L88.5 416l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9L224 352c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-32 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-31.6z\"]\n};\nconst faSatellite = {\n  prefix: 'fas',\n  iconName: 'satellite',\n  icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nconst faPlaneLock = {\n  prefix: 'fas',\n  iconName: 'plane-lock',\n  icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 84.6 101.8 58.2C418 247.6 416 259.6 416 272l0 24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1l0 70.9 57.6 43.2c4 3 6.4 7.8 6.4 12.8l0 24 0 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14l0-42c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8l0-65.5c0-5.7 3.1-11 8.1-13.9L192 178.3l0-84.6zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faTag = {\n  prefix: 'fas',\n  iconName: 'tag',\n  icon: [448, 512, [127991], \"f02b\", \"M0 80L0 229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7L48 32C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faComment = {\n  prefix: 'fas',\n  iconName: 'comment',\n  icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nconst faCakeCandles = {\n  prefix: 'fas',\n  iconName: 'cake-candles',\n  icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2L56 72c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c-35.3 0-64 28.7-64 64l0 71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4c0 0 0 0 0 0s0 0 0 0l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0l.1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9l0-71c0-35.3-28.7-64-64-64l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4L0 480c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32l0-85.4z\"]\n};\nconst faBirthdayCake = faCakeCandles;\nconst faCake = faCakeCandles;\nconst faEnvelope = {\n  prefix: 'fas',\n  iconName: 'envelope',\n  icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nconst faAnglesUp = {\n  prefix: 'fas',\n  iconName: 'angles-up',\n  icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nconst faAngleDoubleUp = faAnglesUp;\nconst faPaperclip = {\n  prefix: 'fas',\n  iconName: 'paperclip',\n  icon: [448, 512, [128206], \"f0c6\", \"M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nconst faArrowRightToCity = {\n  prefix: 'fas',\n  iconName: 'arrow-right-to-city',\n  icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 144 40 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 24 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-160 0-96 0c-26.5 0-48-21.5-48-48l0-416zm64 32l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 272l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l114.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nconst faRibbon = {\n  prefix: 'fas',\n  iconName: 'ribbon',\n  icon: [448, 512, [127895], \"f4d6\", \"M333.2 322.8s0 0 0 0l-133.9-146s0 0 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65l0-29.5c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0l-76 0c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8L64 164c0 23.2 8.4 45.6 23.6 63.1l56 64.2s0 0 0 0l83.3 95.6s0 0 0 0l91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z\"]\n};\nconst faLungs = {\n  prefix: 'fas',\n  iconName: 'lungs',\n  icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32l0 132.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2 0-45.5C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4l0 7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398l0-73 90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1l0-.4-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58 0 73.4c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89l0-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3l0 45.5 9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5L288 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faArrowUp91 = {\n  prefix: 'fas',\n  iconName: 'arrow-up-9-1',\n  icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3 192 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-301.7L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nconst faSortNumericUpAlt = faArrowUp91;\nconst faLitecoinSign = {\n  prefix: 'fas',\n  iconName: 'litecoin-sign',\n  icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 149.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1 64 448c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0 0-154.1 136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3 128 64z\"]\n};\nconst faBorderNone = {\n  prefix: 'fas',\n  iconName: 'border-none',\n  icon: [448, 512, [], \"f850\", \"M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nconst faCircleNodes = {\n  prefix: 'fas',\n  iconName: 'circle-nodes',\n  icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nconst faParachuteBox = {\n  prefix: 'fas',\n  iconName: 'parachute-box',\n  icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16L240 192l0 128-32 0c-7 0-13.7 1.5-19.7 4.2L68.2 192l28.3 0c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192l6 0L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7l0 96c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-96c0-7.8-1.9-15.2-5.2-21.7L487.1 192l6 0c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16l28.3 0L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2l-32 0 0-128 111.5 0z\"]\n};\nconst faIndent = {\n  prefix: 'fas',\n  iconName: 'indent',\n  icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3L0 176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nconst faTruckFieldUn = {\n  prefix: 'fas',\n  iconName: 'truck-field-un',\n  icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96l0 32c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-32c0-35.3-28.7-64-64-64l-4.2 0c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38l-51.8 0C364.4 44.9 343.7 32 320 32L96 32zm288 96l43.2 0 42.7 96L384 224l0-96zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52 0-43.2c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faHourglass = {\n  prefix: 'fas',\n  iconName: 'hourglass',\n  icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0L64 0 320 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 11c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1l0 11c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-11c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75l0-11C14.3 64 0 49.7 0 32zM96 64l0 11c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9l0-11L96 64zm0 384l192 0 0-11c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9l0 11z\"]\n};\nconst faHourglassEmpty = faHourglass;\nconst faMountain = {\n  prefix: 'fas',\n  iconName: 'mountain',\n  icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9L55.9 480C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8l49 0z\"]\n};\nconst faUserDoctor = {\n  prefix: 'fas',\n  iconName: 'user-doctor',\n  icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1l0 50.8c27.6 7.1 48 32.2 48 62l0 40c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l0-24c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 24c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-40c0-29.8 20.4-54.9 48-62l0-57.1c-6-.6-12.1-.9-18.3-.9l-91.4 0c-6.2 0-12.3 .3-18.3 .9l0 65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7l0-59.1zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faUserMd = faUserDoctor;\nconst faCircleInfo = {\n  prefix: 'fas',\n  iconName: 'circle-info',\n  icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faInfoCircle = faCircleInfo;\nconst faCloudMeatball = {\n  prefix: 'fas',\n  iconName: 'cloud-meatball',\n  icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96l44.7 0c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40l44.7 0c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faCamera = {\n  prefix: 'fas',\n  iconName: 'camera',\n  icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96 64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0L362.9 64.8C356.4 45.2 338.1 32 317.4 32L194.6 32c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faCameraAlt = faCamera;\nconst faSquareVirus = {\n  prefix: 'fas',\n  iconName: 'square-virus',\n  icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faMeteor = {\n  prefix: 'fas',\n  iconName: 'meteor',\n  icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faCarOn = {\n  prefix: 'fas',\n  iconName: 'car-on',\n  icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80zM185.8 224l140.3 0c6.8 0 12.8 4.3 15.1 10.6L360.3 288l-208.6 0 19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344l0 40 0 64 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 256 0 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 0-64 0-40c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160l-140.3 0c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nconst faSleigh = {\n  prefix: 'fas',\n  iconName: 'sleigh',\n  icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l0 160c0 53 43 96 96 96l0 32 64 0 0-32 192 0 0 32 64 0 0-32c53 0 96-43 96-96l0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0-32 0c-17.7 0-32 14.3-32 32l0 41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7l-9 0L32 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 8c0 13.3-10.7 24-24 24L64 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l488 0c48.6 0 88-39.4 88-88l0-8z\"]\n};\nconst faArrowDown19 = {\n  prefix: 'fas',\n  iconName: 'arrow-down-1-9',\n  icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l48 0 48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 301.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nconst faSortNumericAsc = faArrowDown19;\nconst faSortNumericDown = faArrowDown19;\nconst faHandHoldingDroplet = {\n  prefix: 'fas',\n  iconName: 'hand-holding-droplet',\n  icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3l0 1.7c0 53-43 96-96 96s-96-43-96-96l0-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faHandHoldingWater = faHandHoldingDroplet;\nconst faWater = {\n  prefix: 'fas',\n  iconName: 'water',\n  icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faCalendarCheck = {\n  prefix: 'fas',\n  iconName: 'calendar-check',\n  icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nconst faBraille = {\n  prefix: 'fas',\n  iconName: 'braille',\n  icon: [640, 512, [], \"f2a1\", \"M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nconst faPrescriptionBottleMedical = {\n  prefix: 'fas',\n  iconName: 'prescription-bottle-medical',\n  icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zm32 96l320 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zM160 240l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nconst faLandmark = {\n  prefix: 'fas',\n  iconName: 'landmark',\n  icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8L32 192c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9l0-.9 4.4-1.6L240.1 4.2zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z\"]\n};\nconst faTruck = {\n  prefix: 'fas',\n  iconName: 'truck',\n  icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48L0 368c0 26.5 21.5 48 48 48l16 0c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64 0-32 0-18.7c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7L416 96l0-48c0-26.5-21.5-48-48-48L48 0zM416 160l50.7 0L544 237.3l0 18.7-128 0 0-96zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCrosshairs = {\n  prefix: 'fas',\n  iconName: 'crosshairs',\n  icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32l0 10.4c93.7 13.9 167.7 88 181.6 181.6l10.4 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-10.4 0c-13.9 93.7-88 167.7-181.6 181.6l0 10.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-10.4C130.3 455.7 56.3 381.7 42.4 288L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l10.4 0C56.3 130.3 130.3 56.3 224 42.4L224 32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6l0-20.6c0-17.7 14.3-32 32-32s32 14.3 32 32l0 20.6c58.3-12.5 104.1-58.4 116.6-116.6L384 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l20.6 0C392.1 165.7 346.3 119.9 288 107.4l0 20.6c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-20.6C165.7 119.9 119.9 165.7 107.4 224l20.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-20.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faPersonCane = {\n  prefix: 'fas',\n  iconName: 'person-cane',\n  icon: [448, 512, [], \"e53c\", \"M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7l-35.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-244.7zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-30.9-25.1-56-56-56s-56 25.1-56 56l0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8z\"]\n};\nconst faTent = {\n  prefix: 'fas',\n  iconName: 'tent',\n  icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7l-80 0-28.2 0c-12.1 0-23.2-6.8-28.6-17.7L306.7 293.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9L288 480c0 17.7-14.3 32-32 32l-16 0L32 512c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nconst faVestPatches = {\n  prefix: 'fas',\n  iconName: 'vest-patches',\n  icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3L192 464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512L48 512c-26.5 0-48-21.5-48-48L0 270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6L64 128l0-73.7L64 48C64 21.5 85.5 0 112 0l4.5 0c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0L336 0c26.5 0 48 21.5 48 48l0 6.3 0 73.7 0 17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6L448 464c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-168.2c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280l0 8 0 32c0 8.8 7.2 16 16 16l32 0 8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faCheckDouble = {\n  prefix: 'fas',\n  iconName: 'check-double',\n  icon: [448, 512, [], \"f560\", \"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nconst faArrowDownAZ = {\n  prefix: 'fas',\n  iconName: 'arrow-down-a-z',\n  icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7 128 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352 352 352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224l-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176l40.4 0L416 135.6 395.8 176z\"]\n};\nconst faSortAlphaAsc = faArrowDownAZ;\nconst faSortAlphaDown = faArrowDownAZ;\nconst faMoneyBillWheat = {\n  prefix: 'fas',\n  iconName: 'money-bill-wheat',\n  icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L56 64C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 136c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 304zM48 416l0 48 48 0c0-26.5-21.5-48-48-48zM96 304l-48 0 0 48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48l48 0 0-48zM416 304c0 26.5 21.5 48 48 48l0-48-48 0zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faCookie = {\n  prefix: 'fas',\n  iconName: 'cookie',\n  icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArrowRotateLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-rotate-left',\n  icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160l50.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L48 224c-17.7 0-32-14.3-32-32L16 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nconst faArrowLeftRotate = faArrowRotateLeft;\nconst faArrowRotateBack = faArrowRotateLeft;\nconst faArrowRotateBackward = faArrowRotateLeft;\nconst faUndo = faArrowRotateLeft;\nconst faHardDrive = {\n  prefix: 'fas',\n  iconName: 'hard-drive',\n  icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 184.4c-17-15.2-39.4-24.4-64-24.4L64 256c-24.6 0-47 9.2-64 24.4L0 96zM64 288l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faHdd = faHardDrive;\nconst faFaceGrinSquintTears = {\n  prefix: 'fas',\n  iconName: 'face-grin-squint-tears',\n  icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nconst faGrinSquintTears = faFaceGrinSquintTears;\nconst faDumbbell = {\n  prefix: 'fas',\n  iconName: 'dumbbell',\n  icon: [640, 512, [], \"f44b\", \"M96 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 160 0 64 0 160c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64-32 0c-17.7 0-32-14.3-32-32l0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l32 0 0-64zm448 0l0 64 32 0c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64c0 17.7-14.3 32-32 32l-32 0 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-160 0-64 0-160c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32zM416 224l0 64-192 0 0-64 192 0z\"]\n};\nconst faRectangleList = {\n  prefix: 'fas',\n  iconName: 'rectangle-list',\n  icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0z\"]\n};\nconst faListAlt = faRectangleList;\nconst faTarpDroplet = {\n  prefix: 'fas',\n  iconName: 'tarp-droplet',\n  icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128l133.5 0c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64L512 128c35.3 0 64 28.7 64 64l0 160-128 0c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64zM448 512l0-128 128 0L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faHouseMedicalCircleCheck = {\n  prefix: 'fas',\n  iconName: 'house-medical-circle-check',\n  icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faPersonSkiingNordic = {\n  prefix: 'fas',\n  iconName: 'person-skiing-nordic',\n  icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464l-88.5 0 41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464l-32.4 0 54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464l-43 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l135.3 0c.5 0 .9 0 1.4 0l158.6 0c.5 0 1 0 1.4 0L504 512c39.8 0 72-32.2 72-72l0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8c0 13.3-10.7 24-24 24l-69.4 0 27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32l-21.3 0c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464l-44.4 0 21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288l2.7 0z\"]\n};\nconst faSkiingNordic = faPersonSkiingNordic;\nconst faCalendarPlus = {\n  prefix: 'fas',\n  iconName: 'calendar-plus',\n  icon: [448, 512, [], \"f271\", \"M96 32l0 32L48 64C21.5 64 0 85.5 0 112l0 48 448 0 0-48c0-26.5-21.5-48-48-48l-48 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L160 64l0-32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192L0 192 0 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-272zM224 248c13.3 0 24 10.7 24 24l0 56 56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0 0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56-56 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l56 0 0-56c0-13.3 10.7-24 24-24z\"]\n};\nconst faPlaneArrival = {\n  prefix: 'fas',\n  iconName: 'plane-arrival',\n  icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0l40.1 0c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14.1-9.3-22.5zM32 448l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCircleLeft = {\n  prefix: 'fas',\n  iconName: 'circle-left',\n  icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM116.7 244.7l112-112c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8l0 64 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 64c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-112-112c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faArrowAltCircleLeft = faCircleLeft;\nconst faTrainSubway = {\n  prefix: 'fas',\n  iconName: 'train-subway',\n  icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96L0 352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512l39.7 0c8.5 0 16.6-3.4 22.6-9.4L160 448l128 0 54.6 54.6c6 6 14.1 9.4 22.6 9.4l39.7 0c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9l0-256c0-53-43-96-96-96L96 0zM64 128c0-17.7 14.3-32 32-32l80 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32-14.3-32-32l0-96zM272 96l80 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSubway = faTrainSubway;\nconst faChartGantt = {\n  prefix: 'fas',\n  iconName: 'chart-gantt',\n  icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32zm96 64l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faIndianRupeeSign = {\n  prefix: 'fas',\n  iconName: 'indian-rupee-sign',\n  icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32l64 0 16 0 176 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-56.2 0c9.6 14.4 16.7 30.6 20.7 48l35.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-35.6 0c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256l80 0c32.8 0 61-19.7 73.3-48L32 208c-17.7 0-32-14.3-32-32s14.3-32 32-32l153.3 0C173 115.7 144.8 96 112 96L96 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faIndianRupee = faIndianRupeeSign;\nconst faInr = faIndianRupeeSign;\nconst faCropSimple = {\n  prefix: 'fas',\n  iconName: 'crop-simple',\n  icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l224 0 0-64-224 0 0-352zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-256c0-35.3-28.7-64-64-64L160 64l0 64 224 0 0 352z\"]\n};\nconst faCropAlt = faCropSimple;\nconst faMoneyBill1 = {\n  prefix: 'fas',\n  iconName: 'money-bill-1',\n  icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm64 320l-64 0 0-64c35.3 0 64 28.7 64 64zM64 192l0-64 64 0c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l24 0 24 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n};\nconst faMoneyBillAlt = faMoneyBill1;\nconst faLeftLong = {\n  prefix: 'fas',\n  iconName: 'left-long',\n  icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z\"]\n};\nconst faLongArrowAltLeft = faLeftLong;\nconst faDna = {\n  prefix: 'fas',\n  iconName: 'dna',\n  icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0l-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5l118.5 0c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32L64 480c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32l320 0c0-17.7 14.3-32 32-32zM338.6 384l-229.2 0c-10.1 10.6-18.6 21.3-25.5 32l280.2 0c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128l229.2 0c10.1-10.7 18.6-21.3 25.5-32L83.9 96c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5l-118.5 0z\"]\n};\nconst faVirusSlash = {\n  prefix: 'fas',\n  iconName: 'virus-slash',\n  icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1l11.5 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-11.5 0c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14L96 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l11.5 0c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6l0 11.5c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11.5c0-31.2 23.6-52.7 50-55.7z\"]\n};\nconst faMinus = {\n  prefix: 'fas',\n  iconName: 'minus',\n  icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faSubtract = faMinus;\nconst faChess = {\n  prefix: 'fas',\n  iconName: 'chess',\n  icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 16L96 32c-8.8 0-16 7.2-16 16s7.2 16 16 16l16 0 0 32L60.2 96C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208 72 208c-13.3 0-24 10.7-24 24s10.7 24 24 24l4 0L60 384l136 0L180 256l4 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-1.8 0 32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2L144 96l0-32 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24l208 0c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416 48 416zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416l-128 0zM304 208l0 51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384l125.5 0-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7l0-51.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 16-24 0 0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 16-24 0 0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32-32 0 0-32z\"]\n};\nconst faArrowLeftLong = {\n  prefix: 'fas',\n  iconName: 'arrow-left-long',\n  icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nconst faLongArrowLeft = faArrowLeftLong;\nconst faPlugCircleCheck = {\n  prefix: 'fas',\n  iconName: 'plug-circle-check',\n  icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faStreetView = {\n  prefix: 'fas',\n  iconName: 'street-view',\n  icon: [512, 512, [], \"f21d\", \"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64l0 48c0 17.7 14.3 32 32 32l1.8 0 11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5l38.7 0c16.3 0 30-12.3 31.8-28.5L318.2 304l1.8 0c17.7 0 32-14.3 32-32l0-48c0-35.3-28.7-64-64-64l-64 0zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nconst faFrancSign = {\n  prefix: 'fas',\n  iconName: 'franc-sign',\n  icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64l0 160 0 96-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-64 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-96 176 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faVolumeOff = {\n  prefix: 'fas',\n  iconName: 'volume-off',\n  icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160 64 160c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l67.8 0L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448l0-384z\"]\n};\nconst faHandsAslInterpreting = {\n  prefix: 'fas',\n  iconName: 'hands-asl-interpreting',\n  icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7L0 256c0 70.7 57.3 128 128 128l72 0 8 0 0-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2l0-9.3c0-70.7-57.3-128-128-128l-72 0-8 0 0 .3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nconst faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nconst faAslInterpreting = faHandsAslInterpreting;\nconst faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nconst faGear = {\n  prefix: 'fas',\n  iconName: 'gear',\n  icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nconst faCog = faGear;\nconst faDropletSlash = {\n  prefix: 'fas',\n  iconName: 'droplet-slash',\n  icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.2 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0l-1.8 0c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faTintSlash = faDropletSlash;\nconst faMosque = {\n  prefix: 'fas',\n  iconName: 'mosque',\n  icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5c0 0 0 0 0 0s0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4l-356.4 0c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6c0 0 0 0 0 0s0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512l0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-48 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l416 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-48 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-64 0 0-58c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454l0 58-64 0zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126l0 2L0 128l0-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160l160 0 0 136.6c-19.1 11.1-32 31.7-32 55.4l0 128c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2l-64 0c-26.5 0-48-21.5-48-48L0 176l0-16z\"]\n};\nconst faMosquito = {\n  prefix: 'fas',\n  iconName: 'mosquito',\n  icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nconst faStarOfDavid = {\n  prefix: 'fas',\n  iconName: 'star-of-david',\n  icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344l42.3 0-21.1-34.5zM371.4 256l-54-88-122.8 0-54 88 54 88 122.8 0 54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4l-109.8 0-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400 53.4 400C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112l109.8 0 56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112l109.8 0c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168l-42.3 0zM283 112L256 68l-27 44 54 0zM128.9 168l-42.3 0 21.1 34.5L128.9 168zM107.8 309.5L86.6 344l42.3 0-21.1-34.5zM229 400l27 44 27-44-54 0z\"]\n};\nconst faPersonMilitaryRifle = {\n  prefix: 'fas',\n  iconName: 'person-military-rifle',\n  icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4L352 48c0 8.8-7.2 16-16 16L185 64c-13.8 0-25-11.2-25-25zm17.6 57l156.8 0c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7 352 480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9l50.4 0c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512l-128 0c-17.7 0-32-14.3-32-32l0-110.3-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faCartShopping = {\n  prefix: 'fas',\n  iconName: 'cart-shopping',\n  icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M0 24C0 10.7 10.7 0 24 0L69.5 0c22 0 41.5 12.8 50.6 32l411 0c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3l-288.5 0 5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5L488 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-288.3 0c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5L24 48C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faShoppingCart = faCartShopping;\nconst faVials = {\n  prefix: 'fas',\n  iconName: 'vials',\n  icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32l56 0 48 0 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 304c0 44.2-35.8 80-80 80s-80-35.8-80-80L32 96C14.3 96 0 81.7 0 64zM136 96L88 96l0 160 48 0 0-160zM288 64c0-17.7 14.3-32 32-32l56 0 48 0 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 304c0 44.2-35.8 80-80 80s-80-35.8-80-80l0-304c-17.7 0-32-14.3-32-32zM424 96l-48 0 0 160 48 0 0-160z\"]\n};\nconst faPlugCirclePlus = {\n  prefix: 'fas',\n  iconName: 'plug-circle-plus',\n  icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faPlaceOfWorship = {\n  prefix: 'fas',\n  iconName: 'place-of-worship',\n  icon: [640, 512, [], \"f67f\", \"M224 109.3l0 108.3L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2L160 512l96 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 96 0 0-228.8c0-16.9-8.8-32.5-23.3-41.2L416 217.6l0-108.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4L0 464c0 26.5 21.5 48 48 48l80 0 0-238.4L24.9 330.3zM592 512c26.5 0 48-21.5 48-48l0-91.6c0-17.5-9.5-33.6-24.9-42.1L512 273.6 512 512l80 0z\"]\n};\nconst faGripVertical = {\n  prefix: 'fas',\n  iconName: 'grip-vertical',\n  icon: [320, 512, [], \"f58e\", \"M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z\"]\n};\nconst faHexagonNodes = {\n  prefix: 'fas',\n  iconName: 'hexagon-nodes',\n  icon: [448, 512, [], \"e699\", \"M248 106.6c18.9-9 32-28.3 32-50.6c0-30.9-25.1-56-56-56s-56 25.1-56 56c0 22.3 13.1 41.6 32 50.6l0 98.8c-2.8 1.3-5.5 2.9-8 4.7l-80.1-45.8c1.6-20.8-8.6-41.6-27.9-52.8C57.2 96 23 105.2 7.5 132S1.2 193 28 208.5c1.3 .8 2.6 1.5 4 2.1l0 90.8c-1.3 .6-2.7 1.3-4 2.1C1.2 319-8 353.2 7.5 380S57.2 416 84 400.5c19.3-11.1 29.4-32 27.8-52.8l50.5-28.9c-11.5-11.2-19.9-25.6-23.8-41.7L88 306.1c-2.6-1.8-5.2-3.3-8-4.7l0-90.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-.1 1.4-.2 2.8-.2 4.3c0 22.3 13.1 41.6 32 50.6l0 98.8c-18.9 9-32 28.3-32 50.6c0 30.9 25.1 56 56 56s56-25.1 56-56c0-22.3-13.1-41.6-32-50.6l0-98.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-1.6 20.8 8.6 41.6 27.8 52.8c26.8 15.5 61 6.3 76.5-20.5s6.3-61-20.5-76.5c-1.3-.8-2.7-1.5-4-2.1l0-90.8c1.4-.6 2.7-1.3 4-2.1c26.8-15.5 36-49.7 20.5-76.5S390.8 96 364 111.5c-19.3 11.1-29.4 32-27.8 52.8l-50.6 28.9c11.5 11.2 19.9 25.6 23.8 41.7L360 205.9c2.6 1.8 5.2 3.3 8 4.7l0 90.8c-2.8 1.3-5.5 2.9-8 4.6l-80.1-45.8c.1-1.4 .2-2.8 .2-4.3c0-22.3-13.1-41.6-32-50.6l0-98.8z\"]\n};\nconst faArrowTurnUp = {\n  prefix: 'fas',\n  iconName: 'arrow-turn-up',\n  icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nconst faLevelUp = faArrowTurnUp;\nconst faU = {\n  prefix: 'fas',\n  iconName: 'u',\n  icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32l0 224c0 70.7 57.3 128 128 128s128-57.3 128-128l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32l0 224c0 106-86 192-192 192S0 394 0 288L0 64C0 46.3 14.3 32 32 32z\"]\n};\nconst faSquareRootVariable = {\n  prefix: 'fas',\n  iconName: 'square-root-variable',\n  icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1l200 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L344 96 238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l45.6 0c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faSquareRootAlt = faSquareRootVariable;\nconst faClock = {\n  prefix: 'fas',\n  iconName: 'clock',\n  icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faClockFour = faClock;\nconst faBackwardStep = {\n  prefix: 'fas',\n  iconName: 'backward-step',\n  icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-320c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241 64 96c0-17.7-14.3-32-32-32S0 78.3 0 96L0 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-145 11.5 9.6 192 160z\"]\n};\nconst faStepBackward = faBackwardStep;\nconst faPallet = {\n  prefix: 'fas',\n  iconName: 'pallet',\n  icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 64-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 224 0 224 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-64 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-224 0L96 320l-64 0zm96 64l160 0 0 64-160 0 0-64zm224 0l160 0 0 64-160 0 0-64z\"]\n};\nconst faFaucet = {\n  prefix: 'fas',\n  iconName: 'faucet',\n  icon: [512, 512, [], \"e005\", \"M192 96l0 12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12 0-12c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l100.1 0c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48l36.1 0c17.7 0 32 14.3 32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160l-32 0-22.6-22.6c-6-6-14.1-9.4-22.6-9.4L256 224l0-43.8-32-4-32 4 0 43.8-18.7 0c-8.5 0-16.6 3.4-22.6 9.4L128 256l-96 0z\"]\n};\nconst faBaseballBatBall = {\n  prefix: 'fas',\n  iconName: 'baseball-bat-ball',\n  icon: [512, 512, [], \"f432\", \"M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nconst faS = {\n  prefix: 'fas',\n  iconName: 's',\n  icon: [320, 512, [115], \"53\", \"M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0s0 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nconst faTimeline = {\n  prefix: 'fas',\n  iconName: 'timeline',\n  icon: [640, 512, [], \"e29c\", \"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3L96 224l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0 0 54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-54.7 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-54.7c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3l0 54.7-320 0 0-54.7zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faKeyboard = {\n  prefix: 'fas',\n  iconName: 'keyboard',\n  icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm16 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-32zM272 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM368 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM464 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nconst faCaretDown = {\n  prefix: 'fas',\n  iconName: 'caret-down',\n  icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nconst faHouseChimneyMedical = {\n  prefix: 'fas',\n  iconName: 'house-chimney-medical',\n  icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0z\"]\n};\nconst faClinicMedical = faHouseChimneyMedical;\nconst faTemperatureThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'temperature-three-quarters',\n  icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 144c0-8.8 7.2-16 16-16s16 7.2 16 16l0 178.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature3 = faTemperatureThreeQuarters;\nconst faThermometer3 = faTemperatureThreeQuarters;\nconst faThermometerThreeQuarters = faTemperatureThreeQuarters;\nconst faMobileScreen = {\n  prefix: 'fas',\n  iconName: 'mobile-screen',\n  icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM144 448c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zM304 64L80 64l0 320 224 0 0-320z\"]\n};\nconst faMobileAndroidAlt = faMobileScreen;\nconst faPlaneUp = {\n  prefix: 'fas',\n  iconName: 'plane-up',\n  icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6l0 56.7c0 10.9-10.7 18.6-21.1 15.2L320 320l0 80 57.6 43.2c4 3 6.4 7.8 6.4 12.8l0 42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14l0-42c0-5 2.4-9.8 6.4-12.8L192 400l0-80L21.1 377C10.7 380.4 0 372.7 0 361.8l0-56.7c0-10.7 5.3-20.7 14.2-26.6L192 160l0-66.3z\"]\n};\nconst faPiggyBank = {\n  prefix: 'fas',\n  iconName: 'piggy-bank',\n  icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7L256 96c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96l11.5 0c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9l13.3 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-32 0c-9.1 12.1-19.9 22.9-32 32l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-128 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c-34.9-26.2-58.7-66.3-63.2-112L68 304c-37.6 0-68-30.4-68-68s30.4-68 68-68l4 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-4 0c-11 0-20 9-20 20s9 20 20 20l31.2 0c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2l128 0zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faBatteryHalf = {\n  prefix: 'fas',\n  iconName: 'battery-half',\n  icon: [576, 512, [\"battery-3\"], \"f242\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm208 96L96 192l0 128 192 0 0-128z\"]\n};\nconst faBattery3 = faBatteryHalf;\nconst faMountainCity = {\n  prefix: 'fas',\n  iconName: 'mountain-city',\n  icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48l0 92.1 71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-3.5 0 73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3L592 512c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48l-24 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-40 0 0-144c0-26.5-21.5-48-48-48L336 0zm32 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm160 96c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM224 188.9L283.8 288 223 288l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512l379.1 0c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nconst faCoins = {\n  prefix: 'fas',\n  iconName: 'coins',\n  icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2c0 0 0 0 0 0s0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336l0-35.4c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4l0 3.4 0 5.7 0 26.3zm32 0l0-32 0-25.9c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 44.2-86 80-192 80S0 476.2 0 432l0-35.4c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nconst faKhanda = {\n  prefix: 'fas',\n  iconName: 'khanda',\n  icon: [512, 512, [9772], \"f66d\", \"M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0l-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1s0 0 0 0s0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5l0 19.8 35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3s0 0 0 0s0 0 0 0l.1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1c0 0 0 0 0 0s0 0 0 0L401.1 400l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4l0 28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7l0-28.1-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3s0 0 0 0s0 0 0 0l-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0c0 0 0 0 0 0s0 0 0 0L112 80l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6l0-19.1-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0l.1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1s0 0 0 0s0 0 0 0s0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z\"]\n};\nconst faSliders = {\n  prefix: 'fas',\n  iconName: 'sliders',\n  icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z\"]\n};\nconst faSlidersH = faSliders;\nconst faFolderTree = {\n  prefix: 'fas',\n  iconName: 'folder-tree',\n  icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32l0 96L0 384c0 35.3 28.7 64 64 64l192 0 0-64L64 384l0-224 192 0 0-64L64 96l0-64zM288 192c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l-98.7 0c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4L320 0c-17.7 0-32 14.3-32 32l0 160zm0 288c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l-98.7 0c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4L320 288c-17.7 0-32 14.3-32 32l0 160z\"]\n};\nconst faNetworkWired = {\n  prefix: 'fas',\n  iconName: 'network-wired',\n  icon: [640, 512, [], \"f6ff\", \"M256 64l128 0 0 64-128 0 0-64zM240 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l48 0 0 32L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 256 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-256 0 0-32 48 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48L240 0zM96 448l0-64 128 0 0 64L96 448zm320-64l128 0 0 64-128 0 0-64z\"]\n};\nconst faMapPin = {\n  prefix: 'fas',\n  iconName: 'map-pin',\n  icon: [320, 512, [128205], \"f276\", \"M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480l0-162.9c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9L192 480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nconst faHamsa = {\n  prefix: 'fas',\n  iconName: 'hamsa',\n  icon: [512, 512, [], \"f665\", \"M34.6 288L80 288c8.8 0 16-7.2 16-16L96 72c0-22.1 17.9-40 40-40s40 17.9 40 40l0 132c0 11 9 20 20 20s20-9 20-20l0-164c0-22.1 17.9-40 40-40s40 17.9 40 40l0 164c0 11 9 20 20 20s20-9 20-20l0-132c0-22.1 17.9-40 40-40s40 17.9 40 40l0 200c0 8.8 7.2 16 16 16l45.4 0c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCentSign = {\n  prefix: 'fas',\n  iconName: 'cent-sign',\n  icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32l0 34.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8l0 34.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.7C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3L192 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faFlask = {\n  prefix: 'fas',\n  iconName: 'flask',\n  icon: [448, 512, [], \"f0c3\", \"M288 0L160 0 128 0C110.3 0 96 14.3 96 32s14.3 32 32 32l0 132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512l309.2 0c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5L320 64c17.7 0 32-14.3 32-32s-14.3-32-32-32L288 0zM192 196.8L192 64l64 0 0 132.8c0 23.7 6.6 46.9 19 67.1L309.5 320l-171 0L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nconst faPersonPregnant = {\n  prefix: 'fas',\n  iconName: 'person-pregnant',\n  icon: [384, 512, [], \"e31e\", \"M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31l0-55.1-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1l1.1 0 12.5 0 2.4 0c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3l0 32c0 17.7-14.3 32-32 32l-16 0-40 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-8 0-8 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-97z\"]\n};\nconst faWandSparkles = {\n  prefix: 'fas',\n  iconName: 'wand-sparkles',\n  icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7l0 21.4c0 8.8-7.2 16-16 16l-15.8 0c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9l0-27.6c0-8.8 7.2-16 16-16l34.6 0c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nconst faEllipsisVertical = {\n  prefix: 'fas',\n  iconName: 'ellipsis-vertical',\n  icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z\"]\n};\nconst faEllipsisV = faEllipsisVertical;\nconst faTicket = {\n  prefix: 'fas',\n  iconName: 'ticket',\n  icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128l0 64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6l0-64c0-35.3-28.7-64-64-64L64 64zm64 112l0 160c0 8.8 7.2 16 16 16l288 0c8.8 0 16-7.2 16-16l0-160c0-8.8-7.2-16-16-16l-288 0c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32l320 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-320 0c-17.7 0-32-14.3-32-32l0-192z\"]\n};\nconst faPowerOff = {\n  prefix: 'fas',\n  iconName: 'power-off',\n  icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 224c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nconst faRightLong = {\n  prefix: 'fas',\n  iconName: 'right-long',\n  icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z\"]\n};\nconst faLongArrowAltRight = faRightLong;\nconst faFlagUsa = {\n  prefix: 'fas',\n  iconName: 'flag-usa',\n  icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 36.1-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9l0 32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3l0 62-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1l0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3l0 62-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1l0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3l0 33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-70.5 0-32.7 0-63.3 0-32.7 0-63.3 0-32.7L0 64 0 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faLaptopFile = {\n  prefix: 'fas',\n  iconName: 'laptop-file',\n  icon: [640, 512, [], \"e51d\", \"M128 0C92.7 0 64 28.7 64 64l0 224-44.8 0C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384L320 384l0-96-192 0 0-224 320 0 0 32 64 0 0-32c0-35.3-28.7-64-64-64L128 0zM512 128l-112 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-208-96 0c-17.7 0-32-14.3-32-32l0-96zm32 0l0 96 96 0-96-96z\"]\n};\nconst faTty = {\n  prefix: 'fas',\n  iconName: 'tty',\n  icon: [512, 512, [\"teletype\"], \"f1e4\", \"M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4l0-54.8c-49.6-18.1-104-18.1-153.6 0l0 54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm0 96c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM144 320l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-32z\"]\n};\nconst faTeletype = faTty;\nconst faDiagramNext = {\n  prefix: 'fas',\n  iconName: 'diagram-next',\n  icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64l-168 0 0 64 46.1 0c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41l46.1 0 0-64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 64zM448 416l0-64-82.7 0 .4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4L64 352l0 64 146.7 0 5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7L448 416z\"]\n};\nconst faPersonRifle = {\n  prefix: 'fas',\n  iconName: 'person-rifle',\n  icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9L336 512l-192 0 0-174.3L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8l50.4 0zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16l0 116.3c9.6 5.5 16 15.9 16 27.7l0 109.3 16-5.3 0-56c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 84.5c0 6.9-4.4 13-10.9 15.2L480 325.3l0 26.7 48 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-44 0 23 92.1c2.5 10.1-5.1 19.9-15.5 19.9L432 512c-8.8 0-16-7.2-16-16l0-96-16 0c-17.7 0-32-14.3-32-32l0-144c0-17.7 14.3-32 32-32l0-32c0-11.8 6.4-22.2 16-27.7L416 32c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 16 0z\"]\n};\nconst faHouseMedicalCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'house-medical-circle-exclamation',\n  icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faClosedCaptioning = {\n  prefix: 'fas',\n  iconName: 'closed-captioning',\n  icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nconst faPersonHiking = {\n  prefix: 'fas',\n  iconName: 'person-hiking',\n  icon: [384, 512, [\"hiking\"], \"f6ec\", \"M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9l0 89.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.7-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208l30.9 0 0-24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 55.8c0 .1 0 .2 0 .2s0 .2 0 .2L384 488c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-216-39.4 0c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59l4.2 0c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nconst faHiking = faPersonHiking;\nconst faVenusDouble = {\n  prefix: 'fas',\n  iconName: 'venus-double',\n  icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nconst faImages = {\n  prefix: 'fas',\n  iconName: 'images',\n  icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320l-144 0-48 0-80 0c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 344c0 75.1 60.9 136 136 136l320 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-320 0c-48.6 0-88-39.4-88-88l0-224z\"]\n};\nconst faCalculator = {\n  prefix: 'fas',\n  iconName: 'calculator',\n  icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM96 64l192 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nconst faPeoplePulling = {\n  prefix: 'fas',\n  iconName: 'people-pulling',\n  icon: [576, 512, [], \"e535\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64L0 320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352l15.7 0 30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128l-53 0zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nconst faN = {\n  prefix: 'fas',\n  iconName: 'n',\n  icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6 320 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 384c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4 64 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nconst faCableCar = {\n  prefix: 'fas',\n  iconName: 'cable-car',\n  icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64l136 0 0-66.5-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5l0 76.5 136 0c35.3 0 64 28.7 64 64l0 160c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-160zm64 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0zm112 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0z\"]\n};\nconst faTram = faCableCar;\nconst faCloudRain = {\n  prefix: 'fas',\n  iconName: 'cloud-rain',\n  icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96L96 320zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nconst faBuildingCircleXmark = {\n  prefix: 'fas',\n  iconName: 'building-circle-xmark',\n  icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faShip = {\n  prefix: 'fas',\n  iconName: 'ship',\n  icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32L352 0c17.7 0 32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 128 44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240l0-128c0-26.5 21.5-48 48-48l48 0 0-32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7l0-90.7-256 0 0 90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faArrowsDownToLine = {\n  prefix: 'fas',\n  iconName: 'arrows-down-to-line',\n  icon: [576, 512, [], \"e4b8\", \"M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nconst faDownload = {\n  prefix: 'fas',\n  iconName: 'download',\n  icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 242.7-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7 288 32zM64 352c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-101.5 0-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352 64 352zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faFaceGrin = {\n  prefix: 'fas',\n  iconName: 'face-grin',\n  icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrin = faFaceGrin;\nconst faDeleteLeft = {\n  prefix: 'fas',\n  iconName: 'delete-left',\n  icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64L205.3 64c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7L512 448c35.3 0 64-28.7 64-64l0-256zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faBackspace = faDeleteLeft;\nconst faEyeDropper = {\n  prefix: 'fas',\n  iconName: 'eye-dropper',\n  icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6l0 42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480l42.4 0c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7L96 416l0-36.1c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nconst faEyeDropperEmpty = faEyeDropper;\nconst faEyedropper = faEyeDropper;\nconst faFileCircleCheck = {\n  prefix: 'fas',\n  iconName: 'file-circle-check',\n  icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faForward = {\n  prefix: 'fas',\n  iconName: 'forward',\n  icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416L0 96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3l0 41.7 0 41.7L52.5 440.6zM256 352l0-96 0-128 0-32c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29l0-64z\"]\n};\nconst faMobile = {\n  prefix: 'fas',\n  iconName: 'mobile',\n  icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zm80 432l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMobileAndroid = faMobile;\nconst faMobilePhone = faMobile;\nconst faFaceMeh = {\n  prefix: 'fas',\n  iconName: 'face-meh',\n  icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMeh = faFaceMeh;\nconst faAlignCenter = {\n  prefix: 'fas',\n  iconName: 'align-center',\n  icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32L128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32z\"]\n};\nconst faBookSkull = {\n  prefix: 'fas',\n  iconName: 'book-skull',\n  icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2l0 12.8c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-12.8c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nconst faBookDead = faBookSkull;\nconst faIdCard = {\n  prefix: 'fas',\n  iconName: 'id-card',\n  icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96zm0 32L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-288L0 128zM64 405.3c0-29.5 23.9-53.3 53.3-53.3l117.3 0c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7L74.7 416c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faDriversLicense = faIdCard;\nconst faOutdent = {\n  prefix: 'fas',\n  iconName: 'outdent',\n  icon: [448, 512, [\"dedent\"], \"f03b\", \"M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6l0 158.6c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z\"]\n};\nconst faDedent = faOutdent;\nconst faHeartCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'heart-circle-exclamation',\n  icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faHouse = {\n  prefix: 'fas',\n  iconName: 'house',\n  icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c0 2.7-.2 5.4-.5 8.1l0 16.2c0 22.1-17.9 40-40 40l-16 0c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1L416 512l-24 0c-22.1 0-40-17.9-40-40l0-24 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nconst faHome = faHouse;\nconst faHomeAlt = faHouse;\nconst faHomeLgAlt = faHouse;\nconst faCalendarWeek = {\n  prefix: 'fas',\n  iconName: 'calendar-week',\n  icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm80 64c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l288 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16L80 256z\"]\n};\nconst faLaptopMedical = {\n  prefix: 'fas',\n  iconName: 'laptop-medical',\n  icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 256-64 0 0-256L128 96l0 256-64 0L64 96zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faB = {\n  prefix: 'fas',\n  iconName: 'b',\n  icon: [320, 512, [98], \"42\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 416c0 35.3 28.7 64 64 64l128 0c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128L64 32zm96 192l-96 0L64 96l96 0c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288l96 0 32 0c35.3 0 64 28.7 64 64s-28.7 64-64 64L64 416l0-128z\"]\n};\nconst faFileMedical = {\n  prefix: 'fas',\n  iconName: 'file-medical',\n  icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM160 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faDiceOne = {\n  prefix: 'fas',\n  iconName: 'dice-one',\n  icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faKiwiBird = {\n  prefix: 'fas',\n  iconName: 'kiwi-bird',\n  icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4l55.7 0c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3l0-240c0-70.7-57.3-128-128-128l-55.7 0c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3L96 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-46c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7l0 40.7c0 13.3 10.7 24 24 24s24-10.7 24-24l0-50.9c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faArrowRightArrowLeft = {\n  prefix: 'fas',\n  iconName: 'arrow-right-arrow-left',\n  icon: [448, 512, [8644, \"exchange\"], \"f0ec\", \"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"]\n};\nconst faExchange = faArrowRightArrowLeft;\nconst faRotateRight = {\n  prefix: 'fas',\n  iconName: 'rotate-right',\n  icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z\"]\n};\nconst faRedoAlt = faRotateRight;\nconst faRotateForward = faRotateRight;\nconst faUtensils = {\n  prefix: 'fas',\n  iconName: 'utensils',\n  icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176l0 112c0 35.3 28.7 64 64 64l32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 0-112 0-208c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7L80 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224.4c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16l0 134.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8L64 16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nconst faCutlery = faUtensils;\nconst faArrowUpWideShort = {\n  prefix: 'fas',\n  iconName: 'arrow-up-wide-short',\n  icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nconst faSortAmountUp = faArrowUpWideShort;\nconst faMillSign = {\n  prefix: 'fas',\n  iconName: 'mill-sign',\n  icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128l0 80L0 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208c0-26.5 21.5-48 48-48s48 21.5 48 48l0 42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32l0-154.5 35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48l0 208c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nconst faBowlRice = {\n  prefix: 'fas',\n  iconName: 'bowl-rice',\n  icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm24 48l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faSkull = {\n  prefix: 'fas',\n  iconName: 'skull',\n  icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1l0 64c0 26.5 21.5 48 48 48l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 64 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 48 0c26.5 0 48-21.5 48-48l0-64c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faTowerBroadcast = {\n  prefix: 'fas',\n  iconName: 'tower-broadcast',\n  icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4L320 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-296.6c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nconst faBroadcastTower = faTowerBroadcast;\nconst faTruckPickup = {\n  prefix: 'fas',\n  iconName: 'truck-pickup',\n  icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96L288 192l0-96 80.6 0zM224 80l0 112L64 192c-17.7 0-32 14.3-32 32l0 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l33.1 0c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16l66.3 0c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16l33.1 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c0-17.7-14.3-32-32-32l-48.6 0L418.6 56c-12.1-15.2-30.5-24-50-24L272 32c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nconst faUpLong = {\n  prefix: 'fas',\n  iconName: 'up-long',\n  icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192l72 0 0 288c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-288 72 0c9.6 0 18.2-5.7 22-14.5z\"]\n};\nconst faLongArrowAltUp = faUpLong;\nconst faStop = {\n  prefix: 'fas',\n  iconName: 'stop',\n  icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nconst faCodeMerge = {\n  prefix: 'fas',\n  iconName: 'code-merge',\n  icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3l0 205.3C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-86.6c26.7 20.1 60 32 96 32l86.7 0c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48L208 240c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faUpload = {\n  prefix: 'fas',\n  iconName: 'upload',\n  icon: [512, 512, [], \"f093\", \"M288 109.3L288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-242.7-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352l128 0c0 35.3 28.7 64 64 64s64-28.7 64-64l128 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faHurricane = {\n  prefix: 'fas',\n  iconName: 'hurricane',\n  icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9l0 63.3c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2l0-63.3c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faMound = {\n  prefix: 'fas',\n  iconName: 'mound',\n  icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nconst faToiletPortable = {\n  prefix: 'fas',\n  iconName: 'toilet-portable',\n  icon: [320, 512, [], \"e583\", \"M0 32L0 64l320 0 0-32c0-17.7-14.3-32-32-32L32 0C14.3 0 0 14.3 0 32zM24 96L0 96l0 24L0 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 224 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-368 0-24-24 0L24 96zM256 240l0 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faCompactDisc = {\n  prefix: 'fas',\n  iconName: 'compact-disc',\n  icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nconst faFileArrowDown = {\n  prefix: 'fas',\n  iconName: 'file-arrow-down',\n  icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM216 232l0 102.1 31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31L168 232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFileDownload = faFileArrowDown;\nconst faCaravan = {\n  prefix: 'fas',\n  iconName: 'caravan',\n  icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32l336 0c88.4 0 160 71.6 160 160l0 160 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0-288 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-44.2 0-80-35.8-80-80L0 112zM320 352l128 0 0-96-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 192zM96 128c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faShieldCat = {\n  prefix: 'fas',\n  iconName: 'shield-cat',\n  icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4l.2 0c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4l48 0c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3l.2 0c5.8 0 10.4 4.7 10.4 10.4L352 272c0 53-43 96-96 96s-96-43-96-96l0-117.6zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faBolt = {\n  prefix: 'fas',\n  iconName: 'bolt',\n  icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288l111.5 0L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7l-111.5 0L349.4 44.6z\"]\n};\nconst faZap = faBolt;\nconst faGlassWater = {\n  prefix: 'fas',\n  iconName: 'glass-water',\n  icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM73 156.5L66.4 64l251.3 0L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n};\nconst faOilWell = {\n  prefix: 'fas',\n  iconName: 'oil-well',\n  icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6 96 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 264-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-137.3 0L340 257.5l-62.2 16.1L305.3 352l-66.6 0L265 277l-74.6 19.3L137.3 448 96 448l0-159.2 337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32 111.4 0 11.2 32-133.8 0z\"]\n};\nconst faVault = {\n  prefix: 'fas',\n  iconName: 'vault',\n  icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64L0 416c0 35.3 28.7 64 64 64l16 0 16 32 64 0 16-32 224 0 16 32 64 0 16-32 16 0c35.3 0 64-28.7 64-64l0-352c0-35.3-28.7-64-64-64L64 0zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3L480 336c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-114.7c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nconst faMars = {\n  prefix: 'fas',\n  iconName: 'mars',\n  icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8l112 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80s0 0 0 0s0 0 0 0s0 0 0 0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nconst faToilet = {\n  prefix: 'fas',\n  iconName: 'toilet',\n  icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l8 0 0 148.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l256 0c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4L416 48l8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 0zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3c0 0 0-.1 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8c0 0 0 .1 0 .1l0 .3zM328.2 384l-.2 .5 0-.5 .2 0zM112 64l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faPlaneCircleXmark = {\n  prefix: 'fas',\n  iconName: 'plane-circle-xmark',\n  icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faYenSign = {\n  prefix: 'fas',\n  iconName: 'yen-sign',\n  icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.3C48.8 31.5 29 27.6 14.2 37.4S-4.4 67 5.4 81.8L100.2 224 48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 0 32-80 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-32 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-52.2 0L314.6 81.8c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.3z\"]\n};\nconst faCny = faYenSign;\nconst faJpy = faYenSign;\nconst faRmb = faYenSign;\nconst faYen = faYenSign;\nconst faRubleSign = {\n  prefix: 'fas',\n  iconName: 'ruble-sign',\n  icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64l0 192-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-32 112 0c79.5 0 144-64.5 144-144s-64.5-144-144-144L96 32zM240 256l-112 0 0-160 112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nconst faRouble = faRubleSign;\nconst faRub = faRubleSign;\nconst faRuble = faRubleSign;\nconst faSun = {\n  prefix: 'fas',\n  iconName: 'sun',\n  icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nconst faGuitar = {\n  prefix: 'fas',\n  iconName: 'guitar',\n  icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faFaceLaughWink = {\n  prefix: 'fas',\n  iconName: 'face-laugh-wink',\n  icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nconst faLaughWink = faFaceLaughWink;\nconst faHorseHead = {\n  prefix: 'fas',\n  iconName: 'horse-head',\n  icon: [640, 512, [], \"f7ab\", \"M64 464l0-147.1c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1l-3.4 0c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4c0 0 0 0-.1 0c0 0 0 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3c0 0 0 0 0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8L112 512c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faBoreHole = {\n  prefix: 'fas',\n  iconName: 'bore-hole',\n  icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32l0 264.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4L288 32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48L0 464c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-80 0c-17.7 0-32 14.3-32 32l0 192c0 53-43 96-96 96s-96-43-96-96l0-192c0-17.7-14.3-32-32-32l-80 0z\"]\n};\nconst faIndustry = {\n  prefix: 'fas',\n  iconName: 'industry',\n  icon: [576, 512, [], \"f275\", \"M64 32C46.3 32 32 46.3 32 64l0 240 0 48 0 80c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-128 0-151.8c0-18.2-19.4-29.7-35.4-21.1L352 215.4l0-63.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4 160 64c0-17.7-14.3-32-32-32L64 32z\"]\n};\nconst faCircleDown = {\n  prefix: 'fas',\n  iconName: 'circle-down',\n  icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM244.7 395.3l-112-112c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l64 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 64 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-112 112c-6.2 6.2-16.4 6.2-22.6 0z\"]\n};\nconst faArrowAltCircleDown = faCircleDown;\nconst faArrowsTurnToDots = {\n  prefix: 'fas',\n  iconName: 'arrows-turn-to-dots',\n  icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z\"]\n};\nconst faFlorinSign = {\n  prefix: 'fas',\n  iconName: 'florin-sign',\n  icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224 64 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l37.3 0c38.8 0 73.7-23.3 88.6-59.1L213.3 288 320 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 45.1-108.3c5-11.9 16.6-19.7 29.5-19.7L352 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-37.3 0z\"]\n};\nconst faArrowDownShortWide = {\n  prefix: 'fas',\n  iconName: 'arrow-down-short-wide',\n  icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSortAmountDesc = faArrowDownShortWide;\nconst faSortAmountDownAlt = faArrowDownShortWide;\nconst faLessThan = {\n  prefix: 'fas',\n  iconName: 'less-than',\n  icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nconst faAngleDown = {\n  prefix: 'fas',\n  iconName: 'angle-down',\n  icon: [448, 512, [8964], \"f107\", \"M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nconst faCarTunnel = {\n  prefix: 'fas',\n  iconName: 'car-tunnel',\n  icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256L0 448c0 35.3 28.7 64 64 64l42.8 0c-6.6-5.9-10.8-14.4-10.8-24l0-112c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7l115.2 0c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6l0 112c0 9.6-4.2 18.1-10.8 24l42.8 0c35.3 0 64-28.7 64-64l0-192C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24l0-40-192 0 0 40c0 9.6-4.2 18.1-10.8 24l213.7 0zM190.8 277.5L177 320l158 0-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5l-115.2 0c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faHeadSideCough = {\n  prefix: 'fas',\n  iconName: 'head-side-cough',\n  icon: [640, 512, [], \"e061\", \"M0 224.2C0 100.6 100.2 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320s0 0 0 0l0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416l0 16c0 26.5-21.5 48-48 48l-80 0 0 8c0 13.3-10.7 24-24 24l-40 0s0 0 0 0L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faGripLines = {\n  prefix: 'fas',\n  iconName: 'grip-lines',\n  icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nconst faThumbsDown = {\n  prefix: 'fas',\n  iconName: 'thumbs-down',\n  icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2l144 0c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48l-97.5 0c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7l0 38.3 0 48 0 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384l64 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32L32 96C14.3 96 0 110.3 0 128L0 352c0 17.7 14.3 32 32 32z\"]\n};\nconst faUserLock = {\n  prefix: 'fas',\n  iconName: 'user-lock',\n  icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l362.8 0c-5.4-9.4-8.6-20.3-8.6-32l0-128c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7l-91.4 0zM528 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faArrowRightLong = {\n  prefix: 'fas',\n  iconName: 'arrow-right-long',\n  icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nconst faLongArrowRight = faArrowRightLong;\nconst faAnchorCircleXmark = {\n  prefix: 'fas',\n  iconName: 'anchor-circle-xmark',\n  icon: [640, 512, [], \"e4ac\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faEllipsis = {\n  prefix: 'fas',\n  iconName: 'ellipsis',\n  icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nconst faEllipsisH = faEllipsis;\nconst faChessPawn = {\n  prefix: 'fas',\n  iconName: 'chess-pawn',\n  icon: [320, 512, [9823], \"f443\", \"M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88L96 224c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400l160 0L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32l-8.5 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512l242.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432 64 432 22.6 473.4z\"]\n};\nconst faKitMedical = {\n  prefix: 'fas',\n  iconName: 'kit-medical',\n  icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l32 0L96 32 64 32zm64 0l0 448 320 0 0-448L128 32zM512 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-32 0 0 448 32 0zM256 176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faFirstAid = faKitMedical;\nconst faPersonThroughWindow = {\n  prefix: 'fas',\n  iconName: 'person-through-window',\n  icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0l-64 0L64 64zm288 0l224 0 0 320-67.7 0-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320l-45.8 0 42.7 64L592 448c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 400c0 26.5 21.5 48 48 48l260.2 0 33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0L192 384s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faToolbox = {\n  prefix: 'fas',\n  iconName: 'toolbox',\n  icon: [512, 512, [129520], \"f552\", \"M176 88l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 80c-4.4 0-8 3.6-8 8zm-48 40l0-40c0-30.9 25.1-56 56-56l144 0c30.9 0 56 25.1 56 56l0 40 28.1 0c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9l0 92.1-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L0 320l0-92.1c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1l28.1 0zM0 416l0-64 128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0 0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64z\"]\n};\nconst faHandsHoldingCircle = {\n  prefix: 'fas',\n  iconName: 'hands-holding-circle',\n  icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40l0 40 0 80 0 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2c0 0 0 0 0 0l25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 224l0-64 0-56C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 56 0 64 0 101.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3c0 0 0 0 0 0l15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3l0-40.2 0-80 0-40c0-22.1 17.9-40 40-40z\"]\n};\nconst faBug = {\n  prefix: 'fas',\n  iconName: 'bug',\n  icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4l-135.1 0c-15.7 0-28.4-12.7-28.4-28.4l0-3.6c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4l112 0c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5l64.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6L272 240c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 239.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64.3 0c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faCreditCard = {\n  prefix: 'fas',\n  iconName: 'credit-card',\n  icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96l0 32 576 0 0-32c0-35.3-28.7-64-64-64L64 32zM576 224L0 224 0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-192zM112 352l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faCreditCardAlt = faCreditCard;\nconst faCar = {\n  prefix: 'fas',\n  iconName: 'car',\n  icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192l293.8 0-26.1-74.6C372.3 104.6 360.2 96 346.6 96L165.4 96c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32l181.2 0c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2l0 144 0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48L96 400l0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48L0 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faAutomobile = faCar;\nconst faHandHoldingHand = {\n  prefix: 'fas',\n  iconName: 'hand-holding-hand',\n  icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32L384 32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-36.8 0-44.9 36c-22.7 18.2-50.9 28-80 28L304 224l-16 0-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-120.6 0L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160c0 0 0 0 0 0l.9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 480 32 480c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faBookOpenReader = {\n  prefix: 'fas',\n  iconName: 'book-open-reader',\n  icon: [512, 512, [\"book-reader\"], \"f5da\", \"M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152l0 264-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427L0 224c0-17.7 14.3-32 32-32l30.3 0c63.6 0 125.6 19.6 177.7 56zm32 264l0-264c52.1-36.4 114.1-56 177.7-56l30.3 0c17.7 0 32 14.3 32 32l0 203c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nconst faBookReader = faBookOpenReader;\nconst faMountainSun = {\n  prefix: 'fas',\n  iconName: 'mountain-sun',\n  icon: [640, 512, [], \"e52f\", \"M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512l325.2 0 75 0 122.8 0c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nconst faArrowsLeftRightToLine = {\n  prefix: 'fas',\n  iconName: 'arrows-left-right-to-line',\n  icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-320c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faDiceD20 = {\n  prefix: 'fas',\n  iconName: 'dice-d20',\n  icon: [512, 512, [], \"f6cf\", \"M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7l0 123.5c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4l0-123.5zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9l0 52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8l0-52.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9l-145.7 0c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176l163.2 0c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2l-3.2 0c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nconst faTruckDroplet = {\n  prefix: 'fas',\n  iconName: 'truck-droplet',\n  icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nconst faFileCircleXmark = {\n  prefix: 'fas',\n  iconName: 'file-circle-xmark',\n  icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faTemperatureArrowUp = {\n  prefix: 'fas',\n  iconName: 'temperature-arrow-up',\n  icon: [576, 512, [\"temperature-up\"], \"e040\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L128 112zM176 0C114.1 0 64 50.1 64 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L288 112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3L192 112c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 210.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160l32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-288z\"]\n};\nconst faTemperatureUp = faTemperatureArrowUp;\nconst faMedal = {\n  prefix: 'fas',\n  iconName: 'medal',\n  icon: [512, 512, [127941], \"f5a2\", \"M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0L133.9 0c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0L487.4 0C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nconst faBed = {\n  prefix: 'fas',\n  iconName: 'bed',\n  icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32l224 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 416l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faSquareH = {\n  prefix: 'fas',\n  iconName: 'square-h',\n  icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM336 152l0 104 0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80-128 0 0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80 128 0 0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faHSquare = faSquareH;\nconst faPodcast = {\n  prefix: 'fas',\n  iconName: 'podcast',\n  icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nconst faTemperatureFull = {\n  prefix: 'fas',\n  iconName: 'temperature-full',\n  icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 210.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature4 = faTemperatureFull;\nconst faThermometer4 = faTemperatureFull;\nconst faThermometerFull = faTemperatureFull;\nconst faBell = {\n  prefix: 'fas',\n  iconName: 'bell',\n  icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416l384 0c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8l0-18.8c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nconst faSuperscript = {\n  prefix: 'fas',\n  iconName: 'superscript',\n  icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l15.3 0 89.6 128L47.3 384 32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0L215.1 256l89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64L32 64z\"]\n};\nconst faPlugCircleXmark = {\n  prefix: 'fas',\n  iconName: 'plug-circle-xmark',\n  icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faStarOfLife = {\n  prefix: 'fas',\n  iconName: 'star-of-life',\n  icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 140.9 122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.6 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1 304 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-140.9L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4L208 32z\"]\n};\nconst faPhoneSlash = {\n  prefix: 'fas',\n  iconName: 'phone-slash',\n  icon: [640, 512, [], \"f3dd\", \"M228.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C76.1 30.2 64 46 64 64c0 107.4 37.8 206 100.8 283.1L9.2 469.1c-10.4 8.2-12.3 23.3-4.1 33.7s23.3 12.3 33.7 4.1l592-464c10.4-8.2 12.3-23.3 4.1-33.7s-23.3-12.3-33.7-4.1L253 278c-17.8-21.5-32.9-45.2-45-70.7L257.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96zm96.8 319l-91.3 72C310.7 476 407.1 512 512 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L368.7 368c-15-7.1-29.3-15.2-43-24.3z\"]\n};\nconst faPaintRoller = {\n  prefix: 'fas',\n  iconName: 'paint-roller',\n  icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0L352 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 192c-35.3 0-64-28.7-64-64L0 64zM160 352c0-17.7 14.3-32 32-32l0-16c0-44.2 35.8-80 80-80l144 0c17.7 0 32-14.3 32-32l0-32 0-90.5c37.3 13.2 64 48.7 64 90.5l0 32c0 53-43 96-96 96l-144 0c-8.8 0-16 7.2-16 16l0 16c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-128z\"]\n};\nconst faHandshakeAngle = {\n  prefix: 'fas',\n  iconName: 'handshake-angle',\n  icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M544 248l0 3.3 69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5L296 64c-37.1 0-67.6 28-71.6 64l-.4 0 0 120c0 22.1 17.9 40 40 40s40-17.9 40-40l0-72c0 0 0-.1 0-.1l0-15.9 16 0 136 0c0 0 0 0 .1 0l7.9 0c44.2 0 80 35.8 80 80l0 8zM336 192l0 56c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-118.6c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1l160 0c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16l2.7 0c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8l0-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z\"]\n};\nconst faHandsHelping = faHandshakeAngle;\nconst faLocationDot = {\n  prefix: 'fas',\n  iconName: 'location-dot',\n  icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faMapMarkerAlt = faLocationDot;\nconst faFile = {\n  prefix: 'fas',\n  iconName: 'file',\n  icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128z\"]\n};\nconst faGreaterThan = {\n  prefix: 'fas',\n  iconName: 'greater-than',\n  icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nconst faPersonSwimming = {\n  prefix: 'fas',\n  iconName: 'person-swimming',\n  icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faSwimmer = faPersonSwimming;\nconst faArrowDown = {\n  prefix: 'fas',\n  iconName: 'arrow-down',\n  icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nconst faDroplet = {\n  prefix: 'fas',\n  iconName: 'droplet',\n  icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0l1.8 0c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"]\n};\nconst faTint = faDroplet;\nconst faEraser = {\n  prefix: 'fas',\n  iconName: 'eraser',\n  icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7L288 480l9.4 0L512 480c17.7 0 32-14.3 32-32s-14.3-32-32-32l-124.1 0L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416l-9.4 0-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nconst faEarthAmericas = {\n  prefix: 'fas',\n  iconName: 'earth-americas',\n  icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5l0 39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9l0 39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7l0-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1L257 256c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faEarth = faEarthAmericas;\nconst faEarthAmerica = faEarthAmericas;\nconst faGlobeAmericas = faEarthAmericas;\nconst faPersonBurst = {\n  prefix: 'fas',\n  iconName: 'person-burst',\n  icon: [640, 512, [], \"e53b\", \"M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-223.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9 408 480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.3-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nconst faDove = {\n  prefix: 'fas',\n  iconName: 'dove',\n  icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6l0-31.5C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144l0 30.6s0 0 0 0l0 1.3s0 0 0 0l0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448l74.4 0c88.4 0 160-71.6 160-160l0-160 29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3L400 64c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faBatteryEmpty = {\n  prefix: 'fas',\n  iconName: 'battery-empty',\n  icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 160c-8.8 0-16 7.2-16 16l0 160c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-160c0-8.8-7.2-16-16-16L80 160zM0 176c0-44.2 35.8-80 80-80l384 0c44.2 0 80 35.8 80 80l0 16c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 16c0 44.2-35.8 80-80 80L80 416c-44.2 0-80-35.8-80-80L0 176z\"]\n};\nconst faBattery0 = faBatteryEmpty;\nconst faSocks = {\n  prefix: 'fas',\n  iconName: 'socks',\n  icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6l0-144L128 96l0 144c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64l160 0 0-16c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0L176 0c-26.5 0-48 21.5-48 48l0 16zM320 96l0 144c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304l0-208L320 96zM512 64l0-16c0-26.5-21.5-48-48-48L368 0c-26.5 0-48 21.5-48 48l0 16 192 0z\"]\n};\nconst faInbox = {\n  prefix: 'fas',\n  iconName: 'inbox',\n  icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-92.1c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32L121 32zm0 64l270 0 48 192-51.2 0c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7l-120.4 0c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7L73 288 121 96z\"]\n};\nconst faSection = {\n  prefix: 'fas',\n  iconName: 'section',\n  icon: [256, 512, [], \"e447\", \"M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31c0 0 0 0 0 0l3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2c0 0 0 0 0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6c0 0 0 0 0 0l.2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5l-.6-.2-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nconst faGaugeHigh = {\n  prefix: 'fas',\n  iconName: 'gauge-high',\n  icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faTachometerAlt = faGaugeHigh;\nconst faTachometerAltFast = faGaugeHigh;\nconst faEnvelopeOpenText = {\n  prefix: 'fas',\n  iconName: 'envelope-open-text',\n  icon: [512, 512, [], \"f658\", \"M215.4 96L144 96l-36.2 0L96 96l0 8.8L96 144l0 40.4 0 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3 48 96c0-26.5 21.5-48 48-48l76.6 0 49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48 416 48c26.5 0 48 21.5 48 48l0 44.3 22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4l0-89 0-40.4 0-39.2 0-8.8-11.8 0L368 96l-71.4 0-81.3 0zM0 448L0 242.1 217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1 512 448s0 0 0 0c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64c0 0 0 0 0 0zM176 160l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faHospital = {\n  prefix: 'fas',\n  iconName: 'hospital',\n  icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48L400 0c26.5 0 48 21.5 48 48l0 464-80 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-80 0 0-464zM48 96l112 0 0 416L48 512c-26.5 0-48-21.5-48-48L0 320l80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L0 288l0-64 80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L0 192l0-48c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48l0 48-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 144c0 26.5-21.5 48-48 48l-112 0 0-416 112 0zM312 64c-8.8 0-16 7.2-16 16l0 24-24 0c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l24 0 0 24c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-24 24 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-24 0 0-24c0-8.8-7.2-16-16-16l-16 0z\"]\n};\nconst faHospitalAlt = faHospital;\nconst faHospitalWide = faHospital;\nconst faWineBottle = {\n  prefix: 'fas',\n  iconName: 'wine-bottle',\n  icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nconst faChessRook = {\n  prefix: 'fas',\n  iconName: 'chess-rook',\n  icon: [448, 512, [9820], \"f447\", \"M32 192L32 48c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 40c0 4.4 3.6 8 8 8l32 0c4.4 0 8-3.6 8-8l0-40c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 40c0 4.4 3.6 8 8 8l32 0c4.4 0 8-3.6 8-8l0-40c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 144c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144L80 400 96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96l32 0c8.8 0 16-7.2 16-16l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432l320 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L38.6 512C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nconst faBarsStaggered = {\n  prefix: 'fas',\n  iconName: 'bars-staggered',\n  icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faReorder = faBarsStaggered;\nconst faStream = faBarsStaggered;\nconst faDharmachakra = {\n  prefix: 'fas',\n  iconName: 'dharmachakra',\n  icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faHotdog = {\n  prefix: 'fas',\n  iconName: 'hotdog',\n  icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9c0 0 0 0 0 0s0 0 0 0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4c0 0 0 0 0 0l-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nconst faPersonWalkingWithCane = {\n  prefix: 'fas',\n  iconName: 'person-walking-with-cane',\n  icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6l0 43.2c0 17 6.7 33.3 18.7 45.3L224 397.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-89.4c0-12.7-5.1-24.9-14.1-33.9L224 306.7l0-93.4 70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128l-24.4 0zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nconst faBlind = faPersonWalkingWithCane;\nconst faDrum = {\n  prefix: 'fas',\n  iconName: 'drum',\n  icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208L0 368c0 31.3 27.4 58.8 72 78.7L72 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 119.4c33 8.9 71.1 14.5 112 16.1L232 376c0-13.3 10.7-24 24-24s24 10.7 24 24l0 103.5c40.9-1.6 79-7.2 112-16.1L392 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 102.7c44.6-19.9 72-47.4 72-78.7l0-160c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nconst faIceCream = {\n  prefix: 'fas',\n  iconName: 'ice-cream',\n  icon: [448, 512, [127848], \"f810\", \"M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16l-.9 0c-26.5 0-48 21.5-48 48s21.5 48 48 48l53.5 0 181 0 53.5 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-.9 0zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288 96 288z\"]\n};\nconst faHeartCircleBolt = {\n  prefix: 'fas',\n  iconName: 'heart-circle-bolt',\n  icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nconst faFax = {\n  prefix: 'fas',\n  iconName: 'fax',\n  icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64l0 96 64 0 0-96 194.7 0L416 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0L192 0c-35.3 0-64 28.7-64 64zM0 160L0 480c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32zm480 32l-352 0 0 288c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faParagraph = {\n  prefix: 'fas',\n  iconName: 'paragraph',\n  icon: [448, 512, [182], \"f1dd\", \"M192 32l64 0 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352-32 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-32 0c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nconst faCheckToSlot = {\n  prefix: 'fas',\n  iconName: 'check-to-slot',\n  icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48l288 0c26.5 0 48 21.5 48 48l0 304L96 384 96 80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48l16 0 0 128 448 0 0-128 16 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nconst faVoteYea = faCheckToSlot;\nconst faStarHalf = {\n  prefix: 'fas',\n  iconName: 'star-half',\n  icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8 288 0zM429.9 512c1.1 .1 2.1 .1 3.2 0l-3.2 0z\"]\n};\nconst faBoxesStacked = {\n  prefix: 'fas',\n  iconName: 'boxes-stacked',\n  icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M248 0L208 0c-26.5 0-48 21.5-48 48l0 112c0 35.3 28.7 64 64 64l128 0c35.3 0 64-28.7 64-64l0-112c0-26.5-21.5-48-48-48L328 0l0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80zM64 256c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-40 0 0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80-40 0zM352 512l160 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-40 0 0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80-40 0c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2l0 160c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"]\n};\nconst faBoxes = faBoxesStacked;\nconst faBoxesAlt = faBoxesStacked;\nconst faLink = {\n  prefix: 'fas',\n  iconName: 'link',\n  icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nconst faChain = faLink;\nconst faEarListen = {\n  prefix: 'fas',\n  iconName: 'ear-listen',\n  icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1c0 0 0 0-.1 0c0 0 0 0 0 0L384 32 398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78l0 6.1c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112l0-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nconst faAssistiveListeningSystems = faEarListen;\nconst faTreeCity = {\n  prefix: 'fas',\n  iconName: 'tree-city',\n  icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 144 40 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 24 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-160 0-96 0c-26.5 0-48-21.5-48-48l0-416zm64 32l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 272l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80l-16 0 0 160c0 18-15 32-32 32c-18 0-32-14-32-32l0-160-16 0c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nconst faPlay = {\n  prefix: 'fas',\n  iconName: 'play',\n  icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nconst faFont = {\n  prefix: 'fas',\n  iconName: 'font',\n  icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416 32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-1.8 0 18-48 159.6 0 18 48-1.8 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-25.8 0L254 52.8zM279.8 304l-111.6 0L224 155.1 279.8 304z\"]\n};\nconst faTableCellsRowLock = {\n  prefix: 'fas',\n  iconName: 'table-cells-row-lock',\n  icon: [640, 512, [], \"e67a\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 224l0 64 88 0 0-64-88 0zm232 0l-88 0 0 64 88 0 0-64zM152 352l-88 0 0 64 88 0 0-64zm56 0l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faRupiahSign = {\n  prefix: 'fas',\n  iconName: 'rupiah-sign',\n  icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160zm256-96l80 0c61.9 0 112 50.1 112 112s-50.1 112-112 112l-48 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128 0-160c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48l-48 0 0 96 48 0z\"]\n};\nconst faMagnifyingGlass = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass',\n  icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nconst faSearch = faMagnifyingGlass;\nconst faTableTennisPaddleBall = {\n  prefix: 'fas',\n  iconName: 'table-tennis-paddle-ball',\n  icon: [512, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M416 288c-50.1 0-93.6 28.8-114.6 70.8L68.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C471.8 297.6 445 288 416 288zM49.3 151.9L290.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3l-2.7 0c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L88.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32C3.1 464.3-.3 455.7 0 446.9s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8C45.5 285.5 32 252.9 32 219l0-2.7c0-22.8 6.1-44.9 17.3-64.3zM416 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faPingPongPaddleBall = faTableTennisPaddleBall;\nconst faTableTennis = faTableTennisPaddleBall;\nconst faPersonDotsFromLine = {\n  prefix: 'fas',\n  iconName: 'person-dots-from-line',\n  icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1L176 432l224 0 0-109.3c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l528 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 464zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faDiagnoses = faPersonDotsFromLine;\nconst faTrashCanArrowUp = {\n  prefix: 'fas',\n  iconName: 'trash-can-arrow-up',\n  icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L200 408c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nconst faTrashRestoreAlt = faTrashCanArrowUp;\nconst faNairaSign = {\n  prefix: 'fas',\n  iconName: 'naira-sign',\n  icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64l0 192-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 100.2 0 97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6l0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192-57.5 0L122.6 46.3zM305.1 320l14.9 0 0 22.3L305.1 320zM185.5 256L128 256l0-86.3L185.5 256z\"]\n};\nconst faCartArrowDown = {\n  prefix: 'fas',\n  iconName: 'cart-arrow-down',\n  icon: [576, 512, [], \"f218\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l45.5 0c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5L488 384c13.3 0 24-10.7 24-24s-10.7-24-24-24l-288.3 0c-11.5 0-21.4-8.2-23.6-19.5L170.7 288l288.5 0c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32L360 32l0 102.1 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23L312 32 120.1 32C111 12.8 91.6 0 69.5 0L24 0zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faWalkieTalkie = {\n  prefix: 'fas',\n  iconName: 'walkie-talkie',\n  icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24l0 72L48 96C21.5 96 0 117.5 0 144L0 300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9L32 464c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-92.1c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9L384 144c0-26.5-21.5-48-48-48l-16 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l-32 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l-48 0 0-72zm0 136l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faFilePen = {\n  prefix: 'fas',\n  iconName: 'file-pen',\n  icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nconst faFileEdit = faFilePen;\nconst faReceipt = {\n  prefix: 'fas',\n  iconName: 'receipt',\n  icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8l0 464c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488L0 24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 144zM80 352c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 336c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 240z\"]\n};\nconst faSquarePen = {\n  prefix: 'fas',\n  iconName: 'square-pen',\n  icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nconst faPenSquare = faSquarePen;\nconst faPencilSquare = faSquarePen;\nconst faSuitcaseRolling = {\n  prefix: 'fas',\n  iconName: 'suitcase-rolling',\n  icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8l80 0c4.4 0 8 3.6 8 8l0 72-96 0 0-72zm176 72l-32 0 0-72c0-30.9-25.1-56-56-56L152 0C121.1 0 96 25.1 96 56l0 72-32 0c-35.3 0-64 28.7-64 64L0 416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64zM112 224l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faPersonCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'person-circle-exclamation',\n  icon: [576, 512, [], \"e53f\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faChevronDown = {\n  prefix: 'fas',\n  iconName: 'chevron-down',\n  icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nconst faBatteryFull = {\n  prefix: 'fas',\n  iconName: 'battery-full',\n  icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm368 96L96 192l0 128 352 0 0-128z\"]\n};\nconst faBattery = faBatteryFull;\nconst faBattery5 = faBatteryFull;\nconst faSkullCrossbones = {\n  prefix: 'fas',\n  iconName: 'skull-crossbones',\n  icon: [448, 512, [128369, 9760], \"f714\", \"M368 128c0 44.4-25.4 83.5-64 106.4l0 21.6c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-21.6c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z\"]\n};\nconst faCodeCompare = {\n  prefix: 'fas',\n  iconName: 'code-compare',\n  icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9l0 40 16 0c35.3 0 64-28.7 64-64l0-166.7C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3L464 320c0 70.7-57.3 128-128 128l-16 0 0 40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9l0-40-16 0c-35.3 0-64 28.7-64 64l0 166.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3L48 192c0-70.7 57.3-128 128-128l16 0 0-40zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n};\nconst faListUl = {\n  prefix: 'fas',\n  iconName: 'list-ul',\n  icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faListDots = faListUl;\nconst faSchoolLock = {\n  prefix: 'fas',\n  iconName: 'school-lock',\n  icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96 592 96c26.5 0 48 21.5 48 48l0 128c0-61.9-50.1-112-112-112s-112 50.1-112 112l0 24.6c-19.1 11.1-32 31.7-32 55.4l-63.7 0-.3 0c-35.3 0-64 28.7-64 64l0 96 64 0s0 0 0 0L48 512c-26.5 0-48-21.5-48-48L0 144c0-26.5 21.5-48 48-48l118.3 0L302.2 5.4zM80 208l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm0 128l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120l0 16 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faTowerCell = {\n  prefix: 'fas',\n  iconName: 'tower-cell',\n  icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448l220.6 0 20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384l-162.4 0 14.5-32 133.3 0 14.5 32zM288 205.3L325.6 288l-75.2 0L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nconst faDownLong = {\n  prefix: 'fas',\n  iconName: 'down-long',\n  icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z\"]\n};\nconst faLongArrowAltDown = faDownLong;\nconst faRankingStar = {\n  prefix: 'fas',\n  iconName: 'ranking-star',\n  icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-128 0zM32 320c-17.7 0-32 14.3-32 32L0 480c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L32 320zm416 96l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faChessKing = {\n  prefix: 'fas',\n  iconName: 'chess-king',\n  icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32l0 16 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 48 152 0c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400 80 400 3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40l152 0 0-48-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-16c0-17.7 14.3-32 32-32zM38.6 473.4L80 432l288 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L54.6 512C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nconst faPersonHarassing = {\n  prefix: 'fas',\n  iconName: 'person-harassing',\n  icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9 88 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-244.7 47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7l-35.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344l0 58.7-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9L576 344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16l56 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-56 0c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nconst faBrazilianRealSign = {\n  prefix: 'fas',\n  iconName: 'brazilian-real-sign',\n  icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32l0 18.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5l-1.7 0c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4l0 3.4c0 51.2-33.6 94.6-80 109.2l0 21.3c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-19.4c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5l0-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2L368 32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160z\"]\n};\nconst faLandmarkDome = {\n  prefix: 'fas',\n  iconName: 'landmark-dome',\n  icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0l16 0c13.3 0 24 10.7 24 24l0 10.7C368.4 48.1 431.9 111.6 445.3 192l2.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 256c-17.7 0-32-14.3-32-32s14.3-32 32-32l2.7 0C80.1 111.6 143.6 48.1 224 34.7L224 24c0-13.3 10.7-24 24-24zM64 288l64 0 0 128 40 0 0-128 64 0 0 128 48 0 0-128 64 0 0 128 40 0 0-128 64 0 0 132.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 288z\"]\n};\nconst faLandmarkAlt = faLandmarkDome;\nconst faArrowUp = {\n  prefix: 'fas',\n  iconName: 'arrow-up',\n  icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2 160 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nconst faTv = {\n  prefix: 'fas',\n  iconName: 'tv',\n  icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64l0 288 512 0 0-288L64 64zM0 64C0 28.7 28.7 0 64 0L576 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 416c-35.3 0-64-28.7-64-64L0 64zM128 448l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-384 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faTelevision = faTv;\nconst faTvAlt = faTv;\nconst faShrimp = {\n  prefix: 'fas',\n  iconName: 'shrimp',\n  icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64l1 0c3.7 88.9 77 160 167 160l56 0 0-192-24 0L88.8 128 64 128c-17.7 0-32-14.3-32-32s14.3-32 32-32l400 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L64 32zM224 456c0 13.3 10.7 24 24 24l72 0 0-72.2-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3l0 69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128l-16 0 0 192 18.3 0c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faListCheck = {\n  prefix: 'fas',\n  iconName: 'list-check',\n  icon: [512, 512, [\"tasks\"], \"f0ae\", \"M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faTasks = faListCheck;\nconst faJugDetergent = {\n  prefix: 'fas',\n  iconName: 'jug-detergent',\n  icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24l0 24 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 96C74.7 96 64 85.3 64 72s10.7-24 24-24l8 0 0-24zM0 256c0-70.7 57.3-128 128-128l128 0c70.7 0 128 57.3 128 128l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256zm256 0l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faCircleUser = {\n  prefix: 'fas',\n  iconName: 'circle-user',\n  icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320l-64 0c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nconst faUserCircle = faCircleUser;\nconst faUserShield = {\n  prefix: 'fas',\n  iconName: 'user-shield',\n  icon: [640, 512, [], \"f505\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3l-91.4 0zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7l0-187.8L591.4 312z\"]\n};\nconst faWind = {\n  prefix: 'fas',\n  iconName: 'wind',\n  icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c53 0 96-43 96-96s-43-96-96-96L320 0c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32l32 0c53 0 96-43 96-96s-43-96-96-96L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32zM128 512l32 0c53 0 96-43 96-96s-43-96-96-96L32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nconst faCarBurst = {\n  prefix: 'fas',\n  iconName: 'car-burst',\n  icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z\"]\n};\nconst faCarCrash = faCarBurst;\nconst faY = {\n  prefix: 'fas',\n  iconName: 'y',\n  icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3 160 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-149.7L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nconst faPersonSnowboarding = {\n  prefix: 'fas',\n  iconName: 'person-snowboarding',\n  icon: [512, 512, [127938, \"snowboarding\"], \"f7ce\", \"M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6l28.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-28.2 0c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faSnowboarding = faPersonSnowboarding;\nconst faTruckFast = {\n  prefix: 'fas',\n  iconName: 'truck-fast',\n  icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48l0 48L16 96c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 208 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 160l-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l16 0 176 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 224l-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 288l0 128c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64 0-32 0-18.7c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7L416 96l0-48c0-26.5-21.5-48-48-48L112 0zM544 237.3l0 18.7-128 0 0-96 50.7 0L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faShippingFast = faTruckFast;\nconst faFish = {\n  prefix: 'fas',\n  iconName: 'fish',\n  icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faUserGraduate = {\n  prefix: 'fas',\n  iconName: 'user-graduate',\n  icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9l0 57.1c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-57.1L48 93.3l0 65.1 15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9l-32 0c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4l0-71.8C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7L30.7 512C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z\"]\n};\nconst faCircleHalfStroke = {\n  prefix: 'fas',\n  iconName: 'circle-half-stroke',\n  icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faAdjust = faCircleHalfStroke;\nconst faClapperboard = {\n  prefix: 'fas',\n  iconName: 'clapperboard',\n  icon: [512, 512, [], \"e131\", \"M448 32l-86.1 0-1 1-127 127 92.1 0 1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128l0-64c0-15.1-5.3-29.1-14-40l-104 104L512 160zM294.1 32l-92.1 0-1 1L73.9 160l92.1 0 1-1 127-127zM64 32C28.7 32 0 60.7 0 96l0 64 6.1 0 1-1 127-127L64 32zM512 192L0 192 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-224z\"]\n};\nconst faCircleRadiation = {\n  prefix: 'fas',\n  iconName: 'circle-radiation',\n  icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faRadiationAlt = faCircleRadiation;\nconst faBaseball = {\n  prefix: 'fas',\n  iconName: 'baseball',\n  icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nconst faBaseballBall = faBaseball;\nconst faJetFighterUp = {\n  prefix: 'fas',\n  iconName: 'jet-fighter-up',\n  icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2l0 77-144 84L48 280c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 56 0 32 0 24c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 144 0 0 32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12l0 16c0 8.8 7.2 16 16 16l96 0 0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64 96 0c8.8 0 16-7.2 16-16l0-16c0-4.6-2-9-5.5-12L320 416.7l0-32.7 144 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24 0-32 0-56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 18.8-144-84 0-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nconst faDiagramProject = {\n  prefix: 'fas',\n  iconName: 'diagram-project',\n  icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 16 192 0 0-16c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-16-192 0 0 16c0 1.7-.1 3.4-.3 5L272 288l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-1.7 .1-3.4 .3-5L144 224l-96 0c-26.5 0-48-21.5-48-48L0 80z\"]\n};\nconst faProjectDiagram = faDiagramProject;\nconst faCopy = {\n  prefix: 'fas',\n  iconName: 'copy',\n  icon: [448, 512, [], \"f0c5\", \"M208 0L332.1 0c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9L448 336c0 26.5-21.5 48-48 48l-192 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48zM48 128l80 0 0 64-64 0 0 256 192 0 0-32 64 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 176c0-26.5 21.5-48 48-48z\"]\n};\nconst faVolumeXmark = {\n  prefix: 'fas',\n  iconName: 'volume-xmark',\n  icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faVolumeMute = faVolumeXmark;\nconst faVolumeTimes = faVolumeXmark;\nconst faHandSparkles = {\n  prefix: 'fas',\n  iconName: 'hand-sparkles',\n  icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32l0 208c0 8.8 7.2 16 16 16s16-7.2 16-16l0-176c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-112c0-17.7 14.3-32 32-32s32 14.3 32 32l0 195.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512l-19.2 0c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6l0-272c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-208c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nconst faGrip = {\n  prefix: 'fas',\n  iconName: 'grip',\n  icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm32-192l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm32-192l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48z\"]\n};\nconst faGripHorizontal = faGrip;\nconst faShareFromSquare = {\n  prefix: 'fas',\n  iconName: 'share-from-square',\n  icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M352 224l-46.5 0c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8l-2.5 0c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144l80 0 0-61.3C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2l-3.7 0c-17.7 0-32-14.3-32-32l0-64zM80 96c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 44.2-35.8 80-80 80L80 512c-44.2 0-80-35.8-80-80L0 112C0 67.8 35.8 32 80 32l48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 96z\"]\n};\nconst faShareSquare = faShareFromSquare;\nconst faChildCombatant = {\n  prefix: 'fas',\n  iconName: 'child-combatant',\n  icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-179.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9l-12.3 0c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5 104 480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0L432 0 416 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l0 100.3c-9.6 5.5-16 15.9-16 27.7l0 32c-17.7 0-32 14.3-32 32l0 144c0 17.7 14.3 32 32 32l16 0 0 96c0 8.8 7.2 16 16 16l59.5 0c10.4 0 18-9.8 15.5-19.9L484 400l44 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-48 0 0-26.7 53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2l0-84.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 56-16 5.3L480 160c0-11.8-6.4-22.2-16-27.7L464 16c0-8.8-7.2-16-16-16z\"]\n};\nconst faChildRifle = faChildCombatant;\nconst faGun = {\n  prefix: 'fas',\n  iconName: 'gun',\n  icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8L32 64C14.3 64 0 78.3 0 96L0 208c0 17.7 14.3 32 32 32l10 0c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480l96 0c14.7 0 27.5-10 31-24.2L217 352l104.5 0c23.7 0 44.8-14.9 52.7-37.2L400.9 240l31.1 0c8.5 0 16.6-3.4 22.6-9.4L477.3 208l66.7 0c17.7 0 32-14.3 32-32l0-80c0-17.7-14.3-32-32-32l-16 0 0-8zM321.4 304L229 304l16-64 105 0-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128l384 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faSquarePhone = {\n  prefix: 'fas',\n  iconName: 'square-phone',\n  icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nconst faPhoneSquare = faSquarePhone;\nconst faPlus = {\n  prefix: 'fas',\n  iconName: 'plus',\n  icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-144z\"]\n};\nconst faAdd = faPlus;\nconst faExpand = {\n  prefix: 'fas',\n  iconName: 'expand',\n  icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z\"]\n};\nconst faComputer = {\n  prefix: 'fas',\n  iconName: 'computer',\n  icon: [640, 512, [], \"e4e5\", \"M384 96l0 224L64 320 64 96l320 0zM64 32C28.7 32 0 60.7 0 96L0 320c0 35.3 28.7 64 64 64l117.3 0-10.7 32L96 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-74.7 0-10.7-32L384 384c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 32zm464 0c-26.5 0-48 21.5-48 48l0 352c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48l-64 0zm16 64l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faXmark = {\n  prefix: 'fas',\n  iconName: 'xmark',\n  icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\"]\n};\nconst faClose = faXmark;\nconst faMultiply = faXmark;\nconst faRemove = faXmark;\nconst faTimes = faXmark;\nconst faArrowsUpDownLeftRight = {\n  prefix: 'fas',\n  iconName: 'arrows-up-down-left-right',\n  icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4L224 224l-114.7 0 9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L224 288l0 114.7-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4L288 288l114.7 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L288 224l0-114.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nconst faArrows = faArrowsUpDownLeftRight;\nconst faChalkboardUser = {\n  prefix: 'fas',\n  iconName: 'chalkboard-user',\n  icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64L576 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64l-239.2 0c-11.8-25.5-29.9-47.5-52.4-64l99.6 0 0-32c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 32 64 0 0-288L224 64l0 49.1C205.2 102.2 183.3 96 160 96l0-32zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352l53.3 0C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7L26.7 512C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nconst faChalkboardTeacher = faChalkboardUser;\nconst faPesoSign = {\n  prefix: 'fas',\n  iconName: 'peso-sign',\n  icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64l0 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c68.4 0 127.7-39 156.8-96l19.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-.7 0c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16l.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-19.2 0C303.7 71 244.4 32 176 32L64 32zm190.4 96L96 128l0-32 80 0c30.5 0 58.2 12.2 78.4 32zM96 192l190.9 0c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16L96 224l0-32zm158.4 96c-20.2 19.8-47.9 32-78.4 32l-80 0 0-32 158.4 0z\"]\n};\nconst faBuildingShield = {\n  prefix: 'fas',\n  iconName: 'building-shield',\n  icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 159-42.4 17L304 224l-32 0c-8.8 0-16 7.2-16 16l0 32 0 24.2 0 7.8c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8l0 187.8c68.2-33 91.5-99 95.4-149.7z\"]\n};\nconst faBaby = {\n  prefix: 'fas',\n  iconName: 'baby',\n  icon: [448, 512, [], \"f77c\", \"M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25l0 36.3-192 0 0-36.3c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nconst faUsersLine = {\n  prefix: 'fas',\n  iconName: 'users-line',\n  icon: [640, 512, [], \"e592\", \"M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32l85.6 0c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4l-96 0c-35.3 0-64 28.7-64 64zm461.6 32l82.4 0c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64l-96 0c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4l-96 0c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faQuoteLeft = {\n  prefix: 'fas',\n  iconName: 'quote-left',\n  icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-32 0-32 0-72zm256 0c0-66.3 53.7-120 120-120l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-32 0-32 0-72z\"]\n};\nconst faQuoteLeftAlt = faQuoteLeft;\nconst faTractor = {\n  prefix: 'fas',\n  iconName: 'tractor',\n  icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64L266.3 0c26.2 0 49.7 15.9 59.4 40.2L373.7 160 480 160l0-33.8c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9l0 33.8 56 0c22.1 0 40 17.9 40 40l0 45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48l-80 0c0 17.7-14.3 32-32 32l-8.2 0c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8l0 8.2c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1L32 384c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l8.2 0c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6l0-.6 0-32 0-96zm170.3 0L160 64l0 96 32 0 112.7 0L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nconst faTrashArrowUp = {\n  prefix: 'fas',\n  iconName: 'trash-arrow-up',\n  icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128l384 0L394.8 467c-1.6 25.3-22.6 45-47.9 45l-245.8 0c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L200 408c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nconst faTrashRestore = faTrashArrowUp;\nconst faArrowDownUpLock = {\n  prefix: 'fas',\n  iconName: 'arrow-down-up-lock',\n  icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 160 288l256 0 0-16c0-17.2 3.9-33.5 10.8-48L352 224l0-114.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3 288 224l-128 0-64 0-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 114.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128 64 0zM288 320l0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128-64 0zm240-80c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faLinesLeaning = {\n  prefix: 'fas',\n  iconName: 'lines-leaning',\n  icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32z\"]\n};\nconst faRulerCombined = {\n  prefix: 'fas',\n  iconName: 'ruler-combined',\n  icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nconst faCopyright = {\n  prefix: 'fas',\n  iconName: 'copyright',\n  icon: [512, 512, [169], \"f1f9\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nconst faEquals = {\n  prefix: 'fas',\n  iconName: 'equals',\n  icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 128zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 320z\"]\n};\nconst faBlender = {\n  prefix: 'fas',\n  iconName: 'blender',\n  icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0l64 0 32 0L470.1 0c21.1 0 36.4 20.1 30.9 40.4L494.5 64 336 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l149.8 0-17.5 64L336 160c-8.8 0-16 7.2-16 16s7.2 16 16 16l123.6 0-17.5 64L336 256c-8.8 0-16 7.2-16 16s7.2 16 16 16l97.5 0L416 352l-256 0-8.7-96L64 256c-35.3 0-64-28.7-64-64L0 64zM145.5 192L133.8 64 64 64l0 128 81.5 0zM144 384l288 0c26.5 0 48 21.5 48 48l0 32c0 26.5-21.5 48-48 48l-288 0c-26.5 0-48-21.5-48-48l0-32c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faTeeth = {\n  prefix: 'fas',\n  iconName: 'teeth',\n  icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32l384 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96L96 480c-53 0-96-43-96-96L0 128zm176 48l0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48l0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56c0-26.5-21.5-48-48-48zM48 208l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24zm176 48c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48zm80-176l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48z\"]\n};\nconst faShekelSign = {\n  prefix: 'fas',\n  iconName: 'shekel-sign',\n  icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 96l128 0c35.3 0 64 28.7 64 64l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-70.7-57.3-128-128-128L32 32zM320 480c70.7 0 128-57.3 128-128l0-288c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 288c0 35.3-28.7 64-64 64l-128 0 0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l160 0z\"]\n};\nconst faIls = faShekelSign;\nconst faShekel = faShekelSign;\nconst faSheqel = faShekelSign;\nconst faSheqelSign = faShekelSign;\nconst faMap = {\n  prefix: 'fas',\n  iconName: 'map',\n  icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2l0-385.3L384 90.8l0 385.3zm32-1.2l0-386.5L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3l0 334.8c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2l0 386.5L32.9 474.5C17.1 480.8 0 469.2 0 452.2L0 117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nconst faRocket = {\n  prefix: 'fas',\n  iconName: 'rocket',\n  icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2l0 82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9l0-107.2c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faPhotoFilm = {\n  prefix: 'fas',\n  iconName: 'photo-film',\n  icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0L576 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64l0-224c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l80 0 48 0 144 0c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128l96 0 0 256 0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32 160 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm336 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPhotoVideo = faPhotoFilm;\nconst faFolderMinus = {\n  prefix: 'fas',\n  iconName: 'folder-minus',\n  icon: [512, 512, [], \"f65d\", \"M448 480L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nconst faHexagonNodesBolt = {\n  prefix: 'fas',\n  iconName: 'hexagon-nodes-bolt',\n  icon: [576, 512, [], \"e69a\", \"M248 106.6c18.9-9 32-28.3 32-50.6c0-30.9-25.1-56-56-56s-56 25.1-56 56c0 22.3 13.1 41.6 32 50.6l0 98.8c-2.8 1.3-5.5 2.9-8 4.7l-80.1-45.8c1.6-20.8-8.6-41.6-27.9-52.8C57.2 96 23 105.2 7.5 132S1.2 193 28 208.5c1.3 .8 2.6 1.5 4 2.1l0 90.8c-1.3 .6-2.7 1.3-4 2.1C1.2 319-8 353.2 7.5 380S57.2 416 84 400.5c19.3-11.1 29.4-32 27.8-52.8l50.5-28.9c-11.5-11.2-19.9-25.6-23.8-41.7L88 306.1c-2.6-1.8-5.2-3.3-8-4.7l0-90.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-.1 1.4-.2 2.8-.2 4.3c0 22.3 13.1 41.6 32 50.6l0 98.8c-18.9 9-32 28.3-32 50.6c0 30.9 25.1 56 56 56c30.7 0 55.6-24.7 56-55.2c-7.5-12.9-13.5-26.8-17.6-41.5c-4.2-4-9.1-7.3-14.4-9.9l0-98.8c2.8-1.3 5.5-2.9 8-4.7l10.5 6c5.5-15.3 13.1-29.5 22.4-42.5l-9.1-5.2c.1-1.4 .2-2.8 .2-4.3c0-22.3-13.1-41.6-32-50.6l0-98.8zM440.5 132C425 105.2 390.8 96 364 111.5c-19.3 11.1-29.4 32-27.8 52.8l-50.6 28.9c11.5 11.2 19.9 25.6 23.8 41.7L360 205.9c.4 .3 .8 .6 1.3 .9c21.7-9.5 45.6-14.8 70.8-14.8c2 0 4 0 5.9 .1c12.1-17.3 13.8-40.6 2.6-60.1zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nconst faStore = {\n  prefix: 'fas',\n  iconName: 'store',\n  icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0L109.6 0C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9c0 0 0 0-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3L448 384l-320 0 0-133.4c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3L64 384l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64 0-131.4c-4 1-8 1.8-12.3 2.3z\"]\n};\nconst faArrowTrendUp = {\n  prefix: 'fas',\n  iconName: 'arrow-trend-up',\n  icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.7L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160 384 160z\"]\n};\nconst faPlugCircleMinus = {\n  prefix: 'fas',\n  iconName: 'plug-circle-minus',\n  icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faSignHanging = {\n  prefix: 'fas',\n  iconName: 'sign-hanging',\n  icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32l0 32 352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352-32 0C14.3 128 0 113.7 0 96S14.3 64 32 64l32 0 0-32C64 14.3 78.3 0 96 0zm96 160l256 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32z\"]\n};\nconst faSign = faSignHanging;\nconst faBezierCurve = {\n  prefix: 'fas',\n  iconName: 'bezier-curve',\n  icon: [640, 512, [], \"f55b\", \"M296 136l0-48 48 0 0 48-48 0zM288 32c-26.5 0-48 21.5-48 48l0 4L121.6 84C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36l66.9 0c-58.9 39.6-98.9 105-104 180L80 320c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-3.3 0c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1l64 0c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1l-3.3 0c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-4.5 0c-5-75-45.1-140.4-104-180l66.9 0c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36L400 84l0-4c0-26.5-21.5-48-48-48l-64 0zM88 376l48 0 0 48-48 0 0-48zm416 48l0-48 48 0 0 48-48 0z\"]\n};\nconst faBellSlash = {\n  prefix: 'fas',\n  iconName: 'bell-slash',\n  icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-90.2-70.7c.2-.4 .4-.9 .6-1.3c5.2-11.5 3.1-25-5.3-34.4l-7.4-8.3C497.3 319.2 480 273.9 480 226.8l0-18.8c0-77.4-55-142-128-156.8L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 19.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM406.2 416L160 222.1l0 4.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S115.4 416 128 416l278.2 0zm-40.9 77.3c12-12 18.7-28.3 18.7-45.3l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nconst faTablet = {\n  prefix: 'fas',\n  iconName: 'tablet',\n  icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM176 432l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faTabletAndroid = faTablet;\nconst faSchoolFlag = {\n  prefix: 'fas',\n  iconName: 'school-flag',\n  icon: [576, 512, [], \"e56e\", \"M288 0L400 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-79.3 0 89.6 64L512 160c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-176 0 0-112c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 112L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l101.7 0L256 95.5 256 32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0zm368 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0zm384 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0z\"]\n};\nconst faFill = {\n  prefix: 'fas',\n  iconName: 'fill',\n  icon: [512, 512, [], \"f575\", \"M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288 67.5 288c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z\"]\n};\nconst faAngleUp = {\n  prefix: 'fas',\n  iconName: 'angle-up',\n  icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nconst faDrumstickBite = {\n  prefix: 'fas',\n  iconName: 'drumstick-bite',\n  icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4l89.2 0c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176l0 89.2z\"]\n};\nconst faHollyBerry = {\n  prefix: 'fas',\n  iconName: 'holly-berry',\n  icon: [512, 512, [], \"f7aa\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72l0 22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7l0-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8l0 32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8l0-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faChevronLeft = {\n  prefix: 'fas',\n  iconName: 'chevron-left',\n  icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nconst faBacteria = {\n  prefix: 'fas',\n  iconName: 'bacteria',\n  icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1c0 0 0 0-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5c0 0 0 0 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1c0 0 0 0 .1 0l29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5c0 0 0 0 0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nconst faHandLizard = {\n  prefix: 'fas',\n  iconName: 'hand-lizard',\n  icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64l112 0 80 0 46.5 0c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8l0 12 0 16 0 48c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-13.8L273.9 352 240 352l-80 0-48 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l48 0 80 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-80 0L48 160c-26.5 0-48-21.5-48-48z\"]\n};\nconst faNotdef = {\n  prefix: 'fas',\n  iconName: 'notdef',\n  icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7l0 268.6zM102.5 448l179.1 0L192 313.7 102.5 448zm128-192L320 390.3l0-268.6L230.5 256zM281.5 64L102.5 64 192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 48z\"]\n};\nconst faDisease = {\n  prefix: 'fas',\n  iconName: 'disease',\n  icon: [512, 512, [], \"f7fa\", \"M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6l10 0c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBriefcaseMedical = {\n  prefix: 'fas',\n  iconName: 'briefcase-medical',\n  icon: [512, 512, [], \"f469\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faGenderless = {\n  prefix: 'fas',\n  iconName: 'genderless',\n  icon: [384, 512, [], \"f22d\", \"M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z\"]\n};\nconst faChevronRight = {\n  prefix: 'fas',\n  iconName: 'chevron-right',\n  icon: [320, 512, [9002], \"f054\", \"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nconst faRetweet = {\n  prefix: 'fas',\n  iconName: 'retweet',\n  icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0c-17.7 0-32-14.3-32-32l0-128 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96l112 0zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-128c0-53-43-96-96-96L304 96z\"]\n};\nconst faCarRear = {\n  prefix: 'fas',\n  iconName: 'car-rear',\n  icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96l181.2 0c13.6 0 25.7 8.6 30.2 21.4L402.9 192l-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256l0 80c0 23.7 12.9 44.4 32 55.4L32 448c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 256 0 0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-56.6c19.1-11.1 32-31.7 32-55.4l0-80c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32L165.4 32c-40.8 0-77.1 25.8-90.6 64.3zM208 272l96 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm360-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faCarAlt = faCarRear;\nconst faPumpSoap = {\n  prefix: 'fas',\n  iconName: 'pump-soap',\n  icon: [448, 512, [], \"e06b\", \"M128 32l0 96 128 0 0-32 60.1 0c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4L256 32c0-17.7-14.3-32-32-32L160 0c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512l186.4 0c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7l-149.1 0zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nconst faVideoSlash = {\n  prefix: 'fas',\n  iconName: 'video-slash',\n  icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2l0-256c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9l0 17.1 0 128 0 5.8-32-25.1L416 128c0-35.3-28.7-64-64-64L113.9 64 38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5l0 256c0 35.3 28.7 64 64 64l256 0c23.4 0 43.9-12.6 55-31.3z\"]\n};\nconst faBatteryQuarter = {\n  prefix: 'fas',\n  iconName: 'battery-quarter',\n  icon: [576, 512, [\"battery-2\"], \"f243\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm112 96l-96 0 0 128 96 0 0-128z\"]\n};\nconst faBattery2 = faBatteryQuarter;\nconst faRadio = {\n  prefix: 'fas',\n  iconName: 'radio',\n  icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192l0 4L0 304 0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-229.5 0L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 336c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faBabyCarriage = {\n  prefix: 'fas',\n  iconName: 'baby-carriage',\n  icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192L.1 192C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0 0-64zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faCarriageBaby = faBabyCarriage;\nconst faTrafficLight = {\n  prefix: 'fas',\n  iconName: 'traffic-light',\n  icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 88.4 71.6 160 160 160s160-71.6 160-160l0-288c0-35.3-28.7-64-64-64L64 0zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"]\n};\nconst faThermometer = {\n  prefix: 'fas',\n  iconName: 'thermometer',\n  icon: [512, 512, [], \"f491\", \"M96 382.1l0-88.8c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4l-88.8 0L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nconst faVrCardboard = {\n  prefix: 'fas',\n  iconName: 'vr-cardboard',\n  icon: [640, 512, [], \"f729\", \"M576 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l120.4 0c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4L576 448c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faHandMiddleFinger = {\n  prefix: 'fas',\n  iconName: 'hand-middle-finger',\n  icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40l0 164.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48l0 7 0 73c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-55.7c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334L32 372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1L304 512c70.7 0 128-57.3 128-128l0-64 0-32c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2L272 40c0-22.1-17.9-40-40-40z\"]\n};\nconst faPercent = {\n  prefix: 'fas',\n  iconName: 'percent',\n  icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faPercentage = faPercent;\nconst faTruckMoving = {\n  prefix: 'fas',\n  iconName: 'truck-moving',\n  icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96L0 304l0 80 0 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16L416 384l33.6 0c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16l1.6 0c17.7 0 32-14.3 32-32l0-64 0-16 0-10.3c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5L480 144l0-48c0-35.3-28.7-64-64-64L64 32zM585 256l-105 0 0-64 48.8 0c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGlassWaterDroplet = {\n  prefix: 'fas',\n  iconName: 'glass-water-droplet',\n  icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM83 297.5L66.4 64l251.3 0L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nconst faDisplay = {\n  prefix: 'fas',\n  iconName: 'display',\n  icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 288L64 352 64 64l448 0z\"]\n};\nconst faFaceSmile = {\n  prefix: 'fas',\n  iconName: 'face-smile',\n  icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSmile = faFaceSmile;\nconst faThumbtack = {\n  prefix: 'fas',\n  iconName: 'thumbtack',\n  icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0L320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-29.5 0 11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3L32 352c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64 64 64C46.3 64 32 49.7 32 32zM160 384l64 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96z\"]\n};\nconst faThumbTack = faThumbtack;\nconst faTrophy = {\n  prefix: 'fas',\n  iconName: 'trophy',\n  icon: [576, 512, [127942], \"f091\", \"M400 0L176 0c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8L24 64C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9L192 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-26.1 0C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24L446.4 64c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112l84.4 0c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6l84.4 0c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nconst faPersonPraying = {\n  prefix: 'fas',\n  iconName: 'person-praying',\n  icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432 72 432c-22.1 0-40 17.9-40 40s17.9 40 40 40l208 0c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nconst faPray = faPersonPraying;\nconst faHammer = {\n  prefix: 'fas',\n  iconName: 'hammer',\n  icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6l0-12.1L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0l18.1 0c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nconst faHandPeace = {\n  prefix: 'fas',\n  iconName: 'hand-peace',\n  icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32l0 208-64 0 0-208c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM93.3 51.2L175.9 240l-69.9 0L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5 69.9 0 26.1 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363l0-27c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nconst faRotate = {\n  prefix: 'fas',\n  iconName: 'rotate',\n  icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c-17.5 17.5-30.1 38-37.8 59.8c-5.9 16.7-24.2 25.4-40.8 19.5s-25.4-24.2-19.5-40.8C55.6 150.7 73.2 122 97.6 97.6c87.2-87.2 228.3-87.5 315.8-1L455 55c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 128c0 13.3-10.7 24-24 24l-8.4 0c0 0 0 0 0 0L344 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l41.1-41.1c-62.6-61.5-163.1-61.2-225.3 1zM16 312c0-13.3 10.7-24 24-24l7.6 0 .7 0L168 288c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-41.1 41.1c62.6 61.5 163.1 61.2 225.3-1c17.5-17.5 30.1-38 37.8-59.8c5.9-16.7 24.2-25.4 40.8-19.5s25.4 24.2 19.5 40.8c-10.8 30.6-28.4 59.3-52.9 83.8c-87.2 87.2-228.3 87.5-315.8 1L57 457c-6.9 6.9-17.2 8.9-26.2 5.2S16 449.7 16 440l0-119.6 0-.7 0-7.6z\"]\n};\nconst faSyncAlt = faRotate;\nconst faSpinner = {\n  prefix: 'fas',\n  iconName: 'spinner',\n  icon: [512, 512, [], \"f110\", \"M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z\"]\n};\nconst faRobot = {\n  prefix: 'fas',\n  iconName: 'robot',\n  icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32l0 64 120 0c39.8 0 72 32.2 72 72l0 272c0 39.8-32.2 72-72 72l-304 0c-39.8 0-72-32.2-72-72l0-272c0-39.8 32.2-72 72-72l120 0 0-64c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224l16 0 0 192-16 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-16 0 0-192 16 0z\"]\n};\nconst faPeace = {\n  prefix: 'fas',\n  iconName: 'peace',\n  icon: [512, 512, [9774], \"f67c\", \"M224 445.3l0-121.8-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8l0-174.2C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5l0 121.8c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3l0 174.2L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faGears = {\n  prefix: 'fas',\n  iconName: 'gears',\n  icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8l-.7 0c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCogs = faGears;\nconst faWarehouse = {\n  prefix: 'fas',\n  iconName: 'warehouse',\n  icon: [640, 512, [], \"f494\", \"M0 488L0 171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4L640 488c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-264c0-17.7-14.3-32-32-32l-384 0c-17.7 0-32 14.3-32 32l0 264c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24l0-56 384 0 0 56c0 13.3-10.7 24-24 24zM128 400l0-64 384 0 0 64-384 0zm0-96l0-80 384 0 0 80-384 0z\"]\n};\nconst faArrowUpRightDots = {\n  prefix: 'fas',\n  iconName: 'arrow-up-right-dots',\n  icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l50.7 0L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3l0 50.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L160 0zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faSplotch = {\n  prefix: 'fas',\n  iconName: 'splotch',\n  icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n};\nconst faFaceGrinHearts = {\n  prefix: 'fas',\n  iconName: 'face-grin-hearts',\n  icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nconst faGrinHearts = faFaceGrinHearts;\nconst faDiceFour = {\n  prefix: 'fas',\n  iconName: 'dice-four',\n  icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faSimCard = {\n  prefix: 'fas',\n  iconName: 'sim-card',\n  icon: [384, 512, [], \"f7c4\", \"M64 0L242.7 0c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32l0 32 64 0 0-64-32 0zM64 352l80 0 96 0 80 0 0-64-80 0-96 0-80 0 0 64zM320 224c0-17.7-14.3-32-32-32l-32 0 0 64 64 0 0-32zM160 192l0 64 64 0 0-64-64 0zM288 448c17.7 0 32-14.3 32-32l0-32-64 0 0 64 32 0zM160 384l0 64 64 0 0-64-64 0zM64 416c0 17.7 14.3 32 32 32l32 0 0-64-64 0 0 32z\"]\n};\nconst faTransgender = {\n  prefix: 'fas',\n  iconName: 'transgender',\n  icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l96 0c8.8 0 16 7.2 16 16l0 96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2l0 17.8 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-17.8C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112L0 16C0 7.2 7.2 0 16 0l96 0zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nconst faTransgenderAlt = faTransgender;\nconst faMercury = {\n  prefix: 'fas',\n  iconName: 'mercury',\n  icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4l0 25.6 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 16c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-25.6C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z\"]\n};\nconst faArrowTurnDown = {\n  prefix: 'fas',\n  iconName: 'arrow-turn-down',\n  icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nconst faLevelDown = faArrowTurnDown;\nconst faPersonFallingBurst = {\n  prefix: 'fas',\n  iconName: 'person-falling-burst',\n  icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2L32 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320l1.4 0 80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nconst faAward = {\n  prefix: 'fas',\n  iconName: 'award',\n  icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nconst faTicketSimple = {\n  prefix: 'fas',\n  iconName: 'ticket-simple',\n  icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6l0 64c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64l0-64c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192l0-64z\"]\n};\nconst faTicketAlt = faTicketSimple;\nconst faBuilding = {\n  prefix: 'fas',\n  iconName: 'building',\n  icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nconst faAnglesLeft = {\n  prefix: 'fas',\n  iconName: 'angles-left',\n  icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nconst faAngleDoubleLeft = faAnglesLeft;\nconst faQrcode = {\n  prefix: 'fas',\n  iconName: 'qrcode',\n  icon: [448, 512, [], \"f029\", \"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48L0 80zM64 96l0 64 64 0 0-64L64 96zM0 336c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96zm64 16l0 64 64 0 0-64-64 0zM304 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zm80 64l-64 0 0 64 64 0 0-64zM256 304c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16l0 96c0 8.8-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-160zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z\"]\n};\nconst faClockRotateLeft = {\n  prefix: 'fas',\n  iconName: 'clock-rotate-left',\n  icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9L0 168c0 13.3 10.7 24 24 24l110.1 0c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1c0-13.3-10.7-24-24-24z\"]\n};\nconst faHistory = faClockRotateLeft;\nconst faFaceGrinBeamSweat = {\n  prefix: 'fas',\n  iconName: 'face-grin-beam-sweat',\n  icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0c0 0 0 0 0 0zm160 0s0 0 0 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0z\"]\n};\nconst faGrinBeamSweat = faFaceGrinBeamSweat;\nconst faFileExport = {\n  prefix: 'fas',\n  iconName: 'file-export',\n  icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 128-168 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l168 0 0 112c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM384 336l0-48 110.1 0-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39L384 336zm0-208l-128 0L256 0 384 128z\"]\n};\nconst faArrowRightFromFile = faFileExport;\nconst faShield = {\n  prefix: 'fas',\n  iconName: 'shield',\n  icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nconst faShieldBlank = faShield;\nconst faArrowUpShortWide = {\n  prefix: 'fas',\n  iconName: 'arrow-up-short-wide',\n  icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0z\"]\n};\nconst faSortAmountUpAlt = faArrowUpShortWide;\nconst faCommentNodes = {\n  prefix: 'fas',\n  iconName: 'comment-nodes',\n  icon: [640, 512, [], \"e696\", \"M256 448c10.8 0 21.5-.5 32-1.6c.3-15.8 4.4-31.7 12.9-46.4c16-27.7 43.7-44.4 73.2-47.5l16.7-29.2c-4.3-11-6.7-22.9-6.7-35.4c0-53 43-96 96-96c9.1 0 17.8 1.3 26.2 3.6C481.1 102.1 378.6 32 256 32C114.6 32 0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.2 .3-.4 .5-.6 .7c-.3 .3-.5 .5-.6 .7l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm72.6-32c-17.7 30.6-7.2 69.7 23.4 87.4s69.7 7.2 87.4-23.4c1.5-2.6 2.8-5.3 3.9-8l73.3 0c1.1 2.7 2.4 5.4 3.9 8c17.7 30.6 56.8 41.1 87.4 23.4s41.1-56.8 23.4-87.4c-13.4-23.2-39.1-34.8-64-31.4l-17.6-30.7c-11 11.7-25 20.6-40.6 25.6l16.5 28.9c-3.8 4.8-6.8 10-9 15.6l-73.4 0c-2.2-5.6-5.3-10.8-9-15.6l33-57.7c4.1 .8 8.4 1.3 12.8 1.3c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64c0 13.4 4.1 25.8 11.2 36.1l-34.6 60.5c-25-3.4-50.6 8.3-64 31.4z\"]\n};\nconst faHouseMedical = {\n  prefix: 'fas',\n  iconName: 'house-medical',\n  icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l320.4 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0zM256 208c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faGolfBallTee = {\n  prefix: 'fas',\n  iconName: 'golf-ball-tee',\n  icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160L85.8 352C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32l64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0c-8.8 0-16 7.2-16 16l0 16c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-16c0-8.8-7.2-16-16-16l-16 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faGolfBall = faGolfBallTee;\nconst faCircleChevronLeft = {\n  prefix: 'fas',\n  iconName: 'circle-chevron-left',\n  icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nconst faChevronCircleLeft = faCircleChevronLeft;\nconst faHouseChimneyWindow = {\n  prefix: 'fas',\n  iconName: 'house-chimney-window',\n  icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24l-80 0z\"]\n};\nconst faPenNib = {\n  prefix: 'fas',\n  iconName: 'pen-nib',\n  icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.7-9.2L288 94.6z\"]\n};\nconst faTentArrowTurnLeft = {\n  prefix: 'fas',\n  iconName: 'tent-arrow-turn-left',\n  icon: [576, 512, [], \"e580\", \"M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faTents = {\n  prefix: 'fas',\n  iconName: 'tents',\n  icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5L608 352c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faWandMagic = {\n  prefix: 'fas',\n  iconName: 'wand-magic',\n  icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nconst faMagic = faWandMagic;\nconst faDog = {\n  prefix: 'fas',\n  iconName: 'dog',\n  icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32l52.1 0c12.7 0 24.9 5.1 33.9 14.1L496 64l56 0c13.3 0 24 10.7 24 24l0 24c0 44.2-35.8 80-80 80l-32 0-16 0-21.3 0-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-115.2c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2L160 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-230.2c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192l30 0 16 0 159.8 0L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faCarrot = {\n  prefix: 'fas',\n  iconName: 'carrot',\n  icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nconst faMoon = {\n  prefix: 'fas',\n  iconName: 'moon',\n  icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nconst faWineGlassEmpty = {\n  prefix: 'fas',\n  iconName: 'wine-glass-empty',\n  icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6l0 99.6-48 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0-99.6c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0L64 0zM81.9 203.1L93.4 64l133.1 0 11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nconst faWineGlassAlt = faWineGlassEmpty;\nconst faCheese = {\n  prefix: 'fas',\n  iconName: 'cheese',\n  icon: [512, 512, [], \"f7ef\", \"M512 240.2l0 15.8L0 256c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8l0 128c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 288l512 0z\"]\n};\nconst faYinYang = {\n  prefix: 'fas',\n  iconName: 'yin-yang',\n  icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faMusic = {\n  prefix: 'fas',\n  iconName: 'music',\n  icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7l0 72 0 264c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6L448 147 192 223.8 192 432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6L128 200l0-72c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nconst faCodeCommit = {\n  prefix: 'fas',\n  iconName: 'code-commit',\n  icon: [640, 512, [], \"f386\", \"M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l131.2 0C178 151 242.6 96 320 96s142 55 156.8 128L608 224c17.7 0 32 14.3 32 32s-14.3 32-32 32l-131.2 0z\"]\n};\nconst faTemperatureLow = {\n  prefix: 'fas',\n  iconName: 'temperature-low',\n  icon: [512, 512, [], \"f76b\", \"M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L192 112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L32 112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3l0-50.7c0-8.8 7.2-16 16-16s16 7.2 16 16l0 50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faPersonBiking = {\n  prefix: 'fas',\n  iconName: 'person-biking',\n  icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1 288 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-52.8 0zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nconst faBiking = faPersonBiking;\nconst faBroom = {\n  prefix: 'fas',\n  iconName: 'broom',\n  icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6l0 29.1L364.3 320l29.1 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z\"]\n};\nconst faShieldHeart = {\n  prefix: 'fas',\n  iconName: 'shield-heart',\n  icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nconst faGopuram = {\n  prefix: 'fas',\n  iconName: 'gopuram',\n  icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 48 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 0 32 0 64c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32l0 96c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-64 0 0-160-32 0 0-128-32 0 0-96-32 0 0 96 32 0 0 128 32 0 0 160-80 0 0-48c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 48-80 0 0-160 32 0 0-128 32 0 0-96-32 0 0 96-32 0 0 128-32 0 0 160-64 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l0-96c0-17.7 14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l0-64 0-32 0-8c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-32-80l0 32 64 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faEarthOceania = {\n  prefix: 'fas',\n  iconName: 'earth-oceania',\n  icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3l-29.9 0c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faGlobeOceania = faEarthOceania;\nconst faSquareXmark = {\n  prefix: 'fas',\n  iconName: 'square-xmark',\n  icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faTimesSquare = faSquareXmark;\nconst faXmarkSquare = faSquareXmark;\nconst faHashtag = {\n  prefix: 'fas',\n  iconName: 'hashtag',\n  icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128l95.1 0 11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128l58.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-68.9 0L325.8 320l58.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-68.9 0-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7-95.1 0-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384 32 384c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 21.3-128L64 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320l95.1 0 21.3-128-95.1 0z\"]\n};\nconst faUpRightAndDownLeftFromCenter = {\n  prefix: 'fas',\n  iconName: 'up-right-and-down-left-from-center',\n  icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0L488 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512L24 512c-13.3 0-24-10.7-24-24L0 344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nconst faExpandAlt = faUpRightAndDownLeftFromCenter;\nconst faOilCan = {\n  prefix: 'fas',\n  iconName: 'oil-can',\n  icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32-80 0-48 0-48 0c-26.5 0-48 21.5-48 48l0 64.8c0 19 11.2 36.2 28.5 43.9l67.5 30L96 368c0 26.5 21.5 48 48 48l259.1 0c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8L288 160l0-32 32 0zM96 208l0 86.1L48 272.8 48 208l48 0z\"]\n};\nconst faT = {\n  prefix: 'fas',\n  iconName: 't',\n  icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l128 0 0 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-352 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 32 32 32z\"]\n};\nconst faHippo = {\n  prefix: 'fas',\n  iconName: 'hippo',\n  icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2l32 0c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-16-64 0 0 16c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-17.6c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2l0 10.8c0 17.7 14.3 32 32 32l32 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-76c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12l0 76c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-118.9L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1 7.2 0L256 64l32 0c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faChartColumn = {\n  prefix: 'fas',\n  iconName: 'chart-column',\n  icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm128-64l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zM480 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faInfinity = {\n  prefix: 'fas',\n  iconName: 'infinity',\n  icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1l0 29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9l0-29.7zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1l0 29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1l0-29.7c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nconst faVialCircleCheck = {\n  prefix: 'fas',\n  iconName: 'vial-circle-check',\n  icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32l64 0 64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 170.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96L32 96C14.3 96 0 81.7 0 64zM96 96l0 96 64 0 0-96L96 96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faPersonArrowDownToLine = {\n  prefix: 'fas',\n  iconName: 'person-arrow-down-to-line',\n  icon: [640, 512, [], \"e538\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352l0-96 16 0 0 96-16 0zm-64 0l-88 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l120 0 80 0 376 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-344 0 0-191.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 448zM464 64l0 242.7-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7 528 64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faVoicemail = {\n  prefix: 'fas',\n  iconName: 'voicemail',\n  icon: [640, 512, [], \"f897\", \"M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144l352 0c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80l-112.5 0zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faFan = {\n  prefix: 'fas',\n  iconName: 'fan',\n  icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224l-2.6 0C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480l0 2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288l2.6 0c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32l0-2.6C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faPersonWalkingLuggage = {\n  prefix: 'fas',\n  iconName: 'person-walking-luggage',\n  icon: [576, 512, [], \"e554\", \"M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nconst faUpDown = {\n  prefix: 'fas',\n  iconName: 'up-down',\n  icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160l56 0 0 192-56 0c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4l-56 0 0-192 56 0c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nconst faArrowsAltV = faUpDown;\nconst faCloudMoonRain = {\n  prefix: 'fas',\n  iconName: 'cloud-moon-rain',\n  icon: [576, 512, [], \"f73c\", \"M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96l271.9 0zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nconst faCalendar = {\n  prefix: 'fas',\n  iconName: 'calendar',\n  icon: [448, 512, [128197, 128198], \"f133\", \"M96 32l0 32L48 64C21.5 64 0 85.5 0 112l0 48 448 0 0-48c0-26.5-21.5-48-48-48l-48 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L160 64l0-32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192L0 192 0 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-272z\"]\n};\nconst faTrailer = {\n  prefix: 'fas',\n  iconName: 'trailer',\n  icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80L0 336c0 26.5 21.5 48 48 48l17.1 0c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96L488 384l8 0 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-240c0-26.5-21.5-48-48-48L48 32zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21L64 112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBahai = {\n  prefix: 'fas',\n  iconName: 'bahai',\n  icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nconst faHaykal = faBahai;\nconst faSdCard = {\n  prefix: 'fas',\n  iconName: 'sd-card',\n  icon: [384, 512, [], \"f7c2\", \"M320 0L141.3 0C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64zM160 88l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faDragon = {\n  prefix: 'fas',\n  iconName: 'dragon',\n  icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0L416 0l32 0 16 0c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48l-21.5 0c-17 0-33.3-6.7-45.3-18.7L480 160l-32 0 0 21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512L496 512l-64 0L32.3 512c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1l0-45.5 0-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3l0 .6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87 0 27.5c0 32.8 8.4 64.8 24 93l-232 0c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nconst faShoePrints = {\n  prefix: 'fas',\n  iconName: 'shoe-prints',\n  icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32l0 128c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64l32 0 0-128-32 0c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32l0 128s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64l32 0 0-128-32 0c-35.3 0-64 28.7-64 64z\"]\n};\nconst faCirclePlus = {\n  prefix: 'fas',\n  iconName: 'circle-plus',\n  icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faPlusCircle = faCirclePlus;\nconst faFaceGrinTongueWink = {\n  prefix: 'fas',\n  iconName: 'face-grin-tongue-wink',\n  icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448l0-46.9c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2l0 47.3c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6l0 45.4c0 35.3-28.7 64-64 64s-64-28.7-64-64l0-45.4c0-14.7 11.9-26.6 26.6-26.6l2 0c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9l2 0c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faGrinTongueWink = faFaceGrinTongueWink;\nconst faHandHolding = {\n  prefix: 'fas',\n  iconName: 'hand-holding',\n  icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 272 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-16 0-78.3 0c-29.1 0-57.3 9.9-80 28L68.8 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0 160.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2c.3 0 .6 0 .9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nconst faPlugCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'plug-circle-exclamation',\n  icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faLinkSlash = {\n  prefix: 'fas',\n  iconName: 'link-slash',\n  icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nconst faChainBroken = faLinkSlash;\nconst faChainSlash = faLinkSlash;\nconst faUnlink = faLinkSlash;\nconst faClone = {\n  prefix: 'fas',\n  iconName: 'clone',\n  icon: [512, 512, [], \"f24d\", \"M288 448L64 448l0-224 64 0 0-64-64 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-64-64 0 0 64zm-64-96l224 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L224 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64z\"]\n};\nconst faPersonWalkingArrowLoopLeft = {\n  prefix: 'fas',\n  iconName: 'person-walking-arrow-loop-left',\n  icon: [640, 512, [], \"e551\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384l18.7 0c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96l-18.7 0 25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nconst faArrowUpZA = {\n  prefix: 'fas',\n  iconName: 'arrow-up-z-a',\n  icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L352 32c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400l-40.4 0z\"]\n};\nconst faSortAlphaUpAlt = faArrowUpZA;\nconst faFireFlameCurved = {\n  prefix: 'fas',\n  iconName: 'fire-flame-curved',\n  icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nconst faFireAlt = faFireFlameCurved;\nconst faTornado = {\n  prefix: 'fas',\n  iconName: 'tornado',\n  icon: [448, 512, [127786], \"f76f\", \"M0 32L0 45.6C0 62.7 1.7 79.6 5 96l352.8 0c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0L32 0C14.3 0 0 14.3 0 32zm352.2 96L13.6 128c12.2 35.9 32.3 68.7 58.8 96L412 224l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3L445 352c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9l-322.5 0c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9L288 384z\"]\n};\nconst faFileCirclePlus = {\n  prefix: 'fas',\n  iconName: 'file-circle-plus',\n  icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n};\nconst faBookQuran = {\n  prefix: 'fas',\n  iconName: 'book-quran',\n  icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96l0 320c0 53-43 96-96 96L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c-17.7 0-32-14.3-32-32L0 32C0 14.3 14.3 0 32 0L64 0 352 0zm0 384L96 384l0 64 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nconst faQuran = faBookQuran;\nconst faAnchor = {\n  prefix: 'fas',\n  iconName: 'anchor',\n  icon: [576, 512, [9875], \"f13d\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c88.4 0 160-71.6 160-160l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 53-43 96-96 96l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0z\"]\n};\nconst faBorderAll = {\n  prefix: 'fas',\n  iconName: 'border-all',\n  icon: [448, 512, [], \"f84c\", \"M384 96l0 128-128 0 0-128 128 0zm0 192l0 128-128 0 0-128 128 0zM192 224L64 224 64 96l128 0 0 128zM64 288l128 0 0 128L64 416l0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faFaceAngry = {\n  prefix: 'fas',\n  iconName: 'face-angry',\n  icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faAngry = faFaceAngry;\nconst faCookieBite = {\n  prefix: 'fas',\n  iconName: 'cookie-bite',\n  icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArrowTrendDown = {\n  prefix: 'fas',\n  iconName: 'arrow-trend-down',\n  icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352 384 352z\"]\n};\nconst faRss = {\n  prefix: 'fas',\n  iconName: 'rss',\n  icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFeed = faRss;\nconst faDrawPolygon = {\n  prefix: 'fas',\n  iconName: 'draw-polygon',\n  icon: [448, 512, [], \"f5ee\", \"M96 151.4l0 209.1c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56s0 0 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1c0 0 0 0 0 0l32-56 4.5-7.9-.1-.3-209.1 0c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-209.1C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32l209.1 0c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nconst faScaleBalanced = {\n  prefix: 'fas',\n  iconName: 'scale-balanced',\n  icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L398.4 96c-5.2 25.8-22.9 47.1-46.4 57.3L352 448l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-23.5-10.3-41.2-31.6-46.4-57.3L128 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288l144.9 0L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320l144.9 0L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z\"]\n};\nconst faBalanceScale = faScaleBalanced;\nconst faGaugeSimpleHigh = {\n  prefix: 'fas',\n  iconName: 'gauge-simple-high',\n  icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faTachometer = faGaugeSimpleHigh;\nconst faTachometerFast = faGaugeSimpleHigh;\nconst faShower = {\n  prefix: 'fas',\n  iconName: 'shower',\n  icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-316.1zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faDesktop = {\n  prefix: 'fas',\n  iconName: 'desktop',\n  icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 224L64 288 64 64l448 0z\"]\n};\nconst faDesktopAlt = faDesktop;\nconst faM = {\n  prefix: 'fas',\n  iconName: 'm',\n  icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.3c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64l0 384c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-278.3L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7 64 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nconst faTableList = {\n  prefix: 'fas',\n  iconName: 'table-list',\n  icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 0l0 64 64 0 0-64L64 96zm384 0L192 96l0 64 256 0 0-64zM64 224l0 64 64 0 0-64-64 0zm384 0l-256 0 0 64 256 0 0-64zM64 352l0 64 64 0 0-64-64 0zm384 0l-256 0 0 64 256 0 0-64z\"]\n};\nconst faThList = faTableList;\nconst faCommentSms = {\n  prefix: 'fas',\n  iconName: 'comment-sms',\n  icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM96 212.8c0-20.3 16.5-36.8 36.8-36.8l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.3 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8L112 304c-8.8 0-16-7.2-16-16s7.2-16 16-16l27.2 0c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6C102.2 236.7 96 225.2 96 212.8zM372.8 176l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.2 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8L352 304c-8.8 0-16-7.2-16-16s7.2-16 16-16l27.2 0c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6c-10.2-6.8-16.4-18.3-16.4-30.7c0-20.3 16.5-36.8 36.8-36.8zm-152 6.4L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240l0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-6.9 4.4-13 10.9-15.2s13.7 .1 17.9 5.6z\"]\n};\nconst faSms = faCommentSms;\nconst faBook = {\n  prefix: 'fas',\n  iconName: 'book',\n  icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l288 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L384 0 96 0zm0 384l256 0 0 64L96 448c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16zm16 48l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faUserPlus = {\n  prefix: 'fas',\n  iconName: 'user-plus',\n  icon: [640, 512, [], \"f234\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM504 312l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faCheck = {\n  prefix: 'fas',\n  iconName: 'check',\n  icon: [448, 512, [10003, 10004], \"f00c\", \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nconst faBatteryThreeQuarters = {\n  prefix: 'fas',\n  iconName: 'battery-three-quarters',\n  icon: [576, 512, [\"battery-4\"], \"f241\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm272 96L96 192l0 128 256 0 0-128z\"]\n};\nconst faBattery4 = faBatteryThreeQuarters;\nconst faHouseCircleCheck = {\n  prefix: 'fas',\n  iconName: 'house-circle-check',\n  icon: [640, 512, [], \"e509\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faAngleLeft = {\n  prefix: 'fas',\n  iconName: 'angle-left',\n  icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nconst faDiagramSuccessor = {\n  prefix: 'fas',\n  iconName: 'diagram-successor',\n  icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nconst faTruckArrowRight = {\n  prefix: 'fas',\n  iconName: 'truck-arrow-right',\n  icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39L96 168c-13.3 0-24 10.7-24 24s10.7 24 24 24l166.1 0-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nconst faArrowsSplitUpAndLeft = {\n  prefix: 'fas',\n  iconName: 'arrows-split-up-and-left',\n  icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3 352 384c0 35.3 28.7 64 64 64l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64l-114.7 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256 224 256c23.3 0 45.2 6.2 64 17.1l0-163.9-41.4 41.4z\"]\n};\nconst faHandFist = {\n  prefix: 'fas',\n  iconName: 'hand-fist',\n  icon: [448, 512, [9994, \"fist-raised\"], \"f6de\", \"M192 0c17.7 0 32 14.3 32 32l0 112-64 0 0-112c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 80-64 0 0-80zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 52.3-25.1 98.8-64 128l0 96c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-78.4c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n};\nconst faFistRaised = faHandFist;\nconst faCloudMoon = {\n  prefix: 'fas',\n  iconName: 'cloud-moon',\n  icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80L96 511.9c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faBriefcase = {\n  prefix: 'fas',\n  iconName: 'briefcase',\n  icon: [512, 512, [128188], \"f0b1\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160l0 96 192 0 128 0 192 0 0-96c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM512 288l-192 0 0 32c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-32L0 288 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-128z\"]\n};\nconst faPersonFalling = {\n  prefix: 'fas',\n  iconName: 'person-falling',\n  icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0-1.4 0 92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-73.8c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faImagePortrait = {\n  prefix: 'fas',\n  iconName: 'image-portrait',\n  icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6l86.9 0c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4l-169.1 0C92.3 384 80 371.7 80 356.6z\"]\n};\nconst faPortrait = faImagePortrait;\nconst faUserTag = {\n  prefix: 'fas',\n  iconName: 'user-tag',\n  icon: [640, 512, [], \"f507\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1l0-33c-15.9-4.7-32.8-7.2-50.3-7.2l-91.4 0zM384 224c-17.7 0-32 14.3-32 32l0 82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7L384 224zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faRug = {\n  prefix: 'fas',\n  iconName: 'rug',\n  icon: [640, 512, [], \"e569\", \"M24 64l32 0 24 0 0 24 0 88 0 80 0 80 0 88 0 24-24 0-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0l416 0 0 384-416 0 0-384zM640 88c0 13.3-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0-24 0 0-24 0-88 0-80 0-80 0-88 0-24 24 0 32 0c13.3 0 24 10.7 24 24z\"]\n};\nconst faEarthEurope = {\n  prefix: 'fas',\n  iconName: 'earth-europe',\n  icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1l0 9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1l1 0c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24l0 4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6l29.4 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-20.7 0c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3l11.3 0c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16l7.3 0c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4l-20.9 0c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3l0 3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3l21.3 0c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faGlobeEurope = faEarthEurope;\nconst faCartFlatbedSuitcase = {\n  prefix: 'fas',\n  iconName: 'cart-flatbed-suitcase',\n  icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0L48 0c44.2 0 80 35.8 80 80l0 288c0 8.8 7.2 16 16 16l464 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-66.7 0c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16l-197.5 0c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16L144 448c-44.2 0-80-35.8-80-80L64 80c0-8.8-7.2-16-16-16L32 64C14.3 64 0 49.7 0 32zM432 96l0-40c0-4.4-3.6-8-8-8l-80 0c-4.4 0-8 3.6-8 8l0 40 96 0zM288 96l0-40c0-30.9 25.1-56 56-56l80 0c30.9 0 56 25.1 56 56l0 40 0 224-192 0 0-224zM512 320l0-224 16 0c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48l-16 0zM240 96l16 0 0 224-16 0c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48z\"]\n};\nconst faLuggageCart = faCartFlatbedSuitcase;\nconst faRectangleXmark = {\n  prefix: 'fas',\n  iconName: 'rectangle-xmark',\n  icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faRectangleTimes = faRectangleXmark;\nconst faTimesRectangle = faRectangleXmark;\nconst faWindowClose = faRectangleXmark;\nconst faBahtSign = {\n  prefix: 'fas',\n  iconName: 'baht-sign',\n  icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32l0 32L37.6 64C16.8 64 0 80.8 0 101.6L0 224l0 41.7L0 288 0 406.3c0 23 18.7 41.7 41.7 41.7l70.3 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112l0-32c0-17.7-14.3-32-32-32zM112 128l0 96-48 0 0-96 48 0zm64 96l0-96c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64l0 96-48 0 0-96 48 0zm64 96l0-96 32 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-32 0z\"]\n};\nconst faBookOpen = {\n  prefix: 'fas',\n  iconName: 'book-open',\n  icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5l0-377.4c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8L0 454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5l0-370.3c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11L304 456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nconst faBookJournalWhills = {\n  prefix: 'fas',\n  iconName: 'book-journal-whills',\n  icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nconst faJournalWhills = faBookJournalWhills;\nconst faHandcuffs = {\n  prefix: 'fas',\n  iconName: 'handcuffs',\n  icon: [640, 512, [], \"e4f8\", \"M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32l8 0c13.3 0 24 10.7 24 24l0 16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1l0-16c0-13.3 10.7-24 24-24l8 0c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1l0-16c0-13.3 10.7-24 24-24l8 0c0-17.7 14.3-32 32-32s32 14.3 32 32l8 0c13.3 0 24 10.7 24 24l0 16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faTriangleExclamation = {\n  prefix: 'fas',\n  iconName: 'triangle-exclamation',\n  icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faExclamationTriangle = faTriangleExclamation;\nconst faWarning = faTriangleExclamation;\nconst faDatabase = {\n  prefix: 'fas',\n  iconName: 'database',\n  icon: [448, 512, [], \"f1c0\", \"M448 80l0 48c0 44.2-100.3 80-224 80S0 172.2 0 128L0 80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6L448 288c0 44.2-100.3 80-224 80S0 332.2 0 288L0 186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6l0 85.9c0 44.2-100.3 80-224 80S0 476.2 0 432l0-85.9z\"]\n};\nconst faShare = {\n  prefix: 'fas',\n  iconName: 'share',\n  icon: [512, 512, [\"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2l0 64-112 0C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96l96 0 0 64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nconst faMailForward = faShare;\nconst faBottleDroplet = {\n  prefix: 'fas',\n  iconName: 'bottle-droplet',\n  icon: [320, 512, [], \"e4c4\", \"M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8l0 64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256l0 192c0 35.3 28.7 64 64 64l128 0c35.3 0 64-28.7 64-64l0-192c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1L216 56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0s0 0 0 0s0 0 0 0L104 0s0 0 0 0s0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z\"]\n};\nconst faMaskFace = {\n  prefix: 'fas',\n  iconName: 'mask-face',\n  icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1l-9.2 0-16 0-72 0c-30.9 0-56 25.1-56 56l0 85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269l0-85c0-30.9-25.1-56-56-56l-72 0-16 0-9.2 0c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269l0-85c0-4.4 3.6-8 8-8l40 0 0 48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3l0-48 40 0c4.4 0 8 3.6 8 8l0 85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16zm16 48l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faHillRockslide = {\n  prefix: 'fas',\n  iconName: 'hill-rockslide',\n  icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2l-53.3 0c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3L0 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9l0-53.3c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9l0 53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faRightLeft = {\n  prefix: 'fas',\n  iconName: 'right-left',\n  icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-64L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64 320 0z\"]\n};\nconst faExchangeAlt = faRightLeft;\nconst faPaperPlane = {\n  prefix: 'fas',\n  iconName: 'paper-plane',\n  icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480l0-83.6c0-4 1.5-7.8 4.2-10.8L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nconst faRoadCircleExclamation = {\n  prefix: 'fas',\n  iconName: 'road-circle-exclamation',\n  icon: [640, 512, [], \"e565\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faDungeon = {\n  prefix: 'fas',\n  iconName: 'dungeon',\n  icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9l80 0c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24l80 0c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288l-80 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zM24 416c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zm384 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 272c0 8.8 7.2 16 16 16s16-7.2 16-16l0-272zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 240c0 8.8 7.2 16 16 16s16-7.2 16-16l0-240zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 240c0 8.8 7.2 16 16 16s16-7.2 16-16l0-240z\"]\n};\nconst faAlignRight = {\n  prefix: 'fas',\n  iconName: 'align-right',\n  icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32L192 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faMoneyBill1Wave = {\n  prefix: 'fas',\n  iconName: 'money-bill-1-wave',\n  icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5L0 422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4l0-309.9c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416l-64 0 0-64c35.3 0 64 28.7 64 64zM64 224l0-64 64 0c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l24 0 24 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n};\nconst faMoneyBillWaveAlt = faMoneyBill1Wave;\nconst faLifeRing = {\n  prefix: 'fas',\n  iconName: 'life-ring',\n  icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faHands = {\n  prefix: 'fas',\n  iconName: 'hands',\n  icon: [576, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7l0-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8s0 0 0 0s0 0 0 0l43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4l-4.7 0-13.3 0s0 0 0 0L179 216l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352l0 8c0 83.9-68.1 152-152 152l-176 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l92 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L88 440c-13.3 0-24-10.7-24-24s10.7-24 24-24l124 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L56 368c-13.3 0-24-10.7-24-24s10.7-24 24-24l156 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L88 296c-13.3 0-24-10.7-24-24s10.7-24 24-24l136 0s0 0 0 0s0 0 0 0l93.2 0L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z\"]\n};\nconst faSignLanguage = faHands;\nconst faSigning = faHands;\nconst faCalendarDay = {\n  prefix: 'fas',\n  iconName: 'calendar-day',\n  icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm80 64c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16l-96 0z\"]\n};\nconst faWaterLadder = {\n  prefix: 'fas',\n  iconName: 'water-ladder',\n  icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7l0 96.3 192 0 0-96.3C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7L448 361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3c0 0 0 0 0 0l0-96.5-192 0 0 96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1l0-233.3zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faLadderWater = faWaterLadder;\nconst faSwimmingPool = faWaterLadder;\nconst faArrowsUpDown = {\n  prefix: 'fas',\n  iconName: 'arrows-up-down',\n  icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3l0 293.5L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7l0-293.5 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nconst faArrowsV = faArrowsUpDown;\nconst faFaceGrimace = {\n  prefix: 'fas',\n  iconName: 'face-grimace',\n  icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112l-8 0 0-40 55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344l0-40 8 0c23.8 0 43.5 17.3 47.3 40zM328 344l-64 0 0-40 64 0 0 40zm0 56l-64 0 0-40 64 0 0 40zm-80-96l0 40-64 0 0-40 64 0zm0 56l0 40-64 0 0-40 64 0zm-80-16l-55.3 0c3.8-22.7 23.6-40 47.3-40l8 0 0 40zm0 56l-8 0c-23.8 0-43.5-17.3-47.3-40l55.3 0 0 40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrimace = faFaceGrimace;\nconst faWheelchairMove = {\n  prefix: 'fas',\n  iconName: 'wheelchair-move',\n  icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224l97.4 0c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288l-70.3 0c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faWheelchairAlt = faWheelchairMove;\nconst faTurnDown = {\n  prefix: 'fas',\n  iconName: 'turn-down',\n  icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5l88 0 0-192c0-17.7-14.3-32-32-32L32 96C14.3 96 0 81.7 0 64L0 32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192 88 0c9.6 0 18.2 5.7 22 14.5z\"]\n};\nconst faLevelDownAlt = faTurnDown;\nconst faPersonWalkingArrowRight = {\n  prefix: 'fas',\n  iconName: 'person-walking-arrow-right',\n  icon: [640, 512, [], \"e552\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224 384 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nconst faSquareEnvelope = {\n  prefix: 'fas',\n  iconName: 'square-envelope',\n  icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144l256 0c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4 384 336c0 17.7-14.3 32-32 32L96 368c-17.7 0-32-14.3-32-32l0-125.6 136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nconst faEnvelopeSquare = faSquareEnvelope;\nconst faDice = {\n  prefix: 'fas',\n  iconName: 'dice',\n  icon: [640, 512, [127922], \"f522\", \"M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-114.3 0c11.6 36 3.1 77-25.4 105.5L320 413.8l0 34.2zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBowlingBall = {\n  prefix: 'fas',\n  iconName: 'bowling-ball',\n  icon: [512, 512, [], \"f436\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBrain = {\n  prefix: 'fas',\n  iconName: 'brain',\n  icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56l0 400c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56l0-400c0-30.9 25.1-56 56-56z\"]\n};\nconst faBandage = {\n  prefix: 'fas',\n  iconName: 'bandage',\n  icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416l96 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-96 0 0 320zM448 96L192 96l0 320 256 0 0-320zM64 96C28.7 96 0 124.7 0 160L0 352c0 35.3 28.7 64 64 64l96 0 0-320L64 96zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBandAid = faBandage;\nconst faCalendarMinus = {\n  prefix: 'fas',\n  iconName: 'calendar-minus',\n  icon: [448, 512, [], \"f272\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM312 376c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0z\"]\n};\nconst faCircleXmark = {\n  prefix: 'fas',\n  iconName: 'circle-xmark',\n  icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faTimesCircle = faCircleXmark;\nconst faXmarkCircle = faCircleXmark;\nconst faGifts = {\n  prefix: 'fas',\n  iconName: 'gifts',\n  icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l152.6 0c-5.4-9.4-8.6-20.3-8.6-32l0-224c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96l-22.2 0 28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224 344 224c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24l-4.1 0c-26.5 0-48 21.5-48 48l0 80 192 0 0-96 32 0 0 96 192 0 0-80c0-26.5-21.5-48-48-48l-4.1 0c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48l144 0 0-128-192 0 0 80zm224 48l144 0c26.5 0 48-21.5 48-48l0-80-192 0 0 128zm96-312c0 13.3-10.7 24-24 24l-49.1 0 29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nconst faHotel = {\n  prefix: 'fas',\n  iconName: 'hotel',\n  icon: [512, 512, [127976], \"f594\", \"M0 32C0 14.3 14.3 0 32 0L480 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-176 0 0-48c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 48L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 64C14.3 64 0 49.7 0 32zm96 80l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8l144 0z\"]\n};\nconst faEarthAsia = {\n  prefix: 'fas',\n  iconName: 'earth-asia',\n  icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9l2.3 0c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nconst faGlobeAsia = faEarthAsia;\nconst faIdCardClip = {\n  prefix: 'fas',\n  iconName: 'id-card-clip',\n  icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zM64 64l128 0 0 48c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-48 128 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7l202.7 0c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3l-117.3 0c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nconst faIdCardAlt = faIdCardClip;\nconst faMagnifyingGlassPlus = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-plus',\n  icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z\"]\n};\nconst faSearchPlus = faMagnifyingGlassPlus;\nconst faThumbsUp = {\n  prefix: 'fas',\n  iconName: 'thumbs-up',\n  icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2l144 0c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48l-97.5 0c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3l0-38.3 0-48 0-24.9c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192l64 0c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32L0 224c0-17.7 14.3-32 32-32z\"]\n};\nconst faUserClock = {\n  prefix: 'fas',\n  iconName: 'user-clock',\n  icon: [640, 512, [], \"f4fd\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304l91.4 0c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144L29.7 512C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0-48c0-8.8-7.2-16-16-16z\"]\n};\nconst faHandDots = {\n  prefix: 'fas',\n  iconName: 'hand-dots',\n  icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faAllergies = faHandDots;\nconst faFileInvoice = {\n  prefix: 'fas',\n  iconName: 'file-invoice',\n  icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM80 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96l192 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 352c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm0 32l0 64 192 0 0-64L96 256zM240 416l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faWindowMinimize = {\n  prefix: 'fas',\n  iconName: 'window-minimize',\n  icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faMugSaucer = {\n  prefix: 'fas',\n  iconName: 'mug-saucer',\n  icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32l320 0 64 0c70.7 0 128 57.3 128 128s-57.3 128-128 128l-32 0c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L96 64zM480 224l32 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0 0 128zM32 416l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faCoffee = faMugSaucer;\nconst faBrush = {\n  prefix: 'fas',\n  iconName: 'brush',\n  icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6l-19 0c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6L48 0C21.5 0 0 21.5 0 48L0 224l0 22.4L0 256l9.6 0 364.8 0 9.6 0 0-9.6 0-22.4 0-176c0-26.5-21.5-48-48-48L230.5 0c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288l0 32c0 35.3 28.7 64 64 64l64 0 0 64c0 35.3 28.7 64 64 64s64-28.7 64-64l0-64 64 0c35.3 0 64-28.7 64-64l0-32L0 288zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faFileHalfDashed = {\n  prefix: 'fas',\n  iconName: 'file-half-dashed',\n  icon: [384, 512, [], \"e698\", \"M64 0C28.7 0 0 28.7 0 64L0 320l384 0 0-160-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM0 416l64 0 0-64L0 352l0 64zm288 32l-80 0 0 64 80 0 0-64zm-112 0l-80 0 0 64 80 0 0-64zM64 448L0 448c0 35.3 28.7 64 64 64l0-64zm256 0l0 64c35.3 0 64-28.7 64-64l-64 0zm64-32l0-64-64 0 0 64 64 0z\"]\n};\nconst faMask = {\n  prefix: 'fas',\n  iconName: 'mask',\n  icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448l8.4 0c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4l8.4 0c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faMagnifyingGlassMinus = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-minus',\n  icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nconst faSearchMinus = faMagnifyingGlassMinus;\nconst faRulerVertical = {\n  prefix: 'fas',\n  iconName: 'ruler-vertical',\n  icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0L208 0c26.5 0 48 21.5 48 48l0 48-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 48z\"]\n};\nconst faUserLarge = {\n  prefix: 'fas',\n  iconName: 'user-large',\n  icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320l-189.4 0z\"]\n};\nconst faUserAlt = faUserLarge;\nconst faTrainTram = {\n  prefix: 'fas',\n  iconName: 'train-tram',\n  icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0L361.2 0c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15L248 48l0 48 40 0c53 0 96 43 96 96l0 160c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1l-39.7 0c-8.5 0-16.6-3.4-22.6-9.4L288 448l-128 0-54.6 54.6c-6 6-14.1 9.4-22.6 9.4L43 512c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352l0-160c0-53 43-96 96-96l40 0 0-48L86.8 48zM160 160c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-128 0zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faUserNurse = {\n  prefix: 'fas',\n  iconName: 'user-nurse',\n  icon: [448, 512, [], \"f82f\", \"M96 128l0-57.8c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30l0 57.8-.3 0c.2 2.6 .3 5.3 .3 8l0 40c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40c0-2.7 .1-5.4 .3-8l-.3 0zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80l0-16-160 0 0 16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7L30.7 512C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48l0 16-16 0c-4.4 0-8 3.6-8 8l0 16c0 4.4 3.6 8 8 8l16 0 0 16c0 4.4 3.6 8 8 8l16 0c4.4 0 8-3.6 8-8l0-16 16 0c4.4 0 8-3.6 8-8l0-16c0-4.4-3.6-8-8-8l-16 0 0-16c0-4.4-3.6-8-8-8l-16 0c-4.4 0-8 3.6-8 8z\"]\n};\nconst faSyringe = {\n  prefix: 'fas',\n  iconName: 'syringe',\n  icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4l-88.8 0L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57 0-88.8c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nconst faCloudSun = {\n  prefix: 'fas',\n  iconName: 'cloud-sun',\n  icon: [640, 512, [9925], \"f6c4\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faStopwatch20 = {\n  prefix: 'fas',\n  iconName: 'stopwatch-20',\n  icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 34.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6L256 64l16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L176 0zM288 204c28.7 0 52 23.3 52 52l0 96c0 28.7-23.3 52-52 52s-52-23.3-52-52l0-96c0-28.7 23.3-52 52-52zm-12 52l0 96c0 6.6 5.4 12 12 12s12-5.4 12-12l0-96c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5l0 2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9l43.8 0c11 0 20 9 20 20s-9 20-20 20l-64 0c-11 0-20-9-20-20l0-15.7c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8l0-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nconst faSquareFull = {\n  prefix: 'fas',\n  iconName: 'square-full',\n  icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nconst faMagnet = {\n  prefix: 'fas',\n  iconName: 'magnet',\n  icon: [448, 512, [129522], \"f076\", \"M0 160l0 96C0 379.7 100.3 480 224 480s224-100.3 224-224l0-96-128 0 0 96c0 53-43 96-96 96s-96-43-96-96l0-96L0 160zm0-32l128 0 0-64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64l0 64zm320 0l128 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64z\"]\n};\nconst faJar = {\n  prefix: 'fas',\n  iconName: 'jar',\n  icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0L256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64l192 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 160zm96 64c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32L96 224z\"]\n};\nconst faNoteSticky = {\n  prefix: 'fas',\n  iconName: 'note-sticky',\n  icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l224 0 0-112c0-26.5 21.5-48 48-48l112 0 0-224c0-35.3-28.7-64-64-64L64 32zM448 352l-45.3 0L336 352c-8.8 0-16 7.2-16 16l0 66.7 0 45.3 32-32 64-64 32-32z\"]\n};\nconst faStickyNote = faNoteSticky;\nconst faBugSlash = {\n  prefix: 'fas',\n  iconName: 'bug-slash',\n  icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64.3 0c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160l-112 0c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96l0 3.6c0 15.7 12.7 28.4 28.4 28.4l135.1 0c15.7 0 28.4-12.7 28.4-28.4l0-3.6c0-53-43-96-96-96zM160.3 256L96 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6l0-143.7L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7l0 118.5z\"]\n};\nconst faArrowUpFromWaterPump = {\n  prefix: 'fas',\n  iconName: 'arrow-up-from-water-pump',\n  icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48l0 208-16 0c-26.5 0-48 21.5-48 48l0 96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400l0-96c0-26.5-21.5-48-48-48l-48 0 0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256l-128 0 0-208c0-26.5-21.5-48-48-48L112 0zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faBone = {\n  prefix: 'fas',\n  iconName: 'bone',\n  icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2l192 0c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336l-192 0c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nconst faTableCellsRowUnlock = {\n  prefix: 'fas',\n  iconName: 'table-cells-row-unlock',\n  icon: [640, 512, [], \"e691\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 224l0 64 88 0 0-64-88 0zm232 0l-88 0 0 64 88 0 0-64zM152 352l-88 0 0 64 88 0 0-64zm56 0l0 64 88 0 0-64-88 0zm288-80l0 48 32 0 32 0 48 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48c0-44.2 35.8-80 80-80s80 35.8 80 80l-48 0c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faUserInjured = {\n  prefix: 'fas',\n  iconName: 'user-injured',\n  icon: [448, 512, [], \"f728\", \"M240 80l102.7 0c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80l81.4 0 91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16L97 112c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7L96 512l147.7 0L181.5 408.2 124 312.4zm33-7.2L204.3 384l67.7 0c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48l82.3 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512L64 512l0-166.6C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48l-48.5 0 57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nconst faFaceSadTear = {\n  prefix: 'fas',\n  iconName: 'face-sad-tear',\n  icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSadTear = faFaceSadTear;\nconst faPlane = {\n  prefix: 'fas',\n  iconName: 'plane',\n  icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nconst faTentArrowsDown = {\n  prefix: 'fas',\n  iconName: 'tent-arrows-down',\n  icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L488 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faExclamation = {\n  prefix: 'fas',\n  iconName: 'exclamation',\n  icon: [128, 512, [10069, 10071, 61738], \"21\", \"M96 64c0-17.7-14.3-32-32-32S32 46.3 32 64l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32L96 64zM64 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faArrowsSpin = {\n  prefix: 'fas',\n  iconName: 'arrows-spin',\n  icon: [512, 512, [], \"e4bb\", \"M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9l112 0c8.8 0 16-7.2 16-16l0-112c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3l0 64.9c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8l0-112c0-8.8-7.2-16-16-16L64 48c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32l64.9 0c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224l-64.9 0c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8l0 112c0 8.8 7.2 16 16 16l112 0c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9L64 320c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3l0-64.9c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nconst faPrint = {\n  prefix: 'fas',\n  iconName: 'print',\n  icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64l0 96 64 0 0-96 226.7 0L384 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0L128 0zM384 352l0 32 0 64-256 0 0-64 0-16 0-16 256 0zm64 32l32 0c17.7 0 32-14.3 32-32l0-96c0-35.3-28.7-64-64-64L64 192c-35.3 0-64 28.7-64 64l0 96c0 17.7 14.3 32 32 32l32 0 0 64c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-64zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faTurkishLiraSign = {\n  prefix: 'fas',\n  iconName: 'turkish-lira-sign',\n  icon: [384, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M96 32c17.7 0 32 14.3 32 32l0 35.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9l0 29.4 119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9 128 416l63.8 0c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480L96 480c-17.7 0-32-14.3-32-32l0-167.9-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6l0-29.4-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6 64 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faTry = faTurkishLiraSign;\nconst faTurkishLira = faTurkishLiraSign;\nconst faDollarSign = {\n  prefix: 'fas',\n  iconName: 'dollar-sign',\n  icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32l0 35.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11l0 33.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.9c-.4-.1-.9-.1-1.3-.2l-.2 0s0 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7s0 0 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11L128 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faDollar = faDollarSign;\nconst faUsd = faDollarSign;\nconst faX = {\n  prefix: 'fas',\n  iconName: 'x',\n  icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nconst faMagnifyingGlassDollar = {\n  prefix: 'fas',\n  iconName: 'magnifying-glass-dollar',\n  icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7l0-13.9z\"]\n};\nconst faSearchDollar = faMagnifyingGlassDollar;\nconst faUsersGear = {\n  prefix: 'fas',\n  iconName: 'users-gear',\n  icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320l213.3 0c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7l-42.7 0C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2l-103.2 0C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7l300.6 0c-2.1-5.2-3.2-10.9-3.2-16.4l0-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192l-42.7 0c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3l0-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6l0 3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3l-2.9 1.7c-9.2 5.3-20.4 4-29.6-1.3s-16.1-14.5-16.1-25.1l0-3.4c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9l0 3.4c0 10.6-6.9 19.8-16.1 25.1s-20.4 6.6-29.6 1.3l-2.9-1.7c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l2.9 1.7c9.2 5.3 13.7 15.8 13.7 26.4s-4.5 21.1-13.7 26.4l-3 1.7c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3l2.9-1.7c9.2-5.3 20.4-4 29.6 1.3s16.1 14.5 16.1 25.1l0 3.4c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9l0-3.4c0-10.6 6.9-19.8 16.1-25.1s20.4-6.6 29.6-1.3l2.9 1.7c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-3-1.7c-9.2-5.3-13.7-15.8-13.7-26.4s4.5-21.1 13.7-26.4l3-1.7zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nconst faUsersCog = faUsersGear;\nconst faPersonMilitaryPointing = {\n  prefix: 'fas',\n  iconName: 'person-military-pointing',\n  icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25l151 0c8.8 0 16-7.2 16-16l0-30.6C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16L241.6 96c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40l152 0 0 89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5L240 224 72 224zm345.7 20.9L246.6 416 416 416l0-46.3 53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32-192 0z\"]\n};\nconst faBuildingColumns = {\n  prefix: 'fas',\n  iconName: 'building-columns',\n  icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160l0 8c0 13.3 10.7 24 24 24l400 0c13.3 0 24-10.7 24-24l0-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224l-64 0 0 196.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512l448 0c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1L448 224l-64 0 0 192-40 0 0-192-64 0 0 192-48 0 0-192-64 0 0 192-40 0 0-192zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBank = faBuildingColumns;\nconst faInstitution = faBuildingColumns;\nconst faMuseum = faBuildingColumns;\nconst faUniversity = faBuildingColumns;\nconst faUmbrella = {\n  prefix: 'fas',\n  iconName: 'umbrella',\n  icon: [576, 512, [], \"f0e9\", \"M288 0c17.7 0 32 14.3 32 32l0 17.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7L256 32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2l0 114.3c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4l0-114.3c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nconst faTrowel = {\n  prefix: 'fas',\n  iconName: 'trowel',\n  icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nconst faD = {\n  prefix: 'fas',\n  iconName: 'd',\n  icon: [384, 512, [100], \"44\", \"M0 96C0 60.7 28.7 32 64 32l96 0c123.7 0 224 100.3 224 224s-100.3 224-224 224l-96 0c-35.3 0-64-28.7-64-64L0 96zm160 0L64 96l0 320 96 0c88.4 0 160-71.6 160-160s-71.6-160-160-160z\"]\n};\nconst faStapler = {\n  prefix: 'fas',\n  iconName: 'stapler',\n  icon: [640, 512, [], \"e5af\", \"M640 299.3l0 4.7 0 128c0 26.5-21.5 48-48 48l-80 0-64 0L64 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0 0-48L96 368c-17.7 0-32-14.3-32-32l0-116.6L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304l0-16L128 230.9l0 73.1 320 0z\"]\n};\nconst faMasksTheater = {\n  prefix: 'fas',\n  iconName: 'masks-theater',\n  icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z\"]\n};\nconst faTheaterMasks = faMasksTheater;\nconst faKipSign = {\n  prefix: 'fas',\n  iconName: 'kip-sign',\n  icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4 128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 160-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-122.4L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288 352 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-169.5 0L340.8 88.3z\"]\n};\nconst faHandPointLeft = {\n  prefix: 'fas',\n  iconName: 'hand-point-left',\n  icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0 0-64L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm-64-64c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32l8.6 0c88.4 0 160-71.6 160-160l0-61.7c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64l0 88c0 22.1 17.9 40 40 40s40-17.9 40-40l0-56c0-8.8 7.2-16 16-16s16 7.2 16 16l0 56c0 39.8-32.2 72-72 72z\"]\n};\nconst faHandshakeSimple = {\n  prefix: 'fas',\n  iconName: 'handshake-simple',\n  icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352l41.8 0c26.5 0 48-21.5 48-48l0-128c0-26.5-21.5-48-48-48l-76 0-4 0-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48-80 0c-26.5 0-48 21.5-48 48L0 304c0 26.5 21.5 48 48 48l108.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nconst faHandshakeAlt = faHandshakeSimple;\nconst faJetFighter = {\n  prefix: 'fas',\n  iconName: 'jet-fighter',\n  icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24L296 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0L384 192l116.4 0c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1L384 320 280 464l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-144-32 0-54.6 54.6c-6 6-14.1 9.4-22.6 9.4L64 384c-17.7 0-32-14.3-32-32l0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l18.7 0c8.5 0 16.6 3.4 22.6 9.4L160 192l32 0 0-144-8 0c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0z\"]\n};\nconst faFighterJet = faJetFighter;\nconst faSquareShareNodes = {\n  prefix: 'fas',\n  iconName: 'square-share-nodes',\n  icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nconst faShareAltSquare = faSquareShareNodes;\nconst faBarcode = {\n  prefix: 'fas',\n  iconName: 'barcode',\n  icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56L0 456c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24L64 56c0-13.3-10.7-24-24-24L24 32zm88 0c-8.8 0-16 7.2-16 16l0 416c0 8.8 7.2 16 16 16s16-7.2 16-16l0-416c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0zm96 0c-13.3 0-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0zM448 56l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0c-13.3 0-24 10.7-24 24zm-64-8l0 416c0 8.8 7.2 16 16 16s16-7.2 16-16l0-416c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nconst faPlusMinus = {\n  prefix: 'fas',\n  iconName: 'plus-minus',\n  icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112L48 144c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0 0 112c0 17.7 14.3 32 32 32s32-14.3 32-32l0-112 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-112zM0 480c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z\"]\n};\nconst faVideo = {\n  prefix: 'fas',\n  iconName: 'video',\n  icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2l0 256c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1l0-17.1 0-128 0-17.1 14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nconst faVideoCamera = faVideo;\nconst faGraduationCap = {\n  prefix: 'fas',\n  iconName: 'graduation-cap',\n  icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9l0 28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5l0-24.6c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nconst faMortarBoard = faGraduationCap;\nconst faHandHoldingMedical = {\n  prefix: 'fas',\n  iconName: 'hand-holding-medical',\n  icon: [576, 512, [], \"e05c\", \"M224 24l0 56-56 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l56 0 0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56 56 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-56 0 0-56c0-13.3-10.7-24-24-24L248 0c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 272 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-16 0-78.3 0c-29.1 0-57.3 9.9-80 28L68.8 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0 160.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nconst faPersonCircleCheck = {\n  prefix: 'fas',\n  iconName: 'person-circle-check',\n  icon: [576, 512, [], \"e53e\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faTurnUp = {\n  prefix: 'fas',\n  iconName: 'turn-up',\n  icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5l88 0 0 192c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192 88 0c9.6 0 18.2-5.7 22-14.5z\"]\n};\nconst faLevelUpAlt = faTurnUp;\nvar icons = {\n  fa0,\n  fa1,\n  fa2,\n  fa3,\n  fa4,\n  fa5,\n  fa6,\n  fa7,\n  fa8,\n  fa9,\n  faFillDrip,\n  faArrowsToCircle,\n  faCircleChevronRight,\n  faChevronCircleRight,\n  faAt,\n  faTrashCan,\n  faTrashAlt,\n  faTextHeight,\n  faUserXmark,\n  faUserTimes,\n  faStethoscope,\n  faMessage,\n  faCommentAlt,\n  faInfo,\n  faDownLeftAndUpRightToCenter,\n  faCompressAlt,\n  faExplosion,\n  faFileLines,\n  faFileAlt,\n  faFileText,\n  faWaveSquare,\n  faRing,\n  faBuildingUn,\n  faDiceThree,\n  faCalendarDays,\n  faCalendarAlt,\n  faAnchorCircleCheck,\n  faBuildingCircleArrowRight,\n  faVolleyball,\n  faVolleyballBall,\n  faArrowsUpToLine,\n  faSortDown,\n  faSortDesc,\n  faCircleMinus,\n  faMinusCircle,\n  faDoorOpen,\n  faRightFromBracket,\n  faSignOutAlt,\n  faAtom,\n  faSoap,\n  faIcons,\n  faHeartMusicCameraBolt,\n  faMicrophoneLinesSlash,\n  faMicrophoneAltSlash,\n  faBridgeCircleCheck,\n  faPumpMedical,\n  faFingerprint,\n  faHandPointRight,\n  faMagnifyingGlassLocation,\n  faSearchLocation,\n  faForwardStep,\n  faStepForward,\n  faFaceSmileBeam,\n  faSmileBeam,\n  faFlagCheckered,\n  faFootball,\n  faFootballBall,\n  faSchoolCircleExclamation,\n  faCrop,\n  faAnglesDown,\n  faAngleDoubleDown,\n  faUsersRectangle,\n  faPeopleRoof,\n  faPeopleLine,\n  faBeerMugEmpty,\n  faBeer,\n  faDiagramPredecessor,\n  faArrowUpLong,\n  faLongArrowUp,\n  faFireFlameSimple,\n  faBurn,\n  faPerson,\n  faMale,\n  faLaptop,\n  faFileCsv,\n  faMenorah,\n  faTruckPlane,\n  faRecordVinyl,\n  faFaceGrinStars,\n  faGrinStars,\n  faBong,\n  faSpaghettiMonsterFlying,\n  faPastafarianism,\n  faArrowDownUpAcrossLine,\n  faSpoon,\n  faUtensilSpoon,\n  faJarWheat,\n  faEnvelopesBulk,\n  faMailBulk,\n  faFileCircleExclamation,\n  faCircleH,\n  faHospitalSymbol,\n  faPager,\n  faAddressBook,\n  faContactBook,\n  faStrikethrough,\n  faK,\n  faLandmarkFlag,\n  faPencil,\n  faPencilAlt,\n  faBackward,\n  faCaretRight,\n  faComments,\n  faPaste,\n  faFileClipboard,\n  faCodePullRequest,\n  faClipboardList,\n  faTruckRampBox,\n  faTruckLoading,\n  faUserCheck,\n  faVialVirus,\n  faSheetPlastic,\n  faBlog,\n  faUserNinja,\n  faPersonArrowUpFromLine,\n  faScrollTorah,\n  faTorah,\n  faBroomBall,\n  faQuidditch,\n  faQuidditchBroomBall,\n  faToggleOff,\n  faBoxArchive,\n  faArchive,\n  faPersonDrowning,\n  faArrowDown91,\n  faSortNumericDesc,\n  faSortNumericDownAlt,\n  faFaceGrinTongueSquint,\n  faGrinTongueSquint,\n  faSprayCan,\n  faTruckMonster,\n  faW,\n  faEarthAfrica,\n  faGlobeAfrica,\n  faRainbow,\n  faCircleNotch,\n  faTabletScreenButton,\n  faTabletAlt,\n  faPaw,\n  faCloud,\n  faTrowelBricks,\n  faFaceFlushed,\n  faFlushed,\n  faHospitalUser,\n  faTentArrowLeftRight,\n  faGavel,\n  faLegal,\n  faBinoculars,\n  faMicrophoneSlash,\n  faBoxTissue,\n  faMotorcycle,\n  faBellConcierge,\n  faConciergeBell,\n  faPenRuler,\n  faPencilRuler,\n  faPeopleArrows,\n  faPeopleArrowsLeftRight,\n  faMarsAndVenusBurst,\n  faSquareCaretRight,\n  faCaretSquareRight,\n  faScissors,\n  faCut,\n  faSunPlantWilt,\n  faToiletsPortable,\n  faHockeyPuck,\n  faTable,\n  faMagnifyingGlassArrowRight,\n  faTachographDigital,\n  faDigitalTachograph,\n  faUsersSlash,\n  faClover,\n  faReply,\n  faMailReply,\n  faStarAndCrescent,\n  faHouseFire,\n  faSquareMinus,\n  faMinusSquare,\n  faHelicopter,\n  faCompass,\n  faSquareCaretDown,\n  faCaretSquareDown,\n  faFileCircleQuestion,\n  faLaptopCode,\n  faSwatchbook,\n  faPrescriptionBottle,\n  faBars,\n  faNavicon,\n  faPeopleGroup,\n  faHourglassEnd,\n  faHourglass3,\n  faHeartCrack,\n  faHeartBroken,\n  faSquareUpRight,\n  faExternalLinkSquareAlt,\n  faFaceKissBeam,\n  faKissBeam,\n  faFilm,\n  faRulerHorizontal,\n  faPeopleRobbery,\n  faLightbulb,\n  faCaretLeft,\n  faCircleExclamation,\n  faExclamationCircle,\n  faSchoolCircleXmark,\n  faArrowRightFromBracket,\n  faSignOut,\n  faCircleChevronDown,\n  faChevronCircleDown,\n  faUnlockKeyhole,\n  faUnlockAlt,\n  faCloudShowersHeavy,\n  faHeadphonesSimple,\n  faHeadphonesAlt,\n  faSitemap,\n  faCircleDollarToSlot,\n  faDonate,\n  faMemory,\n  faRoadSpikes,\n  faFireBurner,\n  faFlag,\n  faHanukiah,\n  faFeather,\n  faVolumeLow,\n  faVolumeDown,\n  faCommentSlash,\n  faCloudSunRain,\n  faCompress,\n  faWheatAwn,\n  faWheatAlt,\n  faAnkh,\n  faHandsHoldingChild,\n  faAsterisk,\n  faSquareCheck,\n  faCheckSquare,\n  faPesetaSign,\n  faHeading,\n  faHeader,\n  faGhost,\n  faList,\n  faListSquares,\n  faSquarePhoneFlip,\n  faPhoneSquareAlt,\n  faCartPlus,\n  faGamepad,\n  faCircleDot,\n  faDotCircle,\n  faFaceDizzy,\n  faDizzy,\n  faEgg,\n  faHouseMedicalCircleXmark,\n  faCampground,\n  faFolderPlus,\n  faFutbol,\n  faFutbolBall,\n  faSoccerBall,\n  faPaintbrush,\n  faPaintBrush,\n  faLock,\n  faGasPump,\n  faHotTubPerson,\n  faHotTub,\n  faMapLocation,\n  faMapMarked,\n  faHouseFloodWater,\n  faTree,\n  faBridgeLock,\n  faSackDollar,\n  faPenToSquare,\n  faEdit,\n  faCarSide,\n  faShareNodes,\n  faShareAlt,\n  faHeartCircleMinus,\n  faHourglassHalf,\n  faHourglass2,\n  faMicroscope,\n  faSink,\n  faBagShopping,\n  faShoppingBag,\n  faArrowDownZA,\n  faSortAlphaDesc,\n  faSortAlphaDownAlt,\n  faMitten,\n  faPersonRays,\n  faUsers,\n  faEyeSlash,\n  faFlaskVial,\n  faHand,\n  faHandPaper,\n  faOm,\n  faWorm,\n  faHouseCircleXmark,\n  faPlug,\n  faChevronUp,\n  faHandSpock,\n  faStopwatch,\n  faFaceKiss,\n  faKiss,\n  faBridgeCircleXmark,\n  faFaceGrinTongue,\n  faGrinTongue,\n  faChessBishop,\n  faFaceGrinWink,\n  faGrinWink,\n  faEarDeaf,\n  faDeaf,\n  faDeafness,\n  faHardOfHearing,\n  faRoadCircleCheck,\n  faDiceFive,\n  faSquareRss,\n  faRssSquare,\n  faLandMineOn,\n  faICursor,\n  faStamp,\n  faStairs,\n  faI,\n  faHryvniaSign,\n  faHryvnia,\n  faPills,\n  faFaceGrinWide,\n  faGrinAlt,\n  faTooth,\n  faV,\n  faBangladeshiTakaSign,\n  faBicycle,\n  faStaffSnake,\n  faRodAsclepius,\n  faRodSnake,\n  faStaffAesculapius,\n  faHeadSideCoughSlash,\n  faTruckMedical,\n  faAmbulance,\n  faWheatAwnCircleExclamation,\n  faSnowman,\n  faMortarPestle,\n  faRoadBarrier,\n  faSchool,\n  faIgloo,\n  faJoint,\n  faAngleRight,\n  faHorse,\n  faQ,\n  faG,\n  faNotesMedical,\n  faTemperatureHalf,\n  faTemperature2,\n  faThermometer2,\n  faThermometerHalf,\n  faDongSign,\n  faCapsules,\n  faPooStorm,\n  faPooBolt,\n  faFaceFrownOpen,\n  faFrownOpen,\n  faHandPointUp,\n  faMoneyBill,\n  faBookmark,\n  faAlignJustify,\n  faUmbrellaBeach,\n  faHelmetUn,\n  faBullseye,\n  faBacon,\n  faHandPointDown,\n  faArrowUpFromBracket,\n  faFolder,\n  faFolderBlank,\n  faFileWaveform,\n  faFileMedicalAlt,\n  faRadiation,\n  faChartSimple,\n  faMarsStroke,\n  faVial,\n  faGauge,\n  faDashboard,\n  faGaugeMed,\n  faTachometerAltAverage,\n  faWandMagicSparkles,\n  faMagicWandSparkles,\n  faE,\n  faPenClip,\n  faPenAlt,\n  faBridgeCircleExclamation,\n  faUser,\n  faSchoolCircleCheck,\n  faDumpster,\n  faVanShuttle,\n  faShuttleVan,\n  faBuildingUser,\n  faSquareCaretLeft,\n  faCaretSquareLeft,\n  faHighlighter,\n  faKey,\n  faBullhorn,\n  faGlobe,\n  faSynagogue,\n  faPersonHalfDress,\n  faRoadBridge,\n  faLocationArrow,\n  faC,\n  faTabletButton,\n  faBuildingLock,\n  faPizzaSlice,\n  faMoneyBillWave,\n  faChartArea,\n  faAreaChart,\n  faHouseFlag,\n  faPersonCircleMinus,\n  faBan,\n  faCancel,\n  faCameraRotate,\n  faSprayCanSparkles,\n  faAirFreshener,\n  faStar,\n  faRepeat,\n  faCross,\n  faBox,\n  faVenusMars,\n  faArrowPointer,\n  faMousePointer,\n  faMaximize,\n  faExpandArrowsAlt,\n  faChargingStation,\n  faShapes,\n  faTriangleCircleSquare,\n  faShuffle,\n  faRandom,\n  faPersonRunning,\n  faRunning,\n  faMobileRetro,\n  faGripLinesVertical,\n  faSpider,\n  faHandsBound,\n  faFileInvoiceDollar,\n  faPlaneCircleExclamation,\n  faXRay,\n  faSpellCheck,\n  faSlash,\n  faComputerMouse,\n  faMouse,\n  faArrowRightToBracket,\n  faSignIn,\n  faShopSlash,\n  faStoreAltSlash,\n  faServer,\n  faVirusCovidSlash,\n  faShopLock,\n  faHourglassStart,\n  faHourglass1,\n  faBlenderPhone,\n  faBuildingWheat,\n  faPersonBreastfeeding,\n  faRightToBracket,\n  faSignInAlt,\n  faVenus,\n  faPassport,\n  faThumbtackSlash,\n  faThumbTackSlash,\n  faHeartPulse,\n  faHeartbeat,\n  faPeopleCarryBox,\n  faPeopleCarry,\n  faTemperatureHigh,\n  faMicrochip,\n  faCrown,\n  faWeightHanging,\n  faXmarksLines,\n  faFilePrescription,\n  faWeightScale,\n  faWeight,\n  faUserGroup,\n  faUserFriends,\n  faArrowUpAZ,\n  faSortAlphaUp,\n  faChessKnight,\n  faFaceLaughSquint,\n  faLaughSquint,\n  faWheelchair,\n  faCircleArrowUp,\n  faArrowCircleUp,\n  faToggleOn,\n  faPersonWalking,\n  faWalking,\n  faL,\n  faFire,\n  faBedPulse,\n  faProcedures,\n  faShuttleSpace,\n  faSpaceShuttle,\n  faFaceLaugh,\n  faLaugh,\n  faFolderOpen,\n  faHeartCirclePlus,\n  faCodeFork,\n  faCity,\n  faMicrophoneLines,\n  faMicrophoneAlt,\n  faPepperHot,\n  faUnlock,\n  faColonSign,\n  faHeadset,\n  faStoreSlash,\n  faRoadCircleXmark,\n  faUserMinus,\n  faMarsStrokeUp,\n  faMarsStrokeV,\n  faChampagneGlasses,\n  faGlassCheers,\n  faClipboard,\n  faHouseCircleExclamation,\n  faFileArrowUp,\n  faFileUpload,\n  faWifi,\n  faWifi3,\n  faWifiStrong,\n  faBath,\n  faBathtub,\n  faUnderline,\n  faUserPen,\n  faUserEdit,\n  faSignature,\n  faStroopwafel,\n  faBold,\n  faAnchorLock,\n  faBuildingNgo,\n  faManatSign,\n  faNotEqual,\n  faBorderTopLeft,\n  faBorderStyle,\n  faMapLocationDot,\n  faMapMarkedAlt,\n  faJedi,\n  faSquarePollVertical,\n  faPoll,\n  faMugHot,\n  faCarBattery,\n  faBatteryCar,\n  faGift,\n  faDiceTwo,\n  faChessQueen,\n  faGlasses,\n  faChessBoard,\n  faBuildingCircleCheck,\n  faPersonChalkboard,\n  faMarsStrokeRight,\n  faMarsStrokeH,\n  faHandBackFist,\n  faHandRock,\n  faSquareCaretUp,\n  faCaretSquareUp,\n  faCloudShowersWater,\n  faChartBar,\n  faBarChart,\n  faHandsBubbles,\n  faHandsWash,\n  faLessThanEqual,\n  faTrain,\n  faEyeLowVision,\n  faLowVision,\n  faCrow,\n  faSailboat,\n  faWindowRestore,\n  faSquarePlus,\n  faPlusSquare,\n  faToriiGate,\n  faFrog,\n  faBucket,\n  faImage,\n  faMicrophone,\n  faCow,\n  faCaretUp,\n  faScrewdriver,\n  faFolderClosed,\n  faHouseTsunami,\n  faSquareNfi,\n  faArrowUpFromGroundWater,\n  faMartiniGlass,\n  faGlassMartiniAlt,\n  faSquareBinary,\n  faRotateLeft,\n  faRotateBack,\n  faRotateBackward,\n  faUndoAlt,\n  faTableColumns,\n  faColumns,\n  faLemon,\n  faHeadSideMask,\n  faHandshake,\n  faGem,\n  faDolly,\n  faDollyBox,\n  faSmoking,\n  faMinimize,\n  faCompressArrowsAlt,\n  faMonument,\n  faSnowplow,\n  faAnglesRight,\n  faAngleDoubleRight,\n  faCannabis,\n  faCirclePlay,\n  faPlayCircle,\n  faTablets,\n  faEthernet,\n  faEuroSign,\n  faEur,\n  faEuro,\n  faChair,\n  faCircleCheck,\n  faCheckCircle,\n  faCircleStop,\n  faStopCircle,\n  faCompassDrafting,\n  faDraftingCompass,\n  faPlateWheat,\n  faIcicles,\n  faPersonShelter,\n  faNeuter,\n  faIdBadge,\n  faMarker,\n  faFaceLaughBeam,\n  faLaughBeam,\n  faHelicopterSymbol,\n  faUniversalAccess,\n  faCircleChevronUp,\n  faChevronCircleUp,\n  faLariSign,\n  faVolcano,\n  faPersonWalkingDashedLineArrowRight,\n  faSterlingSign,\n  faGbp,\n  faPoundSign,\n  faViruses,\n  faSquarePersonConfined,\n  faUserTie,\n  faArrowDownLong,\n  faLongArrowDown,\n  faTentArrowDownToLine,\n  faCertificate,\n  faReplyAll,\n  faMailReplyAll,\n  faSuitcase,\n  faPersonSkating,\n  faSkating,\n  faFilterCircleDollar,\n  faFunnelDollar,\n  faCameraRetro,\n  faCircleArrowDown,\n  faArrowCircleDown,\n  faFileImport,\n  faArrowRightToFile,\n  faSquareArrowUpRight,\n  faExternalLinkSquare,\n  faBoxOpen,\n  faScroll,\n  faSpa,\n  faLocationPinLock,\n  faPause,\n  faHillAvalanche,\n  faTemperatureEmpty,\n  faTemperature0,\n  faThermometer0,\n  faThermometerEmpty,\n  faBomb,\n  faRegistered,\n  faAddressCard,\n  faContactCard,\n  faVcard,\n  faScaleUnbalancedFlip,\n  faBalanceScaleRight,\n  faSubscript,\n  faDiamondTurnRight,\n  faDirections,\n  faBurst,\n  faHouseLaptop,\n  faLaptopHouse,\n  faFaceTired,\n  faTired,\n  faMoneyBills,\n  faSmog,\n  faCrutch,\n  faFontAwesome,\n  faFontAwesomeFlag,\n  faFontAwesomeLogoFull,\n  faCloudArrowUp,\n  faCloudUpload,\n  faCloudUploadAlt,\n  faPalette,\n  faArrowsTurnRight,\n  faVest,\n  faFerry,\n  faArrowsDownToPeople,\n  faSeedling,\n  faSprout,\n  faLeftRight,\n  faArrowsAltH,\n  faBoxesPacking,\n  faCircleArrowLeft,\n  faArrowCircleLeft,\n  faGroupArrowsRotate,\n  faBowlFood,\n  faCandyCane,\n  faArrowDownWideShort,\n  faSortAmountAsc,\n  faSortAmountDown,\n  faCloudBolt,\n  faThunderstorm,\n  faTextSlash,\n  faRemoveFormat,\n  faFaceSmileWink,\n  faSmileWink,\n  faFileWord,\n  faFilePowerpoint,\n  faArrowsLeftRight,\n  faArrowsH,\n  faHouseLock,\n  faCloudArrowDown,\n  faCloudDownload,\n  faCloudDownloadAlt,\n  faChildren,\n  faChalkboard,\n  faBlackboard,\n  faUserLargeSlash,\n  faUserAltSlash,\n  faEnvelopeOpen,\n  faHandshakeSimpleSlash,\n  faHandshakeAltSlash,\n  faMattressPillow,\n  faGuaraniSign,\n  faArrowsRotate,\n  faRefresh,\n  faSync,\n  faFireExtinguisher,\n  faCruzeiroSign,\n  faGreaterThanEqual,\n  faShieldHalved,\n  faShieldAlt,\n  faBookAtlas,\n  faAtlas,\n  faVirus,\n  faEnvelopeCircleCheck,\n  faLayerGroup,\n  faArrowsToDot,\n  faArchway,\n  faHeartCircleCheck,\n  faHouseChimneyCrack,\n  faHouseDamage,\n  faFileZipper,\n  faFileArchive,\n  faSquare,\n  faMartiniGlassEmpty,\n  faGlassMartini,\n  faCouch,\n  faCediSign,\n  faItalic,\n  faTableCellsColumnLock,\n  faChurch,\n  faCommentsDollar,\n  faDemocrat,\n  faZ,\n  faPersonSkiing,\n  faSkiing,\n  faRoadLock,\n  faA,\n  faTemperatureArrowDown,\n  faTemperatureDown,\n  faFeatherPointed,\n  faFeatherAlt,\n  faP,\n  faSnowflake,\n  faNewspaper,\n  faRectangleAd,\n  faAd,\n  faCircleArrowRight,\n  faArrowCircleRight,\n  faFilterCircleXmark,\n  faLocust,\n  faSort,\n  faUnsorted,\n  faListOl,\n  faList12,\n  faListNumeric,\n  faPersonDressBurst,\n  faMoneyCheckDollar,\n  faMoneyCheckAlt,\n  faVectorSquare,\n  faBreadSlice,\n  faLanguage,\n  faFaceKissWinkHeart,\n  faKissWinkHeart,\n  faFilter,\n  faQuestion,\n  faFileSignature,\n  faUpDownLeftRight,\n  faArrowsAlt,\n  faHouseChimneyUser,\n  faHandHoldingHeart,\n  faPuzzlePiece,\n  faMoneyCheck,\n  faStarHalfStroke,\n  faStarHalfAlt,\n  faCode,\n  faWhiskeyGlass,\n  faGlassWhiskey,\n  faBuildingCircleExclamation,\n  faMagnifyingGlassChart,\n  faArrowUpRightFromSquare,\n  faExternalLink,\n  faCubesStacked,\n  faWonSign,\n  faKrw,\n  faWon,\n  faVirusCovid,\n  faAustralSign,\n  faF,\n  faLeaf,\n  faRoad,\n  faTaxi,\n  faCab,\n  faPersonCirclePlus,\n  faChartPie,\n  faPieChart,\n  faBoltLightning,\n  faSackXmark,\n  faFileExcel,\n  faFileContract,\n  faFishFins,\n  faBuildingFlag,\n  faFaceGrinBeam,\n  faGrinBeam,\n  faObjectUngroup,\n  faPoop,\n  faLocationPin,\n  faMapMarker,\n  faKaaba,\n  faToiletPaper,\n  faHelmetSafety,\n  faHardHat,\n  faHatHard,\n  faEject,\n  faCircleRight,\n  faArrowAltCircleRight,\n  faPlaneCircleCheck,\n  faFaceRollingEyes,\n  faMehRollingEyes,\n  faObjectGroup,\n  faChartLine,\n  faLineChart,\n  faMaskVentilator,\n  faArrowRight,\n  faSignsPost,\n  faMapSigns,\n  faCashRegister,\n  faPersonCircleQuestion,\n  faH,\n  faTarp,\n  faScrewdriverWrench,\n  faTools,\n  faArrowsToEye,\n  faPlugCircleBolt,\n  faHeart,\n  faMarsAndVenus,\n  faHouseUser,\n  faHomeUser,\n  faDumpsterFire,\n  faHouseCrack,\n  faMartiniGlassCitrus,\n  faCocktail,\n  faFaceSurprise,\n  faSurprise,\n  faBottleWater,\n  faCirclePause,\n  faPauseCircle,\n  faToiletPaperSlash,\n  faAppleWhole,\n  faAppleAlt,\n  faKitchenSet,\n  faR,\n  faTemperatureQuarter,\n  faTemperature1,\n  faThermometer1,\n  faThermometerQuarter,\n  faCube,\n  faBitcoinSign,\n  faShieldDog,\n  faSolarPanel,\n  faLockOpen,\n  faElevator,\n  faMoneyBillTransfer,\n  faMoneyBillTrendUp,\n  faHouseFloodWaterCircleArrowRight,\n  faSquarePollHorizontal,\n  faPollH,\n  faCircle,\n  faBackwardFast,\n  faFastBackward,\n  faRecycle,\n  faUserAstronaut,\n  faPlaneSlash,\n  faTrademark,\n  faBasketball,\n  faBasketballBall,\n  faSatelliteDish,\n  faCircleUp,\n  faArrowAltCircleUp,\n  faMobileScreenButton,\n  faMobileAlt,\n  faVolumeHigh,\n  faVolumeUp,\n  faUsersRays,\n  faWallet,\n  faClipboardCheck,\n  faFileAudio,\n  faBurger,\n  faHamburger,\n  faWrench,\n  faBugs,\n  faRupeeSign,\n  faRupee,\n  faFileImage,\n  faCircleQuestion,\n  faQuestionCircle,\n  faPlaneDeparture,\n  faHandshakeSlash,\n  faBookBookmark,\n  faCodeBranch,\n  faHatCowboy,\n  faBridge,\n  faPhoneFlip,\n  faPhoneAlt,\n  faTruckFront,\n  faCat,\n  faAnchorCircleExclamation,\n  faTruckField,\n  faRoute,\n  faClipboardQuestion,\n  faPanorama,\n  faCommentMedical,\n  faTeethOpen,\n  faFileCircleMinus,\n  faTags,\n  faWineGlass,\n  faForwardFast,\n  faFastForward,\n  faFaceMehBlank,\n  faMehBlank,\n  faSquareParking,\n  faParking,\n  faHouseSignal,\n  faBarsProgress,\n  faTasksAlt,\n  faFaucetDrip,\n  faCartFlatbed,\n  faDollyFlatbed,\n  faBanSmoking,\n  faSmokingBan,\n  faTerminal,\n  faMobileButton,\n  faHouseMedicalFlag,\n  faBasketShopping,\n  faShoppingBasket,\n  faTape,\n  faBusSimple,\n  faBusAlt,\n  faEye,\n  faFaceSadCry,\n  faSadCry,\n  faAudioDescription,\n  faPersonMilitaryToPerson,\n  faFileShield,\n  faUserSlash,\n  faPen,\n  faTowerObservation,\n  faFileCode,\n  faSignal,\n  faSignal5,\n  faSignalPerfect,\n  faBus,\n  faHeartCircleXmark,\n  faHouseChimney,\n  faHomeLg,\n  faWindowMaximize,\n  faFaceFrown,\n  faFrown,\n  faPrescription,\n  faShop,\n  faStoreAlt,\n  faFloppyDisk,\n  faSave,\n  faVihara,\n  faScaleUnbalanced,\n  faBalanceScaleLeft,\n  faSortUp,\n  faSortAsc,\n  faCommentDots,\n  faCommenting,\n  faPlantWilt,\n  faDiamond,\n  faFaceGrinSquint,\n  faGrinSquint,\n  faHandHoldingDollar,\n  faHandHoldingUsd,\n  faChartDiagram,\n  faBacterium,\n  faHandPointer,\n  faDrumSteelpan,\n  faHandScissors,\n  faHandsPraying,\n  faPrayingHands,\n  faArrowRotateRight,\n  faArrowRightRotate,\n  faArrowRotateForward,\n  faRedo,\n  faWebAwesome,\n  faBiohazard,\n  faLocationCrosshairs,\n  faLocation,\n  faMarsDouble,\n  faChildDress,\n  faUsersBetweenLines,\n  faLungsVirus,\n  faFaceGrinTears,\n  faGrinTears,\n  faPhone,\n  faCalendarXmark,\n  faCalendarTimes,\n  faChildReaching,\n  faHeadSideVirus,\n  faUserGear,\n  faUserCog,\n  faArrowUp19,\n  faSortNumericUp,\n  faDoorClosed,\n  faShieldVirus,\n  faDiceSix,\n  faMosquitoNet,\n  faFileFragment,\n  faBridgeWater,\n  faPersonBooth,\n  faTextWidth,\n  faHatWizard,\n  faPenFancy,\n  faPersonDigging,\n  faDigging,\n  faTrash,\n  faGaugeSimple,\n  faGaugeSimpleMed,\n  faTachometerAverage,\n  faBookMedical,\n  faPoo,\n  faQuoteRight,\n  faQuoteRightAlt,\n  faShirt,\n  faTShirt,\n  faTshirt,\n  faCubes,\n  faDivide,\n  faTengeSign,\n  faTenge,\n  faHeadphones,\n  faHandsHolding,\n  faHandsClapping,\n  faRepublican,\n  faArrowLeft,\n  faPersonCircleXmark,\n  faRuler,\n  faAlignLeft,\n  faDiceD6,\n  faRestroom,\n  faJ,\n  faUsersViewfinder,\n  faFileVideo,\n  faUpRightFromSquare,\n  faExternalLinkAlt,\n  faTableCells,\n  faTh,\n  faFilePdf,\n  faBookBible,\n  faBible,\n  faO,\n  faSuitcaseMedical,\n  faMedkit,\n  faUserSecret,\n  faOtter,\n  faPersonDress,\n  faFemale,\n  faCommentDollar,\n  faBusinessTime,\n  faBriefcaseClock,\n  faTableCellsLarge,\n  faThLarge,\n  faBookTanakh,\n  faTanakh,\n  faPhoneVolume,\n  faVolumeControlPhone,\n  faHatCowboySide,\n  faClipboardUser,\n  faChild,\n  faLiraSign,\n  faSatellite,\n  faPlaneLock,\n  faTag,\n  faComment,\n  faCakeCandles,\n  faBirthdayCake,\n  faCake,\n  faEnvelope,\n  faAnglesUp,\n  faAngleDoubleUp,\n  faPaperclip,\n  faArrowRightToCity,\n  faRibbon,\n  faLungs,\n  faArrowUp91,\n  faSortNumericUpAlt,\n  faLitecoinSign,\n  faBorderNone,\n  faCircleNodes,\n  faParachuteBox,\n  faIndent,\n  faTruckFieldUn,\n  faHourglass,\n  faHourglassEmpty,\n  faMountain,\n  faUserDoctor,\n  faUserMd,\n  faCircleInfo,\n  faInfoCircle,\n  faCloudMeatball,\n  faCamera,\n  faCameraAlt,\n  faSquareVirus,\n  faMeteor,\n  faCarOn,\n  faSleigh,\n  faArrowDown19,\n  faSortNumericAsc,\n  faSortNumericDown,\n  faHandHoldingDroplet,\n  faHandHoldingWater,\n  faWater,\n  faCalendarCheck,\n  faBraille,\n  faPrescriptionBottleMedical,\n  faPrescriptionBottleAlt,\n  faLandmark,\n  faTruck,\n  faCrosshairs,\n  faPersonCane,\n  faTent,\n  faVestPatches,\n  faCheckDouble,\n  faArrowDownAZ,\n  faSortAlphaAsc,\n  faSortAlphaDown,\n  faMoneyBillWheat,\n  faCookie,\n  faArrowRotateLeft,\n  faArrowLeftRotate,\n  faArrowRotateBack,\n  faArrowRotateBackward,\n  faUndo,\n  faHardDrive,\n  faHdd,\n  faFaceGrinSquintTears,\n  faGrinSquintTears,\n  faDumbbell,\n  faRectangleList,\n  faListAlt,\n  faTarpDroplet,\n  faHouseMedicalCircleCheck,\n  faPersonSkiingNordic,\n  faSkiingNordic,\n  faCalendarPlus,\n  faPlaneArrival,\n  faCircleLeft,\n  faArrowAltCircleLeft,\n  faTrainSubway,\n  faSubway,\n  faChartGantt,\n  faIndianRupeeSign,\n  faIndianRupee,\n  faInr,\n  faCropSimple,\n  faCropAlt,\n  faMoneyBill1,\n  faMoneyBillAlt,\n  faLeftLong,\n  faLongArrowAltLeft,\n  faDna,\n  faVirusSlash,\n  faMinus,\n  faSubtract,\n  faChess,\n  faArrowLeftLong,\n  faLongArrowLeft,\n  faPlugCircleCheck,\n  faStreetView,\n  faFrancSign,\n  faVolumeOff,\n  faHandsAslInterpreting,\n  faAmericanSignLanguageInterpreting,\n  faAslInterpreting,\n  faHandsAmericanSignLanguageInterpreting,\n  faGear,\n  faCog,\n  faDropletSlash,\n  faTintSlash,\n  faMosque,\n  faMosquito,\n  faStarOfDavid,\n  faPersonMilitaryRifle,\n  faCartShopping,\n  faShoppingCart,\n  faVials,\n  faPlugCirclePlus,\n  faPlaceOfWorship,\n  faGripVertical,\n  faHexagonNodes,\n  faArrowTurnUp,\n  faLevelUp,\n  faU,\n  faSquareRootVariable,\n  faSquareRootAlt,\n  faClock,\n  faClockFour,\n  faBackwardStep,\n  faStepBackward,\n  faPallet,\n  faFaucet,\n  faBaseballBatBall,\n  faS,\n  faTimeline,\n  faKeyboard,\n  faCaretDown,\n  faHouseChimneyMedical,\n  faClinicMedical,\n  faTemperatureThreeQuarters,\n  faTemperature3,\n  faThermometer3,\n  faThermometerThreeQuarters,\n  faMobileScreen,\n  faMobileAndroidAlt,\n  faPlaneUp,\n  faPiggyBank,\n  faBatteryHalf,\n  faBattery3,\n  faMountainCity,\n  faCoins,\n  faKhanda,\n  faSliders,\n  faSlidersH,\n  faFolderTree,\n  faNetworkWired,\n  faMapPin,\n  faHamsa,\n  faCentSign,\n  faFlask,\n  faPersonPregnant,\n  faWandSparkles,\n  faEllipsisVertical,\n  faEllipsisV,\n  faTicket,\n  faPowerOff,\n  faRightLong,\n  faLongArrowAltRight,\n  faFlagUsa,\n  faLaptopFile,\n  faTty,\n  faTeletype,\n  faDiagramNext,\n  faPersonRifle,\n  faHouseMedicalCircleExclamation,\n  faClosedCaptioning,\n  faPersonHiking,\n  faHiking,\n  faVenusDouble,\n  faImages,\n  faCalculator,\n  faPeoplePulling,\n  faN,\n  faCableCar,\n  faTram,\n  faCloudRain,\n  faBuildingCircleXmark,\n  faShip,\n  faArrowsDownToLine,\n  faDownload,\n  faFaceGrin,\n  faGrin,\n  faDeleteLeft,\n  faBackspace,\n  faEyeDropper,\n  faEyeDropperEmpty,\n  faEyedropper,\n  faFileCircleCheck,\n  faForward,\n  faMobile,\n  faMobileAndroid,\n  faMobilePhone,\n  faFaceMeh,\n  faMeh,\n  faAlignCenter,\n  faBookSkull,\n  faBookDead,\n  faIdCard,\n  faDriversLicense,\n  faOutdent,\n  faDedent,\n  faHeartCircleExclamation,\n  faHouse,\n  faHome,\n  faHomeAlt,\n  faHomeLgAlt,\n  faCalendarWeek,\n  faLaptopMedical,\n  faB,\n  faFileMedical,\n  faDiceOne,\n  faKiwiBird,\n  faArrowRightArrowLeft,\n  faExchange,\n  faRotateRight,\n  faRedoAlt,\n  faRotateForward,\n  faUtensils,\n  faCutlery,\n  faArrowUpWideShort,\n  faSortAmountUp,\n  faMillSign,\n  faBowlRice,\n  faSkull,\n  faTowerBroadcast,\n  faBroadcastTower,\n  faTruckPickup,\n  faUpLong,\n  faLongArrowAltUp,\n  faStop,\n  faCodeMerge,\n  faUpload,\n  faHurricane,\n  faMound,\n  faToiletPortable,\n  faCompactDisc,\n  faFileArrowDown,\n  faFileDownload,\n  faCaravan,\n  faShieldCat,\n  faBolt,\n  faZap,\n  faGlassWater,\n  faOilWell,\n  faVault,\n  faMars,\n  faToilet,\n  faPlaneCircleXmark,\n  faYenSign,\n  faCny,\n  faJpy,\n  faRmb,\n  faYen,\n  faRubleSign,\n  faRouble,\n  faRub,\n  faRuble,\n  faSun,\n  faGuitar,\n  faFaceLaughWink,\n  faLaughWink,\n  faHorseHead,\n  faBoreHole,\n  faIndustry,\n  faCircleDown,\n  faArrowAltCircleDown,\n  faArrowsTurnToDots,\n  faFlorinSign,\n  faArrowDownShortWide,\n  faSortAmountDesc,\n  faSortAmountDownAlt,\n  faLessThan,\n  faAngleDown,\n  faCarTunnel,\n  faHeadSideCough,\n  faGripLines,\n  faThumbsDown,\n  faUserLock,\n  faArrowRightLong,\n  faLongArrowRight,\n  faAnchorCircleXmark,\n  faEllipsis,\n  faEllipsisH,\n  faChessPawn,\n  faKitMedical,\n  faFirstAid,\n  faPersonThroughWindow,\n  faToolbox,\n  faHandsHoldingCircle,\n  faBug,\n  faCreditCard,\n  faCreditCardAlt,\n  faCar,\n  faAutomobile,\n  faHandHoldingHand,\n  faBookOpenReader,\n  faBookReader,\n  faMountainSun,\n  faArrowsLeftRightToLine,\n  faDiceD20,\n  faTruckDroplet,\n  faFileCircleXmark,\n  faTemperatureArrowUp,\n  faTemperatureUp,\n  faMedal,\n  faBed,\n  faSquareH,\n  faHSquare,\n  faPodcast,\n  faTemperatureFull,\n  faTemperature4,\n  faThermometer4,\n  faThermometerFull,\n  faBell,\n  faSuperscript,\n  faPlugCircleXmark,\n  faStarOfLife,\n  faPhoneSlash,\n  faPaintRoller,\n  faHandshakeAngle,\n  faHandsHelping,\n  faLocationDot,\n  faMapMarkerAlt,\n  faFile,\n  faGreaterThan,\n  faPersonSwimming,\n  faSwimmer,\n  faArrowDown,\n  faDroplet,\n  faTint,\n  faEraser,\n  faEarthAmericas,\n  faEarth,\n  faEarthAmerica,\n  faGlobeAmericas,\n  faPersonBurst,\n  faDove,\n  faBatteryEmpty,\n  faBattery0,\n  faSocks,\n  faInbox,\n  faSection,\n  faGaugeHigh,\n  faTachometerAlt,\n  faTachometerAltFast,\n  faEnvelopeOpenText,\n  faHospital,\n  faHospitalAlt,\n  faHospitalWide,\n  faWineBottle,\n  faChessRook,\n  faBarsStaggered,\n  faReorder,\n  faStream,\n  faDharmachakra,\n  faHotdog,\n  faPersonWalkingWithCane,\n  faBlind,\n  faDrum,\n  faIceCream,\n  faHeartCircleBolt,\n  faFax,\n  faParagraph,\n  faCheckToSlot,\n  faVoteYea,\n  faStarHalf,\n  faBoxesStacked,\n  faBoxes,\n  faBoxesAlt,\n  faLink,\n  faChain,\n  faEarListen,\n  faAssistiveListeningSystems,\n  faTreeCity,\n  faPlay,\n  faFont,\n  faTableCellsRowLock,\n  faRupiahSign,\n  faMagnifyingGlass,\n  faSearch,\n  faTableTennisPaddleBall,\n  faPingPongPaddleBall,\n  faTableTennis,\n  faPersonDotsFromLine,\n  faDiagnoses,\n  faTrashCanArrowUp,\n  faTrashRestoreAlt,\n  faNairaSign,\n  faCartArrowDown,\n  faWalkieTalkie,\n  faFilePen,\n  faFileEdit,\n  faReceipt,\n  faSquarePen,\n  faPenSquare,\n  faPencilSquare,\n  faSuitcaseRolling,\n  faPersonCircleExclamation,\n  faChevronDown,\n  faBatteryFull,\n  faBattery,\n  faBattery5,\n  faSkullCrossbones,\n  faCodeCompare,\n  faListUl,\n  faListDots,\n  faSchoolLock,\n  faTowerCell,\n  faDownLong,\n  faLongArrowAltDown,\n  faRankingStar,\n  faChessKing,\n  faPersonHarassing,\n  faBrazilianRealSign,\n  faLandmarkDome,\n  faLandmarkAlt,\n  faArrowUp,\n  faTv,\n  faTelevision,\n  faTvAlt,\n  faShrimp,\n  faListCheck,\n  faTasks,\n  faJugDetergent,\n  faCircleUser,\n  faUserCircle,\n  faUserShield,\n  faWind,\n  faCarBurst,\n  faCarCrash,\n  faY,\n  faPersonSnowboarding,\n  faSnowboarding,\n  faTruckFast,\n  faShippingFast,\n  faFish,\n  faUserGraduate,\n  faCircleHalfStroke,\n  faAdjust,\n  faClapperboard,\n  faCircleRadiation,\n  faRadiationAlt,\n  faBaseball,\n  faBaseballBall,\n  faJetFighterUp,\n  faDiagramProject,\n  faProjectDiagram,\n  faCopy,\n  faVolumeXmark,\n  faVolumeMute,\n  faVolumeTimes,\n  faHandSparkles,\n  faGrip,\n  faGripHorizontal,\n  faShareFromSquare,\n  faShareSquare,\n  faChildCombatant,\n  faChildRifle,\n  faGun,\n  faSquarePhone,\n  faPhoneSquare,\n  faPlus,\n  faAdd,\n  faExpand,\n  faComputer,\n  faXmark,\n  faClose,\n  faMultiply,\n  faRemove,\n  faTimes,\n  faArrowsUpDownLeftRight,\n  faArrows,\n  faChalkboardUser,\n  faChalkboardTeacher,\n  faPesoSign,\n  faBuildingShield,\n  faBaby,\n  faUsersLine,\n  faQuoteLeft,\n  faQuoteLeftAlt,\n  faTractor,\n  faTrashArrowUp,\n  faTrashRestore,\n  faArrowDownUpLock,\n  faLinesLeaning,\n  faRulerCombined,\n  faCopyright,\n  faEquals,\n  faBlender,\n  faTeeth,\n  faShekelSign,\n  faIls,\n  faShekel,\n  faSheqel,\n  faSheqelSign,\n  faMap,\n  faRocket,\n  faPhotoFilm,\n  faPhotoVideo,\n  faFolderMinus,\n  faHexagonNodesBolt,\n  faStore,\n  faArrowTrendUp,\n  faPlugCircleMinus,\n  faSignHanging,\n  faSign,\n  faBezierCurve,\n  faBellSlash,\n  faTablet,\n  faTabletAndroid,\n  faSchoolFlag,\n  faFill,\n  faAngleUp,\n  faDrumstickBite,\n  faHollyBerry,\n  faChevronLeft,\n  faBacteria,\n  faHandLizard,\n  faNotdef,\n  faDisease,\n  faBriefcaseMedical,\n  faGenderless,\n  faChevronRight,\n  faRetweet,\n  faCarRear,\n  faCarAlt,\n  faPumpSoap,\n  faVideoSlash,\n  faBatteryQuarter,\n  faBattery2,\n  faRadio,\n  faBabyCarriage,\n  faCarriageBaby,\n  faTrafficLight,\n  faThermometer,\n  faVrCardboard,\n  faHandMiddleFinger,\n  faPercent,\n  faPercentage,\n  faTruckMoving,\n  faGlassWaterDroplet,\n  faDisplay,\n  faFaceSmile,\n  faSmile,\n  faThumbtack,\n  faThumbTack,\n  faTrophy,\n  faPersonPraying,\n  faPray,\n  faHammer,\n  faHandPeace,\n  faRotate,\n  faSyncAlt,\n  faSpinner,\n  faRobot,\n  faPeace,\n  faGears,\n  faCogs,\n  faWarehouse,\n  faArrowUpRightDots,\n  faSplotch,\n  faFaceGrinHearts,\n  faGrinHearts,\n  faDiceFour,\n  faSimCard,\n  faTransgender,\n  faTransgenderAlt,\n  faMercury,\n  faArrowTurnDown,\n  faLevelDown,\n  faPersonFallingBurst,\n  faAward,\n  faTicketSimple,\n  faTicketAlt,\n  faBuilding,\n  faAnglesLeft,\n  faAngleDoubleLeft,\n  faQrcode,\n  faClockRotateLeft,\n  faHistory,\n  faFaceGrinBeamSweat,\n  faGrinBeamSweat,\n  faFileExport,\n  faArrowRightFromFile,\n  faShield,\n  faShieldBlank,\n  faArrowUpShortWide,\n  faSortAmountUpAlt,\n  faCommentNodes,\n  faHouseMedical,\n  faGolfBallTee,\n  faGolfBall,\n  faCircleChevronLeft,\n  faChevronCircleLeft,\n  faHouseChimneyWindow,\n  faPenNib,\n  faTentArrowTurnLeft,\n  faTents,\n  faWandMagic,\n  faMagic,\n  faDog,\n  faCarrot,\n  faMoon,\n  faWineGlassEmpty,\n  faWineGlassAlt,\n  faCheese,\n  faYinYang,\n  faMusic,\n  faCodeCommit,\n  faTemperatureLow,\n  faPersonBiking,\n  faBiking,\n  faBroom,\n  faShieldHeart,\n  faGopuram,\n  faEarthOceania,\n  faGlobeOceania,\n  faSquareXmark,\n  faTimesSquare,\n  faXmarkSquare,\n  faHashtag,\n  faUpRightAndDownLeftFromCenter,\n  faExpandAlt,\n  faOilCan,\n  faT,\n  faHippo,\n  faChartColumn,\n  faInfinity,\n  faVialCircleCheck,\n  faPersonArrowDownToLine,\n  faVoicemail,\n  faFan,\n  faPersonWalkingLuggage,\n  faUpDown,\n  faArrowsAltV,\n  faCloudMoonRain,\n  faCalendar,\n  faTrailer,\n  faBahai,\n  faHaykal,\n  faSdCard,\n  faDragon,\n  faShoePrints,\n  faCirclePlus,\n  faPlusCircle,\n  faFaceGrinTongueWink,\n  faGrinTongueWink,\n  faHandHolding,\n  faPlugCircleExclamation,\n  faLinkSlash,\n  faChainBroken,\n  faChainSlash,\n  faUnlink,\n  faClone,\n  faPersonWalkingArrowLoopLeft,\n  faArrowUpZA,\n  faSortAlphaUpAlt,\n  faFireFlameCurved,\n  faFireAlt,\n  faTornado,\n  faFileCirclePlus,\n  faBookQuran,\n  faQuran,\n  faAnchor,\n  faBorderAll,\n  faFaceAngry,\n  faAngry,\n  faCookieBite,\n  faArrowTrendDown,\n  faRss,\n  faFeed,\n  faDrawPolygon,\n  faScaleBalanced,\n  faBalanceScale,\n  faGaugeSimpleHigh,\n  faTachometer,\n  faTachometerFast,\n  faShower,\n  faDesktop,\n  faDesktopAlt,\n  faM,\n  faTableList,\n  faThList,\n  faCommentSms,\n  faSms,\n  faBook,\n  faUserPlus,\n  faCheck,\n  faBatteryThreeQuarters,\n  faBattery4,\n  faHouseCircleCheck,\n  faAngleLeft,\n  faDiagramSuccessor,\n  faTruckArrowRight,\n  faArrowsSplitUpAndLeft,\n  faHandFist,\n  faFistRaised,\n  faCloudMoon,\n  faBriefcase,\n  faPersonFalling,\n  faImagePortrait,\n  faPortrait,\n  faUserTag,\n  faRug,\n  faEarthEurope,\n  faGlobeEurope,\n  faCartFlatbedSuitcase,\n  faLuggageCart,\n  faRectangleXmark,\n  faRectangleTimes,\n  faTimesRectangle,\n  faWindowClose,\n  faBahtSign,\n  faBookOpen,\n  faBookJournalWhills,\n  faJournalWhills,\n  faHandcuffs,\n  faTriangleExclamation,\n  faExclamationTriangle,\n  faWarning,\n  faDatabase,\n  faShare,\n  faMailForward,\n  faBottleDroplet,\n  faMaskFace,\n  faHillRockslide,\n  faRightLeft,\n  faExchangeAlt,\n  faPaperPlane,\n  faRoadCircleExclamation,\n  faDungeon,\n  faAlignRight,\n  faMoneyBill1Wave,\n  faMoneyBillWaveAlt,\n  faLifeRing,\n  faHands,\n  faSignLanguage,\n  faSigning,\n  faCalendarDay,\n  faWaterLadder,\n  faLadderWater,\n  faSwimmingPool,\n  faArrowsUpDown,\n  faArrowsV,\n  faFaceGrimace,\n  faGrimace,\n  faWheelchairMove,\n  faWheelchairAlt,\n  faTurnDown,\n  faLevelDownAlt,\n  faPersonWalkingArrowRight,\n  faSquareEnvelope,\n  faEnvelopeSquare,\n  faDice,\n  faBowlingBall,\n  faBrain,\n  faBandage,\n  faBandAid,\n  faCalendarMinus,\n  faCircleXmark,\n  faTimesCircle,\n  faXmarkCircle,\n  faGifts,\n  faHotel,\n  faEarthAsia,\n  faGlobeAsia,\n  faIdCardClip,\n  faIdCardAlt,\n  faMagnifyingGlassPlus,\n  faSearchPlus,\n  faThumbsUp,\n  faUserClock,\n  faHandDots,\n  faAllergies,\n  faFileInvoice,\n  faWindowMinimize,\n  faMugSaucer,\n  faCoffee,\n  faBrush,\n  faFileHalfDashed,\n  faMask,\n  faMagnifyingGlassMinus,\n  faSearchMinus,\n  faRulerVertical,\n  faUserLarge,\n  faUserAlt,\n  faTrainTram,\n  faUserNurse,\n  faSyringe,\n  faCloudSun,\n  faStopwatch20,\n  faSquareFull,\n  faMagnet,\n  faJar,\n  faNoteSticky,\n  faStickyNote,\n  faBugSlash,\n  faArrowUpFromWaterPump,\n  faBone,\n  faTableCellsRowUnlock,\n  faUserInjured,\n  faFaceSadTear,\n  faSadTear,\n  faPlane,\n  faTentArrowsDown,\n  faExclamation,\n  faArrowsSpin,\n  faPrint,\n  faTurkishLiraSign,\n  faTry,\n  faTurkishLira,\n  faDollarSign,\n  faDollar,\n  faUsd,\n  faX,\n  faMagnifyingGlassDollar,\n  faSearchDollar,\n  faUsersGear,\n  faUsersCog,\n  faPersonMilitaryPointing,\n  faBuildingColumns,\n  faBank,\n  faInstitution,\n  faMuseum,\n  faUniversity,\n  faUmbrella,\n  faTrowel,\n  faD,\n  faStapler,\n  faMasksTheater,\n  faTheaterMasks,\n  faKipSign,\n  faHandPointLeft,\n  faHandshakeSimple,\n  faHandshakeAlt,\n  faJetFighter,\n  faFighterJet,\n  faSquareShareNodes,\n  faShareAltSquare,\n  faBarcode,\n  faPlusMinus,\n  faVideo,\n  faVideoCamera,\n  faGraduationCap,\n  faMortarBoard,\n  faHandHoldingMedical,\n  faPersonCircleCheck,\n  faTurnUp,\n  faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBangladeshiTakaSign, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faThumbtackSlash, faThumbTackSlash, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faSquareBinary, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faTableCellsColumnLock, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faChartDiagram, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faWebAwesome, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faFileFragment, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faHexagonNodes, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faTableCellsRowLock, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faChildCombatant, faChildRifle, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faHexagonNodesBolt, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faNotdef, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faCommentNodes, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faFileHalfDashed, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faTableCellsRowUnlock, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n","import React from \"react\";\nimport {\n  FontAwesomeIcon,\n  FontAwesomeIconProps,\n} from \"@fortawesome/react-fontawesome\";\nimport { faAngleDown } from \"@fortawesome/free-solid-svg-icons\";\nimport { useTheme } from \"@mui/material/styles\";\n\ntype DownArrowIconProps = Omit<FontAwesomeIconProps, \"icon\"> & {\n  color?: \"primary\" | \"inherit\";\n};\n\nconst DownArrow: React.FC<DownArrowIconProps> = ({ color, ...iconProps }) => {\n  const theme = useTheme();\n\n  return (\n    <FontAwesomeIcon\n      icon={faAngleDown}\n      size=\"sm\"\n      css={{\n        color: color === \"primary\" ? theme.palette.primary.main : \"inherit\",\n      }}\n      {...iconProps}\n    />\n  );\n};\n\nexport default DownArrow;\n","import React, { FC } from \"react\";\nimport {\n  FontAwesomeIcon,\n  FontAwesomeIconProps,\n} from \"@fortawesome/react-fontawesome\";\nimport { faDownload } from \"@fortawesome/free-solid-svg-icons\";\nimport { useTheme } from \"@mui/material/styles\";\n\ntype DownloadIconProps = Omit<FontAwesomeIconProps, \"icon\"> & {\n  color?: \"primary\" | \"inherit\";\n};\n\nconst Download: FC<DownloadIconProps> = ({ color, ...iconProps }) => {\n  const theme = useTheme();\n\n  return (\n    <FontAwesomeIcon\n      icon={faDownload}\n      css={{\n        color: color === \"primary\" ? theme.palette.primary.main : \"inherit\",\n      }}\n      {...iconProps}\n    />\n  );\n};\n\nexport default Download;\n","import React from \"react\";\nimport {\n  FontAwesomeIcon,\n  FontAwesomeIconProps,\n} from \"@fortawesome/react-fontawesome\";\nimport { faMagnifyingGlass } from \"@fortawesome/free-solid-svg-icons\";\nimport { useTheme } from \"@mui/material/styles\";\n\ntype SearchIconProps = Omit<FontAwesomeIconProps, \"icon\"> & {\n  color?: \"primary\" | \"inherit\";\n};\n\nconst SearchIcon: React.FC<SearchIconProps> = ({ color, ...faIconProps }) => {\n  const theme = useTheme();\n\n  return (\n    <FontAwesomeIcon\n      icon={faMagnifyingGlass}\n      css={{\n        color: color === \"primary\" ? theme.palette.primary.main : \"inherit\",\n      }}\n      {...faIconProps}\n    />\n  );\n};\n\nexport default SearchIcon;\n","import React, { ReactNode } from \"react\";\nimport Typography, { TypographyProps } from \"@mui/material/Typography\";\nimport { TypographyVariant } from \"../../../tokens\";\n\nexport type BaseProps = Omit<TypographyProps, \"variant\" | \"paragraph\">;\n\nexport type HeadingProps = BaseProps &\n  Partial<{\n    /**\n     * The type of text style to use.\n     */\n    variant: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n  }>;\n\nexport type TextProps = BaseProps &\n  Partial<{\n    /**\n     * If true, the element will be a paragraph element.\n     */\n    paragraph: boolean;\n    /**\n     * The type of text style to use.\n     */\n    variant: TypographyVariant | \"subtitle2\" | \"overline\" | \"caption\";\n  }>;\n\nconst Text: React.FC<TextProps> = ({ variant = \"body1\", component = \"p\", ...textProps }) => (\n  <Typography component={component} variant={variant} {...textProps} />\n);\n\nconst H1: React.FC<HeadingProps> = ({ variant = \"h1\", ...headingProps }) => (\n  <Typography component=\"h1\" variant={variant} {...headingProps} />\n);\n\nconst H2: React.FC<HeadingProps> = ({ variant = \"h2\", ...headingProps }) => (\n  <Typography component=\"h2\" variant={variant} {...headingProps} />\n);\n\nconst H3: React.FC<HeadingProps> = ({ variant = \"h3\", ...headingProps }) => (\n  <Typography component=\"h3\" variant={variant} {...headingProps} />\n);\n\nconst H4: React.FC<HeadingProps> = ({ variant = \"h4\", ...headingProps }) => (\n  <Typography component=\"h4\" variant={variant} {...headingProps} />\n);\n\nconst H5: React.FC<HeadingProps> = ({ variant = \"h5\", ...headingProps }) => (\n  <Typography component=\"h5\" variant={variant} {...headingProps} />\n);\n\nconst H6: React.FC<HeadingProps> = ({ variant = \"h6\", ...headingProps }) => (\n  <Typography component=\"h6\" variant={variant} {...headingProps} />\n);\n\nexport default Text;\nexport { H1, H2, H3, H4, H5, H6, Text };\n","import React from \"react\";\nimport MUIList, { ListProps as MUIListProps } from \"@mui/material/List\";\nimport MUIListItem, {\n  ListItemProps as MUIListItemProps,\n} from \"@mui/material/ListItem\";\nimport MUIListItemButton, {\n  ListItemButtonProps as MUIListItemButtonProps,\n} from \"@mui/material/ListItemButton\";\nimport MUIListItemIcon, {\n  ListItemIconProps as MUIListItemIconProps,\n} from \"@mui/material/ListItemIcon\";\nimport MUIListItemText, {\n  ListItemTextProps as MUIListItemTextProps,\n} from \"@mui/material/ListItemText\";\n\nexport const List: React.FC<MUIListProps> = (listProps) => (\n  <MUIList {...listProps} />\n);\n\nexport const ListItem: React.FC<MUIListItemProps> = (listItemProps) => (\n  <MUIListItem {...listItemProps} />\n);\n\nexport const ListItemButton: React.FC<MUIListItemButtonProps> = (\n  listItemButtonProps\n) => <MUIListItemButton {...listItemButtonProps} />;\n\nexport const ListItemIcon: React.FC<MUIListItemIconProps> = (\n  listItemIconProps\n) => <MUIListItemIcon {...listItemIconProps} />;\n\ninterface ListItemTextProps\n  extends Omit<\n    MUIListItemTextProps,\n    \"primaryTypographyProps\" | \"secondaryTypographyProps\" | \"sx\"\n  > {}\nexport const ListItemText: React.FC<ListItemTextProps> = (props) => (\n  <MUIListItemText {...props} />\n);\n","export var util;\n(function (util) {\n    util.assertEqual = (_) => { };\n    function assertIs(_arg) { }\n    util.assertIs = assertIs;\n    function assertNever(_x) {\n        throw new Error();\n    }\n    util.assertNever = assertNever;\n    util.arrayToEnum = (items) => {\n        const obj = {};\n        for (const item of items) {\n            obj[item] = item;\n        }\n        return obj;\n    };\n    util.getValidEnumValues = (obj) => {\n        const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n        const filtered = {};\n        for (const k of validKeys) {\n            filtered[k] = obj[k];\n        }\n        return util.objectValues(filtered);\n    };\n    util.objectValues = (obj) => {\n        return util.objectKeys(obj).map(function (e) {\n            return obj[e];\n        });\n    };\n    util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n        ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n        : (object) => {\n            const keys = [];\n            for (const key in object) {\n                if (Object.prototype.hasOwnProperty.call(object, key)) {\n                    keys.push(key);\n                }\n            }\n            return keys;\n        };\n    util.find = (arr, checker) => {\n        for (const item of arr) {\n            if (checker(item))\n                return item;\n        }\n        return undefined;\n    };\n    util.isInteger = typeof Number.isInteger === \"function\"\n        ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n        : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n    function joinValues(array, separator = \" | \") {\n        return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n    }\n    util.joinValues = joinValues;\n    util.jsonStringifyReplacer = (_, value) => {\n        if (typeof value === \"bigint\") {\n            return value.toString();\n        }\n        return value;\n    };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n    objectUtil.mergeShapes = (first, second) => {\n        return {\n            ...first,\n            ...second, // second overwrites first\n        };\n    };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n    \"string\",\n    \"nan\",\n    \"number\",\n    \"integer\",\n    \"float\",\n    \"boolean\",\n    \"date\",\n    \"bigint\",\n    \"symbol\",\n    \"function\",\n    \"undefined\",\n    \"null\",\n    \"array\",\n    \"object\",\n    \"unknown\",\n    \"promise\",\n    \"void\",\n    \"never\",\n    \"map\",\n    \"set\",\n]);\nexport const getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"undefined\":\n            return ZodParsedType.undefined;\n        case \"string\":\n            return ZodParsedType.string;\n        case \"number\":\n            return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n        case \"boolean\":\n            return ZodParsedType.boolean;\n        case \"function\":\n            return ZodParsedType.function;\n        case \"bigint\":\n            return ZodParsedType.bigint;\n        case \"symbol\":\n            return ZodParsedType.symbol;\n        case \"object\":\n            if (Array.isArray(data)) {\n                return ZodParsedType.array;\n            }\n            if (data === null) {\n                return ZodParsedType.null;\n            }\n            if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n                return ZodParsedType.promise;\n            }\n            if (typeof Map !== \"undefined\" && data instanceof Map) {\n                return ZodParsedType.map;\n            }\n            if (typeof Set !== \"undefined\" && data instanceof Set) {\n                return ZodParsedType.set;\n            }\n            if (typeof Date !== \"undefined\" && data instanceof Date) {\n                return ZodParsedType.date;\n            }\n            return ZodParsedType.object;\n        default:\n            return ZodParsedType.unknown;\n    }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n    \"invalid_type\",\n    \"invalid_literal\",\n    \"custom\",\n    \"invalid_union\",\n    \"invalid_union_discriminator\",\n    \"invalid_enum_value\",\n    \"unrecognized_keys\",\n    \"invalid_arguments\",\n    \"invalid_return_type\",\n    \"invalid_date\",\n    \"invalid_string\",\n    \"too_small\",\n    \"too_big\",\n    \"invalid_intersection_types\",\n    \"not_multiple_of\",\n    \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n    const json = JSON.stringify(obj, null, 2);\n    return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n    get errors() {\n        return this.issues;\n    }\n    constructor(issues) {\n        super();\n        this.issues = [];\n        this.addIssue = (sub) => {\n            this.issues = [...this.issues, sub];\n        };\n        this.addIssues = (subs = []) => {\n            this.issues = [...this.issues, ...subs];\n        };\n        const actualProto = new.target.prototype;\n        if (Object.setPrototypeOf) {\n            // eslint-disable-next-line ban/ban\n            Object.setPrototypeOf(this, actualProto);\n        }\n        else {\n            this.__proto__ = actualProto;\n        }\n        this.name = \"ZodError\";\n        this.issues = issues;\n    }\n    format(_mapper) {\n        const mapper = _mapper ||\n            function (issue) {\n                return issue.message;\n            };\n        const fieldErrors = { _errors: [] };\n        const processError = (error) => {\n            for (const issue of error.issues) {\n                if (issue.code === \"invalid_union\") {\n                    issue.unionErrors.map(processError);\n                }\n                else if (issue.code === \"invalid_return_type\") {\n                    processError(issue.returnTypeError);\n                }\n                else if (issue.code === \"invalid_arguments\") {\n                    processError(issue.argumentsError);\n                }\n                else if (issue.path.length === 0) {\n                    fieldErrors._errors.push(mapper(issue));\n                }\n                else {\n                    let curr = fieldErrors;\n                    let i = 0;\n                    while (i < issue.path.length) {\n                        const el = issue.path[i];\n                        const terminal = i === issue.path.length - 1;\n                        if (!terminal) {\n                            curr[el] = curr[el] || { _errors: [] };\n                            // if (typeof el === \"string\") {\n                            //   curr[el] = curr[el] || { _errors: [] };\n                            // } else if (typeof el === \"number\") {\n                            //   const errorArray: any = [];\n                            //   errorArray._errors = [];\n                            //   curr[el] = curr[el] || errorArray;\n                            // }\n                        }\n                        else {\n                            curr[el] = curr[el] || { _errors: [] };\n                            curr[el]._errors.push(mapper(issue));\n                        }\n                        curr = curr[el];\n                        i++;\n                    }\n                }\n            }\n        };\n        processError(this);\n        return fieldErrors;\n    }\n    static assert(value) {\n        if (!(value instanceof ZodError)) {\n            throw new Error(`Not a ZodError: ${value}`);\n        }\n    }\n    toString() {\n        return this.message;\n    }\n    get message() {\n        return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n    }\n    get isEmpty() {\n        return this.issues.length === 0;\n    }\n    flatten(mapper = (issue) => issue.message) {\n        const fieldErrors = {};\n        const formErrors = [];\n        for (const sub of this.issues) {\n            if (sub.path.length > 0) {\n                const firstEl = sub.path[0];\n                fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n                fieldErrors[firstEl].push(mapper(sub));\n            }\n            else {\n                formErrors.push(mapper(sub));\n            }\n        }\n        return { formErrors, fieldErrors };\n    }\n    get formErrors() {\n        return this.flatten();\n    }\n}\nZodError.create = (issues) => {\n    const error = new ZodError(issues);\n    return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n    let message;\n    switch (issue.code) {\n        case ZodIssueCode.invalid_type:\n            if (issue.received === ZodParsedType.undefined) {\n                message = \"Required\";\n            }\n            else {\n                message = `Expected ${issue.expected}, received ${issue.received}`;\n            }\n            break;\n        case ZodIssueCode.invalid_literal:\n            message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n            break;\n        case ZodIssueCode.unrecognized_keys:\n            message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n            break;\n        case ZodIssueCode.invalid_union:\n            message = `Invalid input`;\n            break;\n        case ZodIssueCode.invalid_union_discriminator:\n            message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n            break;\n        case ZodIssueCode.invalid_enum_value:\n            message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n            break;\n        case ZodIssueCode.invalid_arguments:\n            message = `Invalid function arguments`;\n            break;\n        case ZodIssueCode.invalid_return_type:\n            message = `Invalid function return type`;\n            break;\n        case ZodIssueCode.invalid_date:\n            message = `Invalid date`;\n            break;\n        case ZodIssueCode.invalid_string:\n            if (typeof issue.validation === \"object\") {\n                if (\"includes\" in issue.validation) {\n                    message = `Invalid input: must include \"${issue.validation.includes}\"`;\n                    if (typeof issue.validation.position === \"number\") {\n                        message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n                    }\n                }\n                else if (\"startsWith\" in issue.validation) {\n                    message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n                }\n                else if (\"endsWith\" in issue.validation) {\n                    message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n                }\n                else {\n                    util.assertNever(issue.validation);\n                }\n            }\n            else if (issue.validation !== \"regex\") {\n                message = `Invalid ${issue.validation}`;\n            }\n            else {\n                message = \"Invalid\";\n            }\n            break;\n        case ZodIssueCode.too_small:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n            else if (issue.type === \"bigint\")\n                message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodIssueCode.too_big:\n            if (issue.type === \"array\")\n                message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n            else if (issue.type === \"string\")\n                message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n            else if (issue.type === \"number\")\n                message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"bigint\")\n                message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n            else if (issue.type === \"date\")\n                message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n            else\n                message = \"Invalid input\";\n            break;\n        case ZodIssueCode.custom:\n            message = `Invalid input`;\n            break;\n        case ZodIssueCode.invalid_intersection_types:\n            message = `Intersection results could not be merged`;\n            break;\n        case ZodIssueCode.not_multiple_of:\n            message = `Number must be a multiple of ${issue.multipleOf}`;\n            break;\n        case ZodIssueCode.not_finite:\n            message = \"Number must be finite\";\n            break;\n        default:\n            message = _ctx.defaultError;\n            util.assertNever(issue);\n    }\n    return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n    overrideErrorMap = map;\n}\nexport function getErrorMap() {\n    return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n    const { data, path, errorMaps, issueData } = params;\n    const fullPath = [...path, ...(issueData.path || [])];\n    const fullIssue = {\n        ...issueData,\n        path: fullPath,\n    };\n    if (issueData.message !== undefined) {\n        return {\n            ...issueData,\n            path: fullPath,\n            message: issueData.message,\n        };\n    }\n    let errorMessage = \"\";\n    const maps = errorMaps\n        .filter((m) => !!m)\n        .slice()\n        .reverse();\n    for (const map of maps) {\n        errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n    }\n    return {\n        ...issueData,\n        path: fullPath,\n        message: errorMessage,\n    };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n    const overrideMap = getErrorMap();\n    const issue = makeIssue({\n        issueData: issueData,\n        data: ctx.data,\n        path: ctx.path,\n        errorMaps: [\n            ctx.common.contextualErrorMap, // contextual error map is first priority\n            ctx.schemaErrorMap, // then schema-bound map if available\n            overrideMap, // then global override map\n            overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n        ].filter((x) => !!x),\n    });\n    ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n    constructor() {\n        this.value = \"valid\";\n    }\n    dirty() {\n        if (this.value === \"valid\")\n            this.value = \"dirty\";\n    }\n    abort() {\n        if (this.value !== \"aborted\")\n            this.value = \"aborted\";\n    }\n    static mergeArray(status, results) {\n        const arrayValue = [];\n        for (const s of results) {\n            if (s.status === \"aborted\")\n                return INVALID;\n            if (s.status === \"dirty\")\n                status.dirty();\n            arrayValue.push(s.value);\n        }\n        return { status: status.value, value: arrayValue };\n    }\n    static async mergeObjectAsync(status, pairs) {\n        const syncPairs = [];\n        for (const pair of pairs) {\n            const key = await pair.key;\n            const value = await pair.value;\n            syncPairs.push({\n                key,\n                value,\n            });\n        }\n        return ParseStatus.mergeObjectSync(status, syncPairs);\n    }\n    static mergeObjectSync(status, pairs) {\n        const finalObject = {};\n        for (const pair of pairs) {\n            const { key, value } = pair;\n            if (key.status === \"aborted\")\n                return INVALID;\n            if (value.status === \"aborted\")\n                return INVALID;\n            if (key.status === \"dirty\")\n                status.dirty();\n            if (value.status === \"dirty\")\n                status.dirty();\n            if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n                finalObject[key.value] = value.value;\n            }\n        }\n        return { status: status.value, value: finalObject };\n    }\n}\nexport const INVALID = Object.freeze({\n    status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n    errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n    // biome-ignore lint:\n    errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n    constructor(parent, value, path, key) {\n        this._cachedPath = [];\n        this.parent = parent;\n        this.data = value;\n        this._path = path;\n        this._key = key;\n    }\n    get path() {\n        if (!this._cachedPath.length) {\n            if (Array.isArray(this._key)) {\n                this._cachedPath.push(...this._path, ...this._key);\n            }\n            else {\n                this._cachedPath.push(...this._path, this._key);\n            }\n        }\n        return this._cachedPath;\n    }\n}\nconst handleResult = (ctx, result) => {\n    if (isValid(result)) {\n        return { success: true, data: result.value };\n    }\n    else {\n        if (!ctx.common.issues.length) {\n            throw new Error(\"Validation failed but no issues detected.\");\n        }\n        return {\n            success: false,\n            get error() {\n                if (this._error)\n                    return this._error;\n                const error = new ZodError(ctx.common.issues);\n                this._error = error;\n                return this._error;\n            },\n        };\n    }\n};\nfunction processCreateParams(params) {\n    if (!params)\n        return {};\n    const { errorMap, invalid_type_error, required_error, description } = params;\n    if (errorMap && (invalid_type_error || required_error)) {\n        throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n    }\n    if (errorMap)\n        return { errorMap: errorMap, description };\n    const customMap = (iss, ctx) => {\n        const { message } = params;\n        if (iss.code === \"invalid_enum_value\") {\n            return { message: message ?? ctx.defaultError };\n        }\n        if (typeof ctx.data === \"undefined\") {\n            return { message: message ?? required_error ?? ctx.defaultError };\n        }\n        if (iss.code !== \"invalid_type\")\n            return { message: ctx.defaultError };\n        return { message: message ?? invalid_type_error ?? ctx.defaultError };\n    };\n    return { errorMap: customMap, description };\n}\nexport class ZodType {\n    get description() {\n        return this._def.description;\n    }\n    _getType(input) {\n        return getParsedType(input.data);\n    }\n    _getOrReturnCtx(input, ctx) {\n        return (ctx || {\n            common: input.parent.common,\n            data: input.data,\n            parsedType: getParsedType(input.data),\n            schemaErrorMap: this._def.errorMap,\n            path: input.path,\n            parent: input.parent,\n        });\n    }\n    _processInputParams(input) {\n        return {\n            status: new ParseStatus(),\n            ctx: {\n                common: input.parent.common,\n                data: input.data,\n                parsedType: getParsedType(input.data),\n                schemaErrorMap: this._def.errorMap,\n                path: input.path,\n                parent: input.parent,\n            },\n        };\n    }\n    _parseSync(input) {\n        const result = this._parse(input);\n        if (isAsync(result)) {\n            throw new Error(\"Synchronous parse encountered promise.\");\n        }\n        return result;\n    }\n    _parseAsync(input) {\n        const result = this._parse(input);\n        return Promise.resolve(result);\n    }\n    parse(data, params) {\n        const result = this.safeParse(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    safeParse(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                async: params?.async ?? false,\n                contextualErrorMap: params?.errorMap,\n            },\n            path: params?.path || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n        return handleResult(ctx, result);\n    }\n    \"~validate\"(data) {\n        const ctx = {\n            common: {\n                issues: [],\n                async: !!this[\"~standard\"].async,\n            },\n            path: [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        if (!this[\"~standard\"].async) {\n            try {\n                const result = this._parseSync({ data, path: [], parent: ctx });\n                return isValid(result)\n                    ? {\n                        value: result.value,\n                    }\n                    : {\n                        issues: ctx.common.issues,\n                    };\n            }\n            catch (err) {\n                if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n                    this[\"~standard\"].async = true;\n                }\n                ctx.common = {\n                    issues: [],\n                    async: true,\n                };\n            }\n        }\n        return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n            ? {\n                value: result.value,\n            }\n            : {\n                issues: ctx.common.issues,\n            });\n    }\n    async parseAsync(data, params) {\n        const result = await this.safeParseAsync(data, params);\n        if (result.success)\n            return result.data;\n        throw result.error;\n    }\n    async safeParseAsync(data, params) {\n        const ctx = {\n            common: {\n                issues: [],\n                contextualErrorMap: params?.errorMap,\n                async: true,\n            },\n            path: params?.path || [],\n            schemaErrorMap: this._def.errorMap,\n            parent: null,\n            data,\n            parsedType: getParsedType(data),\n        };\n        const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n        const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n        return handleResult(ctx, result);\n    }\n    refine(check, message) {\n        const getIssueProperties = (val) => {\n            if (typeof message === \"string\" || typeof message === \"undefined\") {\n                return { message };\n            }\n            else if (typeof message === \"function\") {\n                return message(val);\n            }\n            else {\n                return message;\n            }\n        };\n        return this._refinement((val, ctx) => {\n            const result = check(val);\n            const setError = () => ctx.addIssue({\n                code: ZodIssueCode.custom,\n                ...getIssueProperties(val),\n            });\n            if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n                return result.then((data) => {\n                    if (!data) {\n                        setError();\n                        return false;\n                    }\n                    else {\n                        return true;\n                    }\n                });\n            }\n            if (!result) {\n                setError();\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    refinement(check, refinementData) {\n        return this._refinement((val, ctx) => {\n            if (!check(val)) {\n                ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n    }\n    _refinement(refinement) {\n        return new ZodEffects({\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"refinement\", refinement },\n        });\n    }\n    superRefine(refinement) {\n        return this._refinement(refinement);\n    }\n    constructor(def) {\n        /** Alias of safeParseAsync */\n        this.spa = this.safeParseAsync;\n        this._def = def;\n        this.parse = this.parse.bind(this);\n        this.safeParse = this.safeParse.bind(this);\n        this.parseAsync = this.parseAsync.bind(this);\n        this.safeParseAsync = this.safeParseAsync.bind(this);\n        this.spa = this.spa.bind(this);\n        this.refine = this.refine.bind(this);\n        this.refinement = this.refinement.bind(this);\n        this.superRefine = this.superRefine.bind(this);\n        this.optional = this.optional.bind(this);\n        this.nullable = this.nullable.bind(this);\n        this.nullish = this.nullish.bind(this);\n        this.array = this.array.bind(this);\n        this.promise = this.promise.bind(this);\n        this.or = this.or.bind(this);\n        this.and = this.and.bind(this);\n        this.transform = this.transform.bind(this);\n        this.brand = this.brand.bind(this);\n        this.default = this.default.bind(this);\n        this.catch = this.catch.bind(this);\n        this.describe = this.describe.bind(this);\n        this.pipe = this.pipe.bind(this);\n        this.readonly = this.readonly.bind(this);\n        this.isNullable = this.isNullable.bind(this);\n        this.isOptional = this.isOptional.bind(this);\n        this[\"~standard\"] = {\n            version: 1,\n            vendor: \"zod\",\n            validate: (data) => this[\"~validate\"](data),\n        };\n    }\n    optional() {\n        return ZodOptional.create(this, this._def);\n    }\n    nullable() {\n        return ZodNullable.create(this, this._def);\n    }\n    nullish() {\n        return this.nullable().optional();\n    }\n    array() {\n        return ZodArray.create(this);\n    }\n    promise() {\n        return ZodPromise.create(this, this._def);\n    }\n    or(option) {\n        return ZodUnion.create([this, option], this._def);\n    }\n    and(incoming) {\n        return ZodIntersection.create(this, incoming, this._def);\n    }\n    transform(transform) {\n        return new ZodEffects({\n            ...processCreateParams(this._def),\n            schema: this,\n            typeName: ZodFirstPartyTypeKind.ZodEffects,\n            effect: { type: \"transform\", transform },\n        });\n    }\n    default(def) {\n        const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodDefault({\n            ...processCreateParams(this._def),\n            innerType: this,\n            defaultValue: defaultValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodDefault,\n        });\n    }\n    brand() {\n        return new ZodBranded({\n            typeName: ZodFirstPartyTypeKind.ZodBranded,\n            type: this,\n            ...processCreateParams(this._def),\n        });\n    }\n    catch(def) {\n        const catchValueFunc = typeof def === \"function\" ? def : () => def;\n        return new ZodCatch({\n            ...processCreateParams(this._def),\n            innerType: this,\n            catchValue: catchValueFunc,\n            typeName: ZodFirstPartyTypeKind.ZodCatch,\n        });\n    }\n    describe(description) {\n        const This = this.constructor;\n        return new This({\n            ...this._def,\n            description,\n        });\n    }\n    pipe(target) {\n        return ZodPipeline.create(this, target);\n    }\n    readonly() {\n        return ZodReadonly.create(this);\n    }\n    isOptional() {\n        return this.safeParse(undefined).success;\n    }\n    isNullable() {\n        return this.safeParse(null).success;\n    }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n//   /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n//   /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n//   /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n//   /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?: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]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n//   /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n    let secondsRegexSource = `[0-5]\\\\d`;\n    if (args.precision) {\n        secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n    }\n    else if (args.precision == null) {\n        secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n    }\n    const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n    return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n    return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n    let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n    const opts = [];\n    opts.push(args.local ? `Z?` : `Z`);\n    if (args.offset)\n        opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n    regex = `${regex}(${opts.join(\"|\")})`;\n    return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nfunction isValidJWT(jwt, alg) {\n    if (!jwtRegex.test(jwt))\n        return false;\n    try {\n        const [header] = jwt.split(\".\");\n        if (!header)\n            return false;\n        // Convert base64url to base64\n        const base64 = header\n            .replace(/-/g, \"+\")\n            .replace(/_/g, \"/\")\n            .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n        const decoded = JSON.parse(atob(base64));\n        if (typeof decoded !== \"object\" || decoded === null)\n            return false;\n        if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n            return false;\n        if (!decoded.alg)\n            return false;\n        if (alg && decoded.alg !== alg)\n            return false;\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nfunction isValidCidr(ip, version) {\n    if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n        return true;\n    }\n    if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n        return true;\n    }\n    return false;\n}\nexport class ZodString extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = String(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.string) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.string,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const status = new ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.length < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.length > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"string\",\n                        inclusive: true,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"length\") {\n                const tooBig = input.data.length > check.value;\n                const tooSmall = input.data.length < check.value;\n                if (tooBig || tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    if (tooBig) {\n                        addIssueToContext(ctx, {\n                            code: ZodIssueCode.too_big,\n                            maximum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    else if (tooSmall) {\n                        addIssueToContext(ctx, {\n                            code: ZodIssueCode.too_small,\n                            minimum: check.value,\n                            type: \"string\",\n                            inclusive: true,\n                            exact: true,\n                            message: check.message,\n                        });\n                    }\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"email\") {\n                if (!emailRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"email\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"emoji\") {\n                if (!emojiRegex) {\n                    emojiRegex = new RegExp(_emojiRegex, \"u\");\n                }\n                if (!emojiRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"emoji\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"uuid\") {\n                if (!uuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"uuid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"nanoid\") {\n                if (!nanoidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"nanoid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid\") {\n                if (!cuidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cuid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cuid2\") {\n                if (!cuid2Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cuid2\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ulid\") {\n                if (!ulidRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"ulid\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"url\") {\n                try {\n                    new URL(input.data);\n                }\n                catch {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"url\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"regex\") {\n                check.regex.lastIndex = 0;\n                const testResult = check.regex.test(input.data);\n                if (!testResult) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"regex\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"trim\") {\n                input.data = input.data.trim();\n            }\n            else if (check.kind === \"includes\") {\n                if (!input.data.includes(check.value, check.position)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { includes: check.value, position: check.position },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"toLowerCase\") {\n                input.data = input.data.toLowerCase();\n            }\n            else if (check.kind === \"toUpperCase\") {\n                input.data = input.data.toUpperCase();\n            }\n            else if (check.kind === \"startsWith\") {\n                if (!input.data.startsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { startsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"endsWith\") {\n                if (!input.data.endsWith(check.value)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: { endsWith: check.value },\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"datetime\") {\n                const regex = datetimeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"datetime\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"date\") {\n                const regex = dateRegex;\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"date\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"time\") {\n                const regex = timeRegex(check);\n                if (!regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_string,\n                        validation: \"time\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"duration\") {\n                if (!durationRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"duration\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"ip\") {\n                if (!isValidIP(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"ip\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"jwt\") {\n                if (!isValidJWT(input.data, check.alg)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"jwt\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"cidr\") {\n                if (!isValidCidr(input.data, check.version)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"cidr\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64\") {\n                if (!base64Regex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"base64\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"base64url\") {\n                if (!base64urlRegex.test(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        validation: \"base64url\",\n                        code: ZodIssueCode.invalid_string,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _regex(regex, validation, message) {\n        return this.refinement((data) => regex.test(data), {\n            validation,\n            code: ZodIssueCode.invalid_string,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    _addCheck(check) {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    email(message) {\n        return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n    }\n    url(message) {\n        return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n    }\n    emoji(message) {\n        return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n    }\n    uuid(message) {\n        return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n    }\n    nanoid(message) {\n        return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n    }\n    cuid(message) {\n        return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n    }\n    cuid2(message) {\n        return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n    }\n    ulid(message) {\n        return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n    }\n    base64(message) {\n        return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n    }\n    base64url(message) {\n        // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n        return this._addCheck({\n            kind: \"base64url\",\n            ...errorUtil.errToObj(message),\n        });\n    }\n    jwt(options) {\n        return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n    }\n    ip(options) {\n        return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n    }\n    cidr(options) {\n        return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n    }\n    datetime(options) {\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"datetime\",\n                precision: null,\n                offset: false,\n                local: false,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"datetime\",\n            precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n            offset: options?.offset ?? false,\n            local: options?.local ?? false,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    date(message) {\n        return this._addCheck({ kind: \"date\", message });\n    }\n    time(options) {\n        if (typeof options === \"string\") {\n            return this._addCheck({\n                kind: \"time\",\n                precision: null,\n                message: options,\n            });\n        }\n        return this._addCheck({\n            kind: \"time\",\n            precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    duration(message) {\n        return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n    }\n    regex(regex, message) {\n        return this._addCheck({\n            kind: \"regex\",\n            regex: regex,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    includes(value, options) {\n        return this._addCheck({\n            kind: \"includes\",\n            value: value,\n            position: options?.position,\n            ...errorUtil.errToObj(options?.message),\n        });\n    }\n    startsWith(value, message) {\n        return this._addCheck({\n            kind: \"startsWith\",\n            value: value,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    endsWith(value, message) {\n        return this._addCheck({\n            kind: \"endsWith\",\n            value: value,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    min(minLength, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minLength,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    max(maxLength, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxLength,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    length(len, message) {\n        return this._addCheck({\n            kind: \"length\",\n            value: len,\n            ...errorUtil.errToObj(message),\n        });\n    }\n    /**\n     * Equivalent to `.min(1)`\n     */\n    nonempty(message) {\n        return this.min(1, errorUtil.errToObj(message));\n    }\n    trim() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"trim\" }],\n        });\n    }\n    toLowerCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n        });\n    }\n    toUpperCase() {\n        return new ZodString({\n            ...this._def,\n            checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n        });\n    }\n    get isDatetime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n    }\n    get isDate() {\n        return !!this._def.checks.find((ch) => ch.kind === \"date\");\n    }\n    get isTime() {\n        return !!this._def.checks.find((ch) => ch.kind === \"time\");\n    }\n    get isDuration() {\n        return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n    }\n    get isEmail() {\n        return !!this._def.checks.find((ch) => ch.kind === \"email\");\n    }\n    get isURL() {\n        return !!this._def.checks.find((ch) => ch.kind === \"url\");\n    }\n    get isEmoji() {\n        return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n    }\n    get isUUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n    }\n    get isNANOID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n    }\n    get isCUID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n    }\n    get isCUID2() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n    }\n    get isULID() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n    }\n    get isIP() {\n        return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n    }\n    get isCIDR() {\n        return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n    }\n    get isBase64() {\n        return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n    }\n    get isBase64url() {\n        // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n        return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n    }\n    get minLength() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxLength() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nZodString.create = (params) => {\n    return new ZodString({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodString,\n        coerce: params?.coerce ?? false,\n        ...processCreateParams(params),\n    });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n    const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n    const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n    const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n    const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n    const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n    return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n        this.step = this.multipleOf;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Number(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.number) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.number,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        let ctx = undefined;\n        const status = new ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"int\") {\n                if (!util.isInteger(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.invalid_type,\n                        expected: \"integer\",\n                        received: \"float\",\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"min\") {\n                const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        minimum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        maximum: check.value,\n                        type: \"number\",\n                        inclusive: check.inclusive,\n                        exact: false,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (floatSafeRemainder(input.data, check.value) !== 0) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"finite\") {\n                if (!Number.isFinite(input.data)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_finite,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodNumber({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    int(message) {\n        return this._addCheck({\n            kind: \"int\",\n            message: errorUtil.toString(message),\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: 0,\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value: value,\n            message: errorUtil.toString(message),\n        });\n    }\n    finite(message) {\n        return this._addCheck({\n            kind: \"finite\",\n            message: errorUtil.toString(message),\n        });\n    }\n    safe(message) {\n        return this._addCheck({\n            kind: \"min\",\n            inclusive: true,\n            value: Number.MIN_SAFE_INTEGER,\n            message: errorUtil.toString(message),\n        })._addCheck({\n            kind: \"max\",\n            inclusive: true,\n            value: Number.MAX_SAFE_INTEGER,\n            message: errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n    get isInt() {\n        return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n    }\n    get isFinite() {\n        let max = null;\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n                return true;\n            }\n            else if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n            else if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return Number.isFinite(min) && Number.isFinite(max);\n    }\n}\nZodNumber.create = (params) => {\n    return new ZodNumber({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodNumber,\n        coerce: params?.coerce || false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodBigInt extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.min = this.gte;\n        this.max = this.lte;\n    }\n    _parse(input) {\n        if (this._def.coerce) {\n            try {\n                input.data = BigInt(input.data);\n            }\n            catch {\n                return this._getInvalidInput(input);\n            }\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.bigint) {\n            return this._getInvalidInput(input);\n        }\n        let ctx = undefined;\n        const status = new ParseStatus();\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n                if (tooSmall) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        type: \"bigint\",\n                        minimum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n                if (tooBig) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        type: \"bigint\",\n                        maximum: check.value,\n                        inclusive: check.inclusive,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"multipleOf\") {\n                if (input.data % check.value !== BigInt(0)) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.not_multiple_of,\n                        multipleOf: check.value,\n                        message: check.message,\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return { status: status.value, value: input.data };\n    }\n    _getInvalidInput(input) {\n        const ctx = this._getOrReturnCtx(input);\n        addIssueToContext(ctx, {\n            code: ZodIssueCode.invalid_type,\n            expected: ZodParsedType.bigint,\n            received: ctx.parsedType,\n        });\n        return INVALID;\n    }\n    gte(value, message) {\n        return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n    }\n    gt(value, message) {\n        return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n    }\n    lte(value, message) {\n        return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n    }\n    lt(value, message) {\n        return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n    }\n    setLimit(kind, value, inclusive, message) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [\n                ...this._def.checks,\n                {\n                    kind,\n                    value,\n                    inclusive,\n                    message: errorUtil.toString(message),\n                },\n            ],\n        });\n    }\n    _addCheck(check) {\n        return new ZodBigInt({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    positive(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    negative(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: false,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonpositive(message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    nonnegative(message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: BigInt(0),\n            inclusive: true,\n            message: errorUtil.toString(message),\n        });\n    }\n    multipleOf(value, message) {\n        return this._addCheck({\n            kind: \"multipleOf\",\n            value,\n            message: errorUtil.toString(message),\n        });\n    }\n    get minValue() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min;\n    }\n    get maxValue() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max;\n    }\n}\nZodBigInt.create = (params) => {\n    return new ZodBigInt({\n        checks: [],\n        typeName: ZodFirstPartyTypeKind.ZodBigInt,\n        coerce: params?.coerce ?? false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodBoolean extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = Boolean(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.boolean) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.boolean,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodBoolean.create = (params) => {\n    return new ZodBoolean({\n        typeName: ZodFirstPartyTypeKind.ZodBoolean,\n        coerce: params?.coerce || false,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodDate extends ZodType {\n    _parse(input) {\n        if (this._def.coerce) {\n            input.data = new Date(input.data);\n        }\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.date) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.date,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (Number.isNaN(input.data.getTime())) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_date,\n            });\n            return INVALID;\n        }\n        const status = new ParseStatus();\n        let ctx = undefined;\n        for (const check of this._def.checks) {\n            if (check.kind === \"min\") {\n                if (input.data.getTime() < check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_small,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        minimum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else if (check.kind === \"max\") {\n                if (input.data.getTime() > check.value) {\n                    ctx = this._getOrReturnCtx(input, ctx);\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.too_big,\n                        message: check.message,\n                        inclusive: true,\n                        exact: false,\n                        maximum: check.value,\n                        type: \"date\",\n                    });\n                    status.dirty();\n                }\n            }\n            else {\n                util.assertNever(check);\n            }\n        }\n        return {\n            status: status.value,\n            value: new Date(input.data.getTime()),\n        };\n    }\n    _addCheck(check) {\n        return new ZodDate({\n            ...this._def,\n            checks: [...this._def.checks, check],\n        });\n    }\n    min(minDate, message) {\n        return this._addCheck({\n            kind: \"min\",\n            value: minDate.getTime(),\n            message: errorUtil.toString(message),\n        });\n    }\n    max(maxDate, message) {\n        return this._addCheck({\n            kind: \"max\",\n            value: maxDate.getTime(),\n            message: errorUtil.toString(message),\n        });\n    }\n    get minDate() {\n        let min = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"min\") {\n                if (min === null || ch.value > min)\n                    min = ch.value;\n            }\n        }\n        return min != null ? new Date(min) : null;\n    }\n    get maxDate() {\n        let max = null;\n        for (const ch of this._def.checks) {\n            if (ch.kind === \"max\") {\n                if (max === null || ch.value < max)\n                    max = ch.value;\n            }\n        }\n        return max != null ? new Date(max) : null;\n    }\n}\nZodDate.create = (params) => {\n    return new ZodDate({\n        checks: [],\n        coerce: params?.coerce || false,\n        typeName: ZodFirstPartyTypeKind.ZodDate,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodSymbol extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.symbol) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.symbol,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodSymbol.create = (params) => {\n    return new ZodSymbol({\n        typeName: ZodFirstPartyTypeKind.ZodSymbol,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUndefined extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.undefined,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodUndefined.create = (params) => {\n    return new ZodUndefined({\n        typeName: ZodFirstPartyTypeKind.ZodUndefined,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNull extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.null) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.null,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodNull.create = (params) => {\n    return new ZodNull({\n        typeName: ZodFirstPartyTypeKind.ZodNull,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodAny extends ZodType {\n    constructor() {\n        super(...arguments);\n        // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n        this._any = true;\n    }\n    _parse(input) {\n        return OK(input.data);\n    }\n}\nZodAny.create = (params) => {\n    return new ZodAny({\n        typeName: ZodFirstPartyTypeKind.ZodAny,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUnknown extends ZodType {\n    constructor() {\n        super(...arguments);\n        // required\n        this._unknown = true;\n    }\n    _parse(input) {\n        return OK(input.data);\n    }\n}\nZodUnknown.create = (params) => {\n    return new ZodUnknown({\n        typeName: ZodFirstPartyTypeKind.ZodUnknown,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNever extends ZodType {\n    _parse(input) {\n        const ctx = this._getOrReturnCtx(input);\n        addIssueToContext(ctx, {\n            code: ZodIssueCode.invalid_type,\n            expected: ZodParsedType.never,\n            received: ctx.parsedType,\n        });\n        return INVALID;\n    }\n}\nZodNever.create = (params) => {\n    return new ZodNever({\n        typeName: ZodFirstPartyTypeKind.ZodNever,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodVoid extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.undefined) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.void,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n}\nZodVoid.create = (params) => {\n    return new ZodVoid({\n        typeName: ZodFirstPartyTypeKind.ZodVoid,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodArray extends ZodType {\n    _parse(input) {\n        const { ctx, status } = this._processInputParams(input);\n        const def = this._def;\n        if (ctx.parsedType !== ZodParsedType.array) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (def.exactLength !== null) {\n            const tooBig = ctx.data.length > def.exactLength.value;\n            const tooSmall = ctx.data.length < def.exactLength.value;\n            if (tooBig || tooSmall) {\n                addIssueToContext(ctx, {\n                    code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n                    minimum: (tooSmall ? def.exactLength.value : undefined),\n                    maximum: (tooBig ? def.exactLength.value : undefined),\n                    type: \"array\",\n                    inclusive: true,\n                    exact: true,\n                    message: def.exactLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.minLength !== null) {\n            if (ctx.data.length < def.minLength.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_small,\n                    minimum: def.minLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxLength !== null) {\n            if (ctx.data.length > def.maxLength.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_big,\n                    maximum: def.maxLength.value,\n                    type: \"array\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxLength.message,\n                });\n                status.dirty();\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.all([...ctx.data].map((item, i) => {\n                return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n            })).then((result) => {\n                return ParseStatus.mergeArray(status, result);\n            });\n        }\n        const result = [...ctx.data].map((item, i) => {\n            return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n        });\n        return ParseStatus.mergeArray(status, result);\n    }\n    get element() {\n        return this._def.type;\n    }\n    min(minLength, message) {\n        return new ZodArray({\n            ...this._def,\n            minLength: { value: minLength, message: errorUtil.toString(message) },\n        });\n    }\n    max(maxLength, message) {\n        return new ZodArray({\n            ...this._def,\n            maxLength: { value: maxLength, message: errorUtil.toString(message) },\n        });\n    }\n    length(len, message) {\n        return new ZodArray({\n            ...this._def,\n            exactLength: { value: len, message: errorUtil.toString(message) },\n        });\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nZodArray.create = (schema, params) => {\n    return new ZodArray({\n        type: schema,\n        minLength: null,\n        maxLength: null,\n        exactLength: null,\n        typeName: ZodFirstPartyTypeKind.ZodArray,\n        ...processCreateParams(params),\n    });\n};\nfunction deepPartialify(schema) {\n    if (schema instanceof ZodObject) {\n        const newShape = {};\n        for (const key in schema.shape) {\n            const fieldSchema = schema.shape[key];\n            newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n        }\n        return new ZodObject({\n            ...schema._def,\n            shape: () => newShape,\n        });\n    }\n    else if (schema instanceof ZodArray) {\n        return new ZodArray({\n            ...schema._def,\n            type: deepPartialify(schema.element),\n        });\n    }\n    else if (schema instanceof ZodOptional) {\n        return ZodOptional.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodNullable) {\n        return ZodNullable.create(deepPartialify(schema.unwrap()));\n    }\n    else if (schema instanceof ZodTuple) {\n        return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n    }\n    else {\n        return schema;\n    }\n}\nexport class ZodObject extends ZodType {\n    constructor() {\n        super(...arguments);\n        this._cached = null;\n        /**\n         * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n         * If you want to pass through unknown properties, use `.passthrough()` instead.\n         */\n        this.nonstrict = this.passthrough;\n        // extend<\n        //   Augmentation extends ZodRawShape,\n        //   NewOutput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_output\"]\n        //       : k extends keyof Output\n        //       ? Output[k]\n        //       : never;\n        //   }>,\n        //   NewInput extends util.flatten<{\n        //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n        //       ? Augmentation[k][\"_input\"]\n        //       : k extends keyof Input\n        //       ? Input[k]\n        //       : never;\n        //   }>\n        // >(\n        //   augmentation: Augmentation\n        // ): ZodObject<\n        //   extendShape<T, Augmentation>,\n        //   UnknownKeys,\n        //   Catchall,\n        //   NewOutput,\n        //   NewInput\n        // > {\n        //   return new ZodObject({\n        //     ...this._def,\n        //     shape: () => ({\n        //       ...this._def.shape(),\n        //       ...augmentation,\n        //     }),\n        //   }) as any;\n        // }\n        /**\n         * @deprecated Use `.extend` instead\n         *  */\n        this.augment = this.extend;\n    }\n    _getCached() {\n        if (this._cached !== null)\n            return this._cached;\n        const shape = this._def.shape();\n        const keys = util.objectKeys(shape);\n        this._cached = { shape, keys };\n        return this._cached;\n    }\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.object) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const { status, ctx } = this._processInputParams(input);\n        const { shape, keys: shapeKeys } = this._getCached();\n        const extraKeys = [];\n        if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n            for (const key in ctx.data) {\n                if (!shapeKeys.includes(key)) {\n                    extraKeys.push(key);\n                }\n            }\n        }\n        const pairs = [];\n        for (const key of shapeKeys) {\n            const keyValidator = shape[key];\n            const value = ctx.data[key];\n            pairs.push({\n                key: { status: \"valid\", value: key },\n                value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (this._def.catchall instanceof ZodNever) {\n            const unknownKeys = this._def.unknownKeys;\n            if (unknownKeys === \"passthrough\") {\n                for (const key of extraKeys) {\n                    pairs.push({\n                        key: { status: \"valid\", value: key },\n                        value: { status: \"valid\", value: ctx.data[key] },\n                    });\n                }\n            }\n            else if (unknownKeys === \"strict\") {\n                if (extraKeys.length > 0) {\n                    addIssueToContext(ctx, {\n                        code: ZodIssueCode.unrecognized_keys,\n                        keys: extraKeys,\n                    });\n                    status.dirty();\n                }\n            }\n            else if (unknownKeys === \"strip\") {\n            }\n            else {\n                throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n            }\n        }\n        else {\n            // run catchall validation\n            const catchall = this._def.catchall;\n            for (const key of extraKeys) {\n                const value = ctx.data[key];\n                pairs.push({\n                    key: { status: \"valid\", value: key },\n                    value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n                    ),\n                    alwaysSet: key in ctx.data,\n                });\n            }\n        }\n        if (ctx.common.async) {\n            return Promise.resolve()\n                .then(async () => {\n                const syncPairs = [];\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    syncPairs.push({\n                        key,\n                        value,\n                        alwaysSet: pair.alwaysSet,\n                    });\n                }\n                return syncPairs;\n            })\n                .then((syncPairs) => {\n                return ParseStatus.mergeObjectSync(status, syncPairs);\n            });\n        }\n        else {\n            return ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get shape() {\n        return this._def.shape();\n    }\n    strict(message) {\n        errorUtil.errToObj;\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strict\",\n            ...(message !== undefined\n                ? {\n                    errorMap: (issue, ctx) => {\n                        const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n                        if (issue.code === \"unrecognized_keys\")\n                            return {\n                                message: errorUtil.errToObj(message).message ?? defaultError,\n                            };\n                        return {\n                            message: defaultError,\n                        };\n                    },\n                }\n                : {}),\n        });\n    }\n    strip() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"strip\",\n        });\n    }\n    passthrough() {\n        return new ZodObject({\n            ...this._def,\n            unknownKeys: \"passthrough\",\n        });\n    }\n    // const AugmentFactory =\n    //   <Def extends ZodObjectDef>(def: Def) =>\n    //   <Augmentation extends ZodRawShape>(\n    //     augmentation: Augmentation\n    //   ): ZodObject<\n    //     extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n    //     Def[\"unknownKeys\"],\n    //     Def[\"catchall\"]\n    //   > => {\n    //     return new ZodObject({\n    //       ...def,\n    //       shape: () => ({\n    //         ...def.shape(),\n    //         ...augmentation,\n    //       }),\n    //     }) as any;\n    //   };\n    extend(augmentation) {\n        return new ZodObject({\n            ...this._def,\n            shape: () => ({\n                ...this._def.shape(),\n                ...augmentation,\n            }),\n        });\n    }\n    /**\n     * Prior to zod@1.0.12 there was a bug in the\n     * inferred type of merged objects. Please\n     * upgrade if you are experiencing issues.\n     */\n    merge(merging) {\n        const merged = new ZodObject({\n            unknownKeys: merging._def.unknownKeys,\n            catchall: merging._def.catchall,\n            shape: () => ({\n                ...this._def.shape(),\n                ...merging._def.shape(),\n            }),\n            typeName: ZodFirstPartyTypeKind.ZodObject,\n        });\n        return merged;\n    }\n    // merge<\n    //   Incoming extends AnyZodObject,\n    //   Augmentation extends Incoming[\"shape\"],\n    //   NewOutput extends {\n    //     [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_output\"]\n    //       : k extends keyof Output\n    //       ? Output[k]\n    //       : never;\n    //   },\n    //   NewInput extends {\n    //     [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n    //       ? Augmentation[k][\"_input\"]\n    //       : k extends keyof Input\n    //       ? Input[k]\n    //       : never;\n    //   }\n    // >(\n    //   merging: Incoming\n    // ): ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"],\n    //   NewOutput,\n    //   NewInput\n    // > {\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    setKey(key, schema) {\n        return this.augment({ [key]: schema });\n    }\n    // merge<Incoming extends AnyZodObject>(\n    //   merging: Incoming\n    // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n    // ZodObject<\n    //   extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n    //   Incoming[\"_def\"][\"unknownKeys\"],\n    //   Incoming[\"_def\"][\"catchall\"]\n    // > {\n    //   // const mergedShape = objectUtil.mergeShapes(\n    //   //   this._def.shape(),\n    //   //   merging._def.shape()\n    //   // );\n    //   const merged: any = new ZodObject({\n    //     unknownKeys: merging._def.unknownKeys,\n    //     catchall: merging._def.catchall,\n    //     shape: () =>\n    //       objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n    //     typeName: ZodFirstPartyTypeKind.ZodObject,\n    //   }) as any;\n    //   return merged;\n    // }\n    catchall(index) {\n        return new ZodObject({\n            ...this._def,\n            catchall: index,\n        });\n    }\n    pick(mask) {\n        const shape = {};\n        for (const key of util.objectKeys(mask)) {\n            if (mask[key] && this.shape[key]) {\n                shape[key] = this.shape[key];\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    omit(mask) {\n        const shape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            if (!mask[key]) {\n                shape[key] = this.shape[key];\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => shape,\n        });\n    }\n    /**\n     * @deprecated\n     */\n    deepPartial() {\n        return deepPartialify(this);\n    }\n    partial(mask) {\n        const newShape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            const fieldSchema = this.shape[key];\n            if (mask && !mask[key]) {\n                newShape[key] = fieldSchema;\n            }\n            else {\n                newShape[key] = fieldSchema.optional();\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    required(mask) {\n        const newShape = {};\n        for (const key of util.objectKeys(this.shape)) {\n            if (mask && !mask[key]) {\n                newShape[key] = this.shape[key];\n            }\n            else {\n                const fieldSchema = this.shape[key];\n                let newField = fieldSchema;\n                while (newField instanceof ZodOptional) {\n                    newField = newField._def.innerType;\n                }\n                newShape[key] = newField;\n            }\n        }\n        return new ZodObject({\n            ...this._def,\n            shape: () => newShape,\n        });\n    }\n    keyof() {\n        return createZodEnum(util.objectKeys(this.shape));\n    }\n}\nZodObject.create = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.strictCreate = (shape, params) => {\n    return new ZodObject({\n        shape: () => shape,\n        unknownKeys: \"strict\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nZodObject.lazycreate = (shape, params) => {\n    return new ZodObject({\n        shape,\n        unknownKeys: \"strip\",\n        catchall: ZodNever.create(),\n        typeName: ZodFirstPartyTypeKind.ZodObject,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const options = this._def.options;\n        function handleResults(results) {\n            // return first issue-free validation if it exists\n            for (const result of results) {\n                if (result.result.status === \"valid\") {\n                    return result.result;\n                }\n            }\n            for (const result of results) {\n                if (result.result.status === \"dirty\") {\n                    // add issues from dirty option\n                    ctx.common.issues.push(...result.ctx.common.issues);\n                    return result.result;\n                }\n            }\n            // return invalid\n            const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return INVALID;\n        }\n        if (ctx.common.async) {\n            return Promise.all(options.map(async (option) => {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                return {\n                    result: await option._parseAsync({\n                        data: ctx.data,\n                        path: ctx.path,\n                        parent: childCtx,\n                    }),\n                    ctx: childCtx,\n                };\n            })).then(handleResults);\n        }\n        else {\n            let dirty = undefined;\n            const issues = [];\n            for (const option of options) {\n                const childCtx = {\n                    ...ctx,\n                    common: {\n                        ...ctx.common,\n                        issues: [],\n                    },\n                    parent: null,\n                };\n                const result = option._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: childCtx,\n                });\n                if (result.status === \"valid\") {\n                    return result;\n                }\n                else if (result.status === \"dirty\" && !dirty) {\n                    dirty = { result, ctx: childCtx };\n                }\n                if (childCtx.common.issues.length) {\n                    issues.push(childCtx.common.issues);\n                }\n            }\n            if (dirty) {\n                ctx.common.issues.push(...dirty.ctx.common.issues);\n                return dirty.result;\n            }\n            const unionErrors = issues.map((issues) => new ZodError(issues));\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union,\n                unionErrors,\n            });\n            return INVALID;\n        }\n    }\n    get options() {\n        return this._def.options;\n    }\n}\nZodUnion.create = (types, params) => {\n    return new ZodUnion({\n        options: types,\n        typeName: ZodFirstPartyTypeKind.ZodUnion,\n        ...processCreateParams(params),\n    });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n//////////                                 //////////\n//////////      ZodDiscriminatedUnion      //////////\n//////////                                 //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n    if (type instanceof ZodLazy) {\n        return getDiscriminator(type.schema);\n    }\n    else if (type instanceof ZodEffects) {\n        return getDiscriminator(type.innerType());\n    }\n    else if (type instanceof ZodLiteral) {\n        return [type.value];\n    }\n    else if (type instanceof ZodEnum) {\n        return type.options;\n    }\n    else if (type instanceof ZodNativeEnum) {\n        // eslint-disable-next-line ban/ban\n        return util.objectValues(type.enum);\n    }\n    else if (type instanceof ZodDefault) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else if (type instanceof ZodUndefined) {\n        return [undefined];\n    }\n    else if (type instanceof ZodNull) {\n        return [null];\n    }\n    else if (type instanceof ZodOptional) {\n        return [undefined, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodNullable) {\n        return [null, ...getDiscriminator(type.unwrap())];\n    }\n    else if (type instanceof ZodBranded) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodReadonly) {\n        return getDiscriminator(type.unwrap());\n    }\n    else if (type instanceof ZodCatch) {\n        return getDiscriminator(type._def.innerType);\n    }\n    else {\n        return [];\n    }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.object) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const discriminator = this.discriminator;\n        const discriminatorValue = ctx.data[discriminator];\n        const option = this.optionsMap.get(discriminatorValue);\n        if (!option) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_union_discriminator,\n                options: Array.from(this.optionsMap.keys()),\n                path: [discriminator],\n            });\n            return INVALID;\n        }\n        if (ctx.common.async) {\n            return option._parseAsync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n        else {\n            return option._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n        }\n    }\n    get discriminator() {\n        return this._def.discriminator;\n    }\n    get options() {\n        return this._def.options;\n    }\n    get optionsMap() {\n        return this._def.optionsMap;\n    }\n    /**\n     * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n     * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n     * have a different value for each object in the union.\n     * @param discriminator the name of the discriminator property\n     * @param types an array of object schemas\n     * @param params\n     */\n    static create(discriminator, options, params) {\n        // Get all the valid discriminator values\n        const optionsMap = new Map();\n        // try {\n        for (const type of options) {\n            const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n            if (!discriminatorValues.length) {\n                throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n            }\n            for (const value of discriminatorValues) {\n                if (optionsMap.has(value)) {\n                    throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n                }\n                optionsMap.set(value, type);\n            }\n        }\n        return new ZodDiscriminatedUnion({\n            typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n            discriminator,\n            options,\n            optionsMap,\n            ...processCreateParams(params),\n        });\n    }\n}\nfunction mergeValues(a, b) {\n    const aType = getParsedType(a);\n    const bType = getParsedType(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n        const bKeys = util.objectKeys(b);\n        const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        for (const key of sharedKeys) {\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n        if (a.length !== b.length) {\n            return { valid: false };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return { valid: false };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n        return { valid: true, data: a };\n    }\n    else {\n        return { valid: false };\n    }\n}\nexport class ZodIntersection extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const handleParsed = (parsedLeft, parsedRight) => {\n            if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n                return INVALID;\n            }\n            const merged = mergeValues(parsedLeft.value, parsedRight.value);\n            if (!merged.valid) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.invalid_intersection_types,\n                });\n                return INVALID;\n            }\n            if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n                status.dirty();\n            }\n            return { status: status.value, value: merged.data };\n        };\n        if (ctx.common.async) {\n            return Promise.all([\n                this._def.left._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n                this._def.right._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                }),\n            ]).then(([left, right]) => handleParsed(left, right));\n        }\n        else {\n            return handleParsed(this._def.left._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }), this._def.right._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            }));\n        }\n    }\n}\nZodIntersection.create = (left, right, params) => {\n    return new ZodIntersection({\n        left: left,\n        right: right,\n        typeName: ZodFirstPartyTypeKind.ZodIntersection,\n        ...processCreateParams(params),\n    });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.array) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.array,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        if (ctx.data.length < this._def.items.length) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.too_small,\n                minimum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            return INVALID;\n        }\n        const rest = this._def.rest;\n        if (!rest && ctx.data.length > this._def.items.length) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.too_big,\n                maximum: this._def.items.length,\n                inclusive: true,\n                exact: false,\n                type: \"array\",\n            });\n            status.dirty();\n        }\n        const items = [...ctx.data]\n            .map((item, itemIndex) => {\n            const schema = this._def.items[itemIndex] || this._def.rest;\n            if (!schema)\n                return null;\n            return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n        })\n            .filter((x) => !!x); // filter nulls\n        if (ctx.common.async) {\n            return Promise.all(items).then((results) => {\n                return ParseStatus.mergeArray(status, results);\n            });\n        }\n        else {\n            return ParseStatus.mergeArray(status, items);\n        }\n    }\n    get items() {\n        return this._def.items;\n    }\n    rest(rest) {\n        return new ZodTuple({\n            ...this._def,\n            rest,\n        });\n    }\n}\nZodTuple.create = (schemas, params) => {\n    if (!Array.isArray(schemas)) {\n        throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n    }\n    return new ZodTuple({\n        items: schemas,\n        typeName: ZodFirstPartyTypeKind.ZodTuple,\n        rest: null,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodRecord extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.object) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.object,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const pairs = [];\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        for (const key in ctx.data) {\n            pairs.push({\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n                value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n                alwaysSet: key in ctx.data,\n            });\n        }\n        if (ctx.common.async) {\n            return ParseStatus.mergeObjectAsync(status, pairs);\n        }\n        else {\n            return ParseStatus.mergeObjectSync(status, pairs);\n        }\n    }\n    get element() {\n        return this._def.valueType;\n    }\n    static create(first, second, third) {\n        if (second instanceof ZodType) {\n            return new ZodRecord({\n                keyType: first,\n                valueType: second,\n                typeName: ZodFirstPartyTypeKind.ZodRecord,\n                ...processCreateParams(third),\n            });\n        }\n        return new ZodRecord({\n            keyType: ZodString.create(),\n            valueType: first,\n            typeName: ZodFirstPartyTypeKind.ZodRecord,\n            ...processCreateParams(second),\n        });\n    }\n}\nexport class ZodMap extends ZodType {\n    get keySchema() {\n        return this._def.keyType;\n    }\n    get valueSchema() {\n        return this._def.valueType;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.map) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.map,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const keyType = this._def.keyType;\n        const valueType = this._def.valueType;\n        const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n            return {\n                key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n                value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n            };\n        });\n        if (ctx.common.async) {\n            const finalMap = new Map();\n            return Promise.resolve().then(async () => {\n                for (const pair of pairs) {\n                    const key = await pair.key;\n                    const value = await pair.value;\n                    if (key.status === \"aborted\" || value.status === \"aborted\") {\n                        return INVALID;\n                    }\n                    if (key.status === \"dirty\" || value.status === \"dirty\") {\n                        status.dirty();\n                    }\n                    finalMap.set(key.value, value.value);\n                }\n                return { status: status.value, value: finalMap };\n            });\n        }\n        else {\n            const finalMap = new Map();\n            for (const pair of pairs) {\n                const key = pair.key;\n                const value = pair.value;\n                if (key.status === \"aborted\" || value.status === \"aborted\") {\n                    return INVALID;\n                }\n                if (key.status === \"dirty\" || value.status === \"dirty\") {\n                    status.dirty();\n                }\n                finalMap.set(key.value, value.value);\n            }\n            return { status: status.value, value: finalMap };\n        }\n    }\n}\nZodMap.create = (keyType, valueType, params) => {\n    return new ZodMap({\n        valueType,\n        keyType,\n        typeName: ZodFirstPartyTypeKind.ZodMap,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodSet extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.set) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.set,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const def = this._def;\n        if (def.minSize !== null) {\n            if (ctx.data.size < def.minSize.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_small,\n                    minimum: def.minSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.minSize.message,\n                });\n                status.dirty();\n            }\n        }\n        if (def.maxSize !== null) {\n            if (ctx.data.size > def.maxSize.value) {\n                addIssueToContext(ctx, {\n                    code: ZodIssueCode.too_big,\n                    maximum: def.maxSize.value,\n                    type: \"set\",\n                    inclusive: true,\n                    exact: false,\n                    message: def.maxSize.message,\n                });\n                status.dirty();\n            }\n        }\n        const valueType = this._def.valueType;\n        function finalizeSet(elements) {\n            const parsedSet = new Set();\n            for (const element of elements) {\n                if (element.status === \"aborted\")\n                    return INVALID;\n                if (element.status === \"dirty\")\n                    status.dirty();\n                parsedSet.add(element.value);\n            }\n            return { status: status.value, value: parsedSet };\n        }\n        const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n        if (ctx.common.async) {\n            return Promise.all(elements).then((elements) => finalizeSet(elements));\n        }\n        else {\n            return finalizeSet(elements);\n        }\n    }\n    min(minSize, message) {\n        return new ZodSet({\n            ...this._def,\n            minSize: { value: minSize, message: errorUtil.toString(message) },\n        });\n    }\n    max(maxSize, message) {\n        return new ZodSet({\n            ...this._def,\n            maxSize: { value: maxSize, message: errorUtil.toString(message) },\n        });\n    }\n    size(size, message) {\n        return this.min(size, message).max(size, message);\n    }\n    nonempty(message) {\n        return this.min(1, message);\n    }\n}\nZodSet.create = (valueType, params) => {\n    return new ZodSet({\n        valueType,\n        minSize: null,\n        maxSize: null,\n        typeName: ZodFirstPartyTypeKind.ZodSet,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodFunction extends ZodType {\n    constructor() {\n        super(...arguments);\n        this.validate = this.implement;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.function) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.function,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        function makeArgsIssue(args, error) {\n            return makeIssue({\n                data: args,\n                path: ctx.path,\n                errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n                issueData: {\n                    code: ZodIssueCode.invalid_arguments,\n                    argumentsError: error,\n                },\n            });\n        }\n        function makeReturnsIssue(returns, error) {\n            return makeIssue({\n                data: returns,\n                path: ctx.path,\n                errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n                issueData: {\n                    code: ZodIssueCode.invalid_return_type,\n                    returnTypeError: error,\n                },\n            });\n        }\n        const params = { errorMap: ctx.common.contextualErrorMap };\n        const fn = ctx.data;\n        if (this._def.returns instanceof ZodPromise) {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return OK(async function (...args) {\n                const error = new ZodError([]);\n                const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n                    error.addIssue(makeArgsIssue(args, e));\n                    throw error;\n                });\n                const result = await Reflect.apply(fn, this, parsedArgs);\n                const parsedReturns = await me._def.returns._def.type\n                    .parseAsync(result, params)\n                    .catch((e) => {\n                    error.addIssue(makeReturnsIssue(result, e));\n                    throw error;\n                });\n                return parsedReturns;\n            });\n        }\n        else {\n            // Would love a way to avoid disabling this rule, but we need\n            // an alias (using an arrow function was what caused 2651).\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            const me = this;\n            return OK(function (...args) {\n                const parsedArgs = me._def.args.safeParse(args, params);\n                if (!parsedArgs.success) {\n                    throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n                }\n                const result = Reflect.apply(fn, this, parsedArgs.data);\n                const parsedReturns = me._def.returns.safeParse(result, params);\n                if (!parsedReturns.success) {\n                    throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n                }\n                return parsedReturns.data;\n            });\n        }\n    }\n    parameters() {\n        return this._def.args;\n    }\n    returnType() {\n        return this._def.returns;\n    }\n    args(...items) {\n        return new ZodFunction({\n            ...this._def,\n            args: ZodTuple.create(items).rest(ZodUnknown.create()),\n        });\n    }\n    returns(returnType) {\n        return new ZodFunction({\n            ...this._def,\n            returns: returnType,\n        });\n    }\n    implement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    strictImplement(func) {\n        const validatedFunc = this.parse(func);\n        return validatedFunc;\n    }\n    static create(args, returns, params) {\n        return new ZodFunction({\n            args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n            returns: returns || ZodUnknown.create(),\n            typeName: ZodFirstPartyTypeKind.ZodFunction,\n            ...processCreateParams(params),\n        });\n    }\n}\nexport class ZodLazy extends ZodType {\n    get schema() {\n        return this._def.getter();\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const lazySchema = this._def.getter();\n        return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n    }\n}\nZodLazy.create = (getter, params) => {\n    return new ZodLazy({\n        getter: getter,\n        typeName: ZodFirstPartyTypeKind.ZodLazy,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodLiteral extends ZodType {\n    _parse(input) {\n        if (input.data !== this._def.value) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_literal,\n                expected: this._def.value,\n            });\n            return INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n    get value() {\n        return this._def.value;\n    }\n}\nZodLiteral.create = (value, params) => {\n    return new ZodLiteral({\n        value: value,\n        typeName: ZodFirstPartyTypeKind.ZodLiteral,\n        ...processCreateParams(params),\n    });\n};\nfunction createZodEnum(values, params) {\n    return new ZodEnum({\n        values,\n        typeName: ZodFirstPartyTypeKind.ZodEnum,\n        ...processCreateParams(params),\n    });\n}\nexport class ZodEnum extends ZodType {\n    _parse(input) {\n        if (typeof input.data !== \"string\") {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            addIssueToContext(ctx, {\n                expected: util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodIssueCode.invalid_type,\n            });\n            return INVALID;\n        }\n        if (!this._cache) {\n            this._cache = new Set(this._def.values);\n        }\n        if (!this._cache.has(input.data)) {\n            const ctx = this._getOrReturnCtx(input);\n            const expectedValues = this._def.values;\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n    get options() {\n        return this._def.values;\n    }\n    get enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Values() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    get Enum() {\n        const enumValues = {};\n        for (const val of this._def.values) {\n            enumValues[val] = val;\n        }\n        return enumValues;\n    }\n    extract(values, newDef = this._def) {\n        return ZodEnum.create(values, {\n            ...this._def,\n            ...newDef,\n        });\n    }\n    exclude(values, newDef = this._def) {\n        return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n            ...this._def,\n            ...newDef,\n        });\n    }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n    _parse(input) {\n        const nativeEnumValues = util.getValidEnumValues(this._def.values);\n        const ctx = this._getOrReturnCtx(input);\n        if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n            const expectedValues = util.objectValues(nativeEnumValues);\n            addIssueToContext(ctx, {\n                expected: util.joinValues(expectedValues),\n                received: ctx.parsedType,\n                code: ZodIssueCode.invalid_type,\n            });\n            return INVALID;\n        }\n        if (!this._cache) {\n            this._cache = new Set(util.getValidEnumValues(this._def.values));\n        }\n        if (!this._cache.has(input.data)) {\n            const expectedValues = util.objectValues(nativeEnumValues);\n            addIssueToContext(ctx, {\n                received: ctx.data,\n                code: ZodIssueCode.invalid_enum_value,\n                options: expectedValues,\n            });\n            return INVALID;\n        }\n        return OK(input.data);\n    }\n    get enum() {\n        return this._def.values;\n    }\n}\nZodNativeEnum.create = (values, params) => {\n    return new ZodNativeEnum({\n        values: values,\n        typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodPromise extends ZodType {\n    unwrap() {\n        return this._def.type;\n    }\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.promise,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n        return OK(promisified.then((data) => {\n            return this._def.type.parseAsync(data, {\n                path: ctx.path,\n                errorMap: ctx.common.contextualErrorMap,\n            });\n        }));\n    }\n}\nZodPromise.create = (schema, params) => {\n    return new ZodPromise({\n        type: schema,\n        typeName: ZodFirstPartyTypeKind.ZodPromise,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodEffects extends ZodType {\n    innerType() {\n        return this._def.schema;\n    }\n    sourceType() {\n        return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n            ? this._def.schema.sourceType()\n            : this._def.schema;\n    }\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        const effect = this._def.effect || null;\n        const checkCtx = {\n            addIssue: (arg) => {\n                addIssueToContext(ctx, arg);\n                if (arg.fatal) {\n                    status.abort();\n                }\n                else {\n                    status.dirty();\n                }\n            },\n            get path() {\n                return ctx.path;\n            },\n        };\n        checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n        if (effect.type === \"preprocess\") {\n            const processed = effect.transform(ctx.data, checkCtx);\n            if (ctx.common.async) {\n                return Promise.resolve(processed).then(async (processed) => {\n                    if (status.value === \"aborted\")\n                        return INVALID;\n                    const result = await this._def.schema._parseAsync({\n                        data: processed,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                    if (result.status === \"aborted\")\n                        return INVALID;\n                    if (result.status === \"dirty\")\n                        return DIRTY(result.value);\n                    if (status.value === \"dirty\")\n                        return DIRTY(result.value);\n                    return result;\n                });\n            }\n            else {\n                if (status.value === \"aborted\")\n                    return INVALID;\n                const result = this._def.schema._parseSync({\n                    data: processed,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (result.status === \"aborted\")\n                    return INVALID;\n                if (result.status === \"dirty\")\n                    return DIRTY(result.value);\n                if (status.value === \"dirty\")\n                    return DIRTY(result.value);\n                return result;\n            }\n        }\n        if (effect.type === \"refinement\") {\n            const executeRefinement = (acc) => {\n                const result = effect.refinement(acc, checkCtx);\n                if (ctx.common.async) {\n                    return Promise.resolve(result);\n                }\n                if (result instanceof Promise) {\n                    throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n                }\n                return acc;\n            };\n            if (ctx.common.async === false) {\n                const inner = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inner.status === \"aborted\")\n                    return INVALID;\n                if (inner.status === \"dirty\")\n                    status.dirty();\n                // return value is ignored\n                executeRefinement(inner.value);\n                return { status: status.value, value: inner.value };\n            }\n            else {\n                return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n                    if (inner.status === \"aborted\")\n                        return INVALID;\n                    if (inner.status === \"dirty\")\n                        status.dirty();\n                    return executeRefinement(inner.value).then(() => {\n                        return { status: status.value, value: inner.value };\n                    });\n                });\n            }\n        }\n        if (effect.type === \"transform\") {\n            if (ctx.common.async === false) {\n                const base = this._def.schema._parseSync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (!isValid(base))\n                    return INVALID;\n                const result = effect.transform(base.value, checkCtx);\n                if (result instanceof Promise) {\n                    throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n                }\n                return { status: status.value, value: result };\n            }\n            else {\n                return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n                    if (!isValid(base))\n                        return INVALID;\n                    return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n                        status: status.value,\n                        value: result,\n                    }));\n                });\n            }\n        }\n        util.assertNever(effect);\n    }\n}\nZodEffects.create = (schema, effect, params) => {\n    return new ZodEffects({\n        schema,\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        effect,\n        ...processCreateParams(params),\n    });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n    return new ZodEffects({\n        schema,\n        effect: { type: \"preprocess\", transform: preprocess },\n        typeName: ZodFirstPartyTypeKind.ZodEffects,\n        ...processCreateParams(params),\n    });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === ZodParsedType.undefined) {\n            return OK(undefined);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodOptional.create = (type, params) => {\n    return new ZodOptional({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodOptional,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNullable extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType === ZodParsedType.null) {\n            return OK(null);\n        }\n        return this._def.innerType._parse(input);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodNullable.create = (type, params) => {\n    return new ZodNullable({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodNullable,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodDefault extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        let data = ctx.data;\n        if (ctx.parsedType === ZodParsedType.undefined) {\n            data = this._def.defaultValue();\n        }\n        return this._def.innerType._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    removeDefault() {\n        return this._def.innerType;\n    }\n}\nZodDefault.create = (type, params) => {\n    return new ZodDefault({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodDefault,\n        defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodCatch extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        // newCtx is used to not collect issues from inner types in ctx\n        const newCtx = {\n            ...ctx,\n            common: {\n                ...ctx.common,\n                issues: [],\n            },\n        };\n        const result = this._def.innerType._parse({\n            data: newCtx.data,\n            path: newCtx.path,\n            parent: {\n                ...newCtx,\n            },\n        });\n        if (isAsync(result)) {\n            return result.then((result) => {\n                return {\n                    status: \"valid\",\n                    value: result.status === \"valid\"\n                        ? result.value\n                        : this._def.catchValue({\n                            get error() {\n                                return new ZodError(newCtx.common.issues);\n                            },\n                            input: newCtx.data,\n                        }),\n                };\n            });\n        }\n        else {\n            return {\n                status: \"valid\",\n                value: result.status === \"valid\"\n                    ? result.value\n                    : this._def.catchValue({\n                        get error() {\n                            return new ZodError(newCtx.common.issues);\n                        },\n                        input: newCtx.data,\n                    }),\n            };\n        }\n    }\n    removeCatch() {\n        return this._def.innerType;\n    }\n}\nZodCatch.create = (type, params) => {\n    return new ZodCatch({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodCatch,\n        catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n        ...processCreateParams(params),\n    });\n};\nexport class ZodNaN extends ZodType {\n    _parse(input) {\n        const parsedType = this._getType(input);\n        if (parsedType !== ZodParsedType.nan) {\n            const ctx = this._getOrReturnCtx(input);\n            addIssueToContext(ctx, {\n                code: ZodIssueCode.invalid_type,\n                expected: ZodParsedType.nan,\n                received: ctx.parsedType,\n            });\n            return INVALID;\n        }\n        return { status: \"valid\", value: input.data };\n    }\n}\nZodNaN.create = (params) => {\n    return new ZodNaN({\n        typeName: ZodFirstPartyTypeKind.ZodNaN,\n        ...processCreateParams(params),\n    });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n    _parse(input) {\n        const { ctx } = this._processInputParams(input);\n        const data = ctx.data;\n        return this._def.type._parse({\n            data,\n            path: ctx.path,\n            parent: ctx,\n        });\n    }\n    unwrap() {\n        return this._def.type;\n    }\n}\nexport class ZodPipeline extends ZodType {\n    _parse(input) {\n        const { status, ctx } = this._processInputParams(input);\n        if (ctx.common.async) {\n            const handleAsync = async () => {\n                const inResult = await this._def.in._parseAsync({\n                    data: ctx.data,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n                if (inResult.status === \"aborted\")\n                    return INVALID;\n                if (inResult.status === \"dirty\") {\n                    status.dirty();\n                    return DIRTY(inResult.value);\n                }\n                else {\n                    return this._def.out._parseAsync({\n                        data: inResult.value,\n                        path: ctx.path,\n                        parent: ctx,\n                    });\n                }\n            };\n            return handleAsync();\n        }\n        else {\n            const inResult = this._def.in._parseSync({\n                data: ctx.data,\n                path: ctx.path,\n                parent: ctx,\n            });\n            if (inResult.status === \"aborted\")\n                return INVALID;\n            if (inResult.status === \"dirty\") {\n                status.dirty();\n                return {\n                    status: \"dirty\",\n                    value: inResult.value,\n                };\n            }\n            else {\n                return this._def.out._parseSync({\n                    data: inResult.value,\n                    path: ctx.path,\n                    parent: ctx,\n                });\n            }\n        }\n    }\n    static create(a, b) {\n        return new ZodPipeline({\n            in: a,\n            out: b,\n            typeName: ZodFirstPartyTypeKind.ZodPipeline,\n        });\n    }\n}\nexport class ZodReadonly extends ZodType {\n    _parse(input) {\n        const result = this._def.innerType._parse(input);\n        const freeze = (data) => {\n            if (isValid(data)) {\n                data.value = Object.freeze(data.value);\n            }\n            return data;\n        };\n        return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n    }\n    unwrap() {\n        return this._def.innerType;\n    }\n}\nZodReadonly.create = (type, params) => {\n    return new ZodReadonly({\n        innerType: type,\n        typeName: ZodFirstPartyTypeKind.ZodReadonly,\n        ...processCreateParams(params),\n    });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n//////////                    //////////\n//////////      z.custom      //////////\n//////////                    //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n    const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n    const p2 = typeof p === \"string\" ? { message: p } : p;\n    return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n    if (check)\n        return ZodAny.create().superRefine((data, ctx) => {\n            const r = check(data);\n            if (r instanceof Promise) {\n                return r.then((r) => {\n                    if (!r) {\n                        const params = cleanParams(_params, data);\n                        const _fatal = params.fatal ?? fatal ?? true;\n                        ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n                    }\n                });\n            }\n            if (!r) {\n                const params = cleanParams(_params, data);\n                const _fatal = params.fatal ?? fatal ?? true;\n                ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n            }\n            return;\n        });\n    return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n    object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n    ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n    ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n    ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n    ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n    ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n    ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n    ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n    ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n    ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n    ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n    ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n    ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n    ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n    ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n    ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n    ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n    ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n    ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n    ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n    ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n    ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n    ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n    ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n    ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n    ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n    ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n    ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n    ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n    ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n    ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n    ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n    ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n    ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n    ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n    ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n    ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n    constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n    message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n    string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n    number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n    boolean: ((arg) => ZodBoolean.create({\n        ...arg,\n        coerce: true,\n    })),\n    bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n    date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import React, { forwardRef } from \"react\";\nimport MUIIconButton, {\n  IconButtonProps as MUIIconButtonProps,\n} from \"@mui/material/IconButton\";\n\nconst IconButton = forwardRef<HTMLButtonElement, MUIIconButtonProps>(\n  (props, ref) => <MUIIconButton ref={ref} {...props} />\n);\n\nexport default IconButton;\n","import React from \"react\";\nimport zod from \"zod\";\nimport MUIMenu from \"@mui/material/Menu\";\nimport MUIMenuItem from \"@mui/material/MenuItem\";\n\nimport { Text } from \"../Text/Text\";\nimport IconButton from \"../../buttons/Button/IconButton\";\nimport GridIcon from \"../Icons/GridIcon\";\nimport FlexBox from \"../../layout/FlexBox\";\nimport MUITypography from \"@mui/material/Typography\";\nimport MUIListItemIcon from \"@mui/material/ListItemIcon\";\nimport MUIListItemText from \"@mui/material/ListItemText\";\nimport { useExtendedTheme } from \"../../../export\";\n\nexport const AppSwitchLibrarySchema = zod.object({\n  id: zod.string(),\n  name: zod.string(),\n  url: zod.string(),\n  icon: zod.string(),\n});\n\nexport type AppSwitchLibraryType = zod.infer<typeof AppSwitchLibrarySchema>[];\n\nconst AppSwitch: React.FC<{ apps: AppSwitchLibraryType }> = ({ apps }) => {\n  const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\n  const theme = useExtendedTheme();\n  const open = Boolean(anchorEl);\n\n  const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n    setAnchorEl(event.currentTarget);\n  };\n\n  const handleClose = () => {\n    setAnchorEl(null);\n  };\n\n  return (\n    <div>\n      <IconButton\n        aria-label=\"app-switch\"\n        aria-controls={open ? \"app-switch-menu\" : undefined}\n        aria-haspopup=\"true\"\n        aria-expanded={open ? \"true\" : undefined}\n        onClick={handleClick}\n        color=\"primary\"\n      >\n        <GridIcon sx={{ height: 24, width: 24 }} />\n      </IconButton>\n      <MUIMenu\n        id=\"app-switch-menu\"\n        anchorEl={anchorEl}\n        open={open}\n        onClose={handleClose}\n        MenuListProps={{\n          \"aria-labelledby\": \"app-switch-button\",\n        }}\n        sx={{\n          \"& .MuiPaper-root\": {\n            backgroundColor: theme.palette.mode === \"dark\" ? \"#2A2A2A\" : \"#ffffff\",\n          },\n        }}\n      >\n        {apps.map((app, index) => {\n          const validateAppsSchema = AppSwitchLibrarySchema.safeParse(app);\n\n          if (!validateAppsSchema.success) {\n            const formattedErrors = validateAppsSchema.error.issues.map((issue) => {\n              return `${issue.path.toString().replace(\",\", \" > \")}: ${issue.message}`;\n            });\n            const errorMsg = formattedErrors.join(\"\\n\");\n            return (\n              <FlexBox key={errorMsg} role=\"menuitem\">\n                <Text>\n                  Misconfiguration error: App Switch library {app?.id ? `for id ${app.id}` : `at index ${index}`}\n                </Text>\n                <Text>{errorMsg}</Text>\n              </FlexBox>\n            );\n          }\n\n          return (\n            <MUIMenuItem\n              key={app.id}\n              onClick={() => {\n                window.open(app.url, \"_blank\");\n                handleClose();\n              }}\n              sx={{\n                display: \"flex\",\n                alignItems: \"center\",\n                marginX: 1,\n                borderRadius: \"4px\",\n                border: \"1px solid rgba(0, 0, 0, 0)\",\n                \"&:hover\": {\n                  backgroundColor:\n                    theme.palette.mode === \"dark\" ? theme.palette.background.default : \"rgba(0, 0, 0, 0.04)\",\n                  border: `1px solid ${theme.palette.primary.main}`,\n                },\n              }}\n            >\n              <MUIListItemIcon>\n                <img src={app.icon} alt={`${app.name} icon`} css={{ width: 25, height: 25 }} />\n              </MUIListItemIcon>\n              <MUIListItemText>\n                <MUITypography\n                  variant=\"h1\"\n                  sx={{\n                    marginTop: 0.5,\n                    fontFamily: \"Figtree\",\n                    fontSize: 16,\n                    fontWeight: 400,\n                    color: \"primary\",\n                    display: \"flex\",\n                    alignItems: \"center\",\n                  }}\n                >\n                  {app.name.toUpperCase()}\n                </MUITypography>\n              </MUIListItemText>\n            </MUIMenuItem>\n          );\n        })}\n      </MUIMenu>\n    </div>\n  );\n};\n\nexport default AppSwitch;\n","import React from \"react\";\nimport MUIChip, { ChipProps as MUIChipProps } from \"@mui/material/Chip\";\n\nexport type ChipProps = Omit<\n  MUIChipProps,\n  \"avatar\" | \"children\" | \"classes\" | \"clickable\" | \"component\" | \"deleteIcon\" | \"icon\" | \"skipFocusWhenDisabled\"\n>;\n\nconst Chip: React.FC<ChipProps> = ({ variant = \"filled\", color = \"primary\", ...chipProps }) => (\n  <MUIChip variant={variant} color={color} {...chipProps} />\n);\n\nexport default Chip;\n","import MUIDivider, { DividerProps as MUIDividerProps } from \"@mui/material/Divider\";\n\nexport interface DividerProps extends MUIDividerProps {\n  component?: React.ElementType;\n  flexItem?: boolean;\n  orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst Divider = (props: DividerProps) => <MUIDivider {...props} />;\n\nexport default Divider;\n","import React from \"react\";\nimport MUIBox from \"@mui/material/Box\";\n\nexport interface IESTypeProps extends React.HTMLAttributes<HTMLElement> {\n  backgroundColor: string;\n  borderColor: string;\n  color: string;\n  iconClass: string;\n}\n\nconst IESType: React.FC<IESTypeProps> = ({\n  backgroundColor,\n  borderColor,\n  color,\n  iconClass,\n  className,\n  role = \"img\",\n  ...props\n}) => (\n  <MUIBox\n    component=\"div\"\n    sx={{\n      backgroundColor,\n      color,\n      borderColor,\n      borderRadius: 9999,\n      width: 34,\n      height: 34,\n      borderWidth: 2,\n      borderStyle: \"solid\",\n      display: \"flex\",\n      justifyContent: \"center\",\n      alignItems: \"center\",\n    }}\n  >\n    <i\n      role={role}\n      aria-hidden=\"true\"\n      className={iconClass + \" \" + className}\n      {...props}\n    />\n  </MUIBox>\n);\n\nexport default IESType;\n","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n  return typeof element === 'string';\n}\nexport default isHostComponent;","import isHostComponent from \"../isHostComponent/index.js\";\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nfunction appendOwnerState(elementType, otherProps, ownerState) {\n  if (elementType === undefined || isHostComponent(elementType)) {\n    return otherProps;\n  }\n  return {\n    ...otherProps,\n    ownerState: {\n      ...otherProps.ownerState,\n      ...ownerState\n    }\n  };\n}\nexport default appendOwnerState;","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nfunction extractEventHandlers(object, excludeKeys = []) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}\nexport default extractEventHandlers;","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport function resolveComponentProps(componentProps, ownerState, slotState) {\n  if (typeof componentProps === 'function') {\n    return componentProps(ownerState, slotState);\n  }\n  return componentProps;\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n *\n * ```tsx\n * const rootRef = React.useRef<Instance>(null);\n * const refFork = useForkRef(rootRef, props.ref);\n *\n * return (\n *   <Root {...props} ref={refFork} />\n * );\n * ```\n *\n * @param {Array<React.Ref<Instance> | undefined>} refs The ref array.\n * @returns {React.RefCallback<Instance> | null} The new ref callback.\n */\nexport default function useForkRef(...refs) {\n  const cleanupRef = React.useRef(undefined);\n  const refEffect = React.useCallback(instance => {\n    const cleanups = refs.map(ref => {\n      if (ref == null) {\n        return null;\n      }\n      if (typeof ref === 'function') {\n        const refCallback = ref;\n        const refCleanup = refCallback(instance);\n        return typeof refCleanup === 'function' ? refCleanup : () => {\n          refCallback(null);\n        };\n      }\n      ref.current = instance;\n      return () => {\n        ref.current = null;\n      };\n    });\n    return () => {\n      cleanups.forEach(refCleanup => refCleanup?.());\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return value => {\n      if (cleanupRef.current) {\n        cleanupRef.current();\n        cleanupRef.current = undefined;\n      }\n      if (value != null) {\n        cleanupRef.current = refEffect(value);\n      }\n    };\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- intentionally ignoring that the dependency array must be an array literal\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nfunction omitEventHandlers(object) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}\nexport default omitEventHandlers;","import clsx from 'clsx';\nimport extractEventHandlers from \"../extractEventHandlers/index.js\";\nimport omitEventHandlers from \"../omitEventHandlers/index.js\";\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nfunction mergeSlotProps(parameters) {\n  const {\n    getSlotProps,\n    additionalProps,\n    externalSlotProps,\n    externalForwardedProps,\n    className\n  } = parameters;\n  if (!getSlotProps) {\n    // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n    // so we can simply merge all the props without having to worry about extracting event handlers.\n    const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n    const mergedStyle = {\n      ...additionalProps?.style,\n      ...externalForwardedProps?.style,\n      ...externalSlotProps?.style\n    };\n    const props = {\n      ...additionalProps,\n      ...externalForwardedProps,\n      ...externalSlotProps\n    };\n    if (joinedClasses.length > 0) {\n      props.className = joinedClasses;\n    }\n    if (Object.keys(mergedStyle).length > 0) {\n      props.style = mergedStyle;\n    }\n    return {\n      props,\n      internalRef: undefined\n    };\n  }\n\n  // In this case, getSlotProps is responsible for calling the external event handlers.\n  // We don't need to include them in the merged props because of this.\n\n  const eventHandlers = extractEventHandlers({\n    ...externalForwardedProps,\n    ...externalSlotProps\n  });\n  const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n  const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n  const internalSlotProps = getSlotProps(eventHandlers);\n\n  // The order of classes is important here.\n  // Emotion (that we use in libraries consuming Base UI) depends on this order\n  // to properly override style. It requires the most important classes to be last\n  // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n  const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n  const mergedStyle = {\n    ...internalSlotProps?.style,\n    ...additionalProps?.style,\n    ...externalForwardedProps?.style,\n    ...externalSlotProps?.style\n  };\n  const props = {\n    ...internalSlotProps,\n    ...additionalProps,\n    ...otherPropsWithoutEventHandlers,\n    ...componentsPropsWithoutEventHandlers\n  };\n  if (joinedClasses.length > 0) {\n    props.className = joinedClasses;\n  }\n  if (Object.keys(mergedStyle).length > 0) {\n    props.style = mergedStyle;\n  }\n  return {\n    props,\n    internalRef: internalSlotProps.ref\n  };\n}\nexport default mergeSlotProps;","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nfunction resolveComponentProps(componentProps, ownerState, slotState) {\n  if (typeof componentProps === 'function') {\n    return componentProps(ownerState, slotState);\n  }\n  return componentProps;\n}\nexport default resolveComponentProps;","'use client';\n\nimport useForkRef from \"../useForkRef/index.js\";\nimport appendOwnerState from \"../appendOwnerState/index.js\";\nimport mergeSlotProps from \"../mergeSlotProps/index.js\";\nimport resolveComponentProps from \"../resolveComponentProps/index.js\";\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nfunction useSlotProps(parameters) {\n  const {\n    elementType,\n    externalSlotProps,\n    ownerState,\n    skipResolvingSlotProps = false,\n    ...other\n  } = parameters;\n  const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n  const {\n    props: mergedProps,\n    internalRef\n  } = mergeSlotProps({\n    ...other,\n    externalSlotProps: resolvedComponentsProps\n  });\n  const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.additionalProps?.ref);\n  const props = appendOwnerState(elementType, {\n    ...mergedProps,\n    ref\n  }, ownerState);\n  return props;\n}\nexport default useSlotProps;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\n/**\n * Implements the same behavior as `useControlled` but for several models.\n * The controlled models are never stored in the state and the state is only updated if the model is not controlled.\n */\nexport const useTreeViewModels = (plugins, props) => {\n  const modelsRef = React.useRef({});\n  const [modelsState, setModelsState] = React.useState(() => {\n    const initialState = {};\n    plugins.forEach(plugin => {\n      if (plugin.models) {\n        Object.entries(plugin.models).forEach(([modelName, modelInitializer]) => {\n          modelsRef.current[modelName] = {\n            isControlled: props[modelName] !== undefined,\n            getDefaultValue: modelInitializer.getDefaultValue\n          };\n          initialState[modelName] = modelInitializer.getDefaultValue(props);\n        });\n      }\n    });\n    return initialState;\n  });\n  const models = Object.fromEntries(Object.entries(modelsRef.current).map(([modelName, model]) => {\n    const value = props[modelName] ?? modelsState[modelName];\n    return [modelName, {\n      value,\n      setControlledValue: newValue => {\n        if (!model.isControlled) {\n          setModelsState(prevState => _extends({}, prevState, {\n            [modelName]: newValue\n          }));\n        }\n      }\n    }];\n  }));\n\n  // We know that `modelsRef` do not vary across renders.\n  /* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\n  if (process.env.NODE_ENV !== 'production') {\n    Object.entries(modelsRef.current).forEach(([modelName, model]) => {\n      const controlled = props[modelName];\n      const newDefaultValue = model.getDefaultValue(props);\n      React.useEffect(() => {\n        if (model.isControlled !== (controlled !== undefined)) {\n          console.error([`MUI X: A component is changing the ${model.isControlled ? '' : 'un'}controlled ${modelName} state of TreeView to be ${model.isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${modelName} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n        }\n      }, [controlled]);\n      const {\n        current: defaultValue\n      } = React.useRef(newDefaultValue);\n      React.useEffect(() => {\n        if (!model.isControlled && defaultValue !== newDefaultValue) {\n          console.error([`MUI X: A component is changing the default ${modelName} state of an uncontrolled TreeView after being initialized. ` + `To suppress this warning opt to use a controlled TreeView.`].join('\\n'));\n        }\n      }, [JSON.stringify(newDefaultValue)]);\n    });\n  }\n  /* eslint-enable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\n\n  return models;\n};","// Used https://gist.github.com/mudge/5830382 as a starting point.\n// See https://github.com/browserify/events/blob/master/events.js for\n// the Node.js (https://nodejs.org/api/events.html) polyfill used by webpack.\nexport class EventManager {\n  constructor() {\n    this.maxListeners = 20;\n    this.warnOnce = false;\n    this.events = {};\n  }\n  on(eventName, listener, options = {}) {\n    let collection = this.events[eventName];\n    if (!collection) {\n      collection = {\n        highPriority: new Map(),\n        regular: new Map()\n      };\n      this.events[eventName] = collection;\n    }\n    if (options.isFirst) {\n      collection.highPriority.set(listener, true);\n    } else {\n      collection.regular.set(listener, true);\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      const collectionSize = collection.highPriority.size + collection.regular.size;\n      if (collectionSize > this.maxListeners && !this.warnOnce) {\n        this.warnOnce = true;\n        console.warn([`Possible EventEmitter memory leak detected. ${collectionSize} ${eventName} listeners added.`].join('\\n'));\n      }\n    }\n  }\n  removeListener(eventName, listener) {\n    if (this.events[eventName]) {\n      this.events[eventName].regular.delete(listener);\n      this.events[eventName].highPriority.delete(listener);\n    }\n  }\n  removeAllListeners() {\n    this.events = {};\n  }\n  emit(eventName, ...args) {\n    const collection = this.events[eventName];\n    if (!collection) {\n      return;\n    }\n    const highPriorityListeners = Array.from(collection.highPriority.keys());\n    const regularListeners = Array.from(collection.regular.keys());\n    for (let i = highPriorityListeners.length - 1; i >= 0; i -= 1) {\n      const listener = highPriorityListeners[i];\n      if (collection.highPriority.has(listener)) {\n        listener.apply(this, args);\n      }\n    }\n    for (let i = 0; i < regularListeners.length; i += 1) {\n      const listener = regularListeners[i];\n      if (collection.regular.has(listener)) {\n        listener.apply(this, args);\n      }\n    }\n  }\n  once(eventName, listener) {\n    // eslint-disable-next-line consistent-this\n    const that = this;\n    this.on(eventName, function oneTimeListener(...args) {\n      that.removeListener(eventName, oneTimeListener);\n      listener.apply(that, args);\n    });\n  }\n}","import * as React from 'react';\nimport { EventManager } from '../../utils/EventManager';\nconst isSyntheticEvent = event => {\n  return event.isPropagationStopped !== undefined;\n};\nexport const useTreeViewInstanceEvents = () => {\n  const [eventManager] = React.useState(() => new EventManager());\n  const publishEvent = React.useCallback((...args) => {\n    const [name, params, event = {}] = args;\n    event.defaultMuiPrevented = false;\n    if (isSyntheticEvent(event) && event.isPropagationStopped()) {\n      return;\n    }\n    eventManager.emit(name, params, event);\n  }, [eventManager]);\n  const subscribeEvent = React.useCallback((event, handler) => {\n    eventManager.on(event, handler);\n    return () => {\n      eventManager.removeListener(event, handler);\n    };\n  }, [eventManager]);\n  return {\n    instance: {\n      $$publishEvent: publishEvent,\n      $$subscribeEvent: subscribeEvent\n    }\n  };\n};\nuseTreeViewInstanceEvents.params = {};","import { useTreeViewInstanceEvents } from './useTreeViewInstanceEvents';\n/**\n * Internal plugins that create the tools used by the other plugins.\n * These plugins are used by the tree view components.\n */\nexport const TREE_VIEW_CORE_PLUGINS = [useTreeViewInstanceEvents];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useForkRef from '@mui/utils/useForkRef';\nimport { useTreeViewModels } from './useTreeViewModels';\nimport { TREE_VIEW_CORE_PLUGINS } from '../corePlugins';\nexport function useTreeViewApiInitialization(inputApiRef) {\n  const fallbackPublicApiRef = React.useRef({});\n  if (inputApiRef) {\n    if (inputApiRef.current == null) {\n      inputApiRef.current = {};\n    }\n    return inputApiRef.current;\n  }\n  return fallbackPublicApiRef.current;\n}\nexport const useTreeView = inParams => {\n  const plugins = [...TREE_VIEW_CORE_PLUGINS, ...inParams.plugins];\n  const params = plugins.reduce((acc, plugin) => {\n    if (plugin.getDefaultizedParams) {\n      return plugin.getDefaultizedParams(acc);\n    }\n    return acc;\n  }, inParams);\n  const models = useTreeViewModels(plugins, params);\n  const instanceRef = React.useRef({});\n  const instance = instanceRef.current;\n  const publicAPI = useTreeViewApiInitialization(inParams.apiRef);\n  const innerRootRef = React.useRef(null);\n  const handleRootRef = useForkRef(innerRootRef, inParams.rootRef);\n  const [state, setState] = React.useState(() => {\n    const temp = {};\n    plugins.forEach(plugin => {\n      if (plugin.getInitialState) {\n        Object.assign(temp, plugin.getInitialState(params));\n      }\n    });\n    return temp;\n  });\n  const rootPropsGetters = [];\n  const contextValue = {\n    publicAPI,\n    instance: instance,\n    rootRef: innerRootRef\n  };\n  const runPlugin = plugin => {\n    const pluginResponse = plugin({\n      instance,\n      params,\n      slots: params.slots,\n      slotProps: params.slotProps,\n      state,\n      setState,\n      rootRef: innerRootRef,\n      models\n    });\n    if (pluginResponse.getRootProps) {\n      rootPropsGetters.push(pluginResponse.getRootProps);\n    }\n    if (pluginResponse.publicAPI) {\n      Object.assign(publicAPI, pluginResponse.publicAPI);\n    }\n    if (pluginResponse.instance) {\n      Object.assign(instance, pluginResponse.instance);\n    }\n    if (pluginResponse.contextValue) {\n      Object.assign(contextValue, pluginResponse.contextValue);\n    }\n  };\n  plugins.forEach(runPlugin);\n  contextValue.runItemPlugins = itemPluginProps => {\n    let finalRootRef = null;\n    let finalContentRef = null;\n    plugins.forEach(plugin => {\n      if (!plugin.itemPlugin) {\n        return;\n      }\n      const itemPluginResponse = plugin.itemPlugin({\n        props: itemPluginProps,\n        rootRef: finalRootRef,\n        contentRef: finalContentRef\n      });\n      if (itemPluginResponse?.rootRef) {\n        finalRootRef = itemPluginResponse.rootRef;\n      }\n      if (itemPluginResponse?.contentRef) {\n        finalContentRef = itemPluginResponse.contentRef;\n      }\n    });\n    return {\n      contentRef: finalContentRef,\n      rootRef: finalRootRef\n    };\n  };\n  const itemWrappers = plugins.map(plugin => plugin.wrapItem).filter(wrapItem => !!wrapItem);\n  contextValue.wrapItem = ({\n    itemId,\n    children\n  }) => {\n    let finalChildren = children;\n    itemWrappers.forEach(itemWrapper => {\n      finalChildren = itemWrapper({\n        itemId,\n        children: finalChildren\n      });\n    });\n    return finalChildren;\n  };\n  const rootWrappers = plugins.map(plugin => plugin.wrapRoot).filter(wrapRoot => !!wrapRoot);\n  contextValue.wrapRoot = ({\n    children\n  }) => {\n    let finalChildren = children;\n    rootWrappers.forEach(rootWrapper => {\n      finalChildren = rootWrapper({\n        children: finalChildren\n      });\n    });\n    return finalChildren;\n  };\n  const getRootProps = (otherHandlers = {}) => {\n    const rootProps = _extends({\n      role: 'tree'\n    }, otherHandlers, {\n      ref: handleRootRef\n    });\n    rootPropsGetters.forEach(rootPropsGetter => {\n      Object.assign(rootProps, rootPropsGetter(otherHandlers));\n    });\n    return rootProps;\n  };\n  return {\n    getRootProps,\n    rootRef: handleRootRef,\n    contextValue: contextValue,\n    instance: instance\n  };\n};","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nexport const TreeViewContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n  TreeViewContext.displayName = 'TreeViewContext';\n}","import * as React from 'react';\nimport { TreeViewContext } from './TreeViewContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Sets up the contexts for the underlying TreeItem components.\n *\n * @ignore - do not document.\n */\nexport function TreeViewProvider(props) {\n  const {\n    value,\n    children\n  } = props;\n  return /*#__PURE__*/_jsx(TreeViewContext.Provider, {\n    value: value,\n    children: value.wrapRoot({\n      children\n    })\n  });\n}","import * as React from 'react';\nimport useId from '@mui/utils/useId';\nexport const useTreeViewId = ({\n  params\n}) => {\n  const treeId = useId(params.id);\n  const getTreeItemIdAttribute = React.useCallback((itemId, idAttribute) => idAttribute ?? `${treeId}-${itemId}`, [treeId]);\n  return {\n    getRootProps: () => ({\n      id: treeId\n    }),\n    instance: {\n      getTreeItemIdAttribute\n    }\n  };\n};\nuseTreeViewId.params = {\n  id: true\n};","export const publishTreeViewEvent = (instance, eventName, params) => {\n  instance.$$publishEvent(eventName, params);\n};","export const TREE_VIEW_ROOT_PARENT_ID = '__TREE_VIEW_ROOT_PARENT_ID__';\nexport const buildSiblingIndexes = siblings => {\n  const siblingsIndexLookup = {};\n  siblings.forEach((childId, index) => {\n    siblingsIndexLookup[childId] = index;\n  });\n  return siblingsIndexLookup;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { publishTreeViewEvent } from '../../utils/publishTreeViewEvent';\nimport { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from './useTreeViewItems.utils';\nconst updateItemsState = ({\n  items,\n  isItemDisabled,\n  getItemLabel,\n  getItemId\n}) => {\n  const itemMetaMap = {};\n  const itemMap = {};\n  const itemOrderedChildrenIds = {\n    [TREE_VIEW_ROOT_PARENT_ID]: []\n  };\n  const processItem = (item, parentId) => {\n    const id = getItemId ? getItemId(item) : item.id;\n    if (id == null) {\n      throw new Error(['MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', 'An item was provided without id in the `items` prop:', JSON.stringify(item)].join('\\n'));\n    }\n    if (itemMetaMap[id] != null) {\n      throw new Error(['MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', `Two items were provided with the same id in the \\`items\\` prop: \"${id}\"`].join('\\n'));\n    }\n    const label = getItemLabel ? getItemLabel(item) : item.label;\n    if (label == null) {\n      throw new Error(['MUI X: The Tree View component requires all items to have a `label` property.', 'Alternatively, you can use the `getItemLabel` prop to specify a custom label for each item.', 'An item was provided without label in the `items` prop:', JSON.stringify(item)].join('\\n'));\n    }\n    itemMetaMap[id] = {\n      id,\n      label,\n      parentId,\n      idAttribute: undefined,\n      expandable: !!item.children?.length,\n      disabled: isItemDisabled ? isItemDisabled(item) : false\n    };\n    itemMap[id] = item;\n    itemOrderedChildrenIds[id] = [];\n    const parentIdWithDefault = parentId ?? TREE_VIEW_ROOT_PARENT_ID;\n    if (!itemOrderedChildrenIds[parentIdWithDefault]) {\n      itemOrderedChildrenIds[parentIdWithDefault] = [];\n    }\n    itemOrderedChildrenIds[parentIdWithDefault].push(id);\n    item.children?.forEach(child => processItem(child, id));\n  };\n  items.forEach(item => processItem(item, null));\n  const itemChildrenIndexes = {};\n  Object.keys(itemOrderedChildrenIds).forEach(parentId => {\n    itemChildrenIndexes[parentId] = buildSiblingIndexes(itemOrderedChildrenIds[parentId]);\n  });\n  return {\n    itemMetaMap,\n    itemMap,\n    itemOrderedChildrenIds,\n    itemChildrenIndexes\n  };\n};\nexport const useTreeViewItems = ({\n  instance,\n  params,\n  state,\n  setState\n}) => {\n  const getItemMeta = React.useCallback(itemId => state.items.itemMetaMap[itemId], [state.items.itemMetaMap]);\n  const getItem = React.useCallback(itemId => state.items.itemMap[itemId], [state.items.itemMap]);\n  const isItemDisabled = React.useCallback(itemId => {\n    if (itemId == null) {\n      return false;\n    }\n    let itemMeta = instance.getItemMeta(itemId);\n\n    // This can be called before the item has been added to the item map.\n    if (!itemMeta) {\n      return false;\n    }\n    if (itemMeta.disabled) {\n      return true;\n    }\n    while (itemMeta.parentId != null) {\n      itemMeta = instance.getItemMeta(itemMeta.parentId);\n      if (itemMeta.disabled) {\n        return true;\n      }\n    }\n    return false;\n  }, [instance]);\n  const getItemIndex = React.useCallback(itemId => {\n    const parentId = instance.getItemMeta(itemId).parentId ?? TREE_VIEW_ROOT_PARENT_ID;\n    return state.items.itemChildrenIndexes[parentId][itemId];\n  }, [instance, state.items.itemChildrenIndexes]);\n  const getItemOrderedChildrenIds = React.useCallback(itemId => state.items.itemOrderedChildrenIds[itemId ?? TREE_VIEW_ROOT_PARENT_ID] ?? [], [state.items.itemOrderedChildrenIds]);\n  const isItemNavigable = itemId => {\n    if (params.disabledItemsFocusable) {\n      return true;\n    }\n    return !instance.isItemDisabled(itemId);\n  };\n  const areItemUpdatesPreventedRef = React.useRef(false);\n  const preventItemUpdates = React.useCallback(() => {\n    areItemUpdatesPreventedRef.current = true;\n  }, []);\n  const areItemUpdatesPrevented = React.useCallback(() => areItemUpdatesPreventedRef.current, []);\n  React.useEffect(() => {\n    if (instance.areItemUpdatesPrevented()) {\n      return;\n    }\n    setState(prevState => {\n      const newState = updateItemsState({\n        items: params.items,\n        isItemDisabled: params.isItemDisabled,\n        getItemId: params.getItemId,\n        getItemLabel: params.getItemLabel\n      });\n      Object.values(prevState.items.itemMetaMap).forEach(item => {\n        if (!newState.itemMetaMap[item.id]) {\n          publishTreeViewEvent(instance, 'removeItem', {\n            id: item.id\n          });\n        }\n      });\n      return _extends({}, prevState, {\n        items: newState\n      });\n    });\n  }, [instance, setState, params.items, params.isItemDisabled, params.getItemId, params.getItemLabel]);\n  const getItemsToRender = () => {\n    const getPropsFromItemId = id => {\n      const item = state.items.itemMetaMap[id];\n      return {\n        label: item.label,\n        itemId: item.id,\n        id: item.idAttribute,\n        children: state.items.itemOrderedChildrenIds[id].map(getPropsFromItemId)\n      };\n    };\n    return state.items.itemOrderedChildrenIds[TREE_VIEW_ROOT_PARENT_ID].map(getPropsFromItemId);\n  };\n  return {\n    publicAPI: {\n      getItem\n    },\n    instance: {\n      getItemMeta,\n      getItem,\n      getItemsToRender,\n      getItemIndex,\n      getItemOrderedChildrenIds,\n      isItemDisabled,\n      isItemNavigable,\n      preventItemUpdates,\n      areItemUpdatesPrevented\n    },\n    contextValue: {\n      disabledItemsFocusable: params.disabledItemsFocusable\n    }\n  };\n};\nuseTreeViewItems.getInitialState = params => ({\n  items: updateItemsState({\n    items: params.items,\n    isItemDisabled: params.isItemDisabled,\n    getItemId: params.getItemId,\n    getItemLabel: params.getItemLabel\n  })\n});\nuseTreeViewItems.getDefaultizedParams = params => _extends({}, params, {\n  disabledItemsFocusable: params.disabledItemsFocusable ?? false\n});\nuseTreeViewItems.params = {\n  disabledItemsFocusable: true,\n  items: true,\n  isItemDisabled: true,\n  getItemLabel: true,\n  getItemId: true\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport const useTreeViewExpansion = ({\n  instance,\n  params,\n  models\n}) => {\n  const expandedItemsMap = React.useMemo(() => {\n    const temp = new Map();\n    models.expandedItems.value.forEach(id => {\n      temp.set(id, true);\n    });\n    return temp;\n  }, [models.expandedItems.value]);\n  const setExpandedItems = (event, value) => {\n    params.onExpandedItemsChange?.(event, value);\n    models.expandedItems.setControlledValue(value);\n  };\n  const isItemExpanded = React.useCallback(itemId => expandedItemsMap.has(itemId), [expandedItemsMap]);\n  const isItemExpandable = React.useCallback(itemId => !!instance.getItemMeta(itemId)?.expandable, [instance]);\n  const toggleItemExpansion = useEventCallback((event, itemId) => {\n    const isExpandedBefore = instance.isItemExpanded(itemId);\n    instance.setItemExpansion(event, itemId, !isExpandedBefore);\n  });\n  const setItemExpansion = useEventCallback((event, itemId, isExpanded) => {\n    const isExpandedBefore = instance.isItemExpanded(itemId);\n    if (isExpandedBefore === isExpanded) {\n      return;\n    }\n    let newExpanded;\n    if (isExpanded) {\n      newExpanded = [itemId].concat(models.expandedItems.value);\n    } else {\n      newExpanded = models.expandedItems.value.filter(id => id !== itemId);\n    }\n    if (params.onItemExpansionToggle) {\n      params.onItemExpansionToggle(event, itemId, isExpanded);\n    }\n    setExpandedItems(event, newExpanded);\n  });\n  const expandAllSiblings = (event, itemId) => {\n    const itemMeta = instance.getItemMeta(itemId);\n    const siblings = instance.getItemOrderedChildrenIds(itemMeta.parentId);\n    const diff = siblings.filter(child => instance.isItemExpandable(child) && !instance.isItemExpanded(child));\n    const newExpanded = models.expandedItems.value.concat(diff);\n    if (diff.length > 0) {\n      if (params.onItemExpansionToggle) {\n        diff.forEach(newlyExpandedItemId => {\n          params.onItemExpansionToggle(event, newlyExpandedItemId, true);\n        });\n      }\n      setExpandedItems(event, newExpanded);\n    }\n  };\n  return {\n    publicAPI: {\n      setItemExpansion\n    },\n    instance: {\n      isItemExpanded,\n      isItemExpandable,\n      setItemExpansion,\n      toggleItemExpansion,\n      expandAllSiblings\n    }\n  };\n};\nuseTreeViewExpansion.models = {\n  expandedItems: {\n    getDefaultValue: params => params.defaultExpandedItems\n  }\n};\nconst DEFAULT_EXPANDED_ITEMS = [];\nuseTreeViewExpansion.getDefaultizedParams = params => _extends({}, params, {\n  defaultExpandedItems: params.defaultExpandedItems ?? DEFAULT_EXPANDED_ITEMS\n});\nuseTreeViewExpansion.params = {\n  expandedItems: true,\n  defaultExpandedItems: true,\n  onExpandedItemsChange: true,\n  onItemExpansionToggle: true\n};","const getLastNavigableItemInArray = (instance, items) => {\n  // Equivalent to Array.prototype.findLastIndex\n  let itemIndex = items.length - 1;\n  while (itemIndex >= 0 && !instance.isItemNavigable(items[itemIndex])) {\n    itemIndex -= 1;\n  }\n  if (itemIndex === -1) {\n    return undefined;\n  }\n  return items[itemIndex];\n};\nexport const getPreviousNavigableItem = (instance, itemId) => {\n  const itemMeta = instance.getItemMeta(itemId);\n  const siblings = instance.getItemOrderedChildrenIds(itemMeta.parentId);\n  const itemIndex = instance.getItemIndex(itemId);\n\n  // TODO: What should we do if the parent is not navigable?\n  if (itemIndex === 0) {\n    return itemMeta.parentId;\n  }\n  let currentItemId = siblings[itemIndex - 1];\n  let lastNavigableChild = getLastNavigableItemInArray(instance, instance.getItemOrderedChildrenIds(currentItemId));\n  while (instance.isItemExpanded(currentItemId) && lastNavigableChild != null) {\n    currentItemId = lastNavigableChild;\n    lastNavigableChild = instance.getItemOrderedChildrenIds(currentItemId).find(instance.isItemNavigable);\n  }\n  return currentItemId;\n};\nexport const getNextNavigableItem = (instance, itemId) => {\n  // If the item is expanded and has some navigable children, return the first of them.\n  if (instance.isItemExpanded(itemId)) {\n    const firstNavigableChild = instance.getItemOrderedChildrenIds(itemId).find(instance.isItemNavigable);\n    if (firstNavigableChild != null) {\n      return firstNavigableChild;\n    }\n  }\n  let itemMeta = instance.getItemMeta(itemId);\n  while (itemMeta != null) {\n    // Try to find the first navigable sibling after the current item.\n    const siblings = instance.getItemOrderedChildrenIds(itemMeta.parentId);\n    const currentItemIndex = instance.getItemIndex(itemMeta.id);\n    if (currentItemIndex < siblings.length - 1) {\n      let nextItemIndex = currentItemIndex + 1;\n      while (!instance.isItemNavigable(siblings[nextItemIndex]) && nextItemIndex < siblings.length - 1) {\n        nextItemIndex += 1;\n      }\n      if (instance.isItemNavigable(siblings[nextItemIndex])) {\n        return siblings[nextItemIndex];\n      }\n    }\n\n    // If the sibling does not exist, go up a level to the parent and try again.\n    itemMeta = instance.getItemMeta(itemMeta.parentId);\n  }\n  return null;\n};\nexport const getLastNavigableItem = instance => {\n  let itemId = null;\n  while (itemId == null || instance.isItemExpanded(itemId)) {\n    const children = instance.getItemOrderedChildrenIds(itemId);\n    const lastNavigableChild = getLastNavigableItemInArray(instance, children);\n\n    // The item has no navigable children.\n    if (lastNavigableChild == null) {\n      return itemId;\n    }\n    itemId = lastNavigableChild;\n  }\n  return itemId;\n};\nexport const getFirstNavigableItem = instance => instance.getItemOrderedChildrenIds(null).find(instance.isItemNavigable);\n\n/**\n * This is used to determine the start and end of a selection range so\n * we can get the items between the two border items.\n *\n * It finds the items' common ancestor using\n * a naive implementation of a lowest common ancestor algorithm\n * (https://en.wikipedia.org/wiki/Lowest_common_ancestor).\n * Then compares the ancestor's 2 children that are ancestors of itemA and ItemB\n * so we can compare their indexes to work out which item comes first in a depth first search.\n * (https://en.wikipedia.org/wiki/Depth-first_search)\n *\n * Another way to put it is which item is shallower in a trémaux tree\n * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree\n */\nexport const findOrderInTremauxTree = (instance, itemAId, itemBId) => {\n  if (itemAId === itemBId) {\n    return [itemAId, itemBId];\n  }\n  const itemMetaA = instance.getItemMeta(itemAId);\n  const itemMetaB = instance.getItemMeta(itemBId);\n  if (itemMetaA.parentId === itemMetaB.id || itemMetaB.parentId === itemMetaA.id) {\n    return itemMetaB.parentId === itemMetaA.id ? [itemMetaA.id, itemMetaB.id] : [itemMetaB.id, itemMetaA.id];\n  }\n  const aFamily = [itemMetaA.id];\n  const bFamily = [itemMetaB.id];\n  let aAncestor = itemMetaA.parentId;\n  let bAncestor = itemMetaB.parentId;\n  let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n  let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n  let continueA = true;\n  let continueB = true;\n  while (!bAncestorIsCommon && !aAncestorIsCommon) {\n    if (continueA) {\n      aFamily.push(aAncestor);\n      aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n      continueA = aAncestor !== null;\n      if (!aAncestorIsCommon && continueA) {\n        aAncestor = instance.getItemMeta(aAncestor).parentId;\n      }\n    }\n    if (continueB && !aAncestorIsCommon) {\n      bFamily.push(bAncestor);\n      bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n      continueB = bAncestor !== null;\n      if (!bAncestorIsCommon && continueB) {\n        bAncestor = instance.getItemMeta(bAncestor).parentId;\n      }\n    }\n  }\n  const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;\n  const ancestorFamily = instance.getItemOrderedChildrenIds(commonAncestor);\n  const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];\n  const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];\n  return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide) ? [itemAId, itemBId] : [itemBId, itemAId];\n};\nexport const getNonDisabledItemsInRange = (instance, itemAId, itemBId) => {\n  const getNextItem = itemId => {\n    // If the item is expanded and has some children, return the first of them.\n    if (instance.isItemExpandable(itemId) && instance.isItemExpanded(itemId)) {\n      return instance.getItemOrderedChildrenIds(itemId)[0];\n    }\n    let itemMeta = instance.getItemMeta(itemId);\n    while (itemMeta != null) {\n      // Try to find the first navigable sibling after the current item.\n      const siblings = instance.getItemOrderedChildrenIds(itemMeta.parentId);\n      const currentItemIndex = instance.getItemIndex(itemMeta.id);\n      if (currentItemIndex < siblings.length - 1) {\n        return siblings[currentItemIndex + 1];\n      }\n\n      // If the item is the last of its siblings, go up a level to the parent and try again.\n      itemMeta = instance.getItemMeta(itemMeta.parentId);\n    }\n    throw new Error('Invalid range');\n  };\n  const [first, last] = findOrderInTremauxTree(instance, itemAId, itemBId);\n  const items = [first];\n  let current = first;\n  while (current !== last) {\n    current = getNextItem(current);\n    if (!instance.isItemDisabled(current)) {\n      items.push(current);\n    }\n  }\n  return items;\n};\nexport const getAllNavigableItems = instance => {\n  let item = getFirstNavigableItem(instance);\n  const navigableItems = [];\n  while (item != null) {\n    navigableItems.push(item);\n    item = getNextNavigableItem(instance, item);\n  }\n  return navigableItems;\n};","/**\n * Transform the `selectedItems` model to be an array if it was a string or null.\n * @param {string[] | string | null} model The raw model.\n * @returns {string[]} The converted model.\n */\nexport const convertSelectedItemsToArray = model => {\n  if (Array.isArray(model)) {\n    return model;\n  }\n  if (model != null) {\n    return [model];\n  }\n  return [];\n};\nexport const getLookupFromArray = array => {\n  const lookup = {};\n  array.forEach(itemId => {\n    lookup[itemId] = true;\n  });\n  return lookup;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { findOrderInTremauxTree, getAllNavigableItems, getFirstNavigableItem, getLastNavigableItem, getNonDisabledItemsInRange } from '../../utils/tree';\nimport { convertSelectedItemsToArray, getLookupFromArray } from './useTreeViewSelection.utils';\nexport const useTreeViewSelection = ({\n  instance,\n  params,\n  models\n}) => {\n  const lastSelectedItem = React.useRef(null);\n  const lastSelectedRange = React.useRef({});\n  const selectedItemsMap = React.useMemo(() => {\n    const temp = new Map();\n    if (Array.isArray(models.selectedItems.value)) {\n      models.selectedItems.value.forEach(id => {\n        temp.set(id, true);\n      });\n    } else if (models.selectedItems.value != null) {\n      temp.set(models.selectedItems.value, true);\n    }\n    return temp;\n  }, [models.selectedItems.value]);\n  const setSelectedItems = (event, newSelectedItems) => {\n    if (params.onItemSelectionToggle) {\n      if (params.multiSelect) {\n        const addedItems = newSelectedItems.filter(itemId => !instance.isItemSelected(itemId));\n        const removedItems = models.selectedItems.value.filter(itemId => !newSelectedItems.includes(itemId));\n        addedItems.forEach(itemId => {\n          params.onItemSelectionToggle(event, itemId, true);\n        });\n        removedItems.forEach(itemId => {\n          params.onItemSelectionToggle(event, itemId, false);\n        });\n      } else if (newSelectedItems !== models.selectedItems.value) {\n        if (models.selectedItems.value != null) {\n          params.onItemSelectionToggle(event, models.selectedItems.value, false);\n        }\n        if (newSelectedItems != null) {\n          params.onItemSelectionToggle(event, newSelectedItems, true);\n        }\n      }\n    }\n    if (params.onSelectedItemsChange) {\n      params.onSelectedItemsChange(event, newSelectedItems);\n    }\n    models.selectedItems.setControlledValue(newSelectedItems);\n  };\n  const isItemSelected = itemId => selectedItemsMap.has(itemId);\n  const selectItem = (event, itemId, multiple = false) => {\n    if (params.disableSelection) {\n      return;\n    }\n    let newSelected;\n    if (multiple) {\n      const cleanSelectedItems = convertSelectedItemsToArray(models.selectedItems.value);\n      if (instance.isItemSelected(itemId)) {\n        newSelected = cleanSelectedItems.filter(id => id !== itemId);\n      } else {\n        newSelected = [itemId].concat(cleanSelectedItems);\n      }\n    } else {\n      newSelected = params.multiSelect ? [itemId] : itemId;\n    }\n    setSelectedItems(event, newSelected);\n    lastSelectedItem.current = itemId;\n    lastSelectedRange.current = {};\n  };\n  const selectRange = (event, [start, end]) => {\n    if (params.disableSelection || !params.multiSelect) {\n      return;\n    }\n    let newSelectedItems = convertSelectedItemsToArray(models.selectedItems.value).slice();\n\n    // If the last selection was a range selection,\n    // remove the items that were part of the last range from the model\n    if (Object.keys(lastSelectedRange.current).length > 0) {\n      newSelectedItems = newSelectedItems.filter(id => !lastSelectedRange.current[id]);\n    }\n\n    // Add to the model the items that are part of the new range and not already part of the model.\n    const selectedItemsLookup = getLookupFromArray(newSelectedItems);\n    const range = getNonDisabledItemsInRange(instance, start, end);\n    const itemsToAddToModel = range.filter(id => !selectedItemsLookup[id]);\n    newSelectedItems = newSelectedItems.concat(itemsToAddToModel);\n    setSelectedItems(event, newSelectedItems);\n    lastSelectedRange.current = getLookupFromArray(range);\n  };\n  const expandSelectionRange = (event, itemId) => {\n    if (lastSelectedItem.current != null) {\n      const [start, end] = findOrderInTremauxTree(instance, itemId, lastSelectedItem.current);\n      selectRange(event, [start, end]);\n    }\n  };\n  const selectRangeFromStartToItem = (event, itemId) => {\n    selectRange(event, [getFirstNavigableItem(instance), itemId]);\n  };\n  const selectRangeFromItemToEnd = (event, itemId) => {\n    selectRange(event, [itemId, getLastNavigableItem(instance)]);\n  };\n  const selectAllNavigableItems = event => {\n    if (params.disableSelection || !params.multiSelect) {\n      return;\n    }\n    const navigableItems = getAllNavigableItems(instance);\n    setSelectedItems(event, navigableItems);\n    lastSelectedRange.current = getLookupFromArray(navigableItems);\n  };\n  const selectItemFromArrowNavigation = (event, currentItem, nextItem) => {\n    if (params.disableSelection || !params.multiSelect) {\n      return;\n    }\n    let newSelectedItems = convertSelectedItemsToArray(models.selectedItems.value).slice();\n    if (Object.keys(lastSelectedRange.current).length === 0) {\n      newSelectedItems.push(nextItem);\n      lastSelectedRange.current = {\n        [currentItem]: true,\n        [nextItem]: true\n      };\n    } else {\n      if (!lastSelectedRange.current[currentItem]) {\n        lastSelectedRange.current = {};\n      }\n      if (lastSelectedRange.current[nextItem]) {\n        newSelectedItems = newSelectedItems.filter(id => id !== currentItem);\n        delete lastSelectedRange.current[currentItem];\n      } else {\n        newSelectedItems.push(nextItem);\n        lastSelectedRange.current[nextItem] = true;\n      }\n    }\n    setSelectedItems(event, newSelectedItems);\n  };\n  return {\n    getRootProps: () => ({\n      'aria-multiselectable': params.multiSelect\n    }),\n    instance: {\n      isItemSelected,\n      selectItem,\n      selectAllNavigableItems,\n      expandSelectionRange,\n      selectRangeFromStartToItem,\n      selectRangeFromItemToEnd,\n      selectItemFromArrowNavigation\n    },\n    contextValue: {\n      selection: {\n        multiSelect: params.multiSelect\n      }\n    }\n  };\n};\nuseTreeViewSelection.models = {\n  selectedItems: {\n    getDefaultValue: params => params.defaultSelectedItems\n  }\n};\nconst DEFAULT_SELECTED_ITEMS = [];\nuseTreeViewSelection.getDefaultizedParams = params => _extends({}, params, {\n  disableSelection: params.disableSelection ?? false,\n  multiSelect: params.multiSelect ?? false,\n  defaultSelectedItems: params.defaultSelectedItems ?? (params.multiSelect ? DEFAULT_SELECTED_ITEMS : null)\n});\nuseTreeViewSelection.params = {\n  disableSelection: true,\n  multiSelect: true,\n  defaultSelectedItems: true,\n  selectedItems: true,\n  onSelectedItemsChange: true,\n  onItemSelectionToggle: true\n};","// If no effect ran after this amount of time, we assume that the render was not committed by React\nconst CLEANUP_TIMER_LOOP_MILLIS = 1000;\nexport class TimerBasedCleanupTracking {\n  constructor(timeout = CLEANUP_TIMER_LOOP_MILLIS) {\n    this.timeouts = new Map();\n    this.cleanupTimeout = CLEANUP_TIMER_LOOP_MILLIS;\n    this.cleanupTimeout = timeout;\n  }\n  register(object, unsubscribe, unregisterToken) {\n    if (!this.timeouts) {\n      this.timeouts = new Map();\n    }\n    const timeout = setTimeout(() => {\n      if (typeof unsubscribe === 'function') {\n        unsubscribe();\n      }\n      this.timeouts.delete(unregisterToken.cleanupToken);\n    }, this.cleanupTimeout);\n    this.timeouts.set(unregisterToken.cleanupToken, timeout);\n  }\n  unregister(unregisterToken) {\n    const timeout = this.timeouts.get(unregisterToken.cleanupToken);\n    if (timeout) {\n      this.timeouts.delete(unregisterToken.cleanupToken);\n      clearTimeout(timeout);\n    }\n  }\n  reset() {\n    if (this.timeouts) {\n      this.timeouts.forEach((value, key) => {\n        this.unregister({\n          cleanupToken: key\n        });\n      });\n      this.timeouts = undefined;\n    }\n  }\n}","export class FinalizationRegistryBasedCleanupTracking {\n  constructor() {\n    this.registry = new FinalizationRegistry(unsubscribe => {\n      if (typeof unsubscribe === 'function') {\n        unsubscribe();\n      }\n    });\n  }\n  register(object, unsubscribe, unregisterToken) {\n    this.registry.register(object, unsubscribe, unregisterToken);\n  }\n  unregister(unregisterToken) {\n    this.registry.unregister(unregisterToken);\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  reset() {}\n}","import * as React from 'react';\nimport { TimerBasedCleanupTracking } from '../utils/cleanupTracking/TimerBasedCleanupTracking';\nimport { FinalizationRegistryBasedCleanupTracking } from '../utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking';\n// We use class to make it easier to detect in heap snapshots by name\nclass ObjectToBeRetainedByReact {}\n\n// Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts\n// Check https://github.com/facebook/react/issues/15317 to get more information\nexport function createUseInstanceEventHandler(registryContainer) {\n  let cleanupTokensCounter = 0;\n  return function useInstanceEventHandler(instance, eventName, handler) {\n    if (registryContainer.registry === null) {\n      registryContainer.registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking();\n    }\n    const [objectRetainedByReact] = React.useState(new ObjectToBeRetainedByReact());\n    const subscription = React.useRef(null);\n    const handlerRef = React.useRef();\n    handlerRef.current = handler;\n    const cleanupTokenRef = React.useRef(null);\n    if (!subscription.current && handlerRef.current) {\n      const enhancedHandler = (params, event) => {\n        if (!event.defaultMuiPrevented) {\n          handlerRef.current?.(params, event);\n        }\n      };\n      subscription.current = instance.$$subscribeEvent(eventName, enhancedHandler);\n      cleanupTokensCounter += 1;\n      cleanupTokenRef.current = {\n        cleanupToken: cleanupTokensCounter\n      };\n      registryContainer.registry.register(objectRetainedByReact,\n      // The callback below will be called once this reference stops being retained\n      () => {\n        subscription.current?.();\n        subscription.current = null;\n        cleanupTokenRef.current = null;\n      }, cleanupTokenRef.current);\n    } else if (!handlerRef.current && subscription.current) {\n      subscription.current();\n      subscription.current = null;\n      if (cleanupTokenRef.current) {\n        registryContainer.registry.unregister(cleanupTokenRef.current);\n        cleanupTokenRef.current = null;\n      }\n    }\n    React.useEffect(() => {\n      if (!subscription.current && handlerRef.current) {\n        const enhancedHandler = (params, event) => {\n          if (!event.defaultMuiPrevented) {\n            handlerRef.current?.(params, event);\n          }\n        };\n        subscription.current = instance.$$subscribeEvent(eventName, enhancedHandler);\n      }\n      if (cleanupTokenRef.current && registryContainer.registry) {\n        // If the effect was called, it means that this render was committed\n        // so we can trust the cleanup function to remove the listener.\n        registryContainer.registry.unregister(cleanupTokenRef.current);\n        cleanupTokenRef.current = null;\n      }\n      return () => {\n        subscription.current?.();\n        subscription.current = null;\n      };\n    }, [instance, eventName]);\n  };\n}\nconst registryContainer = {\n  registry: null\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_resetCleanupTracking = () => {\n  registryContainer.registry?.reset();\n  registryContainer.registry = null;\n};\nexport const useInstanceEventHandler = createUseInstanceEventHandler(registryContainer);","// https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/\nexport const getActiveElement = (root = document) => {\n  const activeEl = root.activeElement;\n  if (!activeEl) {\n    return null;\n  }\n  if (activeEl.shadowRoot) {\n    return getActiveElement(activeEl.shadowRoot);\n  }\n  return activeEl;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport ownerDocument from '@mui/utils/ownerDocument';\nimport { useInstanceEventHandler } from '../../hooks/useInstanceEventHandler';\nimport { getActiveElement } from '../../utils/utils';\nimport { getFirstNavigableItem } from '../../utils/tree';\nconst useTabbableItemId = (instance, selectedItems) => {\n  const isItemVisible = itemId => {\n    const itemMeta = instance.getItemMeta(itemId);\n    return itemMeta && (itemMeta.parentId == null || instance.isItemExpanded(itemMeta.parentId));\n  };\n  let tabbableItemId;\n  if (Array.isArray(selectedItems)) {\n    tabbableItemId = selectedItems.find(isItemVisible);\n  } else if (selectedItems != null && isItemVisible(selectedItems)) {\n    tabbableItemId = selectedItems;\n  }\n  if (tabbableItemId == null) {\n    tabbableItemId = getFirstNavigableItem(instance);\n  }\n  return tabbableItemId;\n};\nexport const useTreeViewFocus = ({\n  instance,\n  params,\n  state,\n  setState,\n  models,\n  rootRef\n}) => {\n  const tabbableItemId = useTabbableItemId(instance, models.selectedItems.value);\n  const setFocusedItemId = useEventCallback(itemId => {\n    const cleanItemId = typeof itemId === 'function' ? itemId(state.focusedItemId) : itemId;\n    if (state.focusedItemId !== cleanItemId) {\n      setState(prevState => _extends({}, prevState, {\n        focusedItemId: cleanItemId\n      }));\n    }\n  });\n  const isTreeViewFocused = React.useCallback(() => !!rootRef.current && rootRef.current.contains(getActiveElement(ownerDocument(rootRef.current))), [rootRef]);\n  const isItemFocused = React.useCallback(itemId => state.focusedItemId === itemId && isTreeViewFocused(), [state.focusedItemId, isTreeViewFocused]);\n  const isItemVisible = itemId => {\n    const itemMeta = instance.getItemMeta(itemId);\n    return itemMeta && (itemMeta.parentId == null || instance.isItemExpanded(itemMeta.parentId));\n  };\n  const innerFocusItem = (event, itemId) => {\n    const itemMeta = instance.getItemMeta(itemId);\n    const itemElement = document.getElementById(instance.getTreeItemIdAttribute(itemId, itemMeta.idAttribute));\n    if (itemElement) {\n      itemElement.focus();\n    }\n    setFocusedItemId(itemId);\n    if (params.onItemFocus) {\n      params.onItemFocus(event, itemId);\n    }\n  };\n  const focusItem = useEventCallback((event, itemId) => {\n    // If we receive an itemId, and it is visible, the focus will be set to it\n    if (isItemVisible(itemId)) {\n      innerFocusItem(event, itemId);\n    }\n  });\n  const focusDefaultItem = useEventCallback(event => {\n    let itemToFocusId;\n    if (Array.isArray(models.selectedItems.value)) {\n      itemToFocusId = models.selectedItems.value.find(isItemVisible);\n    } else if (models.selectedItems.value != null && isItemVisible(models.selectedItems.value)) {\n      itemToFocusId = models.selectedItems.value;\n    }\n    if (itemToFocusId == null) {\n      itemToFocusId = getFirstNavigableItem(instance);\n    }\n    innerFocusItem(event, itemToFocusId);\n  });\n  const removeFocusedItem = useEventCallback(() => {\n    if (state.focusedItemId == null) {\n      return;\n    }\n    const itemMeta = instance.getItemMeta(state.focusedItemId);\n    if (itemMeta) {\n      const itemElement = document.getElementById(instance.getTreeItemIdAttribute(state.focusedItemId, itemMeta.idAttribute));\n      if (itemElement) {\n        itemElement.blur();\n      }\n    }\n    setFocusedItemId(null);\n  });\n  const canItemBeTabbed = itemId => itemId === tabbableItemId;\n  useInstanceEventHandler(instance, 'removeItem', ({\n    id\n  }) => {\n    if (state.focusedItemId === id) {\n      instance.focusDefaultItem(null);\n    }\n  });\n  const createRootHandleFocus = otherHandlers => event => {\n    otherHandlers.onFocus?.(event);\n    if (event.defaultMuiPrevented) {\n      return;\n    }\n\n    // if the event bubbled (which is React specific) we don't want to steal focus\n    if (event.target === event.currentTarget) {\n      instance.focusDefaultItem(event);\n    }\n  };\n  return {\n    getRootProps: otherHandlers => ({\n      onFocus: createRootHandleFocus(otherHandlers)\n    }),\n    publicAPI: {\n      focusItem\n    },\n    instance: {\n      isItemFocused,\n      canItemBeTabbed,\n      focusItem,\n      focusDefaultItem,\n      removeFocusedItem\n    }\n  };\n};\nuseTreeViewFocus.getInitialState = () => ({\n  focusedItemId: null\n});\nuseTreeViewFocus.params = {\n  onItemFocus: true\n};","import * as React from 'react';\nimport { useTheme } from '@mui/material/styles';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { getFirstNavigableItem, getLastNavigableItem, getNextNavigableItem, getPreviousNavigableItem } from '../../utils/tree';\nfunction isPrintableCharacter(string) {\n  return !!string && string.length === 1 && !!string.match(/\\S/);\n}\nexport const useTreeViewKeyboardNavigation = ({\n  instance,\n  params,\n  state\n}) => {\n  const theme = useTheme();\n  const isRTL = theme.direction === 'rtl';\n  const firstCharMap = React.useRef({});\n  const updateFirstCharMap = useEventCallback(callback => {\n    firstCharMap.current = callback(firstCharMap.current);\n  });\n  React.useEffect(() => {\n    if (instance.areItemUpdatesPrevented()) {\n      return;\n    }\n    const newFirstCharMap = {};\n    const processItem = item => {\n      newFirstCharMap[item.id] = item.label.substring(0, 1).toLowerCase();\n    };\n    Object.values(state.items.itemMetaMap).forEach(processItem);\n    firstCharMap.current = newFirstCharMap;\n  }, [state.items.itemMetaMap, params.getItemId, instance]);\n  const getFirstMatchingItem = (itemId, query) => {\n    const cleanQuery = query.toLowerCase();\n    const getNextItem = itemIdToCheck => {\n      const nextItemId = getNextNavigableItem(instance, itemIdToCheck);\n      // We reached the end of the tree, check from the beginning\n      if (nextItemId === null) {\n        return getFirstNavigableItem(instance);\n      }\n      return nextItemId;\n    };\n    let matchingItemId = null;\n    let currentItemId = getNextItem(itemId);\n    const checkedItems = {};\n    // The \"!checkedItems[currentItemId]\" condition avoids an infinite loop when there is no matching item.\n    while (matchingItemId == null && !checkedItems[currentItemId]) {\n      if (firstCharMap.current[currentItemId] === cleanQuery) {\n        matchingItemId = currentItemId;\n      } else {\n        checkedItems[currentItemId] = true;\n        currentItemId = getNextItem(currentItemId);\n      }\n    }\n    return matchingItemId;\n  };\n  const canToggleItemSelection = itemId => !params.disableSelection && !instance.isItemDisabled(itemId);\n  const canToggleItemExpansion = itemId => {\n    return !instance.isItemDisabled(itemId) && instance.isItemExpandable(itemId);\n  };\n\n  // ARIA specification: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/#keyboardinteraction\n  const handleItemKeyDown = (event, itemId) => {\n    if (event.defaultMuiPrevented) {\n      return;\n    }\n    if (event.altKey || event.currentTarget !== event.target) {\n      return;\n    }\n    const ctrlPressed = event.ctrlKey || event.metaKey;\n    const key = event.key;\n\n    // eslint-disable-next-line default-case\n    switch (true) {\n      // Select the item when pressing \"Space\"\n      case key === ' ' && canToggleItemSelection(itemId):\n        {\n          event.preventDefault();\n          if (params.multiSelect && event.shiftKey) {\n            instance.expandSelectionRange(event, itemId);\n          } else if (params.multiSelect) {\n            instance.selectItem(event, itemId, true);\n          } else {\n            instance.selectItem(event, itemId);\n          }\n          break;\n        }\n\n      // If the focused item has children, we expand it.\n      // If the focused item has no children, we select it.\n      case key === 'Enter':\n        {\n          if (canToggleItemExpansion(itemId)) {\n            instance.toggleItemExpansion(event, itemId);\n            event.preventDefault();\n          } else if (canToggleItemSelection(itemId)) {\n            if (params.multiSelect) {\n              event.preventDefault();\n              instance.selectItem(event, itemId, true);\n            } else if (!instance.isItemSelected(itemId)) {\n              instance.selectItem(event, itemId);\n              event.preventDefault();\n            }\n          }\n          break;\n        }\n\n      // Focus the next focusable item\n      case key === 'ArrowDown':\n        {\n          const nextItem = getNextNavigableItem(instance, itemId);\n          if (nextItem) {\n            event.preventDefault();\n            instance.focusItem(event, nextItem);\n\n            // Multi select behavior when pressing Shift + ArrowDown\n            // Toggles the selection state of the next item\n            if (params.multiSelect && event.shiftKey && canToggleItemSelection(nextItem)) {\n              instance.selectItemFromArrowNavigation(event, itemId, nextItem);\n            }\n          }\n          break;\n        }\n\n      // Focuses the previous focusable item\n      case key === 'ArrowUp':\n        {\n          const previousItem = getPreviousNavigableItem(instance, itemId);\n          if (previousItem) {\n            event.preventDefault();\n            instance.focusItem(event, previousItem);\n\n            // Multi select behavior when pressing Shift + ArrowUp\n            // Toggles the selection state of the previous item\n            if (params.multiSelect && event.shiftKey && canToggleItemSelection(previousItem)) {\n              instance.selectItemFromArrowNavigation(event, itemId, previousItem);\n            }\n          }\n          break;\n        }\n\n      // If the focused item is expanded, we move the focus to its first child\n      // If the focused item is collapsed and has children, we expand it\n      case key === 'ArrowRight' && !isRTL || key === 'ArrowLeft' && isRTL:\n        {\n          if (instance.isItemExpanded(itemId)) {\n            const nextItemId = getNextNavigableItem(instance, itemId);\n            if (nextItemId) {\n              instance.focusItem(event, nextItemId);\n              event.preventDefault();\n            }\n          } else if (canToggleItemExpansion(itemId)) {\n            instance.toggleItemExpansion(event, itemId);\n            event.preventDefault();\n          }\n          break;\n        }\n\n      // If the focused item is expanded, we collapse it\n      // If the focused item is collapsed and has a parent, we move the focus to this parent\n      case key === 'ArrowLeft' && !isRTL || key === 'ArrowRight' && isRTL:\n        {\n          if (canToggleItemExpansion(itemId) && instance.isItemExpanded(itemId)) {\n            instance.toggleItemExpansion(event, itemId);\n            event.preventDefault();\n          } else {\n            const parent = instance.getItemMeta(itemId).parentId;\n            if (parent) {\n              instance.focusItem(event, parent);\n              event.preventDefault();\n            }\n          }\n          break;\n        }\n\n      // Focuses the first item in the tree\n      case key === 'Home':\n        {\n          // Multi select behavior when pressing Ctrl + Shift + Home\n          // Selects the focused item and all items up to the first item.\n          if (canToggleItemSelection(itemId) && params.multiSelect && ctrlPressed && event.shiftKey) {\n            instance.selectRangeFromStartToItem(event, itemId);\n          } else {\n            instance.focusItem(event, getFirstNavigableItem(instance));\n          }\n          event.preventDefault();\n          break;\n        }\n\n      // Focuses the last item in the tree\n      case key === 'End':\n        {\n          // Multi select behavior when pressing Ctrl + Shirt + End\n          // Selects the focused item and all the items down to the last item.\n          if (canToggleItemSelection(itemId) && params.multiSelect && ctrlPressed && event.shiftKey) {\n            instance.selectRangeFromItemToEnd(event, itemId);\n          } else {\n            instance.focusItem(event, getLastNavigableItem(instance));\n          }\n          event.preventDefault();\n          break;\n        }\n\n      // Expand all siblings that are at the same level as the focused item\n      case key === '*':\n        {\n          instance.expandAllSiblings(event, itemId);\n          event.preventDefault();\n          break;\n        }\n\n      // Multi select behavior when pressing Ctrl + a\n      // Selects all the items\n      case key === 'a' && ctrlPressed && params.multiSelect && !params.disableSelection:\n        {\n          instance.selectAllNavigableItems(event);\n          event.preventDefault();\n          break;\n        }\n\n      // Type-ahead\n      // TODO: Support typing multiple characters\n      case !ctrlPressed && !event.shiftKey && isPrintableCharacter(key):\n        {\n          const matchingItem = getFirstMatchingItem(itemId, key);\n          if (matchingItem != null) {\n            instance.focusItem(event, matchingItem);\n            event.preventDefault();\n          }\n          break;\n        }\n    }\n  };\n  return {\n    instance: {\n      updateFirstCharMap,\n      handleItemKeyDown\n    }\n  };\n};\nuseTreeViewKeyboardNavigation.params = {};","export const useTreeViewIcons = ({\n  slots,\n  slotProps\n}) => {\n  return {\n    contextValue: {\n      icons: {\n        slots: {\n          collapseIcon: slots.collapseIcon,\n          expandIcon: slots.expandIcon,\n          endIcon: slots.endIcon\n        },\n        slotProps: {\n          collapseIcon: slotProps.collapseIcon,\n          expandIcon: slotProps.expandIcon,\n          endIcon: slotProps.endIcon\n        }\n      }\n    }\n  };\n};\nuseTreeViewIcons.params = {};","import { useTreeViewId } from './useTreeViewId';\nimport { useTreeViewItems } from './useTreeViewItems';\nimport { useTreeViewExpansion } from './useTreeViewExpansion';\nimport { useTreeViewSelection } from './useTreeViewSelection';\nimport { useTreeViewFocus } from './useTreeViewFocus';\nimport { useTreeViewKeyboardNavigation } from './useTreeViewKeyboardNavigation';\nimport { useTreeViewIcons } from './useTreeViewIcons';\nexport const DEFAULT_TREE_VIEW_PLUGINS = [useTreeViewId, useTreeViewItems, useTreeViewExpansion, useTreeViewSelection, useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewIcons];\n\n// We can't infer this type from the plugin, otherwise we would lose the generics.","import * as React from 'react';\nimport { TreeViewContext } from './TreeViewContext';\nexport const useTreeViewContext = () => {\n  const context = React.useContext(TreeViewContext);\n  if (context == null) {\n    throw new Error(['MUI X: Could not find the Tree View context.', 'It looks like you rendered your component outside of a SimpleTreeView or RichTreeView parent component.', 'This can also happen if you are bundling multiple versions of the Tree View.'].join('\\n'));\n  }\n  return context;\n};","export const buildWarning = (message, gravity = 'warning') => {\n  let alreadyWarned = false;\n  const cleanMessage = Array.isArray(message) ? message.join('\\n') : message;\n  return () => {\n    if (!alreadyWarned) {\n      alreadyWarned = true;\n      if (gravity === 'error') {\n        console.error(cleanMessage);\n      } else {\n        console.warn(cleanMessage);\n      }\n    }\n  };\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"slots\", \"slotProps\", \"apiRef\"];\nexport const extractPluginParamsFromProps = _ref => {\n  let {\n      props: {\n        slots,\n        slotProps,\n        apiRef\n      },\n      plugins,\n      rootRef\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref.props, _excluded);\n  const paramsLookup = {};\n  plugins.forEach(plugin => {\n    Object.assign(paramsLookup, plugin.params);\n  });\n  const pluginParams = {\n    plugins,\n    rootRef,\n    slots: slots ?? {},\n    slotProps: slotProps ?? {},\n    apiRef\n  };\n  const otherProps = {};\n  Object.keys(props).forEach(propName => {\n    const prop = props[propName];\n    if (paramsLookup[propName]) {\n      pluginParams[propName] = prop;\n    } else {\n      otherProps[propName] = prop;\n    }\n  });\n  return {\n    pluginParams,\n    slots,\n    slotProps,\n    otherProps\n  };\n};","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getRichTreeViewUtilityClass(slot) {\n  return generateUtilityClass('MuiRichTreeView', slot);\n}\nexport const richTreeViewClasses = generateUtilityClasses('MuiRichTreeView', ['root']);","/* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0\n   ---\n   These rules are preventing the performance optimizations below.\n */\n\n/**\n * Compose classes from multiple sources.\n *\n * @example\n * ```tsx\n * const slots = {\n *  root: ['root', 'primary'],\n *  label: ['label'],\n * };\n *\n * const getUtilityClass = (slot) => `MuiButton-${slot}`;\n *\n * const classes = {\n *   root: 'my-root-class',\n * };\n *\n * const output = composeClasses(slots, getUtilityClass, classes);\n * // {\n * //   root: 'MuiButton-root MuiButton-primary my-root-class',\n * //   label: 'MuiButton-label',\n * // }\n * ```\n *\n * @param slots a list of classes for each possible slot\n * @param getUtilityClass a function to resolve the class based on the slot name\n * @param classes the input classes from props\n * @returns the resolved classes for all slots\n */\nexport default function composeClasses(slots, getUtilityClass, classes = undefined) {\n  const output = {};\n  for (const slotName in slots) {\n    const slot = slots[slotName];\n    let buffer = '';\n    let start = true;\n    for (let i = 0; i < slot.length; i += 1) {\n      const value = slot[i];\n      if (value) {\n        buffer += (start === true ? '' : ' ') + getUtilityClass(value);\n        start = false;\n        if (classes && classes[value]) {\n          buffer += ' ' + classes[value];\n        }\n      }\n    }\n    output[slotName] = buffer;\n  }\n  return output;\n}","import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';\nexport function useTreeItemState(itemId) {\n  const {\n    instance,\n    selection: {\n      multiSelect\n    }\n  } = useTreeViewContext();\n  const expandable = instance.isItemExpandable(itemId);\n  const expanded = instance.isItemExpanded(itemId);\n  const focused = instance.isItemFocused(itemId);\n  const selected = instance.isItemSelected(itemId);\n  const disabled = instance.isItemDisabled(itemId);\n  const handleExpansion = event => {\n    if (!disabled) {\n      if (!focused) {\n        instance.focusItem(event, itemId);\n      }\n      const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n      // If already expanded and trying to toggle selection don't close\n      if (expandable && !(multiple && instance.isItemExpanded(itemId))) {\n        instance.toggleItemExpansion(event, itemId);\n      }\n    }\n  };\n  const handleSelection = event => {\n    if (!disabled) {\n      if (!focused) {\n        instance.focusItem(event, itemId);\n      }\n      const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n      if (multiple) {\n        if (event.shiftKey) {\n          instance.expandSelectionRange(event, itemId);\n        } else {\n          instance.selectItem(event, itemId, true);\n        }\n      } else {\n        instance.selectItem(event, itemId);\n      }\n    }\n  };\n  const preventSelection = event => {\n    if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n      // Prevent text selection\n      event.preventDefault();\n    }\n  };\n  return {\n    disabled,\n    expanded,\n    selected,\n    focused,\n    handleExpansion,\n    handleSelection,\n    preventSelection\n  };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"classes\", \"className\", \"displayIcon\", \"expansionIcon\", \"icon\", \"label\", \"itemId\", \"onClick\", \"onMouseDown\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useTreeItemState } from './useTreeItemState';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * @ignore - internal component.\n */\nconst TreeItemContent = /*#__PURE__*/React.forwardRef(function TreeItemContent(props, ref) {\n  const {\n      classes,\n      className,\n      displayIcon,\n      expansionIcon,\n      icon: iconProp,\n      label,\n      itemId,\n      onClick,\n      onMouseDown\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    disabled,\n    expanded,\n    selected,\n    focused,\n    handleExpansion,\n    handleSelection,\n    preventSelection\n  } = useTreeItemState(itemId);\n  const icon = iconProp || expansionIcon || displayIcon;\n  const handleMouseDown = event => {\n    preventSelection(event);\n    if (onMouseDown) {\n      onMouseDown(event);\n    }\n  };\n  const handleClick = event => {\n    handleExpansion(event);\n    handleSelection(event);\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  return (\n    /*#__PURE__*/\n    /* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -- Key event is handled by the TreeView */\n    _jsxs(\"div\", _extends({}, other, {\n      className: clsx(className, classes.root, expanded && classes.expanded, selected && classes.selected, focused && classes.focused, disabled && classes.disabled),\n      onClick: handleClick,\n      onMouseDown: handleMouseDown,\n      ref: ref,\n      children: [/*#__PURE__*/_jsx(\"div\", {\n        className: classes.iconContainer,\n        children: icon\n      }), /*#__PURE__*/_jsx(\"div\", {\n        className: classes.label,\n        children: label\n      })]\n    }))\n  );\n});\nprocess.env.NODE_ENV !== \"production\" ? TreeItemContent.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object.isRequired,\n  className: PropTypes.string,\n  /**\n   * The icon to display next to the tree item's label. Either a parent or end icon.\n   */\n  displayIcon: PropTypes.node,\n  /**\n   * The icon to display next to the tree item's label. Either an expansion or collapse icon.\n   */\n  expansionIcon: PropTypes.node,\n  /**\n   * The icon to display next to the tree item's label.\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the item.\n   */\n  itemId: PropTypes.string.isRequired,\n  /**\n   * The tree item label.\n   */\n  label: PropTypes.node\n} : void 0;\nexport { TreeItemContent };","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getTreeItemUtilityClass(slot) {\n  return generateUtilityClass('MuiTreeItem', slot);\n}\nexport const treeItemClasses = generateUtilityClasses('MuiTreeItem', ['root', 'groupTransition', 'content', 'expanded', 'selected', 'focused', 'disabled', 'iconContainer', 'label']);","import { createSvgIcon } from '@mui/material/utils';\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const TreeViewExpandIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n}), 'TreeViewExpandIcon');\nexport const TreeViewCollapseIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'TreeViewCollapseIcon');","import PropTypes from 'prop-types';\nimport { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';\nfunction TreeItem2Provider(props) {\n  const {\n    children,\n    itemId\n  } = props;\n  const {\n    wrapItem\n  } = useTreeViewContext();\n  return wrapItem({\n    children,\n    itemId\n  });\n}\nTreeItem2Provider.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  children: PropTypes.node,\n  itemId: PropTypes.string.isRequired\n};\nexport { TreeItem2Provider };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"slots\", \"slotProps\", \"ContentComponent\", \"ContentProps\", \"itemId\", \"id\", \"label\", \"onClick\", \"onMouseDown\", \"onFocus\", \"onBlur\", \"onKeyDown\"],\n  _excluded2 = [\"ownerState\"],\n  _excluded3 = [\"ownerState\"],\n  _excluded4 = [\"ownerState\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Collapse from '@mui/material/Collapse';\nimport { resolveComponentProps, useSlotProps } from '@mui/base/utils';\nimport useForkRef from '@mui/utils/useForkRef';\nimport { alpha, styled, useThemeProps } from '@mui/material/styles';\nimport unsupportedProp from '@mui/utils/unsupportedProp';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { TreeItemContent } from './TreeItemContent';\nimport { treeItemClasses, getTreeItemUtilityClass } from './treeItemClasses';\nimport { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';\nimport { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons';\nimport { TreeItem2Provider } from '../TreeItem2Provider';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    content: ['content'],\n    expanded: ['expanded'],\n    selected: ['selected'],\n    focused: ['focused'],\n    disabled: ['disabled'],\n    iconContainer: ['iconContainer'],\n    label: ['label'],\n    groupTransition: ['groupTransition']\n  };\n  return composeClasses(slots, getTreeItemUtilityClass, classes);\n};\nconst TreeItemRoot = styled('li', {\n  name: 'MuiTreeItem',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  listStyle: 'none',\n  margin: 0,\n  padding: 0,\n  outline: 0\n});\nconst StyledTreeItemContent = styled(TreeItemContent, {\n  name: 'MuiTreeItem',\n  slot: 'Content',\n  overridesResolver: (props, styles) => {\n    return [styles.content, styles.iconContainer && {\n      [`& .${treeItemClasses.iconContainer}`]: styles.iconContainer\n    }, styles.label && {\n      [`& .${treeItemClasses.label}`]: styles.label\n    }];\n  }\n})(({\n  theme\n}) => ({\n  padding: theme.spacing(0.5, 1),\n  borderRadius: theme.shape.borderRadius,\n  width: '100%',\n  boxSizing: 'border-box',\n  // prevent width + padding to overflow\n  display: 'flex',\n  alignItems: 'center',\n  gap: theme.spacing(1),\n  cursor: 'pointer',\n  WebkitTapHighlightColor: 'transparent',\n  '&:hover': {\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${treeItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity,\n    backgroundColor: 'transparent'\n  },\n  [`&.${treeItemClasses.focused}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${treeItemClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n      }\n    },\n    [`&.${treeItemClasses.focused}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  },\n  [`& .${treeItemClasses.iconContainer}`]: {\n    width: 16,\n    display: 'flex',\n    flexShrink: 0,\n    justifyContent: 'center',\n    '& svg': {\n      fontSize: 18\n    }\n  },\n  [`& .${treeItemClasses.label}`]: _extends({\n    width: '100%',\n    boxSizing: 'border-box',\n    // prevent width + padding to overflow\n    // fixes overflow - see https://github.com/mui/material-ui/issues/27372\n    minWidth: 0,\n    position: 'relative'\n  }, theme.typography.body1)\n}));\nconst TreeItemGroup = styled(Collapse, {\n  name: 'MuiTreeItem',\n  slot: 'GroupTransition',\n  overridesResolver: (props, styles) => styles.groupTransition\n})({\n  margin: 0,\n  padding: 0,\n  paddingLeft: 12\n});\n\n/**\n *\n * Demos:\n *\n * - [Tree View](https://mui.com/x/react-tree-view/)\n *\n * API:\n *\n * - [TreeItem API](https://mui.com/x/api/tree-view/tree-item/)\n */\nexport const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, inRef) {\n  const {\n    icons: contextIcons,\n    runItemPlugins,\n    selection: {\n      multiSelect\n    },\n    disabledItemsFocusable,\n    instance\n  } = useTreeViewContext();\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTreeItem'\n  });\n  const {\n      children,\n      className,\n      slots: inSlots,\n      slotProps: inSlotProps,\n      ContentComponent = TreeItemContent,\n      ContentProps,\n      itemId,\n      id,\n      label,\n      onClick,\n      onMouseDown,\n      onBlur,\n      onKeyDown\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    contentRef,\n    rootRef\n  } = runItemPlugins(props);\n  const handleRootRef = useForkRef(inRef, rootRef);\n  const handleContentRef = useForkRef(ContentProps?.ref, contentRef);\n  const slots = {\n    expandIcon: inSlots?.expandIcon ?? contextIcons.slots.expandIcon ?? TreeViewExpandIcon,\n    collapseIcon: inSlots?.collapseIcon ?? contextIcons.slots.collapseIcon ?? TreeViewCollapseIcon,\n    endIcon: inSlots?.endIcon ?? contextIcons.slots.endIcon,\n    icon: inSlots?.icon,\n    groupTransition: inSlots?.groupTransition\n  };\n  const isExpandable = reactChildren => {\n    if (Array.isArray(reactChildren)) {\n      return reactChildren.length > 0 && reactChildren.some(isExpandable);\n    }\n    return Boolean(reactChildren);\n  };\n  const expandable = isExpandable(children);\n  const expanded = instance.isItemExpanded(itemId);\n  const focused = instance.isItemFocused(itemId);\n  const selected = instance.isItemSelected(itemId);\n  const disabled = instance.isItemDisabled(itemId);\n  const ownerState = _extends({}, props, {\n    expanded,\n    focused,\n    selected,\n    disabled\n  });\n  const classes = useUtilityClasses(ownerState);\n  const GroupTransition = slots.groupTransition ?? undefined;\n  const groupTransitionProps = useSlotProps({\n    elementType: GroupTransition,\n    ownerState: {},\n    externalSlotProps: inSlotProps?.groupTransition,\n    additionalProps: {\n      unmountOnExit: true,\n      in: expanded,\n      component: 'ul',\n      role: 'group'\n    },\n    className: classes.groupTransition\n  });\n  const ExpansionIcon = expanded ? slots.collapseIcon : slots.expandIcon;\n  const _useSlotProps = useSlotProps({\n      elementType: ExpansionIcon,\n      ownerState: {},\n      externalSlotProps: tempOwnerState => {\n        if (expanded) {\n          return _extends({}, resolveComponentProps(contextIcons.slotProps.collapseIcon, tempOwnerState), resolveComponentProps(inSlotProps?.collapseIcon, tempOwnerState));\n        }\n        return _extends({}, resolveComponentProps(contextIcons.slotProps.expandIcon, tempOwnerState), resolveComponentProps(inSlotProps?.expandIcon, tempOwnerState));\n      }\n    }),\n    expansionIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n  const expansionIcon = expandable && !!ExpansionIcon ? /*#__PURE__*/_jsx(ExpansionIcon, _extends({}, expansionIconProps)) : null;\n  const DisplayIcon = expandable ? undefined : slots.endIcon;\n  const _useSlotProps2 = useSlotProps({\n      elementType: DisplayIcon,\n      ownerState: {},\n      externalSlotProps: tempOwnerState => {\n        if (expandable) {\n          return {};\n        }\n        return _extends({}, resolveComponentProps(contextIcons.slotProps.endIcon, tempOwnerState), resolveComponentProps(inSlotProps?.endIcon, tempOwnerState));\n      }\n    }),\n    displayIconProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);\n  const displayIcon = DisplayIcon ? /*#__PURE__*/_jsx(DisplayIcon, _extends({}, displayIconProps)) : null;\n  const Icon = slots.icon;\n  const _useSlotProps3 = useSlotProps({\n      elementType: Icon,\n      ownerState: {},\n      externalSlotProps: inSlotProps?.icon\n    }),\n    iconProps = _objectWithoutPropertiesLoose(_useSlotProps3, _excluded4);\n  const icon = Icon ? /*#__PURE__*/_jsx(Icon, _extends({}, iconProps)) : null;\n  let ariaSelected;\n  if (multiSelect) {\n    ariaSelected = selected;\n  } else if (selected) {\n    /* single-selection trees unset aria-selected on un-selected items.\n     *\n     * If the tree does not support multiple selection, aria-selected\n     * is set to true for the selected item and it is not present on any other item in the tree.\n     * Source: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/\n     */\n    ariaSelected = true;\n  }\n  function handleFocus(event) {\n    const canBeFocused = !disabled || disabledItemsFocusable;\n    if (!focused && canBeFocused && event.currentTarget === event.target) {\n      instance.focusItem(event, itemId);\n    }\n  }\n  function handleBlur(event) {\n    onBlur?.(event);\n    instance.removeFocusedItem();\n  }\n  const handleKeyDown = event => {\n    onKeyDown?.(event);\n    instance.handleItemKeyDown(event, itemId);\n  };\n  const idAttribute = instance.getTreeItemIdAttribute(itemId, id);\n  const tabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1;\n  return /*#__PURE__*/_jsx(TreeItem2Provider, {\n    itemId: itemId,\n    children: /*#__PURE__*/_jsxs(TreeItemRoot, _extends({\n      className: clsx(classes.root, className),\n      role: \"treeitem\",\n      \"aria-expanded\": expandable ? expanded : undefined,\n      \"aria-selected\": ariaSelected,\n      \"aria-disabled\": disabled || undefined,\n      id: idAttribute,\n      tabIndex: tabIndex\n    }, other, {\n      ownerState: ownerState,\n      onFocus: handleFocus,\n      onBlur: handleBlur,\n      onKeyDown: handleKeyDown,\n      ref: handleRootRef,\n      children: [/*#__PURE__*/_jsx(StyledTreeItemContent, _extends({\n        as: ContentComponent,\n        classes: {\n          root: classes.content,\n          expanded: classes.expanded,\n          selected: classes.selected,\n          focused: classes.focused,\n          disabled: classes.disabled,\n          iconContainer: classes.iconContainer,\n          label: classes.label\n        },\n        label: label,\n        itemId: itemId,\n        onClick: onClick,\n        onMouseDown: onMouseDown,\n        icon: icon,\n        expansionIcon: expansionIcon,\n        displayIcon: displayIcon,\n        ownerState: ownerState\n      }, ContentProps, {\n        ref: handleContentRef\n      })), children && /*#__PURE__*/_jsx(TreeItemGroup, _extends({\n        as: GroupTransition\n      }, groupTransitionProps, {\n        children: children\n      }))]\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TreeItem.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * The component used to render the content of the item.\n   * @default TreeItemContent\n   */\n  ContentComponent: elementTypeAcceptingRef,\n  /**\n   * Props applied to ContentComponent.\n   */\n  ContentProps: PropTypes.object,\n  /**\n   * If `true`, the item is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * The id of the item.\n   */\n  itemId: PropTypes.string.isRequired,\n  /**\n   * The tree item label.\n   */\n  label: PropTypes.node,\n  /**\n   * This prop isn't supported.\n   * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.\n   */\n  onFocus: unsupportedProp,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useSlotProps } from '@mui/base/utils';\nimport { getRichTreeViewUtilityClass } from './richTreeViewClasses';\nimport { useTreeView } from '../internals/useTreeView';\nimport { TreeViewProvider } from '../internals/TreeViewProvider';\nimport { DEFAULT_TREE_VIEW_PLUGINS } from '../internals/plugins';\nimport { TreeItem } from '../TreeItem';\nimport { buildWarning } from '../internals/utils/warning';\nimport { extractPluginParamsFromProps } from '../internals/utils/extractPluginParamsFromProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getRichTreeViewUtilityClass, classes);\n};\nexport const RichTreeViewRoot = styled('ul', {\n  name: 'MuiRichTreeView',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  padding: 0,\n  margin: 0,\n  listStyle: 'none',\n  outline: 0,\n  position: 'relative'\n});\nfunction WrappedTreeItem({\n  slots,\n  slotProps,\n  label,\n  id,\n  itemId,\n  children\n}) {\n  const Item = slots?.item ?? TreeItem;\n  const itemProps = useSlotProps({\n    elementType: Item,\n    externalSlotProps: slotProps?.item,\n    additionalProps: {\n      itemId,\n      id,\n      label\n    },\n    ownerState: {\n      itemId,\n      label\n    }\n  });\n  return /*#__PURE__*/_jsx(Item, _extends({}, itemProps, {\n    children: children\n  }));\n}\nconst childrenWarning = buildWarning(['MUI X: The `RichTreeView` component does not support JSX children.', 'If you want to add items, you need to use the `items` prop', 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/items/']);\n\n/**\n *\n * Demos:\n *\n * - [Tree View](https://mui.com/x/react-tree-view/)\n *\n * API:\n *\n * - [RichTreeView API](https://mui.com/x/api/tree-view/rich-tree-view/)\n */\nconst RichTreeView = /*#__PURE__*/React.forwardRef(function RichTreeView(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiRichTreeView'\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    if (props.children != null) {\n      childrenWarning();\n    }\n  }\n  const {\n    pluginParams,\n    slots,\n    slotProps,\n    otherProps\n  } = extractPluginParamsFromProps({\n    props,\n    plugins: DEFAULT_TREE_VIEW_PLUGINS,\n    rootRef: ref\n  });\n  const {\n    getRootProps,\n    contextValue,\n    instance\n  } = useTreeView(pluginParams);\n  const classes = useUtilityClasses(props);\n  const Root = slots?.root ?? RichTreeViewRoot;\n  const rootProps = useSlotProps({\n    elementType: Root,\n    externalSlotProps: slotProps?.root,\n    externalForwardedProps: otherProps,\n    className: classes.root,\n    getSlotProps: getRootProps,\n    ownerState: props\n  });\n  const itemsToRender = instance.getItemsToRender();\n  const renderItem = ({\n    label,\n    itemId,\n    id,\n    children\n  }) => {\n    return /*#__PURE__*/_jsx(WrappedTreeItem, {\n      slots: slots,\n      slotProps: slotProps,\n      label: label,\n      id: id,\n      itemId: itemId,\n      children: children?.map(renderItem)\n    }, itemId);\n  };\n  return /*#__PURE__*/_jsx(TreeViewProvider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {\n      children: itemsToRender.map(renderItem)\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? RichTreeView.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"yarn proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * The ref object that allows Tree View manipulation. Can be instantiated with `useTreeViewApiRef()`.\n   */\n  apiRef: PropTypes.shape({\n    current: PropTypes.shape({\n      focusItem: PropTypes.func.isRequired,\n      getItem: PropTypes.func.isRequired,\n      setItemExpansion: PropTypes.func.isRequired\n    })\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * Expanded item ids.\n   * Used when the item's expansion is not controlled.\n   * @default []\n   */\n  defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),\n  /**\n   * Selected item ids. (Uncontrolled)\n   * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n   * @default []\n   */\n  defaultSelectedItems: PropTypes.any,\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: PropTypes.bool,\n  /**\n   * If `true` selection is disabled.\n   * @default false\n   */\n  disableSelection: PropTypes.bool,\n  /**\n   * Expanded item ids.\n   * Used when the item's expansion is controlled.\n   */\n  expandedItems: PropTypes.arrayOf(PropTypes.string),\n  /**\n   * Used to determine the id of a given item.\n   *\n   * @template R\n   * @param {R} item The item to check.\n   * @returns {string} The id of the item.\n   * @default (item) => item.id\n   */\n  getItemId: PropTypes.func,\n  /**\n   * Used to determine the string label for a given item.\n   *\n   * @template R\n   * @param {R} item The item to check.\n   * @returns {string} The label of the item.\n   * @default (item) => item.label\n   */\n  getItemLabel: PropTypes.func,\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide this prop. It falls back to a randomly generated id.\n   */\n  id: PropTypes.string,\n  /**\n   * Used to determine if a given item should be disabled.\n   * @template R\n   * @param {R} item The item to check.\n   * @returns {boolean} `true` if the item should be disabled.\n   */\n  isItemDisabled: PropTypes.func,\n  items: PropTypes.array.isRequired,\n  /**\n   * If true `ctrl` and `shift` will trigger multiselect.\n   * @default false\n   */\n  multiSelect: PropTypes.bool,\n  /**\n   * Callback fired when tree items are expanded/collapsed.\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {array} itemIds The ids of the expanded items.\n   */\n  onExpandedItemsChange: PropTypes.func,\n  /**\n   * Callback fired when a tree item is expanded or collapsed.\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {array} itemId The itemId of the modified item.\n   * @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.\n   */\n  onItemExpansionToggle: PropTypes.func,\n  /**\n   * Callback fired when tree items are focused.\n   * @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.\n   * @param {string} itemId The id of the focused item.\n   * @param {string} value of the focused item.\n   */\n  onItemFocus: PropTypes.func,\n  /**\n   * Callback fired when a tree item is selected or deselected.\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {array} itemId The itemId of the modified item.\n   * @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.\n   */\n  onItemSelectionToggle: PropTypes.func,\n  /**\n   * Callback fired when tree items are selected/deselected.\n   * @param {React.SyntheticEvent} event The event source of the callback\n   * @param {string[] | string} itemIds The ids of the selected items.\n   * When `multiSelect` is `true`, this is an array of strings; when false (default) a string.\n   */\n  onSelectedItemsChange: PropTypes.func,\n  /**\n   * Selected item ids. (Controlled)\n   * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n   */\n  selectedItems: PropTypes.any,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { RichTreeView };","import React, { useState } from \"react\";\nimport { SxProps, useTheme } from \"@mui/material\";\nimport { RichTreeView, TreeViewBaseItem } from \"@mui/x-tree-view\";\n\ntype TreeViewProps<Item extends object = TreeViewBaseItem> = { items: Item[] } & Partial<{\n  /**\n   * Force children to always be expanded\n   */\n  alwaysExpandedIds: string[];\n  /**\n   * Expanded item ids. Used when the item's expansion is not controlled.\n   */\n  defaultExpandedItems: string[];\n  /**\n   * Selected item ids. (Uncontrolled) When multiSelect is true this takes an\n   * array of strings; when false (default) a string.\n   */\n  defaultSelectedItems: string | string[];\n  /**\n   * \tExpanded item ids. Used when the item's expansion is controlled.\n   */\n  expandedItems: string[];\n  /**\n   * Used to determine the id of a given item.\n   * @param item The item to check.\n   * @returns  The id of the item.\n   * @default (item) => item.id\n   */\n  getItemId: (item: Item) => string;\n  /**\n   * Used to determine the string label for a given item.\n   * @param item The item to check.\n   * @returns The label of the item.\n   * @default (item) => item.label\n   */\n  getItemLabel: (item: Item) => string;\n  /**\n   * This prop is used to help implement the accessibility logic. If you don't\n   * provide this prop, it falls back to a randomly generated id.\n   */\n  id: string;\n  /**\n   * Used to determine if a given item should be disabled.\n   * @param item  The item to check.\n   * @returns true if the item should be disabled.\n   */\n  isItemDisabled: (item: Item) => boolean;\n  /**\n   * \tIf true ctrl and shift will trigger multiselect.\n   * @default false\n   */\n  multiSelect: boolean;\n  /**\n   * Callback fired when tree items are expanded/collapsed.\n   * @param event The event source of the callback.\n   * @param itemIds The ids of the expanded items.\n   * @returns void\n   */\n  onExpandedItemsChange: (event: React.SyntheticEvent, itemIds: string[]) => void;\n  /**\n   * Callback fired when a tree item is expanded or collapsed.\n   * @param event The event source of the callback.\n   * @param itemId The itemId of the modified item.\n   * @param isExpanded true if the item has just been expanded, false if it has\n   * just been collapsed.\n   * @returns void\n   */\n  onItemExpansionToggle: (event: React.SyntheticEvent, itemId: string, isExpanded: boolean) => void;\n  /**\n   * Callback fired when tree items are focused.\n   * @param event The event source of the callback Warning: This is a generic event not a focus event.\n   * @param itemId The id of the focused item.\n   * @returns void\n   */\n  onItemFocus: (event: React.SyntheticEvent | null, itemId: string) => void;\n  /**\n   * Callback fired when a tree item is selected or deselected.\n   * @param event The event source of the callback.\n   * @param itemId The itemId of the modified item.\n   * @param isSelected true if the item has just been selected, false if it has\n   * just been deselected.\n   * @returns void\n   */\n  onItemSelectionToggle: (event: React.SyntheticEvent, itemId: string, isSelected: boolean) => void;\n  /**\n   * Callback fired when tree items are selected/deselected.\n   * @param event The event source of the callback\n   * @param itemIds The ids of the selected items. When multiSelect is true,\n   * this is an array of strings; when false (default) a string.\n   * @returns void\n   */\n  onSelectedItemsChange: (event: React.SyntheticEvent, itemIds: string[] | string | null) => void;\n  /**\n   * Selected item ids. (Controlled) When multiSelect is true this takes an\n   * array of strings; when false (default) a string.\n   */\n  selectedItems: string | string[];\n  sx: SxProps;\n}>;\n\nconst TreeView: React.FC<TreeViewProps> = ({ alwaysExpandedIds = [], sx, ...treeViewProps }) => {\n  const theme = useTheme();\n  const [expandedItems, setExpandedItems] = useState(alwaysExpandedIds);\n\n  const highlightingStyle = {\n    backgroundColor: theme.palette.primary.main,\n    color: theme.palette.primary.contrastText,\n  };\n\n  return (\n    <RichTreeView\n      expandedItems={expandedItems}\n      onExpandedItemsChange={(event: React.SyntheticEvent, itemIds: string[]) => {\n        setExpandedItems([...new Set([...alwaysExpandedIds, ...itemIds])]);\n      }}\n      {...treeViewProps}\n      sx={{\n        \".MuiTreeItem-content\": {\n          marginY: \"2px\",\n          \":hover\": {\n            ...highlightingStyle,\n          },\n          \"&.Mui-selected.Mui-focused\": {\n            ...highlightingStyle,\n            \":hover\": {\n              ...highlightingStyle,\n            },\n          },\n          \"&.Mui-selected\": {\n            ...highlightingStyle,\n            \":hover\": {\n              ...highlightingStyle,\n            },\n          },\n        },\n\n        \"& .MuiRichTreeView-itemContent\": {\n          marginY: \"40px\",\n        },\n        ...sx,\n      }}\n    />\n  );\n};\n\nexport default TreeView;\nexport type { TreeViewProps, TreeViewBaseItem };\n","import React, { PropsWithChildren, useState } from \"react\";\nimport MUIStack from \"@mui/material/Stack\";\nimport MUIIconButton from \"@mui/material/IconButton\";\nimport MUIAvatar from \"@mui/material/Avatar\";\nimport MUIMenu from \"@mui/material/Menu\";\n\nimport Text from \"../Text/Text\";\nimport UserIcon from \"../Icons/UserIcon\";\nimport DownArrowIcon from \"../FontAwesomeIcons/DownArrowIcon\";\n\nexport type UserProfileProps = PropsWithChildren & {\n  fullName?: string;\n};\n\nconst UserProfile: React.FC<UserProfileProps> = ({ fullName, children }) => {\n  const [anchorEl, setAnchorEl] = useState<Element | null>(null);\n  const open = Boolean(anchorEl);\n\n  const handleClick = (event: React.MouseEvent<HTMLButtonElement> | React.MouseEvent<HTMLDivElement>) => {\n    setAnchorEl(event.currentTarget);\n  };\n\n  const handleClose = () => {\n    setAnchorEl(null);\n  };\n\n  return (\n    <>\n      <MUIStack\n        onClick={handleClick}\n        width=\"max-content\"\n        direction=\"row\"\n        alignItems=\"center\"\n        spacing={1}\n        sx={{ cursor: \"pointer\" }}\n      >\n        <Text\n          variant=\"subtitle1\"\n          component=\"h2\"\n          sx={{\n            display: { xs: \"none\", sm: \"block\" },\n            maxWidth: {\n              sm: \"clamp(130px, 15vw, 360px)\",\n              md: \"clamp(160px, 22vw, 360px)\",\n              lg: \"clamp(240px, 25vw, 600px)\",\n              xl: \"clamp(240px, calc(25vw + 80px), 600px)\",\n            },\n            overflow: \"hidden\",\n            whiteSpace: \"nowrap\",\n            textOverflow: \"ellipsis\",\n          }}\n          title={fullName}\n        >\n          {fullName}\n        </Text>\n        <MUIAvatar variant=\"circular-outlined\" sx={{ width: 32, height: 32, borderColor: \"inherit\" }}>\n          <UserIcon color=\"inherit\" />\n        </MUIAvatar>\n        <MUIIconButton aria-label=\"user-profile\" color=\"inherit\">\n          <DownArrowIcon rotation={open ? 180 : undefined} size=\"sm\" color=\"primary\" />\n        </MUIIconButton>\n      </MUIStack>\n      <MUIMenu\n        anchorEl={anchorEl}\n        id=\"user-profile-menu\"\n        open={open}\n        onClose={handleClose}\n        onClick={handleClose}\n        MenuListProps={{ component: \"div\", sx: { padding: 0 } }}\n        slotProps={{\n          paper: {\n            sx: {\n              padding: 2.5,\n              width: 300,\n              filter: \"drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.15))\",\n            },\n          },\n        }}\n        transformOrigin={{ horizontal: \"right\", vertical: \"top\" }}\n        anchorOrigin={{ horizontal: \"right\", vertical: \"bottom\" }}\n      >\n        {children}\n      </MUIMenu>\n    </>\n  );\n};\n\nexport default UserProfile;\n","import React, { PropsWithChildren } from \"react\";\nimport MUIStack from \"@mui/material/Stack\";\n\nconst UserProfileContent: React.FC<PropsWithChildren> = ({ children }) => <MUIStack rowGap={2}>{children}</MUIStack>;\n\nexport default UserProfileContent;\n","import React, { FC } from \"react\";\n\nimport FlexBox from \"../../../layout/FlexBox\";\nimport { Text } from \"../Text\";\n\nexport interface TitleAndContentProps {\n  title?: string;\n  content?: string;\n}\n\nconst TitleAndContent: FC<TitleAndContentProps> = ({\n  title = \"\",\n  content = \"\",\n}) => (\n  <FlexBox>\n    <Text>\n      <b>{title}</b>\n    </Text>\n    <Text>{content}</Text>\n  </FlexBox>\n);\n\nexport default TitleAndContent;\n","import React, { PropsWithChildren } from \"react\";\nimport MUIAvatar from \"@mui/material/Avatar\";\nimport MUIGrid from \"@mui/material/Grid\";\nimport MUIBox from \"@mui/material/Box\";\n\nimport Text, { H2 } from \"../../Text/Text\";\nimport UserIcon from \"../../Icons/UserIcon\";\n\nexport type UserStatusProps = PropsWithChildren & {\n  fullName: string;\n};\n\nconst UserStatus: React.FC<UserStatusProps> = ({ fullName, children }) => (\n  <MUIGrid container>\n    <MUIBox sx={{ width: \"100%\" }} marginBottom={2}>\n      <H2 variant=\"h4\">User Status</H2>\n    </MUIBox>\n    <MUIGrid container columns={6} alignItems=\"center\">\n      <MUIGrid item xs={1}>\n        <MUIAvatar variant=\"circular-outlined\" sx={{ width: 32, height: 32 }}>\n          <UserIcon color=\"primary\" />\n        </MUIAvatar>\n      </MUIGrid>\n      <MUIGrid item xs={5}>\n        <Text variant=\"subtitle1\">{fullName}</Text>\n      </MUIGrid>\n    </MUIGrid>\n    <MUIGrid container columns={6}>\n      <MUIGrid item xs={1} />\n      <MUIGrid item xs={5}>\n        {children}\n      </MUIGrid>\n    </MUIGrid>\n  </MUIGrid>\n);\n\nexport default UserStatus;\n","import MUIMenu from \"@mui/material/Menu\";\nimport MUIMenuItem from \"@mui/material/MenuItem\";\nimport MUIListItemIcon from \"@mui/material/ListItemIcon\";\nimport MUITypography from \"@mui/material/Typography\";\nimport MUIListItemText from \"@mui/material/ListItemText\";\nimport { SvgIconProps } from \"@mui/material/SvgIcon\";\n\nimport React, { useState } from \"react\";\nimport { FlexBox, useExtendedTheme } from \"../../../export\";\nimport IconButton from \"../../buttons/Button/IconButton\";\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport DownArrow from \"../FontAwesomeIcons/DownArrowIcon\";\n\nexport interface DropdownButtonProps {\n  ariaLabel: string;\n  id: string;\n  menuItems: DropDownButtonMenuItemProps[];\n}\n\nexport interface DropDownButtonMenuItemProps {\n  id: string;\n  onClick: (val: string) => void;\n  faIcon?: IconProp;\n  icon?: React.ElementType<SvgIconProps>;\n  value: string;\n  default?: boolean;\n  selected: boolean;\n}\n\nconst DropdownButtonMenuItem: React.FC<DropDownButtonMenuItemProps> = ({\n  onClick,\n  faIcon,\n  id,\n  icon,\n  value,\n  selected = false,\n}) => {\n  const Icon = icon;\n  const theme = useExtendedTheme();\n\n  return (\n    <MUIMenuItem\n      onClick={() => onClick(value)}\n      id={id}\n      selected={selected}\n      sx={{\n        display: \"flex\",\n        alignItems: \"center\",\n        marginX: 1,\n        borderRadius: \"4px\",\n        border: \"1px solid rgba(0, 0, 0, 0)\",\n        \"&.Mui-selected.Mui-selected\": {\n          backgroundColor: theme.palette.mode === \"dark\" ? theme.palette.background.default : \"rgba(0, 0, 0, 0.04)\",\n        },\n        \"&.Mui-selected.Mui-selected:hover\": {\n          backgroundColor: theme.palette.mode === \"dark\" ? theme.palette.background.default : \"rgba(0, 0, 0, 0.04)\",\n        },\n        \"&:hover\": {\n          backgroundColor: theme.palette.mode === \"dark\" ? theme.palette.background.default : \"rgba(0, 0, 0, 0.04)\",\n          border: `1px solid ${theme.palette.primary.main}`,\n        },\n      }}\n    >\n      {(Icon || faIcon) && (\n        <MUIListItemIcon>\n          {Icon && <Icon color={selected ? \"primary\" : \"inherit\"} />}\n          {faIcon && (\n            <FontAwesomeIcon icon={faIcon} fontSize=\"medium\" color={selected ? theme.palette.primary.main : \"white\"} />\n          )}\n        </MUIListItemIcon>\n      )}\n      <MUIListItemText>\n        <MUITypography\n          variant=\"h1\"\n          sx={{\n            marginTop: 0.5,\n            fontFamily: \"Figtree\",\n            fontSize: 16,\n            fontWeight: 400,\n            color: `${selected ? theme.palette.primary.main : \"primary\"}`,\n            display: \"flex\",\n            alignItems: \"center\",\n          }}\n        >\n          {value}\n        </MUITypography>\n      </MUIListItemText>\n    </MUIMenuItem>\n  );\n};\n\nconst DropdownButton: React.FC<DropdownButtonProps> = ({ ariaLabel, id, menuItems }) => {\n  const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n  const [selectedMenuItem, setSelectedMenuItem] = useState(\n    menuItems.find((menuItem) => menuItem.default) ?? menuItems[0],\n  );\n  const theme = useExtendedTheme();\n  const open = Boolean(anchorEl);\n\n  const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n    setAnchorEl(event.currentTarget);\n  };\n\n  const handleClose = () => {\n    setAnchorEl(null);\n  };\n\n  return (\n    <FlexBox>\n      <IconButton\n        aria-label={ariaLabel}\n        aria-controls={open ? id : undefined}\n        aria-haspopup=\"true\"\n        sx={{\n          border: 0,\n          \"&:hover\": {\n            backgroundColor: \"rgba(255, 255, 255, 0.08)\",\n          },\n        }}\n        aria-expanded={open ? \"true\" : undefined}\n        onClick={handleClick}\n        color=\"primary\"\n      >\n        {selectedMenuItem.icon && <selectedMenuItem.icon color=\"primary\" className=\"mr-2\" />}\n        {selectedMenuItem.faIcon && (\n          <FontAwesomeIcon\n            icon={selectedMenuItem.faIcon}\n            fontSize=\"medium\"\n            color={theme.palette.primary.main ?? \"white\"}\n            className=\"mr-2\"\n          />\n        )}\n        {<DownArrow />}\n      </IconButton>\n      <MUIMenu\n        id={id}\n        anchorEl={anchorEl}\n        open={open}\n        transformOrigin={{ vertical: -20, horizontal: \"left\" }}\n        onClose={handleClose}\n        MenuListProps={{\n          \"aria-labelledby\": id,\n        }}\n        sx={{\n          \"& .MuiPaper-root\": {\n            backgroundColor: theme.palette.mode === \"dark\" ? \"#2A2A2A\" : \"#ffffff\",\n          },\n        }}\n      >\n        {menuItems.map((menuItem: DropDownButtonMenuItemProps, index: number) => (\n          <DropdownButtonMenuItem\n            id={`${id}-item-${index}`}\n            key={`${id}-item-${index}`}\n            onClick={() => {\n              menuItem.onClick(menuItem.value);\n              setSelectedMenuItem(menuItem);\n              handleClose();\n            }}\n            icon={menuItem?.icon}\n            faIcon={menuItem?.faIcon}\n            value={menuItem.value}\n            selected={menuItem.value === selectedMenuItem.value}\n          />\n        ))}\n      </MUIMenu>\n    </FlexBox>\n  );\n};\n\nexport default DropdownButton;\n","import React from \"react\";\nimport LinearProgressRaw, { LinearProgressProps } from \"@mui/material/LinearProgress\";\n\ntype LinearProgressPropsNew = LinearProgressProps & {\n  isActive: boolean;\n  transition?: number; // Transition time in milliseconds\n};\n\nexport const LinearProgress: React.FC<LinearProgressProps> = ({\n  // isActive,\n  // transition = 500,\n  ...linearProgressProps\n}) => {\n  return (\n    <LinearProgressRaw\n      {...linearProgressProps}\n      // style={{\n      //   opacity: isActive ? 1 : 0,\n      //   transition: `opacity ${transition}ms ease-in-out`,\n      //   visibility: isActive ? 'visible' : 'hidden',\n      //   height: '4px', // default height for MUI LinearProgressRaw\n      // }}\n    />\n  );\n};\n\nexport default LinearProgress;\n","import React, { type FC } from \"react\";\nimport { CircularProgress, CircularProgressProps } from \"@mui/material\";\n\nconst Spinner: FC<CircularProgressProps> = (props) => {\n  return <CircularProgress {...props} />;\n};\n\nexport default Spinner;\n","import React, { FC, ReactNode } from \"react\";\nimport {\n  Dialog as MuiDialog,\n  DialogProps as MuiDialogProps,\n} from \"@mui/material\";\nexport {\n  DialogTitle,\n  DialogContent,\n  DialogActions,\n} from \"@mui/material\";\n\nexport type {\n  DialogTitleProps,\n  DialogContentProps,\n  DialogActionsProps,\n} from \"@mui/material\";\n\n\nexport interface DialogProps extends MuiDialogProps {\n  open: boolean;\n  onClose: () => void;\n  children: ReactNode;\n}\n\nconst Dialog: FC<DialogProps> = ({ open, onClose, children, ...otherProps }) => {\n  return (\n    <MuiDialog\n      open={open}\n      onClose={onClose}\n      sx={{\n        \"& .MuiPaper-root\": {\n          backgroundColor: \"#1e1e1e\",\n          color: \"#fff\",\n        },\n      }}\n      {...otherProps}\n    >\n      {children}\n    </MuiDialog>\n  );\n};\n\nexport default Dialog;\n","\nimport SkeletonRaw from '@mui/material/Skeleton';\n\nexport const Skeleton = SkeletonRaw;\n","import React from \"react\";\nimport MUIToggleButton, {\n  ToggleButtonProps as MUIToggleButtonProps,\n} from \"@mui/material/ToggleButton\";\nimport { styled } from \"@mui/material/styles\";\nimport MUITooltip from \"@mui/material/Tooltip\";\n\nconst StyledToggleButton = styled(MUIToggleButton)({\n  border: 0,\n});\n\nexport interface TooltipToggleButtonProps\n  extends Omit<\n    MUIToggleButtonProps,\n    \"sx\" | \"classes\" | \"color\"\n  > {\n  /**\n   * Tooltip text\n   */\n  tooltip?: string;\n}\n\nconst TooltipToggleButton: React.FC<TooltipToggleButtonProps> = ({\n  tooltip,\n  onClick,\n  selected,\n  children,\n  ...props\n}) => (\n  <MUITooltip\n    title={tooltip ?? \"\"}\n    placement=\"bottom\"\n    PopperProps={{\n      modifiers: [\n        {\n          name: \"offset\",\n          options: { offset: [0, -10] },\n        },\n      ],\n    }}\n  >\n    <StyledToggleButton\n      color=\"primary\"\n      onClick={onClick}\n      selected={selected}\n      {...props}\n    >\n      {children}\n    </StyledToggleButton>\n  </MUITooltip>\n);\n\nexport default TooltipToggleButton;\n\n","import React, { forwardRef } from \"react\";\nimport { Button, ButtonProps } from \"@mui/material\";\n\ntype PrimaryButtonProps = Omit<ButtonProps, \"variant\" | \"color\">;\n\n\nconst PrimaryButton = forwardRef<HTMLButtonElement, PrimaryButtonProps>((buttonProps, ref) => (\n  <Button variant=\"contained\" ref={ref} color=\"primary\" {...buttonProps}>\n    {buttonProps.children}\n  </Button>\n));\n\nexport default PrimaryButton;\n","import React, { forwardRef } from \"react\";\nimport MUIButton, { ButtonProps as MUIButtonProps } from \"@mui/material/Button\";\n\nexport type SecondaryButtonProps = Omit<MUIButtonProps, \"variant\" | \"color\">;\n\nexport const SecondaryButton = forwardRef<HTMLButtonElement, SecondaryButtonProps>((buttonProps, ref) => {\n  if (buttonProps.disableElevation) {\n    return (\n      /**\n       * TODO Change Secondary color to \"secondary\"\n       * HOW change \"primary\" to \"secondary\"; Check usage\n       * WHEN https://telicent.atlassian.net/browse/TELFE-1250\n       * WHO anyone\n       *\n       */\n      <MUIButton variant=\"outlined\" color=\"primary\" {...buttonProps} ref={ref}>\n        {buttonProps.children}\n      </MUIButton>\n    );\n  }\n  return (\n    <MUIButton variant=\"outlined\" color=\"primary\" {...buttonProps} ref={ref}>\n      {buttonProps.children}\n    </MUIButton>\n  );\n});\n\nexport default SecondaryButton;\n","import React, { forwardRef } from \"react\";\nimport MUIButton, { ButtonProps as MUIButtonProps } from \"@mui/material/Button\";\nimport { useExtendedTheme } from \"../../../export\";\n\ntype TertiaryButtonProps = Omit<MUIButtonProps, \"variant\" | \"color\">;\n\nexport const TertiaryButton = forwardRef<HTMLButtonElement, TertiaryButtonProps>((buttonProps, ref) => {\n  const theme = useExtendedTheme();\n\n  return (\n    <MUIButton\n      variant=\"contained\"\n      ref={ref}\n      {...buttonProps}\n      sx={{\n        border: `1px solid ${theme.palette.tertiary?.main}`,\n        color: theme.palette.tertiary?.contrastText,\n        backgroundColor: theme.palette.mode === \"dark\" ? \"#080808\" : \"#FFFFFF\",\n        \"&:hover\": {\n          backgroundColor: `${theme.palette.tertiary?.main}14`,\n          borderColor: theme.palette.tertiary?.main,\n        },\n      }}\n    >\n      {buttonProps.children}\n    </MUIButton>\n  );\n});\n\nexport default TertiaryButton;\n","import React, { forwardRef } from \"react\";\nimport MUIButton, { ButtonProps as MUIButtonProps } from \"@mui/material/Button\";\n\nexport type TextButtonProps = Omit<MUIButtonProps, \"variant\">;\n\nconst TextButton = forwardRef<HTMLButtonElement, TextButtonProps>((buttonProps, ref) => {\n  return <MUIButton {...buttonProps} ref={ref} variant=\"text\" />;\n});\n\nTextButton.displayName = \"TextButton\";\n\nexport default TextButton;\n","import React, { forwardRef } from \"react\";\nimport { ButtonBase, ButtonBaseProps } from \"@mui/material\";\nimport { ButtonProps as MUIButtonProps } from \"@mui/material/Button\";\nimport { ButtonVariant } from \"../../../tokens\";\nimport PrimaryButton from \"./PrimaryButton\";\nimport SecondaryButton from \"./SecondaryButton\";\nimport TertiaryButton from \"./TertiaryButton\";\nimport TextButton from \"./TextButton\";\n\ntype SupportedVariant = ButtonVariant;\n\nexport type ButtonProps = Omit<MUIButtonProps, \"variant\"> &\n  Omit<ButtonBaseProps, \"style\"> & {\n    variant?: SupportedVariant;\n  };\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => {\n  const { variant = \"primary\", ...buttonProps } = props;\n\n  if (variant === \"base\") {\n    return <ButtonBase {...buttonProps} ref={ref} />;\n  }\n\n  if (variant === \"primary\") {\n    return <PrimaryButton {...buttonProps} ref={ref} />;\n  }\n\n  if (variant === \"secondary\") {\n    return <SecondaryButton {...buttonProps} ref={ref} />;\n  }\n\n  if (variant === \"tertiary\") {\n    return <TertiaryButton {...buttonProps} ref={ref} />;\n  }\n\n  if (variant === \"text\") {\n    return <TextButton {...buttonProps} ref={ref} />;\n  }\n\n  return <PrimaryButton {...buttonProps} ref={ref} />;\n});\n\nButton.displayName = \"Button\";\n\nexport default Button;\n","import React, { forwardRef } from \"react\";\nimport MUIButton, { ButtonProps as MUIButtonProps } from \"@mui/material/Button\";\nimport MUIBox from \"@mui/material/Box\";\nimport { useTheme } from \"@mui/material/styles\";\n\ntype LinkButtonProps = Omit<MUIButtonProps, \"variant\" | \"color\">;\n\nconst Link = forwardRef<HTMLButtonElement, LinkButtonProps>((buttonProps, ref) => {\n  const theme = useTheme();\n\n  return (\n    <MUIBox sx={{ width: \"fit-content\" }}>\n      <MUIButton\n        ref={ref}\n        variant=\"text\"\n        color=\"primary\"\n        {...buttonProps}\n        disableRipple\n        sx={{\n          minWidth: \"fit-content\",\n          padding: 0,\n          \":hover\": { backgroundColor: \"transparent\" },\n          \":not(.Mui-disabled):hover + .ButtonLinkLine\": {\n            opacity: 1,\n            width: \"100%\",\n          },\n        }}\n      >\n        {buttonProps.children}\n      </MUIButton>\n      <MUIBox\n        className=\"ButtonLinkLine\"\n        borderTop={1.5}\n        borderColor={theme.palette.primary.main}\n        sx={{\n          opacity: 0,\n          width: 0,\n          marginLeft: \"auto\",\n          marginRight: \"auto\",\n          transitionDuration: \"400ms\",\n          transitionProperty: \"width, opacity\",\n          transitionTimingFunction: \"cubic-bezier(0.39, 0.58, 0.57, 1)\",\n        }}\n      />\n    </MUIBox>\n  );\n});\n\nexport default Link;\n","import React, { ChangeEvent, useState } from \"react\";\nimport { Box, TextField, TextFieldProps, Typography } from \"@mui/material\";\nimport { IconButton } from \"../../buttons\";\nimport { Edit as EditIcon, Check as CheckIcon, Clear as ClearIcon } from \"@telicent-oss/mui-icons-material\";\nimport { FlexBox } from \"../../layout\";\nimport { Text } from \"../../data-display\";\nimport { useExtendedTheme } from \"../../../export\";\n\nexport type InputText = TextFieldProps & {\n  value: string;\n  onSave: (value: string) => void;\n  errorText?: string;\n  fullWidth?: boolean;\n};\n\nconst EditableTextField: React.FC<InputText> = ({\n  value,\n  onSave,\n  error,\n  errorText,\n  helperText,\n  label,\n  fullWidth,\n  ...props\n}) => {\n  const [isEditing, setIsEditing] = useState(false);\n  const [tempValue, setTempValue] = useState(value ?? \"\");\n  const theme = useExtendedTheme();\n\n  const handleEdit = () => setIsEditing(true);\n  const handleSave = () => {\n    onSave(tempValue);\n    setIsEditing(false);\n  };\n  const handleCancel = () => {\n    setTempValue(value);\n    setIsEditing(false);\n  };\n\n  return (\n    <Box display=\"flex\" alignItems=\"center\" gap={1}>\n      {isEditing || value === \"\" ? (\n        <FlexBox direction=\"row\" alignItems=\"baseline\" gap={1}>\n          <TextField\n            autoFocus\n            label={label}\n            value={tempValue}\n            onChange={(e) => setTempValue(e.target.value)}\n            error={error}\n            helperText={error ? errorText : helperText}\n            fullWidth={fullWidth}\n            {...props}\n          />\n          <IconButton onClick={handleSave} size=\"small\">\n            <CheckIcon sx={{ color: theme.palette.primary.main, lineHeight: \"inherit\" }} />\n          </IconButton>\n          <IconButton onClick={handleCancel} size=\"small\">\n            <ClearIcon sx={{ color: theme.palette.primary.main, lineHeight: \"inherit\" }} />\n          </IconButton>\n        </FlexBox>\n      ) : (\n        <FlexBox direction=\"column\">\n          {label && <Text sx={{ fontWeight: \"bold\" }}>{label}:</Text>}\n          <FlexBox direction=\"row\" alignItems=\"center\" gap={1}>\n            <Typography>{value}</Typography>\n            <IconButton onClick={handleEdit} size=\"small\">\n              <EditIcon fontSize=\"inherit\" />\n            </IconButton>\n          </FlexBox>\n        </FlexBox>\n      )}\n    </Box>\n  );\n};\n\nexport default EditableTextField;\n","import React from \"react\";\nimport { TextField as MuiTextField, TextFieldProps as MuiTextFieldProps } from \"@mui/material\";\n\ntype Props = MuiTextFieldProps & {\n  errorText?: React.ReactNode;\n};\n\nconst TextField = React.forwardRef<HTMLInputElement, Props>(({ errorText, error, helperText, ...rest }, ref) => {\n  return (\n    <MuiTextField\n      {...rest}\n      inputRef={ref}\n      error={Boolean(error ?? errorText)}\n      helperText={error ? errorText ?? helperText : helperText}\n    />\n  );\n});\n\nexport default TextField;\n","import {\n  Box,\n  Divider,\n  FormControl,\n  InputLabel,\n  Select as MUISelect,\n  MenuItem,\n  SelectProps as MuiSelectProps,\n  FormHelperText,\n} from \"@mui/material\";\nimport React, { useId } from \"react\";\n\nexport interface Options {\n  value: string | number;\n  label: string;\n}\n\n/**\n * Arguments passed to the `footer` render function.\n */\nexport type SelectFooterArgs = {\n  /** Closes the dropdown — call this before opening a modal, for example. */\n  closeMenu: () => void;\n};\n\nexport type SelectProps = MuiSelectProps & {\n  options: Options[];\n  width?: number | string;\n  helperText?: React.ReactNode;\n  /**\n   * Optional content rendered below the option list, separated by a\n   * divider. Use this for inline actions like \"+ Create new …\".\n   *\n   * Pass a render function to receive `closeMenu`, so your click handler\n   * can dismiss the dropdown after acting (e.g. before opening a modal).\n   * Pass a plain ReactNode if you don't need to close the menu yourself.\n   *\n   * The footer is NOT selectable as a value — clicking it will not fire\n   * `onChange`.\n   */\n  footer?: React.ReactNode | ((args: SelectFooterArgs) => React.ReactNode);\n\n  /**\n   * Optional custom renderer for each menu item's contents. When provided,\n   * the return value is rendered inside the `<MenuItem>` in place of\n   * `option.label`.\n   *\n   * `option.label` remains the source of truth for the string used by\n   * filtering, ARIA, and the closed-trigger value — it is not replaced.\n   * Pair with `renderValue` if you also need to customise the closed\n   * trigger.\n   */\n  renderOption?: (option: Options) => React.ReactNode;\n};\n\nconst Select = React.forwardRef<HTMLInputElement, SelectProps>(\n  (\n    {\n      label,\n      value,\n      id,\n      options,\n      width,\n      onChange,\n      disabled = false,\n      sx,\n      helperText,\n      error = false,\n      required = false,\n      fullWidth = false,\n      footer,\n      renderOption,\n      ...rest\n    },\n    ref,\n  ) => {\n    const reactId = useId();\n    const selectedId = id ?? `select-${reactId}`;\n    const labelId = label ? `${selectedId}-label` : undefined;\n    const helperTextId = helperText ? `${selectedId}-helper-text` : undefined;\n\n    // Own the open state so the footer can dismiss the menu via `closeMenu`.\n    // If the caller controls `open`, defer to them and just mirror their\n    // open/close callbacks.\n    const [openInternal, setOpenInternal] = React.useState(false);\n    const isOpenControlled = \"open\" in rest;\n    const openProp = isOpenControlled ? rest.open : openInternal;\n\n    const handleOpen: NonNullable<MuiSelectProps[\"onOpen\"]> = (event) => {\n      setOpenInternal(true);\n      rest.onOpen?.(event);\n    };\n    const handleClose: NonNullable<MuiSelectProps[\"onClose\"]> = (event) => {\n      setOpenInternal(false);\n      rest.onClose?.(event);\n    };\n    const closeMenu = React.useCallback(() => setOpenInternal(false), []);\n\n    const consumerSx = Array.isArray(sx) ? sx : sx ? [sx] : [];\n    const composedSx = [\n      { minWidth: 88, ...(width && { width }), ...(fullWidth && { width: \"100%\" }) },\n      ...consumerSx,\n    ];\n\n    return (\n      <FormControl\n        sx={composedSx}\n        size=\"small\"\n        error={error}\n        required={required}\n        fullWidth={fullWidth}\n        disabled={disabled}\n      >\n        {label && (\n          <InputLabel id={labelId} required={required} htmlFor={selectedId}>\n            {label}\n          </InputLabel>\n        )}\n\n        <MUISelect\n          {...rest}\n          open={openProp}\n          onOpen={handleOpen}\n          onClose={handleClose}\n          color=\"primary\"\n          variant=\"outlined\"\n          labelId={labelId}\n          label={label}\n          id={selectedId}\n          value={value}\n          onChange={onChange}\n          inputRef={ref}\n          aria-describedby={helperText ? helperTextId : undefined}\n        >\n          {options.map((option) => (\n            <MenuItem\n              key={option.value}\n              value={option.value}\n              aria-label={renderOption ? option.label : undefined}\n              disableRipple\n            >\n              {renderOption ? renderOption(option) : option.label}\n            </MenuItem>\n          ))}\n          {footer && options.length > 0 && (\n            <Divider key=\"__ds-select-footer-divider\" component=\"li\" role=\"separator\" sx={{ my: 0.5 }} />\n          )}\n          {footer && (\n            <Box\n              key=\"__ds-select-footer\"\n              component=\"li\"\n              role=\"presentation\"\n              sx={{ px: 1.5, py: 0.5, listStyle: \"none\" }}\n              // Stop propagation so MUI's Select doesn't treat a click inside\n              // the footer as an option selection. The footer's own onClick\n              // handlers still fire.\n              onClick={(e) => e.stopPropagation()}\n              onKeyDown={(e) => {\n                // Don't let Enter/Space inside the footer trigger Select's\n                // option-selection keyboard handlers.\n                if (e.key === \"Enter\" || e.key === \" \") {\n                  e.stopPropagation();\n                }\n              }}\n            >\n              {typeof footer === \"function\" ? footer({ closeMenu }) : footer}\n            </Box>\n          )}\n        </MUISelect>\n        {helperText && (\n          <FormHelperText error={error} id={helperTextId}>\n            {helperText}\n          </FormHelperText>\n        )}\n      </FormControl>\n    );\n  },\n);\n\nexport default Select;\n","import { Autocomplete as MuiAutocomplete } from \"@mui/material\";\nimport type { AutocompleteProps as MuiAutocompleteProps } from \"@mui/material/Autocomplete\";\nimport { forwardRef } from \"react\";\nimport TextField from \"../TextField/TextField\";\nimport { Chip } from \"../../data-display\";\n\nexport type Option = {\n  label: string;\n  value: string;\n  icon?: React.ReactNode;\n};\n\ntype BaseProps = {\n  id?: string;\n  label: string;\n  options: Option[];\n  placeholder?: string;\n  disabled?: boolean;\n  error?: boolean;\n  helperText?: string;\n  fullWidth?: boolean;\n  size?: \"small\" | \"medium\";\n  required?: boolean;\n};\n\ntype SingleProps = BaseProps & {\n  multiple?: false;\n  value: Option | null;\n  onChange: (value: Option | null) => void;\n};\n\ntype MultipleProps = BaseProps & {\n  multiple: true;\n  value: Option[];\n  onChange: (value: Option[]) => void;\n};\n\ntype MuiSinglePassthrough = Omit<\n  MuiAutocompleteProps<Option, false, false, false>,\n  \"options\" | \"value\" | \"onChange\" | \"renderInput\" | \"multiple\" | \"disabled\" | \"size\"\n>;\n\ntype MuiMultiplePassthrough = Omit<\n  MuiAutocompleteProps<Option, true, false, false>,\n  \"options\" | \"value\" | \"onChange\" | \"renderInput\" | \"multiple\" | \"disabled\" | \"size\"\n>;\n\ntype SingleAutoCompleteProps = SingleProps & MuiSinglePassthrough;\ntype MultipleAutoCompleteProps = MultipleProps & MuiMultiplePassthrough;\n\nexport type AutoCompleteProps = SingleAutoCompleteProps | MultipleAutoCompleteProps;\n\nconst SingleAutocomplete = forwardRef<HTMLDivElement, SingleAutoCompleteProps>(\n  (\n    {\n      label,\n      value,\n      onChange,\n      options,\n      placeholder,\n      disabled,\n      error,\n      helperText,\n      fullWidth = true,\n      size = \"small\",\n      required = false,\n      id,\n      ...rest\n    },\n    ref,\n  ) => {\n    return (\n      <MuiAutocomplete\n        {...rest}\n        id={id}\n        ref={ref}\n        options={options}\n        multiple={false}\n        value={value}\n        onChange={(_, next) => onChange(next ?? null)}\n        fullWidth={fullWidth}\n        size={size}\n        disabled={disabled}\n        isOptionEqualToValue={(option, val) => option.value === val.value}\n        renderInput={(params) => (\n          <TextField\n            {...params}\n            label={label}\n            placeholder={placeholder}\n            error={error}\n            helperText={helperText}\n            size={size}\n            required={required}\n          />\n        )}\n      />\n    );\n  },\n);\n\nconst MultipleAutocomplete = forwardRef<HTMLDivElement, MultipleAutoCompleteProps>(\n  (\n    {\n      label,\n      value,\n      onChange,\n      options,\n      placeholder,\n      disabled,\n      error,\n      helperText,\n      fullWidth = true,\n      size = \"small\",\n      required = false,\n      id,\n      ...rest\n    },\n    ref,\n  ) => {\n    return (\n      <MuiAutocomplete\n        {...rest}\n        id={id}\n        ref={ref}\n        options={options}\n        multiple\n        value={value}\n        onChange={(_, next) => onChange(next ?? [])}\n        fullWidth={fullWidth}\n        size={size}\n        disabled={disabled}\n        isOptionEqualToValue={(option, val) => option.value === val.value}\n        renderTags={(selectedOptions, getTagProps) =>\n          selectedOptions.map((option, index) => (\n            <Chip\n              variant=\"filled\"\n              color=\"default\"\n              size=\"small\"\n              label={option.label}\n              {...getTagProps({ index })}\n              sx={{ pl: 1 }}\n            />\n          ))\n        }\n        renderInput={(params) => (\n          <TextField\n            {...params}\n            label={label}\n            placeholder={placeholder}\n            error={error}\n            helperText={helperText}\n            size={size}\n            required={required}\n          />\n        )}\n      />\n    );\n  },\n);\n\nconst Autocomplete = forwardRef<HTMLDivElement, AutoCompleteProps>((props, ref) => {\n  return props.multiple ? <MultipleAutocomplete {...props} ref={ref} /> : <SingleAutocomplete {...props} ref={ref} />;\n});\n\nexport default Autocomplete;\n","import { Switch as MuiSwitch, FormControlLabel } from \"@mui/material\";\nimport type { SwitchProps as MuiSwitchProps } from \"@mui/material/Switch\";\nimport { forwardRef } from \"react\";\n\nexport type SwitchProps = Omit<MuiSwitchProps, \"color\"> & {\n  label?: string;\n  labelPlacement?: \"end\" | \"start\" | \"top\" | \"bottom\";\n};\n\nconst Switch = forwardRef<HTMLButtonElement, SwitchProps>(({ label, labelPlacement = \"end\", ...props }, ref) => {\n  const switchElement = <MuiSwitch {...props} ref={ref} color=\"primary\" />;\n\n  if (!label) {\n    return switchElement;\n  }\n\n  return <FormControlLabel control={switchElement} label={label} labelPlacement={labelPlacement} />;\n});\n\nexport default Switch;\n","import PropTypes from 'prop-types';\nconst refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nfunction resolveComponentProps(componentProps, ownerState, slotState) {\n  if (typeof componentProps === 'function') {\n    return componentProps(ownerState, slotState);\n  }\n  return componentProps;\n}\nexport default resolveComponentProps;","export const areViewsEqual = (views, expectedViews) => {\n  if (views.length !== expectedViews.length) {\n    return false;\n  }\n  return expectedViews.every(expectedView => views.includes(expectedView));\n};\nexport const applyDefaultViewProps = ({\n  openTo,\n  defaultOpenTo,\n  views,\n  defaultViews\n}) => {\n  const viewsWithDefault = views ?? defaultViews;\n  let openToWithDefault;\n  if (openTo != null) {\n    openToWithDefault = openTo;\n  } else if (viewsWithDefault.includes(defaultOpenTo)) {\n    openToWithDefault = defaultOpenTo;\n  } else if (viewsWithDefault.length > 0) {\n    openToWithDefault = viewsWithDefault[0];\n  } else {\n    throw new Error('MUI X: The `views` prop must contain at least one view.');\n  }\n  return {\n    views: viewsWithDefault,\n    openTo: openToWithDefault\n  };\n};","import { areViewsEqual } from \"./views.js\";\nexport const mergeDateAndTime = (adapter, dateParam, timeParam) => {\n  let mergedDate = dateParam;\n  mergedDate = adapter.setHours(mergedDate, adapter.getHours(timeParam));\n  mergedDate = adapter.setMinutes(mergedDate, adapter.getMinutes(timeParam));\n  mergedDate = adapter.setSeconds(mergedDate, adapter.getSeconds(timeParam));\n  mergedDate = adapter.setMilliseconds(mergedDate, adapter.getMilliseconds(timeParam));\n  return mergedDate;\n};\nexport const findClosestEnabledDate = ({\n  date,\n  disableFuture,\n  disablePast,\n  maxDate,\n  minDate,\n  isDateDisabled,\n  adapter,\n  timezone\n}) => {\n  const today = mergeDateAndTime(adapter, adapter.date(undefined, timezone), date);\n  if (disablePast && adapter.isBefore(minDate, today)) {\n    minDate = today;\n  }\n  if (disableFuture && adapter.isAfter(maxDate, today)) {\n    maxDate = today;\n  }\n  let forward = date;\n  let backward = date;\n  if (adapter.isBefore(date, minDate)) {\n    forward = minDate;\n    backward = null;\n  }\n  if (adapter.isAfter(date, maxDate)) {\n    if (backward) {\n      backward = maxDate;\n    }\n    forward = null;\n  }\n  while (forward || backward) {\n    if (forward && adapter.isAfter(forward, maxDate)) {\n      forward = null;\n    }\n    if (backward && adapter.isBefore(backward, minDate)) {\n      backward = null;\n    }\n    if (forward) {\n      if (!isDateDisabled(forward)) {\n        return forward;\n      }\n      forward = adapter.addDays(forward, 1);\n    }\n    if (backward) {\n      if (!isDateDisabled(backward)) {\n        return backward;\n      }\n      backward = adapter.addDays(backward, -1);\n    }\n  }\n  return null;\n};\nexport const replaceInvalidDateByNull = (adapter, value) => !adapter.isValid(value) ? null : value;\nexport const applyDefaultDate = (adapter, value, defaultValue) => {\n  if (value == null || !adapter.isValid(value)) {\n    return defaultValue;\n  }\n  return value;\n};\nexport const areDatesEqual = (adapter, a, b) => {\n  if (!adapter.isValid(a) && a != null && !adapter.isValid(b) && b != null) {\n    return true;\n  }\n  return adapter.isEqual(a, b);\n};\nexport const getMonthsInYear = (adapter, year) => {\n  const firstMonth = adapter.startOfYear(year);\n  const months = [firstMonth];\n  while (months.length < 12) {\n    const prevMonth = months[months.length - 1];\n    months.push(adapter.addMonths(prevMonth, 1));\n  }\n  return months;\n};\nexport const getTodayDate = (adapter, timezone, valueType) => valueType === 'date' ? adapter.startOfDay(adapter.date(undefined, timezone)) : adapter.date(undefined, timezone);\nexport const formatMeridiem = (adapter, meridiem) => {\n  const date = adapter.setHours(adapter.date(), meridiem === 'am' ? 2 : 14);\n  return adapter.format(date, 'meridiem');\n};\nexport const DATE_VIEWS = ['year', 'month', 'day'];\nexport const isDatePickerView = view => DATE_VIEWS.includes(view);\nexport const resolveDateFormat = (adapter, {\n  format,\n  views\n}, isInToolbar) => {\n  if (format != null) {\n    return format;\n  }\n  const formats = adapter.formats;\n  if (areViewsEqual(views, ['year'])) {\n    return formats.year;\n  }\n  if (areViewsEqual(views, ['month'])) {\n    return formats.month;\n  }\n  if (areViewsEqual(views, ['day'])) {\n    return formats.dayOfMonth;\n  }\n  if (areViewsEqual(views, ['month', 'year'])) {\n    return `${formats.month} ${formats.year}`;\n  }\n  if (areViewsEqual(views, ['day', 'month'])) {\n    return `${formats.month} ${formats.dayOfMonth}`;\n  }\n  if (isInToolbar) {\n    // Little localization hack (Google is doing the same for android native pickers):\n    // For english localization it is convenient to include weekday into the date \"Mon, Jun 1\".\n    // For other locales using strings like \"June 1\", without weekday.\n    return /en/.test(adapter.getCurrentLocaleCode()) ? formats.normalDateWithWeekday : formats.normalDate;\n  }\n  return formats.keyboardDate;\n};\nexport const getWeekdays = (adapter, date) => {\n  const start = adapter.startOfWeek(date);\n  return [0, 1, 2, 3, 4, 5, 6].map(diff => adapter.addDays(start, diff));\n};","import { areViewsEqual } from \"./views.js\";\nexport const EXPORTED_TIME_VIEWS = ['hours', 'minutes', 'seconds'];\nexport const TIME_VIEWS = ['hours', 'minutes', 'seconds', 'meridiem'];\nexport const isTimeView = view => EXPORTED_TIME_VIEWS.includes(view);\nexport const isInternalTimeView = view => TIME_VIEWS.includes(view);\nexport const getMeridiem = (date, adapter) => {\n  if (!date) {\n    return null;\n  }\n  return adapter.getHours(date) >= 12 ? 'pm' : 'am';\n};\nexport const convertValueToMeridiem = (value, meridiem, ampm) => {\n  if (ampm) {\n    const currentMeridiem = value >= 12 ? 'pm' : 'am';\n    if (currentMeridiem !== meridiem) {\n      return meridiem === 'am' ? value - 12 : value + 12;\n    }\n  }\n  return value;\n};\nexport const convertToMeridiem = (time, meridiem, ampm, adapter) => {\n  const newHoursAmount = convertValueToMeridiem(adapter.getHours(time), meridiem, ampm);\n  return adapter.setHours(time, newHoursAmount);\n};\nexport const getSecondsInDay = (date, adapter) => {\n  return adapter.getHours(date) * 3600 + adapter.getMinutes(date) * 60 + adapter.getSeconds(date);\n};\nexport const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation, adapter) => (dateLeft, dateRight) => {\n  if (disableIgnoringDatePartForTimeValidation) {\n    return adapter.isAfter(dateLeft, dateRight);\n  }\n  return getSecondsInDay(dateLeft, adapter) > getSecondsInDay(dateRight, adapter);\n};\nexport const resolveTimeFormat = (adapter, {\n  format,\n  views,\n  ampm\n}) => {\n  if (format != null) {\n    return format;\n  }\n  const formats = adapter.formats;\n  if (areViewsEqual(views, ['hours'])) {\n    return ampm ? `${formats.hours12h} ${formats.meridiem}` : formats.hours24h;\n  }\n  if (areViewsEqual(views, ['minutes'])) {\n    return formats.minutes;\n  }\n  if (areViewsEqual(views, ['seconds'])) {\n    return formats.seconds;\n  }\n  if (areViewsEqual(views, ['minutes', 'seconds'])) {\n    return `${formats.minutes}:${formats.seconds}`;\n  }\n  if (areViewsEqual(views, ['hours', 'minutes', 'seconds'])) {\n    return ampm ? `${formats.hours12h}:${formats.minutes}:${formats.seconds} ${formats.meridiem}` : `${formats.hours24h}:${formats.minutes}:${formats.seconds}`;\n  }\n  return ampm ? `${formats.hours12h}:${formats.minutes} ${formats.meridiem}` : `${formats.hours24h}:${formats.minutes}`;\n};","import { createIsAfterIgnoreDatePart } from \"./time-utils.js\";\nimport { mergeDateAndTime, getTodayDate } from \"./date-utils.js\";\nexport const SECTION_TYPE_GRANULARITY = {\n  year: 1,\n  month: 2,\n  day: 3,\n  hours: 4,\n  minutes: 5,\n  seconds: 6,\n  milliseconds: 7\n};\nexport const getSectionTypeGranularity = sections => Math.max(...sections.map(section => SECTION_TYPE_GRANULARITY[section.type] ?? 1));\nconst roundDate = (adapter, granularity, date) => {\n  if (granularity === SECTION_TYPE_GRANULARITY.year) {\n    return adapter.startOfYear(date);\n  }\n  if (granularity === SECTION_TYPE_GRANULARITY.month) {\n    return adapter.startOfMonth(date);\n  }\n  if (granularity === SECTION_TYPE_GRANULARITY.day) {\n    return adapter.startOfDay(date);\n  }\n\n  // We don't have startOfHour / startOfMinute / startOfSecond\n  let roundedDate = date;\n  if (granularity < SECTION_TYPE_GRANULARITY.minutes) {\n    roundedDate = adapter.setMinutes(roundedDate, 0);\n  }\n  if (granularity < SECTION_TYPE_GRANULARITY.seconds) {\n    roundedDate = adapter.setSeconds(roundedDate, 0);\n  }\n  if (granularity < SECTION_TYPE_GRANULARITY.milliseconds) {\n    roundedDate = adapter.setMilliseconds(roundedDate, 0);\n  }\n  return roundedDate;\n};\nexport const getDefaultReferenceDate = ({\n  props,\n  adapter,\n  granularity,\n  timezone,\n  getTodayDate: inGetTodayDate\n}) => {\n  let referenceDate = inGetTodayDate ? inGetTodayDate() : roundDate(adapter, granularity, getTodayDate(adapter, timezone));\n  if (props.minDate != null && adapter.isAfterDay(props.minDate, referenceDate)) {\n    referenceDate = roundDate(adapter, granularity, props.minDate);\n  }\n  if (props.maxDate != null && adapter.isBeforeDay(props.maxDate, referenceDate)) {\n    referenceDate = roundDate(adapter, granularity, props.maxDate);\n  }\n  const isAfter = createIsAfterIgnoreDatePart(props.disableIgnoringDatePartForTimeValidation ?? false, adapter);\n  if (props.minTime != null && isAfter(props.minTime, referenceDate)) {\n    referenceDate = roundDate(adapter, granularity, props.disableIgnoringDatePartForTimeValidation ? props.minTime : mergeDateAndTime(adapter, referenceDate, props.minTime));\n  }\n  if (props.maxTime != null && isAfter(referenceDate, props.maxTime)) {\n    referenceDate = roundDate(adapter, granularity, props.disableIgnoringDatePartForTimeValidation ? props.maxTime : mergeDateAndTime(adapter, referenceDate, props.maxTime));\n  }\n  return referenceDate;\n};","import { getMonthsInYear } from \"../../utils/date-utils.js\";\nexport const getDateSectionConfigFromFormatToken = (adapter, formatToken) => {\n  const config = adapter.formatTokenMap[formatToken];\n  if (config == null) {\n    throw new Error([`MUI X: The token \"${formatToken}\" is not supported by the Date and Time Pickers.`, 'Please try using another token or open an issue on https://github.com/mui/mui-x/issues/new/choose if you think it should be supported.'].join('\\n'));\n  }\n  if (typeof config === 'string') {\n    return {\n      type: config,\n      contentType: config === 'meridiem' ? 'letter' : 'digit',\n      maxLength: undefined\n    };\n  }\n  return {\n    type: config.sectionType,\n    contentType: config.contentType,\n    maxLength: config.maxLength\n  };\n};\nexport const getDaysInWeekStr = (adapter, format) => {\n  const elements = [];\n  const now = adapter.date(undefined, 'default');\n  const startDate = adapter.startOfWeek(now);\n  const endDate = adapter.endOfWeek(now);\n  let current = startDate;\n  while (adapter.isBefore(current, endDate)) {\n    elements.push(current);\n    current = adapter.addDays(current, 1);\n  }\n  return elements.map(weekDay => adapter.formatByString(weekDay, format));\n};\nexport const getLetterEditingOptions = (adapter, timezone, sectionType, format) => {\n  switch (sectionType) {\n    case 'month':\n      {\n        return getMonthsInYear(adapter, adapter.date(undefined, timezone)).map(month => adapter.formatByString(month, format));\n      }\n    case 'weekDay':\n      {\n        return getDaysInWeekStr(adapter, format);\n      }\n    case 'meridiem':\n      {\n        const now = adapter.date(undefined, timezone);\n        return [adapter.startOfDay(now), adapter.endOfDay(now)].map(date => adapter.formatByString(date, format));\n      }\n    default:\n      {\n        return [];\n      }\n  }\n};\n\n// This format should be the same on all the adapters\n// If some adapter does not respect this convention, then we will need to hardcode the format on each adapter.\nexport const FORMAT_SECONDS_NO_LEADING_ZEROS = 's';\nconst NON_LOCALIZED_DIGITS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\nexport const getLocalizedDigits = adapter => {\n  const today = adapter.date(undefined);\n  const formattedZero = adapter.formatByString(adapter.setSeconds(today, 0), FORMAT_SECONDS_NO_LEADING_ZEROS);\n  if (formattedZero === '0') {\n    return NON_LOCALIZED_DIGITS;\n  }\n  return Array.from({\n    length: 10\n  }).map((_, index) => adapter.formatByString(adapter.setSeconds(today, index), FORMAT_SECONDS_NO_LEADING_ZEROS));\n};\nexport const removeLocalizedDigits = (valueStr, localizedDigits) => {\n  if (localizedDigits[0] === '0') {\n    return valueStr;\n  }\n  const digits = [];\n  let currentFormattedDigit = '';\n  for (let i = 0; i < valueStr.length; i += 1) {\n    currentFormattedDigit += valueStr[i];\n    const matchingDigitIndex = localizedDigits.indexOf(currentFormattedDigit);\n    if (matchingDigitIndex > -1) {\n      digits.push(matchingDigitIndex.toString());\n      currentFormattedDigit = '';\n    }\n  }\n  return digits.join('');\n};\nexport const applyLocalizedDigits = (valueStr, localizedDigits) => {\n  if (localizedDigits[0] === '0') {\n    return valueStr;\n  }\n  return valueStr.split('').map(char => localizedDigits[Number(char)]).join('');\n};\nexport const isStringNumber = (valueStr, localizedDigits) => {\n  const nonLocalizedValueStr = removeLocalizedDigits(valueStr, localizedDigits);\n  // `Number(' ')` returns `0` even if ' ' is not a valid number.\n  return nonLocalizedValueStr !== ' ' && !Number.isNaN(Number(nonLocalizedValueStr));\n};\n\n/**\n * Make sure the value of a digit section have the right amount of leading zeros.\n * E.g.: `03` => `3`\n * Warning: Should only be called with non-localized digits. Call `removeLocalizedDigits` with your value if needed.\n */\nexport const cleanLeadingZeros = (valueStr, size) => {\n  // Remove the leading zeros and then add back as many as needed.\n  return Number(valueStr).toString().padStart(size, '0');\n};\nexport const cleanDigitSectionValue = (adapter, value, sectionBoundaries, localizedDigits, section) => {\n  if (process.env.NODE_ENV !== 'production') {\n    if (section.type !== 'day' && section.contentType === 'digit-with-letter') {\n      throw new Error([`MUI X: The token \"${section.format}\" is a digit format with letter in it.'\n             This type of format is only supported for 'day' sections`].join('\\n'));\n    }\n  }\n  if (section.type === 'day' && section.contentType === 'digit-with-letter') {\n    const date = adapter.setDate(sectionBoundaries.longestMonth, value);\n    return adapter.formatByString(date, section.format);\n  }\n\n  // queryValue without leading `0` (`01` => `1`)\n  let valueStr = value.toString();\n  if (section.hasLeadingZerosInInput) {\n    valueStr = cleanLeadingZeros(valueStr, section.maxLength);\n  }\n  return applyLocalizedDigits(valueStr, localizedDigits);\n};\nexport const getSectionVisibleValue = (section, target, localizedDigits) => {\n  let value = section.value || section.placeholder;\n  const hasLeadingZeros = target === 'non-input' ? section.hasLeadingZerosInFormat : section.hasLeadingZerosInInput;\n  if (target === 'non-input' && section.hasLeadingZerosInInput && !section.hasLeadingZerosInFormat) {\n    value = Number(removeLocalizedDigits(value, localizedDigits)).toString();\n  }\n\n  // In the input, we add an empty character at the end of each section without leading zeros.\n  // This makes sure that `onChange` will always be fired.\n  // Otherwise, when your input value equals `1/dd/yyyy` (format `M/DD/YYYY` on DayJs),\n  // If you press `1`, on the first section, the new value is also `1/dd/yyyy`,\n  // So the browser will not fire the input `onChange`.\n  const shouldAddInvisibleSpace = ['input-rtl', 'input-ltr'].includes(target) && section.contentType === 'digit' && !hasLeadingZeros && value.length === 1;\n  if (shouldAddInvisibleSpace) {\n    value = `${value}\\u200e`;\n  }\n  if (target === 'input-rtl') {\n    value = `\\u2068${value}\\u2069`;\n  }\n  return value;\n};\nexport const changeSectionValueFormat = (adapter, valueStr, currentFormat, newFormat) => {\n  if (process.env.NODE_ENV !== 'production') {\n    if (getDateSectionConfigFromFormatToken(adapter, currentFormat).type === 'weekDay') {\n      throw new Error(\"changeSectionValueFormat doesn't support week day formats\");\n    }\n  }\n  return adapter.formatByString(adapter.parse(valueStr, currentFormat), newFormat);\n};\nconst isFourDigitYearFormat = (adapter, format) => adapter.formatByString(adapter.date(undefined, 'system'), format).length === 4;\nexport const doesSectionFormatHaveLeadingZeros = (adapter, contentType, sectionType, format) => {\n  if (contentType !== 'digit') {\n    return false;\n  }\n  const now = adapter.date(undefined, 'default');\n  switch (sectionType) {\n    // We can't use `changeSectionValueFormat`, because  `adapter.parse('1', 'YYYY')` returns `1971` instead of `1`.\n    case 'year':\n      {\n        // Remove once https://github.com/iamkun/dayjs/pull/2847 is merged and bump dayjs version\n        if (adapter.lib === 'dayjs' && format === 'YY') {\n          return true;\n        }\n        return adapter.formatByString(adapter.setYear(now, 1), format).startsWith('0');\n      }\n    case 'month':\n      {\n        return adapter.formatByString(adapter.startOfYear(now), format).length > 1;\n      }\n    case 'day':\n      {\n        return adapter.formatByString(adapter.startOfMonth(now), format).length > 1;\n      }\n    case 'weekDay':\n      {\n        return adapter.formatByString(adapter.startOfWeek(now), format).length > 1;\n      }\n    case 'hours':\n      {\n        return adapter.formatByString(adapter.setHours(now, 1), format).length > 1;\n      }\n    case 'minutes':\n      {\n        return adapter.formatByString(adapter.setMinutes(now, 1), format).length > 1;\n      }\n    case 'seconds':\n      {\n        return adapter.formatByString(adapter.setSeconds(now, 1), format).length > 1;\n      }\n    default:\n      {\n        throw new Error('Invalid section type');\n      }\n  }\n};\n\n/**\n * Some date libraries like `dayjs` don't support parsing from date with escaped characters.\n * To make sure that the parsing works, we are building a format and a date without any separator.\n */\nexport const getDateFromDateSections = (adapter, sections, localizedDigits) => {\n  // If we have both a day and a weekDay section,\n  // Then we skip the weekDay in the parsing because libraries like dayjs can't parse complicated formats containing a weekDay.\n  // dayjs(dayjs().format('dddd MMMM D YYYY'), 'dddd MMMM D YYYY')) // returns `Invalid Date` even if the format is valid.\n  const shouldSkipWeekDays = sections.some(section => section.type === 'day');\n  const sectionFormats = [];\n  const sectionValues = [];\n  for (let i = 0; i < sections.length; i += 1) {\n    const section = sections[i];\n    const shouldSkip = shouldSkipWeekDays && section.type === 'weekDay';\n    if (!shouldSkip) {\n      sectionFormats.push(section.format);\n      sectionValues.push(getSectionVisibleValue(section, 'non-input', localizedDigits));\n    }\n  }\n  const formatWithoutSeparator = sectionFormats.join(' ');\n  const dateWithoutSeparatorStr = sectionValues.join(' ');\n  return adapter.parse(dateWithoutSeparatorStr, formatWithoutSeparator);\n};\nexport const createDateStrForV7HiddenInputFromSections = sections => sections.map(section => {\n  return `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`;\n}).join('');\nexport const createDateStrForV6InputFromSections = (sections, localizedDigits, isRtl) => {\n  const formattedSections = sections.map(section => {\n    const dateValue = getSectionVisibleValue(section, isRtl ? 'input-rtl' : 'input-ltr', localizedDigits);\n    return `${section.startSeparator}${dateValue}${section.endSeparator}`;\n  });\n  const dateStr = formattedSections.join('');\n  if (!isRtl) {\n    return dateStr;\n  }\n\n  // \\u2066: start left-to-right isolation\n  // \\u2067: start right-to-left isolation\n  // \\u2068: start first strong character isolation\n  // \\u2069: pop isolation\n  // wrap into an isolated group such that separators can split the string in smaller ones by adding \\u2069\\u2068\n  return `\\u2066${dateStr}\\u2069`;\n};\nexport const getSectionsBoundaries = (adapter, localizedDigits, timezone) => {\n  const today = adapter.date(undefined, timezone);\n  const endOfYear = adapter.endOfYear(today);\n  const endOfDay = adapter.endOfDay(today);\n  const {\n    maxDaysInMonth,\n    longestMonth\n  } = getMonthsInYear(adapter, today).reduce((acc, month) => {\n    const daysInMonth = adapter.getDaysInMonth(month);\n    if (daysInMonth > acc.maxDaysInMonth) {\n      return {\n        maxDaysInMonth: daysInMonth,\n        longestMonth: month\n      };\n    }\n    return acc;\n  }, {\n    maxDaysInMonth: 0,\n    longestMonth: null\n  });\n  return {\n    year: ({\n      format\n    }) => ({\n      minimum: 0,\n      maximum: isFourDigitYearFormat(adapter, format) ? 9999 : 99\n    }),\n    month: () => ({\n      minimum: 1,\n      // Assumption: All years have the same amount of months\n      maximum: adapter.getMonth(endOfYear) + 1\n    }),\n    day: ({\n      currentDate\n    }) => ({\n      minimum: 1,\n      maximum: adapter.isValid(currentDate) ? adapter.getDaysInMonth(currentDate) : maxDaysInMonth,\n      longestMonth: longestMonth\n    }),\n    weekDay: ({\n      format,\n      contentType\n    }) => {\n      if (contentType === 'digit') {\n        const daysInWeek = getDaysInWeekStr(adapter, format).map(Number);\n        return {\n          minimum: Math.min(...daysInWeek),\n          maximum: Math.max(...daysInWeek)\n        };\n      }\n      return {\n        minimum: 1,\n        maximum: 7\n      };\n    },\n    hours: ({\n      format\n    }) => {\n      const lastHourInDay = adapter.getHours(endOfDay);\n      const hasMeridiem = removeLocalizedDigits(adapter.formatByString(adapter.endOfDay(today), format), localizedDigits) !== lastHourInDay.toString();\n      if (hasMeridiem) {\n        return {\n          minimum: 1,\n          maximum: Number(removeLocalizedDigits(adapter.formatByString(adapter.startOfDay(today), format), localizedDigits))\n        };\n      }\n      return {\n        minimum: 0,\n        maximum: lastHourInDay\n      };\n    },\n    minutes: () => ({\n      minimum: 0,\n      // Assumption: All years have the same amount of minutes\n      maximum: adapter.getMinutes(endOfDay)\n    }),\n    seconds: () => ({\n      minimum: 0,\n      // Assumption: All years have the same amount of seconds\n      maximum: adapter.getSeconds(endOfDay)\n    }),\n    meridiem: () => ({\n      minimum: 0,\n      maximum: 1\n    }),\n    empty: () => ({\n      minimum: 0,\n      maximum: 0\n    })\n  };\n};\nlet warnedOnceInvalidSection = false;\nexport const validateSections = (sections, valueType) => {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!warnedOnceInvalidSection) {\n      const supportedSections = ['empty'];\n      if (['date', 'date-time'].includes(valueType)) {\n        supportedSections.push('weekDay', 'day', 'month', 'year');\n      }\n      if (['time', 'date-time'].includes(valueType)) {\n        supportedSections.push('hours', 'minutes', 'seconds', 'meridiem');\n      }\n      const invalidSection = sections.find(section => !supportedSections.includes(section.type));\n      if (invalidSection) {\n        console.warn(`MUI X: The field component you are using is not compatible with the \"${invalidSection.type}\" date section.`, `The supported date sections are [\"${supportedSections.join('\", \"')}\"]\\`.`);\n        warnedOnceInvalidSection = true;\n      }\n    }\n  }\n};\nconst transferDateSectionValue = (adapter, section, dateToTransferFrom, dateToTransferTo) => {\n  switch (section.type) {\n    case 'year':\n      {\n        return adapter.setYear(dateToTransferTo, adapter.getYear(dateToTransferFrom));\n      }\n    case 'month':\n      {\n        return adapter.setMonth(dateToTransferTo, adapter.getMonth(dateToTransferFrom));\n      }\n    case 'weekDay':\n      {\n        let dayInWeekStrOfActiveDate = adapter.formatByString(dateToTransferFrom, section.format);\n        if (section.hasLeadingZerosInInput) {\n          dayInWeekStrOfActiveDate = cleanLeadingZeros(dayInWeekStrOfActiveDate, section.maxLength);\n        }\n        const formattedDaysInWeek = getDaysInWeekStr(adapter, section.format);\n        const dayInWeekOfActiveDate = formattedDaysInWeek.indexOf(dayInWeekStrOfActiveDate);\n        const dayInWeekOfNewSectionValue = formattedDaysInWeek.indexOf(section.value);\n        const diff = dayInWeekOfNewSectionValue - dayInWeekOfActiveDate;\n        return adapter.addDays(dateToTransferFrom, diff);\n      }\n    case 'day':\n      {\n        return adapter.setDate(dateToTransferTo, adapter.getDate(dateToTransferFrom));\n      }\n    case 'meridiem':\n      {\n        const isAM = adapter.getHours(dateToTransferFrom) < 12;\n        const mergedDateHours = adapter.getHours(dateToTransferTo);\n        if (isAM && mergedDateHours >= 12) {\n          return adapter.addHours(dateToTransferTo, -12);\n        }\n        if (!isAM && mergedDateHours < 12) {\n          return adapter.addHours(dateToTransferTo, 12);\n        }\n        return dateToTransferTo;\n      }\n    case 'hours':\n      {\n        return adapter.setHours(dateToTransferTo, adapter.getHours(dateToTransferFrom));\n      }\n    case 'minutes':\n      {\n        return adapter.setMinutes(dateToTransferTo, adapter.getMinutes(dateToTransferFrom));\n      }\n    case 'seconds':\n      {\n        return adapter.setSeconds(dateToTransferTo, adapter.getSeconds(dateToTransferFrom));\n      }\n    default:\n      {\n        return dateToTransferTo;\n      }\n  }\n};\nconst reliableSectionModificationOrder = {\n  year: 1,\n  month: 2,\n  day: 3,\n  weekDay: 4,\n  hours: 5,\n  minutes: 6,\n  seconds: 7,\n  meridiem: 8,\n  empty: 9\n};\nexport const mergeDateIntoReferenceDate = (adapter, dateToTransferFrom, sections, referenceDate, shouldLimitToEditedSections) =>\n// cloning sections before sort to avoid mutating it\n[...sections].sort((a, b) => reliableSectionModificationOrder[a.type] - reliableSectionModificationOrder[b.type]).reduce((mergedDate, section) => {\n  if (!shouldLimitToEditedSections || section.modified) {\n    return transferDateSectionValue(adapter, section, dateToTransferFrom, mergedDate);\n  }\n  return mergedDate;\n}, referenceDate);\nexport const isAndroid = () => navigator.userAgent.toLowerCase().includes('android');\n\n// TODO v9: Remove\nexport const getSectionOrder = (sections, shouldApplyRTL) => {\n  const neighbors = {};\n  if (!shouldApplyRTL) {\n    sections.forEach((_, index) => {\n      const leftIndex = index === 0 ? null : index - 1;\n      const rightIndex = index === sections.length - 1 ? null : index + 1;\n      neighbors[index] = {\n        leftIndex,\n        rightIndex\n      };\n    });\n    return {\n      neighbors,\n      startIndex: 0,\n      endIndex: sections.length - 1\n    };\n  }\n  const rtl2ltr = {};\n  const ltr2rtl = {};\n  let groupedSectionsStart = 0;\n  let groupedSectionsEnd = 0;\n  let RTLIndex = sections.length - 1;\n  while (RTLIndex >= 0) {\n    groupedSectionsEnd = sections.findIndex(\n    // eslint-disable-next-line @typescript-eslint/no-loop-func\n    (section, index) => index >= groupedSectionsStart && section.endSeparator?.includes(' ') &&\n    // Special case where the spaces were not there in the initial input\n    section.endSeparator !== ' / ');\n    if (groupedSectionsEnd === -1) {\n      groupedSectionsEnd = sections.length - 1;\n    }\n    for (let i = groupedSectionsEnd; i >= groupedSectionsStart; i -= 1) {\n      ltr2rtl[i] = RTLIndex;\n      rtl2ltr[RTLIndex] = i;\n      RTLIndex -= 1;\n    }\n    groupedSectionsStart = groupedSectionsEnd + 1;\n  }\n  sections.forEach((_, index) => {\n    const rtlIndex = ltr2rtl[index];\n    const leftIndex = rtlIndex === 0 ? null : rtl2ltr[rtlIndex - 1];\n    const rightIndex = rtlIndex === sections.length - 1 ? null : rtl2ltr[rtlIndex + 1];\n    neighbors[index] = {\n      leftIndex,\n      rightIndex\n    };\n  });\n  return {\n    neighbors,\n    startIndex: rtl2ltr[0],\n    endIndex: rtl2ltr[sections.length - 1]\n  };\n};\nexport const parseSelectedSections = (selectedSections, sections) => {\n  if (selectedSections == null) {\n    return null;\n  }\n  if (selectedSections === 'all') {\n    return 'all';\n  }\n  if (typeof selectedSections === 'string') {\n    const index = sections.findIndex(section => section.type === selectedSections);\n    return index === -1 ? null : index;\n  }\n  return selectedSections;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"value\", \"referenceDate\"];\nimport { areDatesEqual, getTodayDate, replaceInvalidDateByNull } from \"./date-utils.js\";\nimport { getDefaultReferenceDate } from \"./getDefaultReferenceDate.js\";\nimport { createDateStrForV7HiddenInputFromSections, createDateStrForV6InputFromSections } from \"../hooks/useField/useField.utils.js\";\nexport const singleItemValueManager = {\n  emptyValue: null,\n  getTodayValue: getTodayDate,\n  getInitialReferenceValue: _ref => {\n    let {\n        value,\n        referenceDate\n      } = _ref,\n      params = _objectWithoutPropertiesLoose(_ref, _excluded);\n    if (params.adapter.isValid(value)) {\n      return value;\n    }\n    if (referenceDate != null) {\n      return referenceDate;\n    }\n    return getDefaultReferenceDate(params);\n  },\n  cleanValue: replaceInvalidDateByNull,\n  areValuesEqual: areDatesEqual,\n  isSameError: (a, b) => a === b,\n  hasError: error => error != null,\n  defaultErrorState: null,\n  getTimezone: (adapter, value) => adapter.isValid(value) ? adapter.getTimezone(value) : null,\n  setTimezone: (adapter, timezone, value) => value == null ? null : adapter.setTimezone(value, timezone)\n};\nexport const singleItemFieldValueManager = {\n  updateReferenceValue: (adapter, value, prevReferenceValue) => adapter.isValid(value) ? value : prevReferenceValue,\n  getSectionsFromValue: (date, getSectionsFromDate) => getSectionsFromDate(date),\n  getV7HiddenInputValueFromSections: createDateStrForV7HiddenInputFromSections,\n  getV6InputValueFromSections: createDateStrForV6InputFromSections,\n  parseValueStr: (valueStr, referenceValue, parseDate) => parseDate(valueStr.trim(), referenceValue),\n  getDateFromSection: value => value,\n  getDateSectionsFromValue: sections => sections,\n  updateDateInValue: (value, activeSection, activeDate) => activeDate,\n  clearDateSections: sections => sections.map(section => _extends({}, section, {\n    value: ''\n  }))\n};","/* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0\n   ---\n   These rules are preventing the performance optimizations below.\n */\n\n/**\n * Compose classes from multiple sources.\n *\n * @example\n * ```tsx\n * const slots = {\n *  root: ['root', 'primary'],\n *  label: ['label'],\n * };\n *\n * const getUtilityClass = (slot) => `MuiButton-${slot}`;\n *\n * const classes = {\n *   root: 'my-root-class',\n * };\n *\n * const output = composeClasses(slots, getUtilityClass, classes);\n * // {\n * //   root: 'MuiButton-root MuiButton-primary my-root-class',\n * //   label: 'MuiButton-label',\n * // }\n * ```\n *\n * @param slots a list of classes for each possible slot\n * @param getUtilityClass a function to resolve the class based on the slot name\n * @param classes the input classes from props\n * @returns the resolved classes for all slots\n */\nexport default function composeClasses(slots, getUtilityClass, classes = undefined) {\n  const output = {};\n  for (const slotName in slots) {\n    const slot = slots[slotName];\n    let buffer = '';\n    let start = true;\n    for (let i = 0; i < slot.length; i += 1) {\n      const value = slot[i];\n      if (value) {\n        buffer += (start === true ? '' : ' ') + getUtilityClass(value);\n        start = false;\n        if (classes && classes[value]) {\n          buffer += ' ' + classes[value];\n        }\n      }\n    }\n    output[slotName] = buffer;\n  }\n  return output;\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n  let generate = defaultGenerator;\n  return {\n    configure(generator) {\n      generate = generator;\n    },\n    generate(componentName) {\n      return generate(componentName);\n    },\n    reset() {\n      generate = defaultGenerator;\n    }\n  };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n  active: 'active',\n  checked: 'checked',\n  completed: 'completed',\n  disabled: 'disabled',\n  error: 'error',\n  expanded: 'expanded',\n  focused: 'focused',\n  focusVisible: 'focusVisible',\n  open: 'open',\n  readOnly: 'readOnly',\n  required: 'required',\n  selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n  const globalStateClass = globalStateClasses[slot];\n  return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n  return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n  const result = {};\n  slots.forEach(slot => {\n    result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n  });\n  return result;\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickersToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersToolbar', slot);\n}\nexport const pickersToolbarClasses = generateUtilityClasses('MuiPickersToolbar', ['root', 'title', 'content']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"localeText\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const PickerAdapterContext = /*#__PURE__*/React.createContext(null);\n\n// TODO v9: Remove this public export\n/**\n * The context that provides the date adapter and default dates to the pickers.\n * @deprecated Use `usePickersAdapter` hook if you need access to the adapter instead.\n */\nif (process.env.NODE_ENV !== \"production\") PickerAdapterContext.displayName = \"PickerAdapterContext\";\nexport const MuiPickersAdapterContext = PickerAdapterContext;\n/**\n * Demos:\n *\n * - [Date format and localization](https://mui.com/x/react-date-pickers/adapters-locale/)\n * - [Calendar systems](https://mui.com/x/react-date-pickers/calendar-systems/)\n * - [Translated components](https://mui.com/x/react-date-pickers/localization/)\n * - [UTC and timezones](https://mui.com/x/react-date-pickers/timezone/)\n *\n * API:\n *\n * - [LocalizationProvider API](https://mui.com/x/api/date-pickers/localization-provider/)\n */\nexport const LocalizationProvider = function LocalizationProvider(inProps) {\n  const {\n      localeText: inLocaleText\n    } = inProps,\n    otherInProps = _objectWithoutPropertiesLoose(inProps, _excluded);\n  const {\n    adapter: parentAdapter,\n    localeText: parentLocaleText\n  } = React.useContext(PickerAdapterContext) ?? {\n    utils: undefined,\n    adapter: undefined,\n    localeText: undefined\n  };\n  const props = useThemeProps({\n    // We don't want to pass the `localeText` prop to the theme, that way it will always return the theme value,\n    // We will then merge this theme value with our value manually\n    props: otherInProps,\n    name: 'MuiLocalizationProvider'\n  });\n  const {\n    children,\n    dateAdapter: DateAdapter,\n    dateFormats,\n    dateLibInstance,\n    adapterLocale,\n    localeText: themeLocaleText\n  } = props;\n  const localeText = React.useMemo(() => _extends({}, themeLocaleText, parentLocaleText, inLocaleText), [themeLocaleText, parentLocaleText, inLocaleText]);\n  const adapter = React.useMemo(() => {\n    if (!DateAdapter) {\n      if (parentAdapter) {\n        return parentAdapter;\n      }\n      return null;\n    }\n    const dateAdapter = new DateAdapter({\n      locale: adapterLocale,\n      formats: dateFormats,\n      instance: dateLibInstance\n    });\n    if (!dateAdapter.isMUIAdapter) {\n      throw new Error(['MUI X: The date adapter should be imported from `@mui/x-date-pickers` or `@mui/x-date-pickers-pro`, not from `@date-io`', \"For example, `import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'` instead of `import AdapterDayjs from '@date-io/dayjs'`\", 'More information on the installation documentation: https://mui.com/x/react-date-pickers/quickstart/#installation'].join(`\\n`));\n    }\n    return dateAdapter;\n  }, [DateAdapter, adapterLocale, dateFormats, dateLibInstance, parentAdapter]);\n  const defaultDates = React.useMemo(() => {\n    if (!adapter) {\n      return null;\n    }\n    return {\n      minDate: adapter.date('1900-01-01T00:00:00.000'),\n      maxDate: adapter.date('2099-12-31T00:00:00.000')\n    };\n  }, [adapter]);\n  const contextValue = React.useMemo(() => {\n    return {\n      utils: adapter,\n      adapter,\n      defaultDates,\n      localeText\n    };\n  }, [defaultDates, adapter, localeText]);\n  return /*#__PURE__*/_jsx(PickerAdapterContext.Provider, {\n    value: contextValue,\n    children: children\n  });\n};\nif (process.env.NODE_ENV !== \"production\") LocalizationProvider.displayName = \"LocalizationProvider\";\nprocess.env.NODE_ENV !== \"production\" ? LocalizationProvider.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Locale for the date library you are using\n   */\n  adapterLocale: PropTypes.any,\n  children: PropTypes.node,\n  /**\n   * Date library adapter class function.\n   * @see See the localization provider {@link https://mui.com/x/react-date-pickers/quickstart/#integrate-provider-and-adapter date adapter setup section} for more details.\n   */\n  dateAdapter: PropTypes.func,\n  /**\n   * Formats that are used for any child pickers\n   */\n  dateFormats: PropTypes.shape({\n    dayOfMonth: PropTypes.string,\n    dayOfMonthFull: PropTypes.string,\n    fullDate: PropTypes.string,\n    fullTime12h: PropTypes.string,\n    fullTime24h: PropTypes.string,\n    hours12h: PropTypes.string,\n    hours24h: PropTypes.string,\n    keyboardDate: PropTypes.string,\n    keyboardDateTime12h: PropTypes.string,\n    keyboardDateTime24h: PropTypes.string,\n    meridiem: PropTypes.string,\n    minutes: PropTypes.string,\n    month: PropTypes.string,\n    monthShort: PropTypes.string,\n    normalDate: PropTypes.string,\n    normalDateWithWeekday: PropTypes.string,\n    seconds: PropTypes.string,\n    shortDate: PropTypes.string,\n    weekday: PropTypes.string,\n    weekdayShort: PropTypes.string,\n    year: PropTypes.string\n  }),\n  /**\n   * Date library instance you are using, if it has some global overrides\n   * ```jsx\n   * dateLibInstance={momentTimeZone}\n   * ```\n   */\n  dateLibInstance: PropTypes.any,\n  /**\n   * Locale for components texts\n   */\n  localeText: PropTypes.object\n} : void 0;","'use client';\n\nimport * as React from 'react';\nexport const IsValidValueContext = /*#__PURE__*/React.createContext(() => true);\n\n/**\n * Returns a function to check if a value is valid according to the validation props passed to the parent Picker.\n */\nif (process.env.NODE_ENV !== \"production\") IsValidValueContext.displayName = \"IsValidValueContext\";\nexport function useIsValidValue() {\n  return React.useContext(IsValidValueContext);\n}","'use client';\n\nimport * as React from 'react';\nexport const PickerFieldPrivateContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") PickerFieldPrivateContext.displayName = \"PickerFieldPrivateContext\";\nexport function useNullableFieldPrivateContext() {\n  return React.useContext(PickerFieldPrivateContext);\n}","'use client';\n\nimport * as React from 'react';\nexport const PickerContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the context passed by the Picker wrapping the current component.\n */\nif (process.env.NODE_ENV !== \"production\") PickerContext.displayName = \"PickerContext\";\nexport const usePickerContext = () => {\n  const value = React.useContext(PickerContext);\n  if (value == null) {\n    throw new Error('MUI X: The `usePickerContext` hook can only be called inside the context of a Picker component');\n  }\n  return value;\n};","'use client';\n\nimport * as React from 'react';\nimport { LocalizationProvider } from \"../../LocalizationProvider/index.js\";\nimport { IsValidValueContext } from \"../../hooks/useIsValidValue.js\";\nimport { PickerFieldPrivateContext } from \"../hooks/useNullableFieldPrivateContext.js\";\nimport { PickerContext } from \"../../hooks/usePickerContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const PickerActionsContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") PickerActionsContext.displayName = \"PickerActionsContext\";\nexport const PickerPrivateContext = /*#__PURE__*/React.createContext({\n  ownerState: {\n    isPickerDisabled: false,\n    isPickerReadOnly: false,\n    isPickerValueEmpty: false,\n    isPickerOpen: false,\n    pickerVariant: 'desktop',\n    pickerOrientation: 'portrait'\n  },\n  rootRefObject: {\n    current: null\n  },\n  labelId: undefined,\n  dismissViews: () => {},\n  hasUIView: true,\n  getCurrentViewMode: () => 'UI',\n  triggerElement: null,\n  viewContainerRole: null,\n  defaultActionBarActions: [],\n  onPopperExited: undefined\n});\n\n/**\n * Provides the context for the various parts of a Picker component:\n * - contextValue: the context for the Picker sub-components.\n * - localizationProvider: the translations passed through the props and through a parent LocalizationProvider.\n *\n * @ignore - do not document.\n */\nif (process.env.NODE_ENV !== \"production\") PickerPrivateContext.displayName = \"PickerPrivateContext\";\nexport function PickerProvider(props) {\n  const {\n    contextValue,\n    actionsContextValue,\n    privateContextValue,\n    fieldPrivateContextValue,\n    isValidContextValue,\n    localeText,\n    children\n  } = props;\n  return /*#__PURE__*/_jsx(PickerContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(PickerActionsContext.Provider, {\n      value: actionsContextValue,\n      children: /*#__PURE__*/_jsx(PickerPrivateContext.Provider, {\n        value: privateContextValue,\n        children: /*#__PURE__*/_jsx(PickerFieldPrivateContext.Provider, {\n          value: fieldPrivateContextValue,\n          children: /*#__PURE__*/_jsx(IsValidValueContext.Provider, {\n            value: isValidContextValue,\n            children: /*#__PURE__*/_jsx(LocalizationProvider, {\n              localeText: localeText,\n              children: children\n            })\n          })\n        })\n      })\n    })\n  });\n}","'use client';\n\nimport * as React from 'react';\nimport { PickerPrivateContext } from \"../components/PickerProvider.js\";\n\n/**\n * Returns the private context passed by the Picker wrapping the current component.\n */\nexport const usePickerPrivateContext = () => React.useContext(PickerPrivateContext);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { usePickerPrivateContext } from \"./usePickerPrivateContext.js\";\nexport function useToolbarOwnerState() {\n  const {\n    ownerState: pickerOwnerState\n  } = usePickerPrivateContext();\n  const isRtl = useRtl();\n  return React.useMemo(() => _extends({}, pickerOwnerState, {\n    toolbarDirection: isRtl ? 'rtl' : 'ltr'\n  }), [pickerOwnerState, isRtl]);\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"classes\", \"toolbarTitle\", \"hidden\", \"titleId\", \"classes\", \"landscapeDirection\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { shouldForwardProp } from '@mui/system/createStyled';\nimport { getPickersToolbarUtilityClass } from \"./pickersToolbarClasses.js\";\nimport { useToolbarOwnerState } from \"../hooks/useToolbarOwnerState.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    title: ['title'],\n    content: ['content']\n  };\n  return composeClasses(slots, getPickersToolbarUtilityClass, classes);\n};\nconst PickersToolbarRoot = styled('div', {\n  name: 'MuiPickersToolbar',\n  slot: 'Root'\n})(({\n  theme\n}) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  alignItems: 'flex-start',\n  justifyContent: 'space-between',\n  padding: theme.spacing(2, 3),\n  variants: [{\n    props: {\n      pickerOrientation: 'landscape'\n    },\n    style: {\n      height: 'auto',\n      maxWidth: 160,\n      padding: 16,\n      justifyContent: 'flex-start',\n      flexWrap: 'wrap'\n    }\n  }]\n}));\nconst PickersToolbarContent = styled('div', {\n  name: 'MuiPickersToolbar',\n  slot: 'Content',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'landscapeDirection'\n})({\n  display: 'flex',\n  flexWrap: 'wrap',\n  width: '100%',\n  flex: 1,\n  justifyContent: 'space-between',\n  alignItems: 'center',\n  flexDirection: 'row',\n  variants: [{\n    props: {\n      pickerOrientation: 'landscape'\n    },\n    style: {\n      justifyContent: 'flex-start',\n      alignItems: 'flex-start',\n      flexDirection: 'column'\n    }\n  }, {\n    props: {\n      pickerOrientation: 'landscape',\n      landscapeDirection: 'row'\n    },\n    style: {\n      flexDirection: 'row'\n    }\n  }]\n});\nexport const PickersToolbar = /*#__PURE__*/React.forwardRef(function PickersToolbar(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersToolbar'\n  });\n  const {\n      children,\n      className,\n      classes: classesProp,\n      toolbarTitle,\n      hidden,\n      titleId,\n      landscapeDirection\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = useToolbarOwnerState();\n  const classes = useUtilityClasses(classesProp);\n  if (hidden) {\n    return null;\n  }\n  return /*#__PURE__*/_jsxs(PickersToolbarRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other, {\n    children: [/*#__PURE__*/_jsx(Typography, {\n      color: \"text.secondary\",\n      variant: \"overline\",\n      id: titleId,\n      className: classes.title,\n      children: toolbarTitle\n    }), /*#__PURE__*/_jsx(PickersToolbarContent, {\n      className: classes.content,\n      ownerState: ownerState,\n      landscapeDirection: landscapeDirection,\n      children: children\n    })]\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersToolbar.displayName = \"PickersToolbar\";","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const getPickersLocalization = pickersTranslations => {\n  return {\n    components: {\n      MuiLocalizationProvider: {\n        defaultProps: {\n          localeText: _extends({}, pickersTranslations)\n        }\n      }\n    }\n  };\n};","import { getPickersLocalization } from \"./utils/getPickersLocalization.js\";\n\n// This object is not Partial<PickersLocaleText> because it is the default values\n\nconst enUSPickers = {\n  // Calendar navigation\n  previousMonth: 'Previous month',\n  nextMonth: 'Next month',\n  // View navigation\n  openPreviousView: 'Open previous view',\n  openNextView: 'Open next view',\n  calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'year view is open, switch to calendar view' : 'calendar view is open, switch to year view',\n  // DateRange labels\n  start: 'Start',\n  end: 'End',\n  startDate: 'Start date',\n  startTime: 'Start time',\n  endDate: 'End date',\n  endTime: 'End time',\n  // Action bar\n  cancelButtonLabel: 'Cancel',\n  clearButtonLabel: 'Clear',\n  okButtonLabel: 'OK',\n  todayButtonLabel: 'Today',\n  nextStepButtonLabel: 'Next',\n  // Toolbar titles\n  datePickerToolbarTitle: 'Select date',\n  dateTimePickerToolbarTitle: 'Select date & time',\n  timePickerToolbarTitle: 'Select time',\n  dateRangePickerToolbarTitle: 'Select date range',\n  timeRangePickerToolbarTitle: 'Select time range',\n  // Clock labels\n  clockLabelText: (view, formattedTime) => `Select ${view}. ${!formattedTime ? 'No time selected' : `Selected time is ${formattedTime}`}`,\n  hoursClockNumberText: hours => `${hours} hours`,\n  minutesClockNumberText: minutes => `${minutes} minutes`,\n  secondsClockNumberText: seconds => `${seconds} seconds`,\n  // Digital clock labels\n  selectViewText: view => `Select ${view}`,\n  // Calendar labels\n  calendarWeekNumberHeaderLabel: 'Week number',\n  calendarWeekNumberHeaderText: '#',\n  calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,\n  calendarWeekNumberText: weekNumber => `${weekNumber}`,\n  // Open Picker labels\n  openDatePickerDialogue: formattedDate => formattedDate ? `Choose date, selected date is ${formattedDate}` : 'Choose date',\n  openTimePickerDialogue: formattedTime => formattedTime ? `Choose time, selected time is ${formattedTime}` : 'Choose time',\n  openRangePickerDialogue: formattedRange => formattedRange ? `Choose range, selected range is ${formattedRange}` : 'Choose range',\n  fieldClearLabel: 'Clear',\n  // Table labels\n  timeTableLabel: 'pick time',\n  dateTableLabel: 'pick date',\n  // Field section placeholders\n  fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),\n  fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',\n  fieldDayPlaceholder: () => 'DD',\n  fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',\n  fieldHoursPlaceholder: () => 'hh',\n  fieldMinutesPlaceholder: () => 'mm',\n  fieldSecondsPlaceholder: () => 'ss',\n  fieldMeridiemPlaceholder: () => 'aa',\n  // View names\n  year: 'Year',\n  month: 'Month',\n  day: 'Day',\n  weekDay: 'Week day',\n  hours: 'Hours',\n  minutes: 'Minutes',\n  seconds: 'Seconds',\n  meridiem: 'Meridiem',\n  // Common\n  empty: 'Empty'\n};\nexport const DEFAULT_LOCALE = enUSPickers;\nexport const enUS = getPickersLocalization(enUSPickers);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { DEFAULT_LOCALE } from \"../locales/enUS.js\";\nimport { PickerAdapterContext } from \"../LocalizationProvider/LocalizationProvider.js\";\nexport const useLocalizationContext = () => {\n  const localization = React.useContext(PickerAdapterContext);\n  if (localization === null) {\n    throw new Error(['MUI X: Can not find the date and time pickers localization context.', 'It looks like you forgot to wrap your component in LocalizationProvider.', 'This can also happen if you are bundling multiple versions of the `@mui/x-date-pickers` package'].join('\\n'));\n  }\n  if (localization.adapter === null) {\n    throw new Error(['MUI X: Can not find the date and time pickers adapter from its localization context.', 'It looks like you forgot to pass a `dateAdapter` to your LocalizationProvider.'].join('\\n'));\n  }\n  const localeText = React.useMemo(() => _extends({}, DEFAULT_LOCALE, localization.localeText), [localization.localeText]);\n  return React.useMemo(() => _extends({}, localization, {\n    localeText\n  }), [localization, localeText]);\n};\nexport const usePickerAdapter = () => useLocalizationContext().adapter;","'use client';\n\nimport { useLocalizationContext } from \"./usePickerAdapter.js\";\nexport const usePickerTranslations = () => useLocalizationContext().localeText;","export const DATE_VALIDATION_PROP_NAMES = ['disablePast', 'disableFuture', 'minDate', 'maxDate', 'shouldDisableDate', 'shouldDisableMonth', 'shouldDisableYear'];\nexport const TIME_VALIDATION_PROP_NAMES = ['disablePast', 'disableFuture', 'minTime', 'maxTime', 'shouldDisableTime', 'minutesStep', 'ampm', 'disableIgnoringDatePartForTimeValidation'];\nexport const DATE_TIME_VALIDATION_PROP_NAMES = ['minDateTime', 'maxDateTime'];\nconst VALIDATION_PROP_NAMES = [...DATE_VALIDATION_PROP_NAMES, ...TIME_VALIDATION_PROP_NAMES, ...DATE_TIME_VALIDATION_PROP_NAMES];\n/**\n * Extract the validation props for the props received by a component.\n * Limit the risk of forgetting some of them and reduce the bundle size.\n */\nexport const extractValidationProps = props => VALIDATION_PROP_NAMES.reduce((extractedProps, propName) => {\n  if (props.hasOwnProperty(propName)) {\n    extractedProps[propName] = props[propName];\n  }\n  return extractedProps;\n}, {});","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { DATE_TIME_VALIDATION_PROP_NAMES, DATE_VALIDATION_PROP_NAMES, TIME_VALIDATION_PROP_NAMES } from \"../validation/extractValidationProps.js\";\nconst SHARED_FIELD_INTERNAL_PROP_NAMES = ['value', 'defaultValue', 'referenceDate', 'format', 'formatDensity', 'onChange', 'timezone', 'onError', 'shouldRespectLeadingZeros', 'selectedSections', 'onSelectedSectionsChange', 'unstableFieldRef', 'unstableStartFieldRef', 'unstableEndFieldRef', 'enableAccessibleFieldDOMStructure', 'disabled', 'readOnly', 'dateSeparator', 'autoFocus', 'focused'];\n/**\n * Split the props received by the field component into:\n * - `internalProps` which are used by the various hooks called by the field component.\n * - `forwardedProps` which are passed to the underlying component.\n * Note that some forwarded props might be used by the hooks as well.\n * For instance, hooks like `useDateField` need props like `onKeyDown` to merge the default event handler and the one provided by the application.\n * @template TProps, TValueType\n * @param {TProps} props The props received by the field component.\n * @param {TValueType} valueType The type of the field value ('date', 'time', or 'date-time').\n */\nexport const useSplitFieldProps = (props, valueType) => {\n  return React.useMemo(() => {\n    const forwardedProps = _extends({}, props);\n    const internalProps = {};\n    const extractProp = propName => {\n      if (forwardedProps.hasOwnProperty(propName)) {\n        // @ts-ignore\n        internalProps[propName] = forwardedProps[propName];\n        delete forwardedProps[propName];\n      }\n    };\n    SHARED_FIELD_INTERNAL_PROP_NAMES.forEach(extractProp);\n    if (valueType === 'date') {\n      DATE_VALIDATION_PROP_NAMES.forEach(extractProp);\n    } else if (valueType === 'time') {\n      TIME_VALIDATION_PROP_NAMES.forEach(extractProp);\n    } else if (valueType === 'date-time') {\n      DATE_VALIDATION_PROP_NAMES.forEach(extractProp);\n      TIME_VALIDATION_PROP_NAMES.forEach(extractProp);\n      DATE_TIME_VALIDATION_PROP_NAMES.forEach(extractProp);\n    }\n    return {\n      forwardedProps,\n      internalProps\n    };\n  }, [props, valueType]);\n};\n\n/**\n * Extract the internal props from the props received by the field component.\n * This makes sure that the internal props not defined in the props are not present in the result.\n */","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { applyLocalizedDigits, cleanLeadingZeros, doesSectionFormatHaveLeadingZeros, getDateSectionConfigFromFormatToken, removeLocalizedDigits } from \"./useField.utils.js\";\nconst expandFormat = ({\n  adapter,\n  format\n}) => {\n  // Expand the provided format\n  let formatExpansionOverflow = 10;\n  let prevFormat = format;\n  let nextFormat = adapter.expandFormat(format);\n  while (nextFormat !== prevFormat) {\n    prevFormat = nextFormat;\n    nextFormat = adapter.expandFormat(prevFormat);\n    formatExpansionOverflow -= 1;\n    if (formatExpansionOverflow < 0) {\n      throw new Error('MUI X: The format expansion seems to be in an infinite loop. Please open an issue with the format passed to the component.');\n    }\n  }\n  return nextFormat;\n};\nconst getEscapedPartsFromFormat = ({\n  adapter,\n  expandedFormat\n}) => {\n  const escapedParts = [];\n  const {\n    start: startChar,\n    end: endChar\n  } = adapter.escapedCharacters;\n  const regExp = new RegExp(`(\\\\${startChar}[^\\\\${endChar}]*\\\\${endChar})+`, 'g');\n  let match = null;\n  // eslint-disable-next-line no-cond-assign\n  while (match = regExp.exec(expandedFormat)) {\n    escapedParts.push({\n      start: match.index,\n      end: regExp.lastIndex - 1\n    });\n  }\n  return escapedParts;\n};\nconst getSectionPlaceholder = (adapter, localeText, sectionConfig, sectionFormat) => {\n  switch (sectionConfig.type) {\n    case 'year':\n      {\n        return localeText.fieldYearPlaceholder({\n          digitAmount: adapter.formatByString(adapter.date(undefined, 'default'), sectionFormat).length,\n          format: sectionFormat\n        });\n      }\n    case 'month':\n      {\n        return localeText.fieldMonthPlaceholder({\n          contentType: sectionConfig.contentType,\n          format: sectionFormat\n        });\n      }\n    case 'day':\n      {\n        return localeText.fieldDayPlaceholder({\n          format: sectionFormat\n        });\n      }\n    case 'weekDay':\n      {\n        return localeText.fieldWeekDayPlaceholder({\n          contentType: sectionConfig.contentType,\n          format: sectionFormat\n        });\n      }\n    case 'hours':\n      {\n        return localeText.fieldHoursPlaceholder({\n          format: sectionFormat\n        });\n      }\n    case 'minutes':\n      {\n        return localeText.fieldMinutesPlaceholder({\n          format: sectionFormat\n        });\n      }\n    case 'seconds':\n      {\n        return localeText.fieldSecondsPlaceholder({\n          format: sectionFormat\n        });\n      }\n    case 'meridiem':\n      {\n        return localeText.fieldMeridiemPlaceholder({\n          format: sectionFormat\n        });\n      }\n    default:\n      {\n        return sectionFormat;\n      }\n  }\n};\nconst createSection = ({\n  adapter,\n  date,\n  shouldRespectLeadingZeros,\n  localeText,\n  localizedDigits,\n  now,\n  token,\n  startSeparator\n}) => {\n  if (token === '') {\n    throw new Error('MUI X: Should not call `commitToken` with an empty token');\n  }\n  const sectionConfig = getDateSectionConfigFromFormatToken(adapter, token);\n  const hasLeadingZerosInFormat = doesSectionFormatHaveLeadingZeros(adapter, sectionConfig.contentType, sectionConfig.type, token);\n  const hasLeadingZerosInInput = shouldRespectLeadingZeros ? hasLeadingZerosInFormat : sectionConfig.contentType === 'digit';\n  const isValidDate = adapter.isValid(date);\n  let sectionValue = isValidDate ? adapter.formatByString(date, token) : '';\n  let maxLength = null;\n  if (hasLeadingZerosInInput) {\n    if (hasLeadingZerosInFormat) {\n      maxLength = sectionValue === '' ? adapter.formatByString(now, token).length : sectionValue.length;\n    } else {\n      if (sectionConfig.maxLength == null) {\n        throw new Error(`MUI X: The token ${token} should have a 'maxLength' property on it's adapter`);\n      }\n      maxLength = sectionConfig.maxLength;\n      if (isValidDate) {\n        sectionValue = applyLocalizedDigits(cleanLeadingZeros(removeLocalizedDigits(sectionValue, localizedDigits), maxLength), localizedDigits);\n      }\n    }\n  }\n  return _extends({}, sectionConfig, {\n    format: token,\n    maxLength,\n    value: sectionValue,\n    placeholder: getSectionPlaceholder(adapter, localeText, sectionConfig, token),\n    hasLeadingZerosInFormat,\n    hasLeadingZerosInInput,\n    startSeparator,\n    endSeparator: '',\n    modified: false\n  });\n};\nconst buildSections = parameters => {\n  const {\n    adapter,\n    expandedFormat,\n    escapedParts\n  } = parameters;\n  const now = adapter.date(undefined);\n  const sections = [];\n  let startSeparator = '';\n\n  // This RegExp tests if the beginning of a string corresponds to a supported token\n  const validTokens = Object.keys(adapter.formatTokenMap).sort((a, b) => b.length - a.length); // Sort to put longest word first\n\n  const regExpFirstWordInFormat = /^([a-zA-Z]+)/;\n  const regExpWordOnlyComposedOfTokens = new RegExp(`^(${validTokens.join('|')})*$`);\n  const regExpFirstTokenInWord = new RegExp(`^(${validTokens.join('|')})`);\n  const getEscapedPartOfCurrentChar = i => escapedParts.find(escapeIndex => escapeIndex.start <= i && escapeIndex.end >= i);\n  let i = 0;\n  while (i < expandedFormat.length) {\n    const escapedPartOfCurrentChar = getEscapedPartOfCurrentChar(i);\n    const isEscapedChar = escapedPartOfCurrentChar != null;\n    const firstWordInFormat = regExpFirstWordInFormat.exec(expandedFormat.slice(i))?.[1];\n\n    // The first word in the format is only composed of tokens.\n    // We extract those tokens to create a new sections.\n    if (!isEscapedChar && firstWordInFormat != null && regExpWordOnlyComposedOfTokens.test(firstWordInFormat)) {\n      let word = firstWordInFormat;\n      while (word.length > 0) {\n        const firstWord = regExpFirstTokenInWord.exec(word)[1];\n        word = word.slice(firstWord.length);\n        sections.push(createSection(_extends({}, parameters, {\n          now,\n          token: firstWord,\n          startSeparator\n        })));\n        startSeparator = '';\n      }\n      i += firstWordInFormat.length;\n    }\n    // The remaining format does not start with a token,\n    // We take the first character and add it to the current section's end separator.\n    else {\n      const char = expandedFormat[i];\n\n      // If we are on the opening or closing character of an escaped part of the format,\n      // Then we ignore this character.\n      const isEscapeBoundary = isEscapedChar && escapedPartOfCurrentChar?.start === i || escapedPartOfCurrentChar?.end === i;\n      if (!isEscapeBoundary) {\n        if (sections.length === 0) {\n          startSeparator += char;\n        } else {\n          sections[sections.length - 1].endSeparator += char;\n          sections[sections.length - 1].isEndFormatSeparator = true;\n        }\n      }\n      i += 1;\n    }\n  }\n  if (sections.length === 0 && startSeparator.length > 0) {\n    sections.push({\n      type: 'empty',\n      contentType: 'letter',\n      maxLength: null,\n      format: '',\n      value: '',\n      placeholder: '',\n      hasLeadingZerosInFormat: false,\n      hasLeadingZerosInInput: false,\n      startSeparator,\n      endSeparator: '',\n      modified: false\n    });\n  }\n  return sections;\n};\nconst postProcessSections = ({\n  isRtl,\n  formatDensity,\n  sections\n}) => {\n  return sections.map(section => {\n    const cleanSeparator = separator => {\n      let cleanedSeparator = separator;\n      if (isRtl && cleanedSeparator !== null && cleanedSeparator.includes(' ')) {\n        cleanedSeparator = `\\u2069${cleanedSeparator}\\u2066`;\n      }\n      if (formatDensity === 'spacious' && ['/', '.', '-'].includes(cleanedSeparator)) {\n        cleanedSeparator = ` ${cleanedSeparator} `;\n      }\n      return cleanedSeparator;\n    };\n    section.startSeparator = cleanSeparator(section.startSeparator);\n    section.endSeparator = cleanSeparator(section.endSeparator);\n    return section;\n  });\n};\nexport const buildSectionsFromFormat = parameters => {\n  let expandedFormat = expandFormat(parameters);\n  if (parameters.isRtl && parameters.enableAccessibleFieldDOMStructure) {\n    expandedFormat = expandedFormat.split(' ').reverse().join(' ');\n  }\n  const escapedParts = getEscapedPartsFromFormat(_extends({}, parameters, {\n    expandedFormat\n  }));\n  const sections = buildSections(_extends({}, parameters, {\n    expandedFormat,\n    escapedParts\n  }));\n  return postProcessSections(_extends({}, parameters, {\n    sections\n  }));\n};","'use client';\n\nimport * as React from 'react';\nimport { PickerContext } from \"../../hooks/usePickerContext.js\";\n\n/**\n * Returns the context passed by the Picker wrapping the current component.\n * If the context is not found, returns `null`.\n */\nexport const useNullablePickerContext = () => React.useContext(PickerContext);","'use client';\n\nimport * as React from 'react';\nimport { PickerActionsContext } from \"../internals/components/PickerProvider.js\";\n/**\n * Returns a subset of the context passed by the Picker wrapping the current component.\n * It only contains the actions and never causes a re-render of the component using it.\n */\nexport const usePickerActionsContext = () => {\n  const value = React.useContext(PickerActionsContext);\n  if (value == null) {\n    throw new Error(['MUI X: The `usePickerActionsContext` can only be called in fields that are used as a slot of a Picker component'].join('\\n'));\n  }\n  return value;\n};","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getDatePickerToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiDatePickerToolbar', slot);\n}\nexport const datePickerToolbarClasses = generateUtilityClasses('MuiDatePickerToolbar', ['root', 'title']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"toolbarFormat\", \"toolbarPlaceholder\", \"className\", \"classes\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport Typography from '@mui/material/Typography';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { PickersToolbar } from \"../internals/components/PickersToolbar.js\";\nimport { usePickerAdapter, usePickerContext, usePickerTranslations } from \"../hooks/index.js\";\nimport { getDatePickerToolbarUtilityClass } from \"./datePickerToolbarClasses.js\";\nimport { resolveDateFormat } from \"../internals/utils/date-utils.js\";\nimport { useToolbarOwnerState } from \"../internals/hooks/useToolbarOwnerState.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    title: ['title']\n  };\n  return composeClasses(slots, getDatePickerToolbarUtilityClass, classes);\n};\nconst DatePickerToolbarRoot = styled(PickersToolbar, {\n  name: 'MuiDatePickerToolbar',\n  slot: 'Root'\n})({});\nconst DatePickerToolbarTitle = styled(Typography, {\n  name: 'MuiDatePickerToolbar',\n  slot: 'Title'\n})({\n  variants: [{\n    props: {\n      pickerOrientation: 'landscape'\n    },\n    style: {\n      margin: 'auto 16px auto auto'\n    }\n  }]\n});\n/**\n * Demos:\n *\n * - [DatePicker](https://mui.com/x/react-date-pickers/date-picker/)\n * - [Custom components](https://mui.com/x/react-date-pickers/custom-components/)\n *\n * API:\n *\n * - [DatePickerToolbar API](https://mui.com/x/api/date-pickers/date-picker-toolbar/)\n */\nexport const DatePickerToolbar = /*#__PURE__*/React.forwardRef(function DatePickerToolbar(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDatePickerToolbar'\n  });\n  const {\n      toolbarFormat,\n      toolbarPlaceholder = '––',\n      className,\n      classes: classesProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const adapter = usePickerAdapter();\n  const {\n    value,\n    views,\n    orientation\n  } = usePickerContext();\n  const translations = usePickerTranslations();\n  const ownerState = useToolbarOwnerState();\n  const classes = useUtilityClasses(classesProp);\n  const dateText = React.useMemo(() => {\n    if (!adapter.isValid(value)) {\n      return toolbarPlaceholder;\n    }\n    const formatFromViews = resolveDateFormat(adapter, {\n      format: toolbarFormat,\n      views\n    }, true);\n    return adapter.formatByString(value, formatFromViews);\n  }, [value, toolbarFormat, toolbarPlaceholder, adapter, views]);\n  return /*#__PURE__*/_jsx(DatePickerToolbarRoot, _extends({\n    ref: ref,\n    toolbarTitle: translations.datePickerToolbarTitle,\n    className: clsx(classes.root, className)\n  }, other, {\n    children: /*#__PURE__*/_jsx(DatePickerToolbarTitle, {\n      variant: \"h4\",\n      align: orientation === 'landscape' ? 'left' : 'center',\n      ownerState: ownerState,\n      className: classes.title,\n      children: dateText\n    })\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") DatePickerToolbar.displayName = \"DatePickerToolbar\";\nprocess.env.NODE_ENV !== \"production\" ? DatePickerToolbar.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * If `true`, show the toolbar even in desktop mode.\n   * @default `true` for Desktop, `false` for Mobile.\n   */\n  hidden: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  titleId: PropTypes.string,\n  /**\n   * Toolbar date format.\n   */\n  toolbarFormat: PropTypes.string,\n  /**\n   * Toolbar value placeholder—it is displayed when the value is empty.\n   * @default \"––\"\n   */\n  toolbarPlaceholder: PropTypes.node\n} : void 0;","import { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\n\n/**\n * Validation props used by the Date Picker, Date Field and Date Calendar components.\n */\n\n/**\n * Validation props as received by the validateDate method.\n */\n\n/**\n * Name of the props that should be defaulted before being passed to the validateDate method.\n */\n\nexport const validateDate = ({\n  props,\n  value,\n  timezone,\n  adapter\n}) => {\n  if (value === null) {\n    return null;\n  }\n  const {\n    shouldDisableDate,\n    shouldDisableMonth,\n    shouldDisableYear,\n    disablePast,\n    disableFuture,\n    minDate,\n    maxDate\n  } = props;\n  const now = adapter.date(undefined, timezone);\n  switch (true) {\n    case !adapter.isValid(value):\n      return 'invalidDate';\n    case Boolean(shouldDisableDate && shouldDisableDate(value)):\n      return 'shouldDisableDate';\n    case Boolean(shouldDisableMonth && shouldDisableMonth(value)):\n      return 'shouldDisableMonth';\n    case Boolean(shouldDisableYear && shouldDisableYear(value)):\n      return 'shouldDisableYear';\n    case Boolean(disableFuture && adapter.isAfterDay(value, now)):\n      return 'disableFuture';\n    case Boolean(disablePast && adapter.isBeforeDay(value, now)):\n      return 'disablePast';\n    case Boolean(minDate && adapter.isBeforeDay(value, minDate)):\n      return 'minDate';\n    case Boolean(maxDate && adapter.isAfterDay(value, maxDate)):\n      return 'maxDate';\n    default:\n      return null;\n  }\n};\nvalidateDate.valueManager = singleItemValueManager;","import { createIsAfterIgnoreDatePart } from \"../internals/utils/time-utils.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\n\n/**\n * Validation props used by the Time Picker, Time Field and Clock components.\n */\n\n/**\n * Validation props as received by the validateTime method.\n */\n\n/**\n * Name of the props that should be defaulted before being passed to the validateTime method.\n */\n\nexport const validateTime = ({\n  adapter,\n  value,\n  timezone,\n  props\n}) => {\n  if (value === null) {\n    return null;\n  }\n  const {\n    minTime,\n    maxTime,\n    minutesStep,\n    shouldDisableTime,\n    disableIgnoringDatePartForTimeValidation = false,\n    disablePast,\n    disableFuture\n  } = props;\n  const now = adapter.date(undefined, timezone);\n  const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter);\n  switch (true) {\n    case !adapter.isValid(value):\n      return 'invalidDate';\n    case Boolean(minTime && isAfter(minTime, value)):\n      return 'minTime';\n    case Boolean(maxTime && isAfter(value, maxTime)):\n      return 'maxTime';\n    case Boolean(disableFuture && adapter.isAfter(value, now)):\n      return 'disableFuture';\n    case Boolean(disablePast && adapter.isBefore(value, now)):\n      return 'disablePast';\n    case Boolean(shouldDisableTime && shouldDisableTime(value, 'hours')):\n      return 'shouldDisableTime-hours';\n    case Boolean(shouldDisableTime && shouldDisableTime(value, 'minutes')):\n      return 'shouldDisableTime-minutes';\n    case Boolean(shouldDisableTime && shouldDisableTime(value, 'seconds')):\n      return 'shouldDisableTime-seconds';\n    case Boolean(minutesStep && adapter.getMinutes(value) % minutesStep !== 0):\n      return 'minutesStep';\n    default:\n      return null;\n  }\n};\nvalidateTime.valueManager = singleItemValueManager;","import { validateDate } from \"./validateDate.js\";\nimport { validateTime } from \"./validateTime.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\n\n/**\n * Validation props used by the Date Time Picker and Date Time Field components.\n */\n\n/**\n * Validation props as received by the validateDateTime method.\n */\n\n/**\n * Name of the props that should be defaulted before being passed to the validateDateTime method.\n */\n\nexport const validateDateTime = ({\n  adapter,\n  value,\n  timezone,\n  props\n}) => {\n  const dateValidationResult = validateDate({\n    adapter,\n    value,\n    timezone,\n    props\n  });\n  if (dateValidationResult !== null) {\n    return dateValidationResult;\n  }\n  return validateTime({\n    adapter,\n    value,\n    timezone,\n    props\n  });\n};\nvalidateDateTime.valueManager = singleItemValueManager;","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from \"../useEnhancedEffect/index.js\";\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n  const ref = React.useRef(fn);\n  useEnhancedEffect(() => {\n    ref.current = fn;\n  });\n  return React.useRef((...args) =>\n  // @ts-expect-error hide `this`\n  (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { usePickerAdapter } from \"../hooks/index.js\";\n/**\n * Utility hook to check if a given value is valid based on the provided validation props.\n * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n * @param {UseValidationOptions<TValue, TError, TValidationProps>} options The options to configure the hook.\n * @param {TValue} options.value The value to validate.\n * @param {PickersTimezone} options.timezone The timezone to use for the validation.\n * @param {Validator<TValue, TError, TValidationProps>} options.validator The validator function to use.\n * @param {TValidationProps} options.props The validation props, they differ depending on the component.\n * @param {(error: TError, value: TValue) => void} options.onError Callback fired when the error associated with the current value changes.\n */\nexport function useValidation(options) {\n  const {\n    props,\n    validator,\n    value,\n    timezone,\n    onError\n  } = options;\n  const adapter = usePickerAdapter();\n  const previousValidationErrorRef = React.useRef(validator.valueManager.defaultErrorState);\n  const validationError = validator({\n    adapter,\n    value,\n    timezone,\n    props\n  });\n  const hasValidationError = validator.valueManager.hasError(validationError);\n  React.useEffect(() => {\n    if (onError && !validator.valueManager.isSameError(validationError, previousValidationErrorRef.current)) {\n      onError(validationError, value);\n    }\n    previousValidationErrorRef.current = validationError;\n  }, [validator, onError, validationError, value]);\n  const getValidationErrorForNewValue = useEventCallback(newValue => {\n    return validator({\n      adapter,\n      value: newValue,\n      timezone,\n      props\n    });\n  });\n  return {\n    validationError,\n    hasValidationError,\n    getValidationErrorForNewValue\n  };\n}","'use client';\n\nimport * as React from 'react';\nimport { useLocalizationContext, usePickerAdapter } from \"../../hooks/usePickerAdapter.js\";\nexport const useDefaultDates = () => useLocalizationContext().defaultDates;\nexport const useNow = timezone => {\n  const adapter = usePickerAdapter();\n  const now = React.useRef(undefined);\n  if (now.current === undefined) {\n    now.current = adapter.date(undefined, timezone);\n  }\n  return now.current;\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { applyDefaultDate } from \"../internals/utils/date-utils.js\";\nimport { singleItemFieldValueManager, singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { validateDate } from \"../validation/index.js\";\nimport { useDefaultDates } from \"../internals/hooks/useUtils.js\";\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nexport function useDateManager(parameters = {}) {\n  const {\n    enableAccessibleFieldDOMStructure = true\n  } = parameters;\n  return React.useMemo(() => ({\n    valueType: 'date',\n    validator: validateDate,\n    internal_valueManager: singleItemValueManager,\n    internal_fieldValueManager: singleItemFieldValueManager,\n    internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,\n    internal_useApplyDefaultValuesToFieldInternalProps: useApplyDefaultValuesToDateFieldInternalProps,\n    internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel\n  }), [enableAccessibleFieldDOMStructure]);\n}\nfunction useOpenPickerButtonAriaLabel(value) {\n  const adapter = usePickerAdapter();\n  const translations = usePickerTranslations();\n  return React.useMemo(() => {\n    const formattedValue = adapter.isValid(value) ? adapter.format(value, 'fullDate') : null;\n    return translations.openDatePickerDialogue(formattedValue);\n  }, [value, translations, adapter]);\n}\nfunction useApplyDefaultValuesToDateFieldInternalProps(internalProps) {\n  const adapter = usePickerAdapter();\n  const validationProps = useApplyDefaultValuesToDateValidationProps(internalProps);\n  return React.useMemo(() => _extends({}, internalProps, validationProps, {\n    format: internalProps.format ?? adapter.formats.keyboardDate\n  }), [internalProps, validationProps, adapter]);\n}\nexport function useApplyDefaultValuesToDateValidationProps(props) {\n  const adapter = usePickerAdapter();\n  const defaultDates = useDefaultDates();\n  return React.useMemo(() => ({\n    disablePast: props.disablePast ?? false,\n    disableFuture: props.disableFuture ?? false,\n    minDate: applyDefaultDate(adapter, props.minDate, defaultDates.minDate),\n    maxDate: applyDefaultDate(adapter, props.maxDate, defaultDates.maxDate)\n  }), [props.minDate, props.maxDate, props.disableFuture, props.disablePast, adapter, defaultDates]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useThemeProps } from '@mui/material/styles';\nimport { applyDefaultViewProps } from \"../internals/utils/views.js\";\nimport { DatePickerToolbar } from \"./DatePickerToolbar.js\";\nimport { useApplyDefaultValuesToDateValidationProps } from \"../managers/useDateManager.js\";\nexport function useDatePickerDefaultizedProps(props, name) {\n  const themeProps = useThemeProps({\n    props,\n    name\n  });\n  const validationProps = useApplyDefaultValuesToDateValidationProps(themeProps);\n  const localeText = React.useMemo(() => {\n    if (themeProps.localeText?.toolbarTitle == null) {\n      return themeProps.localeText;\n    }\n    return _extends({}, themeProps.localeText, {\n      datePickerToolbarTitle: themeProps.localeText.toolbarTitle\n    });\n  }, [themeProps.localeText]);\n  return _extends({}, themeProps, validationProps, {\n    localeText\n  }, applyDefaultViewProps({\n    views: themeProps.views,\n    openTo: themeProps.openTo,\n    defaultViews: ['year', 'day'],\n    defaultOpenTo: 'day'\n  }), {\n    slots: _extends({\n      toolbar: DatePickerToolbar\n    }, themeProps.slots)\n  });\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n *\n * ```tsx\n * const rootRef = React.useRef<Instance>(null);\n * const refFork = useForkRef(rootRef, props.ref);\n *\n * return (\n *   <Root {...props} ref={refFork} />\n * );\n * ```\n *\n * @param {Array<React.Ref<Instance> | undefined>} refs The ref array.\n * @returns {React.RefCallback<Instance> | null} The new ref callback.\n */\nexport default function useForkRef(...refs) {\n  const cleanupRef = React.useRef(undefined);\n  const refEffect = React.useCallback(instance => {\n    const cleanups = refs.map(ref => {\n      if (ref == null) {\n        return null;\n      }\n      if (typeof ref === 'function') {\n        const refCallback = ref;\n        const refCleanup = refCallback(instance);\n        return typeof refCleanup === 'function' ? refCleanup : () => {\n          refCallback(null);\n        };\n      }\n      ref.current = instance;\n      return () => {\n        ref.current = null;\n      };\n    });\n    return () => {\n      cleanups.forEach(refCleanup => refCleanup?.());\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return value => {\n      if (cleanupRef.current) {\n        cleanupRef.current();\n        cleanupRef.current = undefined;\n      }\n      if (value != null) {\n        cleanupRef.current = refEffect(value);\n      }\n    };\n    // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- intentionally ignoring that the dependency array must be an array literal\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n  return typeof element === 'string';\n}\nexport default isHostComponent;","import isHostComponent from \"../isHostComponent/index.js\";\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nfunction appendOwnerState(elementType, otherProps, ownerState) {\n  if (elementType === undefined || isHostComponent(elementType)) {\n    return otherProps;\n  }\n  return {\n    ...otherProps,\n    ownerState: {\n      ...otherProps.ownerState,\n      ...ownerState\n    }\n  };\n}\nexport default appendOwnerState;","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nfunction extractEventHandlers(object, excludeKeys = []) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}\nexport default extractEventHandlers;","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nfunction omitEventHandlers(object) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}\nexport default omitEventHandlers;","import clsx from 'clsx';\nimport extractEventHandlers from \"../extractEventHandlers/index.js\";\nimport omitEventHandlers from \"../omitEventHandlers/index.js\";\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nfunction mergeSlotProps(parameters) {\n  const {\n    getSlotProps,\n    additionalProps,\n    externalSlotProps,\n    externalForwardedProps,\n    className\n  } = parameters;\n  if (!getSlotProps) {\n    // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n    // so we can simply merge all the props without having to worry about extracting event handlers.\n    const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n    const mergedStyle = {\n      ...additionalProps?.style,\n      ...externalForwardedProps?.style,\n      ...externalSlotProps?.style\n    };\n    const props = {\n      ...additionalProps,\n      ...externalForwardedProps,\n      ...externalSlotProps\n    };\n    if (joinedClasses.length > 0) {\n      props.className = joinedClasses;\n    }\n    if (Object.keys(mergedStyle).length > 0) {\n      props.style = mergedStyle;\n    }\n    return {\n      props,\n      internalRef: undefined\n    };\n  }\n\n  // In this case, getSlotProps is responsible for calling the external event handlers.\n  // We don't need to include them in the merged props because of this.\n\n  const eventHandlers = extractEventHandlers({\n    ...externalForwardedProps,\n    ...externalSlotProps\n  });\n  const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n  const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n  const internalSlotProps = getSlotProps(eventHandlers);\n\n  // The order of classes is important here.\n  // Emotion (that we use in libraries consuming Base UI) depends on this order\n  // to properly override style. It requires the most important classes to be last\n  // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n  const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n  const mergedStyle = {\n    ...internalSlotProps?.style,\n    ...additionalProps?.style,\n    ...externalForwardedProps?.style,\n    ...externalSlotProps?.style\n  };\n  const props = {\n    ...internalSlotProps,\n    ...additionalProps,\n    ...otherPropsWithoutEventHandlers,\n    ...componentsPropsWithoutEventHandlers\n  };\n  if (joinedClasses.length > 0) {\n    props.className = joinedClasses;\n  }\n  if (Object.keys(mergedStyle).length > 0) {\n    props.style = mergedStyle;\n  }\n  return {\n    props,\n    internalRef: internalSlotProps.ref\n  };\n}\nexport default mergeSlotProps;","'use client';\n\nimport useForkRef from \"../useForkRef/index.js\";\nimport appendOwnerState from \"../appendOwnerState/index.js\";\nimport mergeSlotProps from \"../mergeSlotProps/index.js\";\nimport resolveComponentProps from \"../resolveComponentProps/index.js\";\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nfunction useSlotProps(parameters) {\n  const {\n    elementType,\n    externalSlotProps,\n    ownerState,\n    skipResolvingSlotProps = false,\n    ...other\n  } = parameters;\n  const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n  const {\n    props: mergedProps,\n    internalRef\n  } = mergeSlotProps({\n    ...other,\n    externalSlotProps: resolvedComponentsProps\n  });\n  const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.additionalProps?.ref);\n  const props = appendOwnerState(elementType, {\n    ...mergedProps,\n    ref\n  }, ownerState);\n  return props;\n}\nexport default useSlotProps;","export default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickerPopperUtilityClass(slot) {\n  return generateUtilityClass('MuiPickerPopper', slot);\n}\nexport const pickerPopperClasses = generateUtilityClasses('MuiPickerPopper', ['root', 'paper']);","import ownerDocument from '@mui/utils/ownerDocument';\n/* Use it instead of .includes method for IE support */\nexport function arrayIncludes(array, itemOrItems) {\n  if (Array.isArray(itemOrItems)) {\n    return itemOrItems.every(item => array.indexOf(item) !== -1);\n  }\n  return array.indexOf(itemOrItems) !== -1;\n}\nexport const onSpaceOrEnter = (innerFn, externalEvent) => event => {\n  if (event.key === 'Enter' || event.key === ' ') {\n    innerFn(event);\n\n    // prevent any side effects\n    event.preventDefault();\n    event.stopPropagation();\n  }\n  if (externalEvent) {\n    externalEvent(event);\n  }\n};\nexport const executeInTheNextEventLoopTick = fn => {\n  setTimeout(fn, 0);\n};\n\n// https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/\nconst getActiveElementInternal = (root = document) => {\n  const activeEl = root.activeElement;\n  if (!activeEl) {\n    return null;\n  }\n  if (activeEl.shadowRoot) {\n    return getActiveElementInternal(activeEl.shadowRoot);\n  }\n  return activeEl;\n};\n\n/**\n * Gets the currently active element within a given node's document.\n * This function traverses shadow DOM if necessary.\n * @param node - The node from which to get the active element.\n * @returns The currently active element, or null if none is found.\n */\nexport const getActiveElement = node => {\n  return getActiveElementInternal(ownerDocument(node));\n};\n\n/**\n * Gets the index of the focused list item in a given ul list element.\n *\n * @param {HTMLUListElement} listElement - The list element to search within.\n * @returns {number} The index of the focused list item, or -1 if none is focused.\n */\nexport const getFocusedListItemIndex = listElement => {\n  const children = Array.from(listElement.children);\n  return children.indexOf(getActiveElement(listElement));\n};\nexport const DEFAULT_DESKTOP_MODE_MEDIA_QUERY = '@media (pointer: fine)';\nexport function mergeSx(...sxProps) {\n  return sxProps.reduce((acc, sxProp) => {\n    if (Array.isArray(sxProp)) {\n      acc.push(...sxProp);\n    } else if (sxProp != null) {\n      acc.push(sxProp);\n    }\n    return acc;\n  }, []);\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"PaperComponent\", \"ownerState\", \"children\", \"paperSlotProps\", \"paperClasses\", \"onPaperClick\", \"onPaperTouchStart\"];\nimport * as React from 'react';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport Grow from '@mui/material/Grow';\nimport Fade from '@mui/material/Fade';\nimport MuiPaper from '@mui/material/Paper';\nimport MuiPopper from '@mui/material/Popper';\nimport BaseFocusTrap from '@mui/material/Unstable_TrapFocus';\nimport useForkRef from '@mui/utils/useForkRef';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport ownerDocument from '@mui/utils/ownerDocument';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { getPickerPopperUtilityClass } from \"./pickerPopperClasses.js\";\nimport { executeInTheNextEventLoopTick, getActiveElement } from \"../../utils/utils.js\";\nimport { usePickerPrivateContext } from \"../../hooks/usePickerPrivateContext.js\";\nimport { usePickerContext } from \"../../../hooks/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    paper: ['paper']\n  };\n  return composeClasses(slots, getPickerPopperUtilityClass, classes);\n};\nconst PickerPopperRoot = styled(MuiPopper, {\n  name: 'MuiPickerPopper',\n  slot: 'Root'\n})(({\n  theme\n}) => ({\n  zIndex: theme.zIndex.modal\n}));\nconst PickerPopperPaper = styled(MuiPaper, {\n  name: 'MuiPickerPopper',\n  slot: 'Paper'\n})({\n  outline: 0,\n  transformOrigin: 'top center',\n  variants: [{\n    props: ({\n      popperPlacement\n    }) => new Set(['top', 'top-start', 'top-end']).has(popperPlacement),\n    style: {\n      transformOrigin: 'bottom center'\n    }\n  }]\n});\nfunction clickedRootScrollbar(event, doc) {\n  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Based on @mui/material/ClickAwayListener without the customization.\n * We can probably strip away even more since children won't be portaled.\n * @param {boolean} active Only listen to clicks when the popper is opened.\n * @param {(event: MouseEvent | TouchEvent) => void} onClickAway The callback to call when clicking outside the popper.\n * @returns {Array} The ref and event handler to listen to the outside clicks.\n */\nfunction useClickAwayListener(active, onClickAway) {\n  const movedRef = React.useRef(false);\n  const syntheticEventRef = React.useRef(false);\n  const nodeRef = React.useRef(null);\n  const activatedRef = React.useRef(false);\n  React.useEffect(() => {\n    if (!active) {\n      return undefined;\n    }\n\n    // Ensure that this hook is not \"activated\" synchronously.\n    // https://github.com/facebook/react/issues/20074\n    function armClickAwayListener() {\n      activatedRef.current = true;\n    }\n    document.addEventListener('mousedown', armClickAwayListener, true);\n    document.addEventListener('touchstart', armClickAwayListener, true);\n    return () => {\n      document.removeEventListener('mousedown', armClickAwayListener, true);\n      document.removeEventListener('touchstart', armClickAwayListener, true);\n      activatedRef.current = false;\n    };\n  }, [active]);\n\n  // The handler doesn't take event.defaultPrevented into account:\n  //\n  // event.preventDefault() is meant to stop default behaviors like\n  // clicking a checkbox to check it, hitting a button to submit a form,\n  // and hitting left arrow to move the cursor in a text input etc.\n  // Only special HTML elements have these default behaviors.\n  const handleClickAway = useEventCallback(event => {\n    if (!activatedRef.current) {\n      return;\n    }\n\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = syntheticEventRef.current;\n    syntheticEventRef.current = false;\n    const doc = ownerDocument(nodeRef.current);\n\n    // 1. IE11 support, which trigger the handleClickAway even after the unbind\n    // 2. The child might render null.\n    // 3. Behave like a blur listener.\n    if (!nodeRef.current ||\n    // is a TouchEvent?\n    'clientX' in event && clickedRootScrollbar(event, doc)) {\n      return;\n    }\n\n    // Do not act if user performed touchmove\n    if (movedRef.current) {\n      movedRef.current = false;\n      return;\n    }\n    let insideDOM;\n\n    // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n    if (event.composedPath) {\n      insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n    } else {\n      insideDOM = !doc.documentElement.contains(event.target) || nodeRef.current.contains(event.target);\n    }\n    if (!insideDOM && !insideReactTree) {\n      onClickAway(event);\n    }\n  });\n\n  // Keep track of mouse/touch events that bubbled up through the portal.\n  const handleSynthetic = event => {\n    // Ignore events handled by our internal components\n    if (!event.defaultMuiPrevented) {\n      syntheticEventRef.current = true;\n    }\n  };\n  React.useEffect(() => {\n    if (active) {\n      const doc = ownerDocument(nodeRef.current);\n      const handleTouchMove = () => {\n        movedRef.current = true;\n      };\n      doc.addEventListener('touchstart', handleClickAway);\n      doc.addEventListener('touchmove', handleTouchMove);\n      return () => {\n        doc.removeEventListener('touchstart', handleClickAway);\n        doc.removeEventListener('touchmove', handleTouchMove);\n      };\n    }\n    return undefined;\n  }, [active, handleClickAway]);\n  React.useEffect(() => {\n    // TODO This behavior is not tested automatically\n    // It's unclear whether this is due to different update semantics in test (batched in act() vs discrete on click).\n    // Or if this is a timing related issues due to different Transition components\n    // Once we get rid of all the manual scheduling (for example setTimeout(update, 0)) we can revisit this code+test.\n    if (active) {\n      const doc = ownerDocument(nodeRef.current);\n      doc.addEventListener('click', handleClickAway);\n      return () => {\n        doc.removeEventListener('click', handleClickAway);\n        // cleanup `handleClickAway`\n        syntheticEventRef.current = false;\n      };\n    }\n    return undefined;\n  }, [active, handleClickAway]);\n  return [nodeRef, handleSynthetic, handleSynthetic];\n}\nconst PickerPopperPaperWrapper = /*#__PURE__*/React.forwardRef((props, ref) => {\n  const {\n      PaperComponent,\n      ownerState,\n      children,\n      paperSlotProps,\n      paperClasses,\n      onPaperClick,\n      onPaperTouchStart\n      // picks up the style props provided by `Transition`\n      // https://mui.com/material-ui/transitions/#child-requirement\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const paperProps = useSlotProps({\n    elementType: PaperComponent,\n    externalSlotProps: paperSlotProps,\n    additionalProps: {\n      tabIndex: -1,\n      elevation: 8,\n      ref\n    },\n    className: paperClasses,\n    ownerState\n  });\n  return /*#__PURE__*/_jsx(PaperComponent, _extends({}, other, paperProps, {\n    onClick: event => {\n      onPaperClick(event);\n      paperProps.onClick?.(event);\n    },\n    onTouchStart: event => {\n      onPaperTouchStart(event);\n      paperProps.onTouchStart?.(event);\n    },\n    ownerState: ownerState,\n    children: children\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickerPopperPaperWrapper.displayName = \"PickerPopperPaperWrapper\";\nexport function PickerPopper(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickerPopper'\n  });\n  const {\n    children,\n    placement = 'bottom-start',\n    slots,\n    slotProps,\n    classes: classesProp\n  } = props;\n  const {\n    open,\n    popupRef,\n    reduceAnimations\n  } = usePickerContext();\n  const {\n    ownerState: pickerOwnerState,\n    rootRefObject\n  } = usePickerPrivateContext();\n  const {\n    dismissViews,\n    getCurrentViewMode,\n    onPopperExited,\n    triggerElement,\n    viewContainerRole\n  } = usePickerPrivateContext();\n  React.useEffect(() => {\n    function handleKeyDown(nativeEvent) {\n      if (open && nativeEvent.key === 'Escape') {\n        dismissViews();\n      }\n    }\n    document.addEventListener('keydown', handleKeyDown);\n    return () => {\n      document.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [dismissViews, open]);\n  const lastFocusedElementRef = React.useRef(null);\n  React.useEffect(() => {\n    if (viewContainerRole === 'tooltip' || getCurrentViewMode() === 'field') {\n      return;\n    }\n    if (open) {\n      lastFocusedElementRef.current = getActiveElement(rootRefObject.current);\n    } else if (lastFocusedElementRef.current && lastFocusedElementRef.current instanceof HTMLElement) {\n      // make sure the button is flushed with updated label, before returning focus to it\n      // avoids issue, where screen reader could fail to announce selected date after selection\n      setTimeout(() => {\n        if (lastFocusedElementRef.current instanceof HTMLElement) {\n          lastFocusedElementRef.current.focus();\n        }\n      });\n    }\n  }, [open, viewContainerRole, getCurrentViewMode, rootRefObject]);\n  const classes = useUtilityClasses(classesProp);\n  const handleClickAway = useEventCallback(() => {\n    if (viewContainerRole === 'tooltip') {\n      executeInTheNextEventLoopTick(() => {\n        if (rootRefObject.current?.contains(getActiveElement(rootRefObject.current)) || popupRef.current?.contains(getActiveElement(popupRef.current))) {\n          return;\n        }\n        dismissViews();\n      });\n    } else {\n      dismissViews();\n    }\n  });\n  const [clickAwayRef, onPaperClick, onPaperTouchStart] = useClickAwayListener(open, handleClickAway);\n  const paperRef = React.useRef(null);\n  const handleRef = useForkRef(paperRef, popupRef);\n  const handlePaperRef = useForkRef(handleRef, clickAwayRef);\n  const handleKeyDown = event => {\n    if (event.key === 'Escape') {\n      // stop the propagation to avoid closing parent modal\n      event.stopPropagation();\n      dismissViews();\n    }\n  };\n  const Transition = slots?.desktopTransition ?? reduceAnimations ? Fade : Grow;\n  const FocusTrap = slots?.desktopTrapFocus ?? BaseFocusTrap;\n  const Paper = slots?.desktopPaper ?? PickerPopperPaper;\n  const Popper = slots?.popper ?? PickerPopperRoot;\n  const popperProps = useSlotProps({\n    elementType: Popper,\n    externalSlotProps: slotProps?.popper,\n    additionalProps: {\n      transition: true,\n      role: viewContainerRole == null ? undefined : viewContainerRole,\n      open,\n      placement,\n      anchorEl: triggerElement,\n      onKeyDown: handleKeyDown\n    },\n    className: classes.root,\n    ownerState: pickerOwnerState\n  });\n  const ownerState = React.useMemo(() => _extends({}, pickerOwnerState, {\n    popperPlacement: popperProps.placement\n  }), [pickerOwnerState, popperProps.placement]);\n  return /*#__PURE__*/_jsx(Popper, _extends({}, popperProps, {\n    children: ({\n      TransitionProps\n    }) => /*#__PURE__*/_jsx(FocusTrap, _extends({\n      open: open,\n      disableAutoFocus: true\n      // pickers are managing focus position manually\n      // without this prop the focus is returned to the button before `aria-label` is updated\n      // which would force screen readers to read too old label\n      ,\n      disableRestoreFocus: true,\n      disableEnforceFocus: viewContainerRole === 'tooltip',\n      isEnabled: () => true\n    }, slotProps?.desktopTrapFocus, {\n      children: /*#__PURE__*/_jsx(Transition, _extends({}, TransitionProps, slotProps?.desktopTransition, {\n        onExited: event => {\n          onPopperExited?.();\n          slotProps?.desktopTransition?.onExited?.(event);\n          TransitionProps?.onExited?.();\n        },\n        children: /*#__PURE__*/_jsx(PickerPopperPaperWrapper, {\n          PaperComponent: Paper,\n          ownerState: ownerState,\n          ref: handlePaperRef,\n          onPaperClick: onPaperClick,\n          onPaperTouchStart: onPaperTouchStart,\n          paperClasses: classes.paper,\n          paperSlotProps: slotProps?.desktopPaper,\n          children: children\n        })\n      }))\n    }))\n  }));\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\n\n// TODO React 17: Remove `useGlobalId` once React 17 support is removed\nfunction useGlobalId(idOverride) {\n  const [defaultId, setDefaultId] = React.useState(idOverride);\n  const id = idOverride || defaultId;\n  React.useEffect(() => {\n    if (defaultId == null) {\n      // Fallback to this default id when possible.\n      // Use the incrementing value for client-side rendering only.\n      // We can't use it server-side.\n      // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n      globalId += 1;\n      setDefaultId(`mui-${globalId}`);\n    }\n  }, [defaultId]);\n  return id;\n}\n\n// See https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379 for why\nconst safeReact = {\n  ...React\n};\nconst maybeReactUseId = safeReact.useId;\n\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n  // React.useId() is only available from React 17.0.0.\n  if (maybeReactUseId !== undefined) {\n    const reactId = maybeReactUseId();\n    return idOverride ?? reactId;\n  }\n\n  // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n  // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n  return useGlobalId(idOverride);\n}","import useMediaQuery from '@mui/material/useMediaQuery';\nconst PREFERS_REDUCED_MOTION = '@media (prefers-reduced-motion: reduce)';\n\n// detect if user agent has Android version < 10 or iOS version < 13\nconst mobileVersionMatches = typeof navigator !== 'undefined' && navigator.userAgent.match(/android\\s(\\d+)|OS\\s(\\d+)/i);\nconst androidVersion = mobileVersionMatches && mobileVersionMatches[1] ? parseInt(mobileVersionMatches[1], 10) : null;\nconst iOSVersion = mobileVersionMatches && mobileVersionMatches[2] ? parseInt(mobileVersionMatches[2], 10) : null;\nexport const slowAnimationDevices = androidVersion && androidVersion < 10 || iOSVersion && iOSVersion < 13 || false;\nexport function useReduceAnimations(customReduceAnimations) {\n  const prefersReduced = useMediaQuery(PREFERS_REDUCED_MOTION, {\n    defaultMatches: false\n  });\n  if (customReduceAnimations != null) {\n    return customReduceAnimations;\n  }\n  return prefersReduced || slowAnimationDevices;\n}","'use client';\n\n// TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- process.env never changes, dependency arrays are intentionally ignored\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(props) {\n  const {\n    controlled,\n    default: defaultProp,\n    name,\n    state = 'value'\n  } = props;\n  // isControlled is ignored in the hook dependency lists as it should never change.\n  const {\n    current: isControlled\n  } = React.useRef(controlled !== undefined);\n  const [valueState, setValue] = React.useState(defaultProp);\n  const value = isControlled ? controlled : valueState;\n  if (process.env.NODE_ENV !== 'production') {\n    React.useEffect(() => {\n      if (isControlled !== (controlled !== undefined)) {\n        console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n      }\n    }, [state, name, controlled]);\n    const {\n      current: defaultValue\n    } = React.useRef(defaultProp);\n    React.useEffect(() => {\n      if (!isControlled && JSON.stringify(defaultProp) !== JSON.stringify(defaultValue)) {\n        console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n      }\n    }, [JSON.stringify(defaultProp)]);\n  }\n  const setValueIfUncontrolled = React.useCallback(newValue => {\n    if (!isControlled) {\n      setValue(newValue);\n    }\n  }, []);\n\n  // TODO: provide overloads for the useControlled function to account for the case where either\n  // controlled or default is not undefined.\n  // In that case the return type should be [T, React.Dispatch<React.SetStateAction<T>>]\n  // otherwise it should be [T | undefined, React.Dispatch<React.SetStateAction<T | undefined>>]\n  return [value, setValueIfUncontrolled];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const DEFAULT_STEP_NAVIGATION = {\n  hasNextStep: false,\n  hasSeveralSteps: false,\n  goToNextStep: () => {},\n  areViewsInSameStep: () => true\n};\n\n/**\n * Create an object that determines whether there is a next step and allows to go to the next step.\n * @param {CreateStepNavigationParameters<TStep>} parameters The parameters of the createStepNavigation function\n * @returns {CreateStepNavigationReturnValue} The return value of the createStepNavigation function\n */\nexport function createStepNavigation(parameters) {\n  const {\n    steps,\n    isViewMatchingStep,\n    onStepChange\n  } = parameters;\n  return parametersBis => {\n    if (steps == null) {\n      return DEFAULT_STEP_NAVIGATION;\n    }\n    const currentStepIndex = steps.findIndex(step => isViewMatchingStep(parametersBis.view, step));\n    const nextStep = currentStepIndex === -1 || currentStepIndex === steps.length - 1 ? null : steps[currentStepIndex + 1];\n    return {\n      hasNextStep: nextStep != null,\n      hasSeveralSteps: steps.length > 1,\n      goToNextStep: () => {\n        if (nextStep == null) {\n          return;\n        }\n        onStepChange(_extends({}, parametersBis, {\n          step: nextStep\n        }));\n      },\n      areViewsInSameStep: (viewA, viewB) => {\n        const stepA = steps.find(step => isViewMatchingStep(viewA, step));\n        const stepB = steps.find(step => isViewMatchingStep(viewB, step));\n        return stepA === stepB;\n      }\n    };\n  };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useControlled from '@mui/utils/useControlled';\nimport { DEFAULT_STEP_NAVIGATION } from \"../utils/createStepNavigation.js\";\nlet warnedOnceNotValidView = false;\nexport function useViews({\n  onChange,\n  onViewChange,\n  openTo,\n  view: inView,\n  views,\n  autoFocus,\n  focusedView: inFocusedView,\n  onFocusedViewChange,\n  getStepNavigation\n}) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!warnedOnceNotValidView) {\n      if (inView != null && !views.includes(inView)) {\n        console.warn(`MUI X: \\`view=\"${inView}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n        warnedOnceNotValidView = true;\n      }\n      if (inView == null && openTo != null && !views.includes(openTo)) {\n        console.warn(`MUI X: \\`openTo=\"${openTo}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n        warnedOnceNotValidView = true;\n      }\n    }\n  }\n  const previousOpenTo = React.useRef(openTo);\n  const previousViews = React.useRef(views);\n  const defaultView = React.useRef(views.includes(openTo) ? openTo : views[0]);\n  const [view, setView] = useControlled({\n    name: 'useViews',\n    state: 'view',\n    controlled: inView,\n    default: defaultView.current\n  });\n  const defaultFocusedView = React.useRef(autoFocus ? view : null);\n  const [focusedView, setFocusedView] = useControlled({\n    name: 'useViews',\n    state: 'focusedView',\n    controlled: inFocusedView,\n    default: defaultFocusedView.current\n  });\n  const stepNavigation = getStepNavigation ? getStepNavigation({\n    setView,\n    view,\n    defaultView: defaultView.current,\n    views\n  }) : DEFAULT_STEP_NAVIGATION;\n  React.useEffect(() => {\n    // Update the current view when `openTo` or `views` props change\n    if (previousOpenTo.current && previousOpenTo.current !== openTo || previousViews.current && previousViews.current.some(previousView => !views.includes(previousView))) {\n      setView(views.includes(openTo) ? openTo : views[0]);\n      previousViews.current = views;\n      previousOpenTo.current = openTo;\n    }\n  }, [openTo, setView, view, views]);\n  const viewIndex = views.indexOf(view);\n  const previousView = views[viewIndex - 1] ?? null;\n  const nextView = views[viewIndex + 1] ?? null;\n  const handleFocusedViewChange = useEventCallback((viewToFocus, hasFocus) => {\n    if (hasFocus) {\n      // Focus event\n      setFocusedView(viewToFocus);\n    } else {\n      // Blur event\n      setFocusedView(prevFocusedView => viewToFocus === prevFocusedView ? null : prevFocusedView // If false the blur is due to view switching\n      );\n    }\n    onFocusedViewChange?.(viewToFocus, hasFocus);\n  });\n  const handleChangeView = useEventCallback(newView => {\n    // always keep the focused view in sync\n    handleFocusedViewChange(newView, true);\n    if (newView === view) {\n      return;\n    }\n    setView(newView);\n    if (onViewChange) {\n      onViewChange(newView);\n    }\n  });\n  const goToNextView = useEventCallback(() => {\n    if (nextView) {\n      handleChangeView(nextView);\n    }\n  });\n  const setValueAndGoToNextView = useEventCallback((value, currentViewSelectionState, selectedView) => {\n    const isSelectionFinishedOnCurrentView = currentViewSelectionState === 'finish';\n    const hasMoreViews = selectedView ?\n    // handles case like `DateTimePicker`, where a view might return a `finish` selection state\n    // but when it's not the final view given all `views` -> overall selection state should be `partial`.\n    views.indexOf(selectedView) < views.length - 1 : Boolean(nextView);\n    const globalSelectionState = isSelectionFinishedOnCurrentView && hasMoreViews ? 'partial' : currentViewSelectionState;\n    onChange(value, globalSelectionState, selectedView);\n\n    // The selected view can be different from the active view,\n    // This can happen if multiple views are displayed, like in `DesktopDateTimePicker` or `MultiSectionDigitalClock`.\n    let currentView = null;\n    if (selectedView != null && selectedView !== view) {\n      currentView = selectedView;\n    } else if (isSelectionFinishedOnCurrentView) {\n      currentView = view;\n    }\n    if (currentView == null) {\n      return;\n    }\n    const viewToNavigateTo = views[views.indexOf(currentView) + 1];\n    if (viewToNavigateTo == null || !stepNavigation.areViewsInSameStep(currentView, viewToNavigateTo)) {\n      return;\n    }\n    handleChangeView(viewToNavigateTo);\n  });\n  return _extends({}, stepNavigation, {\n    view,\n    setView: handleChangeView,\n    focusedView,\n    setFocusedView: handleFocusedViewChange,\n    nextView,\n    previousView,\n    // Always return up-to-date default view instead of the initial one (i.e. defaultView.current)\n    defaultView: views.includes(openTo) ? openTo : views[0],\n    goToNextView,\n    setValueAndGoToNextView\n  });\n}","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { arrayIncludes } from \"../../../utils/utils.js\";\nfunction getOrientation() {\n  if (typeof window === 'undefined') {\n    return 'portrait';\n  }\n  if (window.screen && window.screen.orientation && window.screen.orientation.angle) {\n    return Math.abs(window.screen.orientation.angle) === 90 ? 'landscape' : 'portrait';\n  }\n\n  // Support IOS safari\n  if (window.orientation) {\n    return Math.abs(Number(window.orientation)) === 90 ? 'landscape' : 'portrait';\n  }\n  return 'portrait';\n}\nexport function useOrientation(views, customOrientation) {\n  const [orientation, setOrientation] = React.useState(getOrientation);\n  useEnhancedEffect(() => {\n    const eventHandler = () => {\n      setOrientation(getOrientation());\n    };\n    window.addEventListener('orientationchange', eventHandler);\n    return () => {\n      window.removeEventListener('orientationchange', eventHandler);\n    };\n  }, []);\n  if (arrayIncludes(views, ['hours', 'minutes', 'seconds'])) {\n    // could not display 13:34:44 in landscape mode\n    return 'portrait';\n  }\n  return customOrientation ?? orientation;\n}","const warnedOnceCache = new Set();\n\n/**\n * Logs a message to the console on development mode. The warning will only be logged once.\n *\n * The message is the log's cache key. Two identical messages will only be logged once.\n *\n * This function is a no-op in production.\n *\n * @param message the message to log\n * @param gravity the gravity of the warning. Defaults to `'warning'`.\n * @returns\n */\nexport function warnOnce(message, gravity = 'warning') {\n  if (process.env.NODE_ENV === 'production') {\n    return;\n  }\n  const cleanMessage = Array.isArray(message) ? message.join('\\n') : message;\n  if (!warnedOnceCache.has(cleanMessage)) {\n    warnedOnceCache.add(cleanMessage);\n    if (gravity === 'error') {\n      console.error(cleanMessage);\n    } else {\n      console.warn(cleanMessage);\n    }\n  }\n}\nexport function clearWarningsCache() {\n  warnedOnceCache.clear();\n}","import * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useControlled from '@mui/utils/useControlled';\nimport { usePickerAdapter } from \"../../hooks/usePickerAdapter.js\";\n\n/**\n * Hooks controlling the value while making sure that:\n * - The value returned by `onChange` always have the timezone of `props.value` or `props.defaultValue` if defined\n * - The value rendered is always the one from `props.timezone` if defined\n */\nexport const useControlledValue = ({\n  name,\n  timezone: timezoneProp,\n  value: valueProp,\n  defaultValue,\n  referenceDate,\n  onChange: onChangeProp,\n  valueManager\n}) => {\n  const adapter = usePickerAdapter();\n  const [valueWithInputTimezone, setValue] = useControlled({\n    name,\n    state: 'value',\n    controlled: valueProp,\n    default: defaultValue ?? valueManager.emptyValue\n  });\n  const inputTimezone = React.useMemo(() => valueManager.getTimezone(adapter, valueWithInputTimezone), [adapter, valueManager, valueWithInputTimezone]);\n  const setInputTimezone = useEventCallback(newValue => {\n    if (inputTimezone == null) {\n      return newValue;\n    }\n    return valueManager.setTimezone(adapter, inputTimezone, newValue);\n  });\n  const timezoneToRender = React.useMemo(() => {\n    if (timezoneProp) {\n      return timezoneProp;\n    }\n    if (inputTimezone) {\n      return inputTimezone;\n    }\n    if (referenceDate) {\n      return adapter.getTimezone(Array.isArray(referenceDate) ? referenceDate[0] : referenceDate);\n    }\n    return 'default';\n  }, [timezoneProp, inputTimezone, referenceDate, adapter]);\n  const valueWithTimezoneToRender = React.useMemo(() => valueManager.setTimezone(adapter, timezoneToRender, valueWithInputTimezone), [valueManager, adapter, timezoneToRender, valueWithInputTimezone]);\n  const handleValueChange = useEventCallback((newValue, ...otherParams) => {\n    const newValueWithInputTimezone = setInputTimezone(newValue);\n    setValue(newValueWithInputTimezone);\n    onChangeProp?.(newValueWithInputTimezone, ...otherParams);\n  });\n  return {\n    value: valueWithTimezoneToRender,\n    handleValueChange,\n    timezone: timezoneToRender\n  };\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { warnOnce } from '@mui/x-internals/warning';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { useControlledValue } from \"../../useControlledValue.js\";\nimport { usePickerAdapter } from \"../../../../hooks/usePickerAdapter.js\";\nimport { useValidation } from \"../../../../validation/index.js\";\nexport function useValueAndOpenStates(parameters) {\n  const {\n    props,\n    valueManager,\n    validator\n  } = parameters;\n  const {\n    value: valueProp,\n    defaultValue: defaultValueProp,\n    onChange,\n    referenceDate,\n    timezone: timezoneProp,\n    onAccept,\n    closeOnSelect,\n    open: openProp,\n    onOpen,\n    onClose\n  } = props;\n  const {\n    current: defaultValue\n  } = React.useRef(defaultValueProp);\n  const {\n    current: isValueControlled\n  } = React.useRef(valueProp !== undefined);\n  const {\n    current: isOpenControlled\n  } = React.useRef(openProp !== undefined);\n  const adapter = usePickerAdapter();\n  if (process.env.NODE_ENV !== 'production') {\n    if (props.renderInput != null) {\n      warnOnce(['MUI X: The `renderInput` prop has been removed in version 6.0 of the Date and Time Pickers.', 'You can replace it with the `textField` component slot in most cases.', 'For more information, please have a look at the migration guide (https://mui.com/x/migration/migration-pickers-v5/#input-renderer-required-in-v5).']);\n    }\n  }\n\n  /* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\n  if (process.env.NODE_ENV !== 'production') {\n    React.useEffect(() => {\n      if (isValueControlled !== (valueProp !== undefined)) {\n        console.error([`MUI X: A component is changing the ${isValueControlled ? '' : 'un'}controlled value of a Picker to be ${isValueControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled value` + 'for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n      }\n    }, [valueProp]);\n    React.useEffect(() => {\n      if (!isValueControlled && defaultValue !== defaultValueProp) {\n        console.error([`MUI X: A component is changing the defaultValue of an uncontrolled Picker after being initialized. ` + `To suppress this warning opt to use a controlled value.`].join('\\n'));\n      }\n    }, [JSON.stringify(defaultValue)]);\n  }\n  /* eslint-enable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\n\n  const {\n    timezone,\n    value,\n    handleValueChange\n  } = useControlledValue({\n    name: 'a picker component',\n    timezone: timezoneProp,\n    value: valueProp,\n    defaultValue,\n    referenceDate,\n    onChange,\n    valueManager\n  });\n  const [state, setState] = React.useState(() => ({\n    open: false,\n    lastExternalValue: value,\n    clockShallowValue: undefined,\n    lastCommittedValue: value,\n    hasBeenModifiedSinceMount: false\n  }));\n  const {\n    getValidationErrorForNewValue\n  } = useValidation({\n    props,\n    validator,\n    timezone,\n    value,\n    onError: props.onError\n  });\n  const setOpen = useEventCallback(action => {\n    const newOpen = typeof action === 'function' ? action(state.open) : action;\n    if (!isOpenControlled) {\n      setState(prevState => _extends({}, prevState, {\n        open: newOpen\n      }));\n    }\n    if (newOpen && onOpen) {\n      onOpen();\n    }\n    if (!newOpen) {\n      onClose?.();\n    }\n  });\n  const setValue = useEventCallback((newValue, options) => {\n    const {\n      changeImportance = 'accept',\n      skipPublicationIfPristine = false,\n      validationError,\n      shortcut,\n      source,\n      shouldClose = changeImportance === 'accept'\n    } = options ?? {};\n    let shouldFireOnChange;\n    let shouldFireOnAccept;\n    if (!skipPublicationIfPristine && !isValueControlled && !state.hasBeenModifiedSinceMount) {\n      // If the value is not controlled and the value has never been modified before,\n      // Then clicking on any value (including the one equal to `defaultValue`) should call `onChange` and `onAccept`\n      shouldFireOnChange = true;\n      shouldFireOnAccept = changeImportance === 'accept';\n    } else {\n      shouldFireOnChange = !valueManager.areValuesEqual(adapter, newValue, value);\n      shouldFireOnAccept = changeImportance === 'accept' && !valueManager.areValuesEqual(adapter, newValue, state.lastCommittedValue);\n    }\n    setState(prevState => _extends({}, prevState, {\n      // We reset the shallow value whenever we fire onChange.\n      clockShallowValue: shouldFireOnChange ? undefined : prevState.clockShallowValue,\n      lastCommittedValue: shouldFireOnAccept ? newValue : prevState.lastCommittedValue,\n      hasBeenModifiedSinceMount: true\n    }));\n    let cachedContext = null;\n    const getContext = () => {\n      if (!cachedContext) {\n        let inferredSource;\n        if (source) {\n          inferredSource = source;\n        } else if (shortcut) {\n          inferredSource = 'view';\n        } else {\n          // Default to unknown when not explicitly tagged by a picker call site\n          inferredSource = 'unknown';\n        }\n        cachedContext = {\n          validationError: validationError == null ? getValidationErrorForNewValue(newValue) : validationError,\n          source: inferredSource\n        };\n        if (shortcut) {\n          cachedContext.shortcut = shortcut;\n        }\n      }\n      return cachedContext;\n    };\n    if (shouldFireOnChange) {\n      handleValueChange(newValue, getContext());\n    }\n    if (shouldFireOnAccept && onAccept) {\n      onAccept(newValue, getContext());\n    }\n    if (shouldClose) {\n      setOpen(false);\n    }\n  });\n\n  // If `prop.value` changes, we update the state to reflect the new value\n  if (value !== state.lastExternalValue) {\n    setState(prevState => _extends({}, prevState, {\n      lastExternalValue: value,\n      clockShallowValue: undefined,\n      hasBeenModifiedSinceMount: true\n    }));\n  }\n  const setValueFromView = useEventCallback((newValue, selectionState = 'partial') => {\n    // TODO: Expose a new method (private?) like `setView` that only updates the clock shallow value.\n    if (selectionState === 'shallow') {\n      setState(prev => _extends({}, prev, {\n        clockShallowValue: newValue,\n        hasBeenModifiedSinceMount: true\n      }));\n      return;\n    }\n    setValue(newValue, {\n      changeImportance: selectionState === 'finish' && closeOnSelect ? 'accept' : 'set',\n      source: 'view'\n    });\n  });\n\n  // It is required to update inner state in useEffect in order to avoid situation when\n  // Our component is not mounted yet, but `open` state is set to `true` (for example initially opened)\n  React.useEffect(() => {\n    if (isOpenControlled) {\n      if (openProp === undefined) {\n        throw new Error('You must not mix controlling and uncontrolled mode for `open` prop');\n      }\n      setState(prevState => _extends({}, prevState, {\n        open: openProp\n      }));\n    }\n  }, [isOpenControlled, openProp]);\n  const viewValue = React.useMemo(() => valueManager.cleanValue(adapter, state.clockShallowValue === undefined ? value : state.clockShallowValue), [adapter, valueManager, state.clockShallowValue, value]);\n  return {\n    timezone,\n    state,\n    setValue,\n    setValueFromView,\n    setOpen,\n    value,\n    viewValue\n  };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"sx\"];\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useForkRef from '@mui/utils/useForkRef';\nimport useId from '@mui/utils/useId';\nimport { usePickerAdapter } from \"../../../hooks/usePickerAdapter.js\";\nimport { useReduceAnimations } from \"../useReduceAnimations.js\";\nimport { isTimeView } from \"../../utils/time-utils.js\";\nimport { useViews } from \"../useViews.js\";\nimport { useOrientation } from \"./hooks/useOrientation.js\";\nimport { useValueAndOpenStates } from \"./hooks/useValueAndOpenStates.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const usePicker = ({\n  ref,\n  props,\n  valueManager,\n  valueType,\n  variant,\n  validator,\n  onPopperExited,\n  autoFocusView,\n  rendererInterceptor: RendererInterceptor,\n  localeText,\n  viewContainerRole,\n  getStepNavigation\n}) => {\n  const {\n    // View props\n    views,\n    view: viewProp,\n    openTo,\n    onViewChange,\n    viewRenderers,\n    reduceAnimations: reduceAnimationsProp,\n    orientation: orientationProp,\n    disableOpenPicker,\n    closeOnSelect,\n    // Form props\n    disabled,\n    readOnly,\n    // Field props\n    formatDensity,\n    enableAccessibleFieldDOMStructure,\n    selectedSections,\n    onSelectedSectionsChange,\n    format,\n    label,\n    // Other props\n    autoFocus,\n    name\n  } = props;\n  const {\n      className,\n      sx\n    } = props,\n    propsToForwardToView = _objectWithoutPropertiesLoose(props, _excluded);\n\n  /**\n   * TODO: Improve how we generate the aria-label and aria-labelledby attributes.\n   */\n  const labelId = useId();\n  const adapter = usePickerAdapter();\n  const reduceAnimations = useReduceAnimations(reduceAnimationsProp);\n  const orientation = useOrientation(views, orientationProp);\n  const {\n    current: initialView\n  } = React.useRef(openTo ?? null);\n\n  /**\n   * Refs\n   */\n  const [triggerElement, triggerRef] = React.useState(null);\n  const popupRef = React.useRef(null);\n  const fieldRef = React.useRef(null);\n  const rootRefObject = React.useRef(null);\n  const rootRef = useForkRef(ref, rootRefObject);\n  const {\n    timezone,\n    state,\n    setOpen,\n    setValue,\n    setValueFromView,\n    value,\n    viewValue\n  } = useValueAndOpenStates({\n    props,\n    valueManager,\n    validator\n  });\n  const {\n    view,\n    setView,\n    defaultView,\n    focusedView,\n    setFocusedView,\n    setValueAndGoToNextView,\n    goToNextStep,\n    hasNextStep,\n    hasSeveralSteps\n  } = useViews({\n    view: viewProp,\n    views,\n    openTo,\n    onChange: setValueFromView,\n    onViewChange,\n    autoFocus: autoFocusView,\n    getStepNavigation\n  });\n  const clearValue = useEventCallback(() => setValue(valueManager.emptyValue, {\n    source: 'view'\n  }));\n  const setValueToToday = useEventCallback(() => setValue(valueManager.getTodayValue(adapter, timezone, valueType), {\n    source: 'view'\n  }));\n  const acceptValueChanges = useEventCallback(() => setValue(value, {\n    source: 'view'\n  }));\n  const cancelValueChanges = useEventCallback(() => setValue(state.lastCommittedValue, {\n    skipPublicationIfPristine: true,\n    source: 'view'\n  }));\n  const dismissViews = useEventCallback(() => {\n    setValue(value, {\n      skipPublicationIfPristine: true,\n      source: 'view'\n    });\n  });\n  const {\n    hasUIView,\n    viewModeLookup,\n    timeViewsCount\n  } = React.useMemo(() => views.reduce((acc, viewForReduce) => {\n    const viewMode = viewRenderers[viewForReduce] == null ? 'field' : 'UI';\n    acc.viewModeLookup[viewForReduce] = viewMode;\n    if (viewMode === 'UI') {\n      acc.hasUIView = true;\n      if (isTimeView(viewForReduce)) {\n        acc.timeViewsCount += 1;\n      }\n    }\n    return acc;\n  }, {\n    hasUIView: false,\n    viewModeLookup: {},\n    timeViewsCount: 0\n  }), [viewRenderers, views]);\n  const currentViewMode = viewModeLookup[view];\n  const getCurrentViewMode = useEventCallback(() => currentViewMode);\n  const [popperView, setPopperView] = React.useState(currentViewMode === 'UI' ? view : null);\n  if (popperView !== view && viewModeLookup[view] === 'UI') {\n    setPopperView(view);\n  }\n  useEnhancedEffect(() => {\n    // Handle case of Date Time Picker without time renderers\n    if (currentViewMode === 'field' && state.open) {\n      setOpen(false);\n      setTimeout(() => {\n        fieldRef?.current?.setSelectedSections(view);\n        // focusing the input before the range selection is done\n        // calling it outside of timeout results in an inconsistent behavior between Safari And Chrome\n        fieldRef?.current?.focusField(view);\n      });\n    }\n  }, [view]); // eslint-disable-line react-hooks/exhaustive-deps\n\n  useEnhancedEffect(() => {\n    if (!state.open) {\n      return;\n    }\n    let newView = view;\n\n    // If the current view is a field view, go to the last popper view\n    if (currentViewMode === 'field' && popperView != null) {\n      newView = popperView;\n    }\n\n    // If the current view is not the default view and both are UI views\n    if (newView !== defaultView && viewModeLookup[newView] === 'UI' && viewModeLookup[defaultView] === 'UI') {\n      newView = defaultView;\n    }\n    if (newView !== view) {\n      setView(newView);\n    }\n    setFocusedView(newView, true);\n  }, [state.open]); // eslint-disable-line react-hooks/exhaustive-deps\n\n  const ownerState = React.useMemo(() => ({\n    isPickerValueEmpty: valueManager.areValuesEqual(adapter, value, valueManager.emptyValue),\n    isPickerOpen: state.open,\n    isPickerDisabled: props.disabled ?? false,\n    isPickerReadOnly: props.readOnly ?? false,\n    pickerOrientation: orientation,\n    pickerVariant: variant\n  }), [adapter, valueManager, value, state.open, orientation, variant, props.disabled, props.readOnly]);\n  const triggerStatus = React.useMemo(() => {\n    if (disableOpenPicker || !hasUIView) {\n      return 'hidden';\n    }\n    if (disabled || readOnly) {\n      return 'disabled';\n    }\n    return 'enabled';\n  }, [disableOpenPicker, hasUIView, disabled, readOnly]);\n  const wrappedGoToNextStep = useEventCallback(goToNextStep);\n  const defaultActionBarActions = React.useMemo(() => {\n    if (closeOnSelect && !hasSeveralSteps) {\n      return [];\n    }\n    return ['cancel', 'nextOrAccept'];\n  }, [closeOnSelect, hasSeveralSteps]);\n  const actionsContextValue = React.useMemo(() => ({\n    setValue,\n    setOpen,\n    clearValue,\n    setValueToToday,\n    acceptValueChanges,\n    cancelValueChanges,\n    setView,\n    goToNextStep: wrappedGoToNextStep\n  }), [setValue, setOpen, clearValue, setValueToToday, acceptValueChanges, cancelValueChanges, setView, wrappedGoToNextStep]);\n  const contextValue = React.useMemo(() => _extends({}, actionsContextValue, {\n    value,\n    timezone,\n    open: state.open,\n    views,\n    view: popperView,\n    initialView,\n    disabled: disabled ?? false,\n    readOnly: readOnly ?? false,\n    autoFocus: autoFocus ?? false,\n    variant,\n    orientation,\n    popupRef,\n    reduceAnimations,\n    triggerRef,\n    triggerStatus,\n    hasNextStep,\n    fieldFormat: format ?? '',\n    name,\n    label,\n    rootSx: sx,\n    rootRef,\n    rootClassName: className\n  }), [actionsContextValue, value, rootRef, variant, orientation, reduceAnimations, disabled, readOnly, format, className, name, label, sx, triggerStatus, hasNextStep, timezone, state.open, popperView, views, initialView, autoFocus]);\n  const privateContextValue = React.useMemo(() => ({\n    dismissViews,\n    ownerState,\n    hasUIView,\n    getCurrentViewMode,\n    rootRefObject,\n    labelId,\n    triggerElement,\n    viewContainerRole,\n    defaultActionBarActions,\n    onPopperExited\n  }), [dismissViews, ownerState, hasUIView, getCurrentViewMode, labelId, triggerElement, viewContainerRole, defaultActionBarActions, onPopperExited]);\n  const fieldPrivateContextValue = React.useMemo(() => ({\n    formatDensity,\n    enableAccessibleFieldDOMStructure,\n    selectedSections,\n    onSelectedSectionsChange,\n    fieldRef\n  }), [formatDensity, enableAccessibleFieldDOMStructure, selectedSections, onSelectedSectionsChange, fieldRef]);\n  const isValidContextValue = testedValue => {\n    const error = validator({\n      adapter,\n      value: testedValue,\n      timezone,\n      props\n    });\n    return !valueManager.hasError(error);\n  };\n  const renderCurrentView = () => {\n    if (popperView == null) {\n      return null;\n    }\n    const renderer = viewRenderers[popperView];\n    if (renderer == null) {\n      return null;\n    }\n    const rendererProps = _extends({}, propsToForwardToView, {\n      views,\n      timezone,\n      value: viewValue,\n      onChange: setValueAndGoToNextView,\n      view: popperView,\n      onViewChange: setView,\n      showViewSwitcher: timeViewsCount > 1,\n      timeViewsCount\n    }, viewContainerRole === 'tooltip' ? {\n      focusedView: null,\n      onFocusedViewChange: () => {}\n    } : {\n      focusedView,\n      onFocusedViewChange: setFocusedView\n    });\n    if (RendererInterceptor) {\n      return /*#__PURE__*/_jsx(RendererInterceptor, {\n        viewRenderers: viewRenderers,\n        popperView: popperView,\n        rendererProps: rendererProps\n      });\n    }\n    return renderer(rendererProps);\n  };\n  return {\n    providerProps: {\n      localeText,\n      contextValue,\n      privateContextValue,\n      actionsContextValue,\n      fieldPrivateContextValue,\n      isValidContextValue\n    },\n    renderCurrentView,\n    ownerState\n  };\n};","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickersLayoutUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersLayout', slot);\n}\nexport const pickersLayoutClasses = generateUtilityClasses('MuiPickersLayout', ['root', 'landscape', 'contentWrapper', 'toolbar', 'actionBar', 'tabs', 'shortcuts']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport Button from '@mui/material/Button';\nimport DialogActions from '@mui/material/DialogActions';\nimport { usePickerTranslations } from \"../hooks/usePickerTranslations.js\";\nimport { usePickerContext } from \"../hooks/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PickersActionBarRoot = styled(DialogActions, {\n  name: 'MuiPickersLayout',\n  slot: 'ActionBar'\n})({});\n\n/**\n * Demos:\n *\n * - [Custom slots and subcomponents](https://mui.com/x/react-date-pickers/custom-components/)\n * - [Custom layout](https://mui.com/x/react-date-pickers/custom-layout/)\n *\n * API:\n *\n * - [PickersActionBar API](https://mui.com/x/api/date-pickers/pickers-action-bar/)\n */\nfunction PickersActionBarComponent(props) {\n  const {\n      actions\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const translations = usePickerTranslations();\n  const {\n    clearValue,\n    setValueToToday,\n    acceptValueChanges,\n    cancelValueChanges,\n    goToNextStep,\n    hasNextStep\n  } = usePickerContext();\n  if (actions == null || actions.length === 0) {\n    return null;\n  }\n  const buttons = actions?.map(actionType => {\n    switch (actionType) {\n      case 'clear':\n        return /*#__PURE__*/_jsx(Button, {\n          onClick: clearValue,\n          children: translations.clearButtonLabel\n        }, actionType);\n      case 'cancel':\n        return /*#__PURE__*/_jsx(Button, {\n          onClick: cancelValueChanges,\n          children: translations.cancelButtonLabel\n        }, actionType);\n      case 'accept':\n        return /*#__PURE__*/_jsx(Button, {\n          onClick: acceptValueChanges,\n          children: translations.okButtonLabel\n        }, actionType);\n      case 'today':\n        return /*#__PURE__*/_jsx(Button, {\n          onClick: setValueToToday,\n          children: translations.todayButtonLabel\n        }, actionType);\n      case 'next':\n        return /*#__PURE__*/_jsx(Button, {\n          onClick: goToNextStep,\n          children: translations.nextStepButtonLabel\n        }, actionType);\n      case 'nextOrAccept':\n        if (hasNextStep) {\n          return /*#__PURE__*/_jsx(Button, {\n            onClick: goToNextStep,\n            children: translations.nextStepButtonLabel\n          }, actionType);\n        }\n        return /*#__PURE__*/_jsx(Button, {\n          onClick: acceptValueChanges,\n          children: translations.okButtonLabel\n        }, actionType);\n      default:\n        return null;\n    }\n  });\n  return /*#__PURE__*/_jsx(PickersActionBarRoot, _extends({}, other, {\n    children: buttons\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? PickersActionBarComponent.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Ordered array of actions to display.\n   * If empty, does not display that action bar.\n   * @default\n   * - `[]` for Pickers with one selection step which `closeOnSelect`.\n   * - `['cancel', 'nextOrAccept']` for all other Pickers.\n   */\n  actions: PropTypes.arrayOf(PropTypes.oneOf(['accept', 'cancel', 'clear', 'next', 'nextOrAccept', 'today']).isRequired),\n  /**\n   * If `true`, the actions do not have additional margin.\n   * @default false\n   */\n  disableSpacing: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nconst PickersActionBar = /*#__PURE__*/React.memo(PickersActionBarComponent);\nif (process.env.NODE_ENV !== \"production\") PickersActionBar.displayName = \"PickersActionBar\";\nexport { PickersActionBar };","export const DAY_SIZE = 36;\nexport const DAY_MARGIN = 2;\nexport const DIALOG_WIDTH = 320;\nexport const MAX_CALENDAR_HEIGHT = 280;\nexport const VIEW_HEIGHT = 336;\nexport const DIGITAL_CLOCK_VIEW_HEIGHT = 232;\nexport const MULTI_SECTION_CLOCK_SECTION_WIDTH = 48;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"items\", \"changeImportance\"],\n  _excluded2 = [\"getValue\"];\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport Chip from '@mui/material/Chip';\nimport { VIEW_HEIGHT } from \"../internals/constants/dimensions.js\";\nimport { useIsValidValue, usePickerActionsContext } from \"../hooks/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PickersShortcutsRoot = styled(List, {\n  name: 'MuiPickersLayout',\n  slot: 'Shortcuts'\n})({});\n\n/**\n * Demos:\n *\n * - [Shortcuts](https://mui.com/x/react-date-pickers/shortcuts/)\n *\n * API:\n *\n * - [PickersShortcuts API](https://mui.com/x/api/date-pickers/pickers-shortcuts/)\n */\nfunction PickersShortcuts(props) {\n  const {\n      items,\n      changeImportance = 'accept'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    setValue\n  } = usePickerActionsContext();\n  const isValidValue = useIsValidValue();\n  if (items == null || items.length === 0) {\n    return null;\n  }\n  const resolvedItems = items.map(_ref => {\n    let {\n        getValue\n      } = _ref,\n      item = _objectWithoutPropertiesLoose(_ref, _excluded2);\n    const newValue = getValue({\n      isValid: isValidValue\n    });\n    return _extends({}, item, {\n      label: item.label,\n      onClick: () => {\n        setValue(newValue, {\n          changeImportance,\n          shortcut: item,\n          source: 'view'\n        });\n      },\n      disabled: !isValidValue(newValue)\n    });\n  });\n  return /*#__PURE__*/_jsx(PickersShortcutsRoot, _extends({\n    dense: true,\n    sx: [{\n      maxHeight: VIEW_HEIGHT,\n      maxWidth: 200,\n      overflow: 'auto'\n    }, ...(Array.isArray(other.sx) ? other.sx : [other.sx])]\n  }, other, {\n    children: resolvedItems.map(item => {\n      return /*#__PURE__*/_jsx(ListItem, {\n        children: /*#__PURE__*/_jsx(Chip, _extends({}, item))\n      }, item.id ?? item.label);\n    })\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? PickersShortcuts.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Importance of the change when picking a shortcut:\n   * - \"accept\": fires `onChange`, fires `onAccept` and closes the Picker.\n   * - \"set\": fires `onChange` but do not fire `onAccept` and does not close the Picker.\n   * @default \"accept\"\n   */\n  changeImportance: PropTypes.oneOf(['accept', 'set']),\n  className: PropTypes.string,\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n   * the list and list items.\n   * The prop is available to descendant components as the `dense` context.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, vertical padding is removed from the list.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * Ordered array of shortcuts to display.\n   * If empty, does not display the shortcuts.\n   * @default []\n   */\n  items: PropTypes.arrayOf(PropTypes.shape({\n    getValue: PropTypes.func.isRequired,\n    id: PropTypes.string,\n    label: PropTypes.string.isRequired\n  })),\n  style: PropTypes.object,\n  /**\n   * The content of the subheader, normally `ListSubheader`.\n   */\n  subheader: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { PickersShortcuts };","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"ownerState\"];\nimport * as React from 'react';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { PickersActionBar } from \"../PickersActionBar/index.js\";\nimport { getPickersLayoutUtilityClass } from \"./pickersLayoutClasses.js\";\nimport { PickersShortcuts } from \"../PickersShortcuts/index.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { usePickerContext } from \"../hooks/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction toolbarHasView(toolbarProps) {\n  return toolbarProps.view !== null;\n}\nconst useUtilityClasses = (classes, ownerState) => {\n  const {\n    pickerOrientation\n  } = ownerState;\n  const slots = {\n    root: ['root', pickerOrientation === 'landscape' && 'landscape'],\n    contentWrapper: ['contentWrapper'],\n    toolbar: ['toolbar'],\n    actionBar: ['actionBar'],\n    tabs: ['tabs'],\n    landscape: ['landscape'],\n    shortcuts: ['shortcuts']\n  };\n  return composeClasses(slots, getPickersLayoutUtilityClass, classes);\n};\nconst usePickerLayout = props => {\n  const {\n    ownerState: pickerOwnerState,\n    defaultActionBarActions\n  } = usePickerPrivateContext();\n  const {\n    view\n  } = usePickerContext();\n  const isRtl = useRtl();\n  const {\n    children,\n    slots,\n    slotProps,\n    classes: classesProp\n  } = props;\n  const ownerState = React.useMemo(() => _extends({}, pickerOwnerState, {\n    layoutDirection: isRtl ? 'rtl' : 'ltr',\n    hasShortcuts: false\n  }), [pickerOwnerState, isRtl]);\n  const classes = useUtilityClasses(classesProp, ownerState);\n\n  // Action bar\n  const ActionBar = slots?.actionBar ?? PickersActionBar;\n  const _useSlotProps = useSlotProps({\n      elementType: ActionBar,\n      externalSlotProps: slotProps?.actionBar,\n      additionalProps: {\n        actions: defaultActionBarActions\n      },\n      className: classes.actionBar,\n      ownerState\n    }),\n    actionBarProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded);\n  const actionBar = /*#__PURE__*/_jsx(ActionBar, _extends({}, actionBarProps));\n\n  // Toolbar\n  const Toolbar = slots?.toolbar;\n  const toolbarProps = useSlotProps({\n    elementType: Toolbar,\n    externalSlotProps: slotProps?.toolbar,\n    className: classes.toolbar,\n    ownerState\n  });\n  const toolbar = toolbarHasView(toolbarProps) && !!Toolbar ? /*#__PURE__*/_jsx(Toolbar, _extends({}, toolbarProps)) : null;\n\n  // Content\n  const content = children;\n\n  // Tabs\n  const Tabs = slots?.tabs;\n  const tabs = view && Tabs ? /*#__PURE__*/_jsx(Tabs, _extends({\n    className: classes.tabs\n  }, slotProps?.tabs)) : null;\n\n  // Shortcuts\n  const Shortcuts = slots?.shortcuts ?? PickersShortcuts;\n  const shortcutsProps = useSlotProps({\n    elementType: Shortcuts,\n    externalSlotProps: slotProps?.shortcuts,\n    className: classes.shortcuts,\n    ownerState\n  });\n  const hasShortcuts = Array.isArray(shortcutsProps?.items) && shortcutsProps.items.length > 0;\n  const shortcuts = view && !!Shortcuts ? /*#__PURE__*/_jsx(Shortcuts, _extends({}, shortcutsProps)) : null;\n  return {\n    toolbar,\n    content,\n    tabs,\n    actionBar,\n    shortcuts,\n    ownerState: _extends({}, ownerState, {\n      hasShortcuts\n    })\n  };\n};\nexport default usePickerLayout;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { pickersLayoutClasses, getPickersLayoutUtilityClass } from \"./pickersLayoutClasses.js\";\nimport usePickerLayout from \"./usePickerLayout.js\";\nimport { usePickerContext } from \"../hooks/usePickerContext.js\";\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = (classes, ownerState) => {\n  const {\n    pickerOrientation\n  } = ownerState;\n  const slots = {\n    root: ['root', pickerOrientation === 'landscape' && 'landscape'],\n    contentWrapper: ['contentWrapper']\n  };\n  return composeClasses(slots, getPickersLayoutUtilityClass, classes);\n};\nexport const PickersLayoutRoot = styled('div', {\n  name: 'MuiPickersLayout',\n  slot: 'Root'\n})({\n  display: 'grid',\n  gridAutoColumns: 'max-content auto max-content',\n  gridAutoRows: 'max-content auto max-content',\n  [`& .${pickersLayoutClasses.actionBar}`]: {\n    gridColumn: '1 / 4',\n    gridRow: 3\n  },\n  variants: [{\n    props: {\n      pickerOrientation: 'landscape',\n      hasShortcuts: false\n    },\n    style: {\n      [`& .${pickersLayoutClasses.toolbar}`]: {\n        gridColumn: 1,\n        gridRow: '1 / 3'\n      }\n    }\n  }, {\n    props: {\n      pickerOrientation: 'landscape',\n      hasShortcuts: true\n    },\n    style: {\n      [`& .${pickersLayoutClasses.toolbar}`]: {\n        gridColumn: '2 / 4',\n        gridRow: 1,\n        maxWidth: 'max-content'\n      },\n      [`& .${pickersLayoutClasses.shortcuts}`]: {\n        gridColumn: 1,\n        gridRow: 2\n      }\n    }\n  }, {\n    props: {\n      pickerOrientation: 'portrait'\n    },\n    style: {\n      [`& .${pickersLayoutClasses.toolbar}`]: {\n        gridColumn: '2 / 4',\n        gridRow: 1\n      },\n      [`& .${pickersLayoutClasses.shortcuts}`]: {\n        gridColumn: 1,\n        gridRow: '2 / 3'\n      }\n    }\n  }, {\n    props: {\n      hasShortcuts: true,\n      layoutDirection: 'rtl'\n    },\n    style: {\n      [`& .${pickersLayoutClasses.shortcuts}`]: {\n        gridColumn: 4\n      }\n    }\n  }]\n});\nexport const PickersLayoutContentWrapper = styled('div', {\n  name: 'MuiPickersLayout',\n  slot: 'ContentWrapper'\n})({\n  gridColumn: '2 / 4',\n  gridRow: 2,\n  display: 'flex',\n  flexDirection: 'column'\n});\n/**\n * Demos:\n *\n * - [Custom layout](https://mui.com/x/react-date-pickers/custom-layout/)\n *\n * API:\n *\n * - [PickersLayout API](https://mui.com/x/api/date-pickers/pickers-layout/)\n */\nconst PickersLayout = /*#__PURE__*/React.forwardRef(function PickersLayout(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersLayout'\n  });\n  const {\n    toolbar,\n    content,\n    tabs,\n    actionBar,\n    shortcuts,\n    ownerState\n  } = usePickerLayout(props);\n  const {\n    orientation,\n    variant\n  } = usePickerContext();\n  const {\n    sx,\n    className,\n    classes: classesProp\n  } = props;\n  const classes = useUtilityClasses(classesProp, ownerState);\n  return /*#__PURE__*/_jsxs(PickersLayoutRoot, {\n    ref: ref,\n    sx: sx,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    children: [orientation === 'landscape' ? shortcuts : toolbar, orientation === 'landscape' ? toolbar : shortcuts, /*#__PURE__*/_jsx(PickersLayoutContentWrapper, {\n      className: classes.contentWrapper,\n      ownerState: ownerState,\n      children: variant === 'desktop' ? /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [content, tabs]\n      }) : /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [tabs, content]\n      })\n    }), actionBar]\n  });\n});\nif (process.env.NODE_ENV !== \"production\") PickersLayout.displayName = \"PickersLayout\";\nprocess.env.NODE_ENV !== \"production\" ? PickersLayout.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { PickersLayout };","import { createStepNavigation } from \"./createStepNavigation.js\";\nexport function createNonRangePickerStepNavigation(parameters) {\n  const {\n    steps\n  } = parameters;\n  return createStepNavigation({\n    steps,\n    isViewMatchingStep: (view, step) => {\n      return step.views == null || step.views.includes(view);\n    },\n    onStepChange: ({\n      step,\n      defaultView,\n      setView,\n      view,\n      views\n    }) => {\n      const targetView = step.views == null ? defaultView : step.views.find(viewBis => views.includes(viewBis));\n      if (targetView !== view) {\n        setView(targetView);\n      }\n    }\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"props\", \"steps\"],\n  _excluded2 = [\"ownerState\"];\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport { PickerPopper } from \"../../components/PickerPopper/PickerPopper.js\";\nimport { usePicker } from \"../usePicker/index.js\";\nimport { PickersLayout } from \"../../../PickersLayout/index.js\";\nimport { PickerProvider } from \"../../components/PickerProvider.js\";\nimport { createNonRangePickerStepNavigation } from \"../../utils/createNonRangePickerStepNavigation.js\";\n\n/**\n * Hook managing all the single-date desktop pickers:\n * - DesktopDatePicker\n * - DesktopDateTimePicker\n * - DesktopTimePicker\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const useDesktopPicker = _ref => {\n  let {\n      props,\n      steps\n    } = _ref,\n    pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const {\n    slots,\n    slotProps: innerSlotProps,\n    label,\n    inputRef,\n    localeText\n  } = props;\n  const getStepNavigation = createNonRangePickerStepNavigation({\n    steps\n  });\n  const {\n    providerProps,\n    renderCurrentView,\n    ownerState\n  } = usePicker(_extends({}, pickerParams, {\n    props,\n    localeText,\n    autoFocusView: true,\n    viewContainerRole: 'dialog',\n    variant: 'desktop',\n    getStepNavigation\n  }));\n  const labelId = providerProps.privateContextValue.labelId;\n  const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;\n  const Field = slots.field;\n  const _useSlotProps = useSlotProps({\n      elementType: Field,\n      externalSlotProps: innerSlotProps?.field,\n      additionalProps: _extends({}, isToolbarHidden && {\n        id: labelId\n      }),\n      ownerState\n    }),\n    fieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n  const Layout = slots.layout ?? PickersLayout;\n  let labelledById = labelId;\n  if (isToolbarHidden) {\n    if (label) {\n      labelledById = `${labelId}-label`;\n    } else {\n      labelledById = undefined;\n    }\n  }\n  const slotProps = _extends({}, innerSlotProps, {\n    toolbar: _extends({}, innerSlotProps?.toolbar, {\n      titleId: labelId\n    }),\n    popper: _extends({\n      'aria-labelledby': labelledById\n    }, innerSlotProps?.popper)\n  });\n  const renderPicker = () => /*#__PURE__*/_jsxs(PickerProvider, _extends({}, providerProps, {\n    children: [/*#__PURE__*/_jsx(Field, _extends({}, fieldProps, {\n      slots: _extends({}, slots, fieldProps.slots),\n      slotProps: _extends({}, slotProps, fieldProps.slotProps),\n      inputRef: inputRef\n    })), /*#__PURE__*/_jsx(PickerPopper, {\n      slots: slots,\n      slotProps: slotProps,\n      children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {\n        slots: slots,\n        slotProps: slotProps,\n        children: renderCurrentView()\n      }))\n    })]\n  }));\n  if (process.env.NODE_ENV !== \"production\") renderPicker.displayName = \"renderPicker\";\n  return {\n    renderPicker\n  };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { changeSectionValueFormat, cleanDigitSectionValue, doesSectionFormatHaveLeadingZeros, getDateSectionConfigFromFormatToken, getDaysInWeekStr, getLetterEditingOptions, applyLocalizedDigits, removeLocalizedDigits, isStringNumber } from \"./useField.utils.js\";\nimport { usePickerAdapter } from \"../../../hooks/usePickerAdapter.js\";\nconst isQueryResponseWithoutValue = response => response.saveQuery != null;\n\n/**\n * Update the active section value when the user pressed a key that is not a navigation key (arrow key for example).\n * This hook has two main editing behaviors\n *\n * 1. The numeric editing when the user presses a digit\n * 2. The letter editing when the user presses another key\n */\nexport const useFieldCharacterEditing = ({\n  stateResponse: {\n    // States and derived states\n    localizedDigits,\n    sectionsValueBoundaries,\n    state,\n    timezone,\n    // Methods to update the states\n    setCharacterQuery,\n    setTempAndroidValueStr,\n    updateSectionValue\n  }\n}) => {\n  const adapter = usePickerAdapter();\n  const applyQuery = ({\n    keyPressed,\n    sectionIndex\n  }, getFirstSectionValueMatchingWithQuery, isValidQueryValue) => {\n    const cleanKeyPressed = keyPressed.toLowerCase();\n    const activeSection = state.sections[sectionIndex];\n\n    // The current query targets the section being editing\n    // We can try to concatenate the value\n    if (state.characterQuery != null && (!isValidQueryValue || isValidQueryValue(state.characterQuery.value)) && state.characterQuery.sectionIndex === sectionIndex) {\n      const concatenatedQueryValue = `${state.characterQuery.value}${cleanKeyPressed}`;\n      const queryResponse = getFirstSectionValueMatchingWithQuery(concatenatedQueryValue, activeSection);\n      if (!isQueryResponseWithoutValue(queryResponse)) {\n        setCharacterQuery({\n          sectionIndex,\n          value: concatenatedQueryValue,\n          sectionType: activeSection.type\n        });\n        return queryResponse;\n      }\n    }\n    const queryResponse = getFirstSectionValueMatchingWithQuery(cleanKeyPressed, activeSection);\n    if (isQueryResponseWithoutValue(queryResponse) && !queryResponse.saveQuery) {\n      setCharacterQuery(null);\n      return null;\n    }\n    setCharacterQuery({\n      sectionIndex,\n      value: cleanKeyPressed,\n      sectionType: activeSection.type\n    });\n    if (isQueryResponseWithoutValue(queryResponse)) {\n      return null;\n    }\n    return queryResponse;\n  };\n  const applyLetterEditing = params => {\n    const findMatchingOptions = (format, options, queryValue) => {\n      const matchingValues = options.filter(option => option.toLowerCase().startsWith(queryValue));\n      if (matchingValues.length === 0) {\n        return {\n          saveQuery: false\n        };\n      }\n      return {\n        sectionValue: matchingValues[0],\n        shouldGoToNextSection: matchingValues.length === 1\n      };\n    };\n    const testQueryOnFormatAndFallbackFormat = (queryValue, activeSection, fallbackFormat, formatFallbackValue) => {\n      const getOptions = format => getLetterEditingOptions(adapter, timezone, activeSection.type, format);\n      if (activeSection.contentType === 'letter') {\n        return findMatchingOptions(activeSection.format, getOptions(activeSection.format), queryValue);\n      }\n\n      // When editing a digit-format month / weekDay and the user presses a letter,\n      // We can support the letter editing by using the letter-format month / weekDay and re-formatting the result.\n      // We just have to make sure that the default month / weekDay format is a letter format,\n      if (fallbackFormat && formatFallbackValue != null && getDateSectionConfigFromFormatToken(adapter, fallbackFormat).contentType === 'letter') {\n        const fallbackOptions = getOptions(fallbackFormat);\n        const response = findMatchingOptions(fallbackFormat, fallbackOptions, queryValue);\n        if (isQueryResponseWithoutValue(response)) {\n          return {\n            saveQuery: false\n          };\n        }\n        return _extends({}, response, {\n          sectionValue: formatFallbackValue(response.sectionValue, fallbackOptions)\n        });\n      }\n      return {\n        saveQuery: false\n      };\n    };\n    const getFirstSectionValueMatchingWithQuery = (queryValue, activeSection) => {\n      switch (activeSection.type) {\n        case 'month':\n          {\n            const formatFallbackValue = fallbackValue => changeSectionValueFormat(adapter, fallbackValue, adapter.formats.month, activeSection.format);\n            return testQueryOnFormatAndFallbackFormat(queryValue, activeSection, adapter.formats.month, formatFallbackValue);\n          }\n        case 'weekDay':\n          {\n            const formatFallbackValue = (fallbackValue, fallbackOptions) => fallbackOptions.indexOf(fallbackValue).toString();\n            return testQueryOnFormatAndFallbackFormat(queryValue, activeSection, adapter.formats.weekday, formatFallbackValue);\n          }\n        case 'meridiem':\n          {\n            return testQueryOnFormatAndFallbackFormat(queryValue, activeSection);\n          }\n        default:\n          {\n            return {\n              saveQuery: false\n            };\n          }\n      }\n    };\n    return applyQuery(params, getFirstSectionValueMatchingWithQuery);\n  };\n  const applyNumericEditing = params => {\n    const getNewSectionValue = ({\n      queryValue,\n      skipIfBelowMinimum,\n      section\n    }) => {\n      const cleanQueryValue = removeLocalizedDigits(queryValue, localizedDigits);\n      const queryValueNumber = Number(cleanQueryValue);\n      const sectionBoundaries = sectionsValueBoundaries[section.type]({\n        currentDate: null,\n        format: section.format,\n        contentType: section.contentType\n      });\n      if (queryValueNumber > sectionBoundaries.maximum) {\n        return {\n          saveQuery: false\n        };\n      }\n\n      // If the user types `0` on a month section,\n      // It is below the minimum, but we want to store the `0` in the query,\n      // So that when he pressed `1`, it will store `01` and move to the next section.\n      if (skipIfBelowMinimum && queryValueNumber < sectionBoundaries.minimum) {\n        return {\n          saveQuery: true\n        };\n      }\n      const shouldGoToNextSection = queryValueNumber * 10 > sectionBoundaries.maximum || cleanQueryValue.length === sectionBoundaries.maximum.toString().length;\n      const newSectionValue = cleanDigitSectionValue(adapter, queryValueNumber, sectionBoundaries, localizedDigits, section);\n      return {\n        sectionValue: newSectionValue,\n        shouldGoToNextSection\n      };\n    };\n    const getFirstSectionValueMatchingWithQuery = (queryValue, activeSection) => {\n      if (activeSection.contentType === 'digit' || activeSection.contentType === 'digit-with-letter') {\n        return getNewSectionValue({\n          queryValue,\n          skipIfBelowMinimum: false,\n          section: activeSection\n        });\n      }\n\n      // When editing a letter-format month and the user presses a digit,\n      // We can support the numeric editing by using the digit-format month and re-formatting the result.\n      if (activeSection.type === 'month') {\n        const hasLeadingZerosInFormat = doesSectionFormatHaveLeadingZeros(adapter, 'digit', 'month', 'MM');\n        const response = getNewSectionValue({\n          queryValue,\n          skipIfBelowMinimum: true,\n          section: {\n            type: activeSection.type,\n            format: 'MM',\n            hasLeadingZerosInFormat,\n            hasLeadingZerosInInput: true,\n            contentType: 'digit',\n            maxLength: 2\n          }\n        });\n        if (isQueryResponseWithoutValue(response)) {\n          return response;\n        }\n        const formattedValue = changeSectionValueFormat(adapter, response.sectionValue, 'MM', activeSection.format);\n        return _extends({}, response, {\n          sectionValue: formattedValue\n        });\n      }\n\n      // When editing a letter-format weekDay and the user presses a digit,\n      // We can support the numeric editing by returning the nth day in the week day array.\n      if (activeSection.type === 'weekDay') {\n        const response = getNewSectionValue({\n          queryValue,\n          skipIfBelowMinimum: true,\n          section: activeSection\n        });\n        if (isQueryResponseWithoutValue(response)) {\n          return response;\n        }\n        const formattedValue = getDaysInWeekStr(adapter, activeSection.format)[Number(response.sectionValue) - 1];\n        return _extends({}, response, {\n          sectionValue: formattedValue\n        });\n      }\n      return {\n        saveQuery: false\n      };\n    };\n    return applyQuery(params, getFirstSectionValueMatchingWithQuery, queryValue => isStringNumber(queryValue, localizedDigits));\n  };\n  return useEventCallback(params => {\n    const section = state.sections[params.sectionIndex];\n    const isNumericEditing = isStringNumber(params.keyPressed, localizedDigits);\n    const response = isNumericEditing ? applyNumericEditing(_extends({}, params, {\n      keyPressed: applyLocalizedDigits(params.keyPressed, localizedDigits)\n    })) : applyLetterEditing(params);\n    if (response == null) {\n      setTempAndroidValueStr(null);\n      return;\n    }\n    updateSectionValue({\n      section,\n      newSectionValue: response.sectionValue,\n      shouldGoToNextSection: response.shouldGoToNextSection\n    });\n  });\n};\n\n/**\n * The letter editing and the numeric editing each define a `CharacterEditingApplier`.\n * This function decides what the new section value should be and if the focus should switch to the next section.\n *\n * If it returns `null`, then the section value is not updated and the focus does not move.\n */\n\n/**\n * Function called by `applyQuery` which decides:\n * - what is the new section value ?\n * - should the query used to get this value be stored for the next key press ?\n *\n * If it returns `{ sectionValue: string; shouldGoToNextSection: boolean }`,\n * Then we store the query and update the section with the new value.\n *\n * If it returns `{ saveQuery: true` },\n * Then we store the query and don't update the section.\n *\n * If it returns `{ saveQuery: false },\n * Then we do nothing.\n */","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n *   const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n  const ref = React.useRef(UNINITIALIZED);\n  if (ref.current === UNINITIALIZED) {\n    ref.current = init(initArg);\n  }\n  return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n  // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- no need to put `fn` in the dependency array\n  /* eslint-disable react-hooks/exhaustive-deps */\n  React.useEffect(fn, EMPTY);\n  /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from \"../useLazyRef/useLazyRef.js\";\nimport useOnMount from \"../useOnMount/useOnMount.js\";\nexport class Timeout {\n  static create() {\n    return new Timeout();\n  }\n  currentId = null;\n\n  /**\n   * Executes `fn` after `delay`, clearing any previously scheduled call.\n   */\n  start(delay, fn) {\n    this.clear();\n    this.currentId = setTimeout(() => {\n      this.currentId = null;\n      fn();\n    }, delay);\n  }\n  clear = () => {\n    if (this.currentId !== null) {\n      clearTimeout(this.currentId);\n      this.currentId = null;\n    }\n  };\n  disposeEffect = () => {\n    return this.clear;\n  };\n}\nexport default function useTimeout() {\n  const timeout = useLazyRef(Timeout.create).current;\n  useOnMount(timeout.disposeEffect);\n  return timeout;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useControlled from '@mui/utils/useControlled';\nimport useTimeout from '@mui/utils/useTimeout';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { usePickerAdapter, usePickerTranslations } from \"../../../hooks/index.js\";\nimport { mergeDateIntoReferenceDate, getSectionsBoundaries, validateSections, getDateFromDateSections, parseSelectedSections, getLocalizedDigits, getSectionOrder } from \"./useField.utils.js\";\nimport { buildSectionsFromFormat } from \"./buildSectionsFromFormat.js\";\nimport { useValidation } from \"../../../validation/index.js\";\nimport { useControlledValue } from \"../useControlledValue.js\";\nimport { getSectionTypeGranularity } from \"../../utils/getDefaultReferenceDate.js\";\nconst QUERY_LIFE_DURATION_MS = 5000;\nexport const useFieldState = parameters => {\n  const adapter = usePickerAdapter();\n  const translations = usePickerTranslations();\n  const isRtl = useRtl();\n  const {\n    manager: {\n      validator,\n      valueType,\n      internal_valueManager: valueManager,\n      internal_fieldValueManager: fieldValueManager\n    },\n    internalPropsWithDefaults,\n    internalPropsWithDefaults: {\n      value: valueProp,\n      defaultValue,\n      referenceDate: referenceDateProp,\n      onChange,\n      format,\n      formatDensity = 'dense',\n      selectedSections: selectedSectionsProp,\n      onSelectedSectionsChange,\n      shouldRespectLeadingZeros = false,\n      timezone: timezoneProp,\n      enableAccessibleFieldDOMStructure = true\n    },\n    forwardedProps: {\n      error: errorProp\n    }\n  } = parameters;\n  const {\n    value,\n    handleValueChange,\n    timezone\n  } = useControlledValue({\n    name: 'a field component',\n    timezone: timezoneProp,\n    value: valueProp,\n    defaultValue,\n    referenceDate: referenceDateProp,\n    onChange,\n    valueManager\n  });\n  const valueRef = React.useRef(value);\n  React.useEffect(() => {\n    valueRef.current = value;\n  }, [value]);\n  const {\n    hasValidationError\n  } = useValidation({\n    props: internalPropsWithDefaults,\n    validator,\n    timezone,\n    value,\n    onError: internalPropsWithDefaults.onError\n  });\n  const localizedDigits = React.useMemo(() => getLocalizedDigits(adapter), [adapter]);\n  const sectionsValueBoundaries = React.useMemo(() => getSectionsBoundaries(adapter, localizedDigits, timezone), [adapter, localizedDigits, timezone]);\n  const getSectionsFromValue = React.useCallback(valueToAnalyze => fieldValueManager.getSectionsFromValue(valueToAnalyze, date => buildSectionsFromFormat({\n    adapter,\n    localeText: translations,\n    localizedDigits,\n    format,\n    date,\n    formatDensity,\n    shouldRespectLeadingZeros,\n    enableAccessibleFieldDOMStructure,\n    isRtl\n  })), [fieldValueManager, format, translations, localizedDigits, isRtl, shouldRespectLeadingZeros, adapter, formatDensity, enableAccessibleFieldDOMStructure]);\n  const [state, setState] = React.useState(() => {\n    const sections = getSectionsFromValue(value);\n    validateSections(sections, valueType);\n    const stateWithoutReferenceDate = {\n      sections,\n      lastExternalValue: value,\n      lastSectionsDependencies: {\n        format,\n        isRtl,\n        locale: adapter.locale\n      },\n      tempValueStrAndroid: null,\n      characterQuery: null\n    };\n    const granularity = getSectionTypeGranularity(sections);\n    const referenceValue = valueManager.getInitialReferenceValue({\n      referenceDate: referenceDateProp,\n      value,\n      adapter,\n      props: internalPropsWithDefaults,\n      granularity,\n      timezone\n    });\n    return _extends({}, stateWithoutReferenceDate, {\n      referenceValue\n    });\n  });\n  const [selectedSections, innerSetSelectedSections] = useControlled({\n    controlled: selectedSectionsProp,\n    default: null,\n    name: 'useField',\n    state: 'selectedSections'\n  });\n  const setSelectedSections = newSelectedSections => {\n    innerSetSelectedSections(newSelectedSections);\n    onSelectedSectionsChange?.(newSelectedSections);\n  };\n  const parsedSelectedSections = React.useMemo(() => parseSelectedSections(selectedSections, state.sections), [selectedSections, state.sections]);\n  const activeSectionIndex = parsedSelectedSections === 'all' ? 0 : parsedSelectedSections;\n  const sectionOrder = React.useMemo(() => getSectionOrder(state.sections, isRtl && !enableAccessibleFieldDOMStructure), [state.sections, isRtl, enableAccessibleFieldDOMStructure]);\n  const areAllSectionsEmpty = React.useMemo(() => state.sections.every(section => section.value === ''), [state.sections]);\n\n  // When the field loses focus (no active section), consider partially filled sections as invalid.\n  // This enforces that the field must be entirely filled or entirely empty on blur.\n  const hasPartiallyFilledSectionsOnBlur = React.useMemo(() => {\n    if (activeSectionIndex != null) {\n      return false;\n    }\n    const filledSections = state.sections.filter(s => s.value !== '');\n    return filledSections.length > 0 && state.sections.length - filledSections.length > 0;\n  }, [state.sections, activeSectionIndex]);\n  const error = React.useMemo(() => {\n    if (errorProp !== undefined) {\n      return errorProp;\n    }\n    return hasValidationError || hasPartiallyFilledSectionsOnBlur;\n  }, [hasValidationError, hasPartiallyFilledSectionsOnBlur, errorProp]);\n  const publishValue = newValue => {\n    const context = {\n      validationError: validator({\n        adapter,\n        value: newValue,\n        timezone,\n        props: internalPropsWithDefaults\n      })\n    };\n    handleValueChange(newValue, context);\n  };\n  const setSectionValue = (sectionIndex, newSectionValue) => {\n    const newSections = [...state.sections];\n    newSections[sectionIndex] = _extends({}, newSections[sectionIndex], {\n      value: newSectionValue,\n      modified: true\n    });\n    return newSections;\n  };\n  const sectionToUpdateOnNextInvalidDateRef = React.useRef(null);\n  const updateSectionValueOnNextInvalidDateTimeout = useTimeout();\n  const setSectionUpdateToApplyOnNextInvalidDate = newSectionValue => {\n    if (activeSectionIndex == null) {\n      return;\n    }\n    sectionToUpdateOnNextInvalidDateRef.current = {\n      sectionIndex: activeSectionIndex,\n      value: newSectionValue\n    };\n    updateSectionValueOnNextInvalidDateTimeout.start(0, () => {\n      sectionToUpdateOnNextInvalidDateRef.current = null;\n    });\n  };\n  const clearValue = () => {\n    if (valueManager.areValuesEqual(adapter, value, valueManager.emptyValue)) {\n      setState(prevState => _extends({}, prevState, {\n        sections: prevState.sections.map(section => _extends({}, section, {\n          value: ''\n        })),\n        tempValueStrAndroid: null,\n        characterQuery: null\n      }));\n    } else {\n      setState(prevState => _extends({}, prevState, {\n        characterQuery: null\n      }));\n      publishValue(valueManager.emptyValue);\n    }\n  };\n  const clearActiveSection = () => {\n    if (activeSectionIndex == null) {\n      return;\n    }\n    const activeSection = state.sections[activeSectionIndex];\n    if (activeSection.value === '') {\n      return;\n    }\n    setSectionUpdateToApplyOnNextInvalidDate('');\n    if (fieldValueManager.getDateFromSection(value, activeSection) === null) {\n      setState(prevState => _extends({}, prevState, {\n        sections: setSectionValue(activeSectionIndex, ''),\n        tempValueStrAndroid: null,\n        characterQuery: null\n      }));\n    } else {\n      setState(prevState => _extends({}, prevState, {\n        characterQuery: null\n      }));\n      publishValue(fieldValueManager.updateDateInValue(value, activeSection, null));\n    }\n  };\n  const updateValueFromValueStr = valueStr => {\n    const parseDateStr = (dateStr, referenceDate) => {\n      const date = adapter.parse(dateStr, format);\n      if (!adapter.isValid(date)) {\n        return null;\n      }\n      const sections = buildSectionsFromFormat({\n        adapter,\n        localeText: translations,\n        localizedDigits,\n        format,\n        date,\n        formatDensity,\n        shouldRespectLeadingZeros,\n        enableAccessibleFieldDOMStructure,\n        isRtl\n      });\n      return mergeDateIntoReferenceDate(adapter, date, sections, referenceDate, false);\n    };\n    const newValue = fieldValueManager.parseValueStr(valueStr, state.referenceValue, parseDateStr);\n    publishValue(newValue);\n  };\n  const cleanActiveDateSectionsIfValueNullTimeout = useTimeout();\n  const updateSectionValue = ({\n    section,\n    newSectionValue,\n    shouldGoToNextSection\n  }) => {\n    updateSectionValueOnNextInvalidDateTimeout.clear();\n    cleanActiveDateSectionsIfValueNullTimeout.clear();\n    const activeDate = fieldValueManager.getDateFromSection(value, section);\n\n    /**\n     * Decide which section should be focused\n     */\n    if (shouldGoToNextSection && activeSectionIndex < state.sections.length - 1) {\n      setSelectedSections(activeSectionIndex + 1);\n    }\n\n    /**\n     * Try to build a valid date from the new section value\n     */\n    const newSections = setSectionValue(activeSectionIndex, newSectionValue);\n    const newActiveDateSections = fieldValueManager.getDateSectionsFromValue(newSections, section);\n    const newActiveDate = getDateFromDateSections(adapter, newActiveDateSections, localizedDigits);\n\n    /**\n     * If the new date is valid,\n     * Then we merge the value of the modified sections into the reference date.\n     * This makes sure that we don't lose some information of the initial date (like the time on a date field).\n     */\n    if (adapter.isValid(newActiveDate)) {\n      const mergedDate = mergeDateIntoReferenceDate(adapter, newActiveDate, newActiveDateSections, fieldValueManager.getDateFromSection(state.referenceValue, section), true);\n      if (activeDate == null) {\n        cleanActiveDateSectionsIfValueNullTimeout.start(0, () => {\n          if (valueRef.current === value) {\n            setState(prevState => _extends({}, prevState, {\n              sections: fieldValueManager.clearDateSections(state.sections, section),\n              tempValueStrAndroid: null\n            }));\n          }\n        });\n      }\n      return publishValue(fieldValueManager.updateDateInValue(value, section, mergedDate));\n    }\n\n    /**\n     * If all the sections are filled but the date is invalid and the previous date is valid or null,\n     * Then we publish an invalid date.\n     */\n    if (newActiveDateSections.every(sectionBis => sectionBis.value !== '') && (activeDate == null || adapter.isValid(activeDate))) {\n      setSectionUpdateToApplyOnNextInvalidDate(newSectionValue);\n      return publishValue(fieldValueManager.updateDateInValue(value, section, newActiveDate));\n    }\n\n    /**\n     * If the previous date is not null,\n     * Then we publish the date as `newActiveDate to prevent error state oscillation`.\n     * @link: https://github.com/mui/mui-x/issues/17967\n     */\n    if (activeDate != null) {\n      setSectionUpdateToApplyOnNextInvalidDate(newSectionValue);\n      publishValue(fieldValueManager.updateDateInValue(value, section, newActiveDate));\n    }\n\n    /**\n     * If the previous date is already null,\n     * Then we don't publish the date and we update the sections.\n     */\n    return setState(prevState => _extends({}, prevState, {\n      sections: newSections,\n      tempValueStrAndroid: null\n    }));\n  };\n  const setTempAndroidValueStr = tempValueStrAndroid => setState(prevState => _extends({}, prevState, {\n    tempValueStrAndroid\n  }));\n  const setCharacterQuery = useEventCallback(newCharacterQuery => {\n    setState(prevState => _extends({}, prevState, {\n      characterQuery: newCharacterQuery\n    }));\n  });\n\n  // If `prop.value` changes, we update the state to reflect the new value\n  if (value !== state.lastExternalValue) {\n    const isActiveDateInvalid = sectionToUpdateOnNextInvalidDateRef.current != null && !adapter.isValid(fieldValueManager.getDateFromSection(value, state.sections[sectionToUpdateOnNextInvalidDateRef.current.sectionIndex]));\n    let sections;\n    if (isActiveDateInvalid) {\n      sections = setSectionValue(sectionToUpdateOnNextInvalidDateRef.current.sectionIndex, sectionToUpdateOnNextInvalidDateRef.current.value);\n    } else {\n      sections = getSectionsFromValue(value);\n    }\n    setState(prevState => _extends({}, prevState, {\n      lastExternalValue: value,\n      sections,\n      sectionsDependencies: {\n        format,\n        isRtl,\n        locale: adapter.locale\n      },\n      referenceValue: isActiveDateInvalid ? prevState.referenceValue : fieldValueManager.updateReferenceValue(adapter, value, prevState.referenceValue),\n      tempValueStrAndroid: null\n    }));\n  }\n  if (isRtl !== state.lastSectionsDependencies.isRtl || format !== state.lastSectionsDependencies.format || adapter.locale !== state.lastSectionsDependencies.locale) {\n    const sections = getSectionsFromValue(value);\n    validateSections(sections, valueType);\n    setState(prevState => _extends({}, prevState, {\n      lastSectionsDependencies: {\n        format,\n        isRtl,\n        locale: adapter.locale\n      },\n      sections,\n      tempValueStrAndroid: null,\n      characterQuery: null\n    }));\n  }\n  if (state.characterQuery != null && !error && activeSectionIndex == null) {\n    setCharacterQuery(null);\n  }\n  if (state.characterQuery != null && state.sections[state.characterQuery.sectionIndex]?.type !== state.characterQuery.sectionType) {\n    setCharacterQuery(null);\n  }\n  React.useEffect(() => {\n    if (sectionToUpdateOnNextInvalidDateRef.current != null) {\n      sectionToUpdateOnNextInvalidDateRef.current = null;\n    }\n  });\n  const cleanCharacterQueryTimeout = useTimeout();\n  React.useEffect(() => {\n    if (state.characterQuery != null) {\n      cleanCharacterQueryTimeout.start(QUERY_LIFE_DURATION_MS, () => setCharacterQuery(null));\n    }\n    return () => {};\n  }, [state.characterQuery, setCharacterQuery, cleanCharacterQueryTimeout]);\n\n  // If `tempValueStrAndroid` is still defined for some section when running `useEffect`,\n  // Then `onChange` has only been called once, which means the user pressed `Backspace` to reset the section.\n  // This causes a small flickering on Android,\n  // But we can't use `useEnhancedEffect` which is always called before the second `onChange` call and then would cause false positives.\n  React.useEffect(() => {\n    if (state.tempValueStrAndroid != null && activeSectionIndex != null) {\n      clearActiveSection();\n    }\n  }, [state.sections]); // eslint-disable-line react-hooks/exhaustive-deps\n\n  return {\n    // States and derived states\n    activeSectionIndex,\n    areAllSectionsEmpty,\n    error,\n    localizedDigits,\n    parsedSelectedSections,\n    sectionOrder,\n    sectionsValueBoundaries,\n    state,\n    timezone,\n    value,\n    // Methods to update the states\n    clearValue,\n    clearActiveSection,\n    setCharacterQuery,\n    setSelectedSections,\n    setTempAndroidValueStr,\n    updateSectionValue,\n    updateValueFromValueStr,\n    // Utilities methods\n    getSectionsFromValue\n  };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useForkRef from '@mui/utils/useForkRef';\nimport { useNullablePickerContext } from \"../useNullablePickerContext.js\";\nimport { useNullableFieldPrivateContext } from \"../useNullableFieldPrivateContext.js\";\n\n/**\n * Applies the default values to the field internal props.\n * This is a temporary hook that will be removed during a follow up when `useField` will receive the internal props without the defaults.\n * It is only here to allow the migration to be done in smaller steps.\n */\nexport function useFieldInternalPropsWithDefaults(parameters) {\n  const {\n    manager: {\n      internal_useApplyDefaultValuesToFieldInternalProps: useApplyDefaultValuesToFieldInternalProps\n    },\n    internalProps,\n    skipContextFieldRefAssignment\n  } = parameters;\n  const pickerContext = useNullablePickerContext();\n  const fieldPrivateContext = useNullableFieldPrivateContext();\n  const handleFieldRef = useForkRef(internalProps.unstableFieldRef, skipContextFieldRefAssignment ? null : fieldPrivateContext?.fieldRef);\n  const setValue = pickerContext?.setValue;\n  const handleChangeFromPicker = React.useCallback((newValue, ctx) => {\n    return setValue?.(newValue, {\n      validationError: ctx.validationError,\n      shouldClose: false\n    });\n  }, [setValue]);\n  const internalPropsWithDefaultsFromContext = React.useMemo(() => {\n    // If one of the context is null,\n    // Then the field is used as a standalone component and the other context will be null as well.\n    if (fieldPrivateContext != null && pickerContext != null) {\n      return _extends({\n        value: pickerContext.value,\n        onChange: handleChangeFromPicker,\n        timezone: pickerContext.timezone,\n        disabled: pickerContext.disabled,\n        readOnly: pickerContext.readOnly,\n        autoFocus: pickerContext.autoFocus && !pickerContext.open,\n        focused: pickerContext.open ? true : undefined,\n        format: pickerContext.fieldFormat,\n        formatDensity: fieldPrivateContext.formatDensity,\n        enableAccessibleFieldDOMStructure: fieldPrivateContext.enableAccessibleFieldDOMStructure,\n        selectedSections: fieldPrivateContext.selectedSections,\n        onSelectedSectionsChange: fieldPrivateContext.onSelectedSectionsChange,\n        unstableFieldRef: handleFieldRef\n      }, internalProps);\n    }\n    return internalProps;\n  }, [pickerContext, fieldPrivateContext, internalProps, handleChangeFromPicker, handleFieldRef]);\n  return useApplyDefaultValuesToFieldInternalProps(internalPropsWithDefaultsFromContext);\n}","import ownerDocument from '@mui/utils/ownerDocument';\nimport { getActiveElement } from \"../../utils/utils.js\";\nexport function syncSelectionToDOM(parameters) {\n  const {\n    focused,\n    domGetters,\n    stateResponse: {\n      // States and derived states\n      parsedSelectedSections,\n      state\n    }\n  } = parameters;\n  if (!domGetters.isReady()) {\n    return;\n  }\n  const selection = ownerDocument(domGetters.getRoot()).getSelection();\n  if (!selection) {\n    return;\n  }\n  if (parsedSelectedSections == null) {\n    // If the selection contains an element inside the field, we reset it.\n    if (selection.rangeCount > 0 &&\n    // Firefox can return a Restricted object here\n    selection.getRangeAt(0).startContainer instanceof Node && domGetters.getRoot().contains(selection.getRangeAt(0).startContainer)) {\n      selection.removeAllRanges();\n    }\n    if (focused) {\n      domGetters.getRoot().blur();\n    }\n    return;\n  }\n\n  // On multi input range pickers we want to update selection range only for the active input\n  if (!domGetters.getRoot().contains(getActiveElement(domGetters.getRoot()))) {\n    return;\n  }\n  const range = new window.Range();\n  let target;\n  if (parsedSelectedSections === 'all') {\n    target = domGetters.getRoot();\n  } else {\n    const section = state.sections[parsedSelectedSections];\n    if (section.type === 'empty') {\n      target = domGetters.getSectionContainer(parsedSelectedSections);\n    } else {\n      target = domGetters.getSectionContent(parsedSelectedSections);\n    }\n  }\n  range.selectNodeContents(target);\n  target.focus();\n  selection.removeAllRanges();\n  selection.addRange(range);\n}","import useEventCallback from '@mui/utils/useEventCallback';\nimport { cleanDigitSectionValue, getLetterEditingOptions, removeLocalizedDigits } from \"./useField.utils.js\";\nimport { usePickerAdapter } from \"../../../hooks/usePickerAdapter.js\";\n\n/**\n * Returns the `onKeyDown` handler to pass to the root element of the field.\n */\nexport function useFieldRootHandleKeyDown(parameters) {\n  const adapter = usePickerAdapter();\n  const {\n    manager: {\n      internal_fieldValueManager: fieldValueManager\n    },\n    internalPropsWithDefaults: {\n      minutesStep,\n      disabled,\n      readOnly\n    },\n    stateResponse: {\n      // States and derived states\n      state,\n      value,\n      activeSectionIndex,\n      parsedSelectedSections,\n      sectionsValueBoundaries,\n      localizedDigits,\n      timezone,\n      sectionOrder,\n      // Methods to update the states\n      clearValue,\n      clearActiveSection,\n      setSelectedSections,\n      updateSectionValue\n    }\n  } = parameters;\n  return useEventCallback(event => {\n    if (disabled) {\n      return;\n    }\n\n    // eslint-disable-next-line default-case\n    switch (true) {\n      // Select all\n      case (event.ctrlKey || event.metaKey) && String.fromCharCode(event.keyCode) === 'A' && !event.shiftKey && !event.altKey:\n        {\n          // prevent default to make sure that the next line \"select all\" while updating\n          // the internal state at the same time.\n          event.preventDefault();\n          setSelectedSections('all');\n          break;\n        }\n\n      // Move selection to next section\n      case event.key === 'ArrowRight':\n        {\n          event.preventDefault();\n          if (parsedSelectedSections == null) {\n            setSelectedSections(sectionOrder.startIndex);\n          } else if (parsedSelectedSections === 'all') {\n            setSelectedSections(sectionOrder.endIndex);\n          } else {\n            const nextSectionIndex = sectionOrder.neighbors[parsedSelectedSections].rightIndex;\n            if (nextSectionIndex !== null) {\n              setSelectedSections(nextSectionIndex);\n            }\n          }\n          break;\n        }\n\n      // Move selection to previous section\n      case event.key === 'ArrowLeft':\n        {\n          event.preventDefault();\n          if (parsedSelectedSections == null) {\n            setSelectedSections(sectionOrder.endIndex);\n          } else if (parsedSelectedSections === 'all') {\n            setSelectedSections(sectionOrder.startIndex);\n          } else {\n            const nextSectionIndex = sectionOrder.neighbors[parsedSelectedSections].leftIndex;\n            if (nextSectionIndex !== null) {\n              setSelectedSections(nextSectionIndex);\n            }\n          }\n          break;\n        }\n\n      // Reset the value of the selected section\n      case event.key === 'Delete':\n        {\n          event.preventDefault();\n          if (readOnly) {\n            break;\n          }\n          if (parsedSelectedSections == null || parsedSelectedSections === 'all') {\n            clearValue();\n          } else {\n            clearActiveSection();\n          }\n          break;\n        }\n\n      // Increment / decrement the selected section value\n      case ['ArrowUp', 'ArrowDown', 'Home', 'End', 'PageUp', 'PageDown'].includes(event.key):\n        {\n          event.preventDefault();\n          if (readOnly || activeSectionIndex == null) {\n            break;\n          }\n\n          // if all sections are selected, mark the currently editing one as selected\n          if (parsedSelectedSections === 'all') {\n            setSelectedSections(activeSectionIndex);\n          }\n          const activeSection = state.sections[activeSectionIndex];\n          const newSectionValue = adjustSectionValue(adapter, timezone, activeSection, event.key, sectionsValueBoundaries, localizedDigits, fieldValueManager.getDateFromSection(value, activeSection), {\n            minutesStep\n          });\n          updateSectionValue({\n            section: activeSection,\n            newSectionValue,\n            shouldGoToNextSection: false\n          });\n          break;\n        }\n    }\n  });\n}\nfunction getDeltaFromKeyCode(keyCode) {\n  switch (keyCode) {\n    case 'ArrowUp':\n      return 1;\n    case 'ArrowDown':\n      return -1;\n    case 'PageUp':\n      return 5;\n    case 'PageDown':\n      return -5;\n    default:\n      return 0;\n  }\n}\nfunction adjustSectionValue(adapter, timezone, section, keyCode, sectionsValueBoundaries, localizedDigits, activeDate, stepsAttributes) {\n  const delta = getDeltaFromKeyCode(keyCode);\n  const isStart = keyCode === 'Home';\n  const isEnd = keyCode === 'End';\n  const shouldSetAbsolute = section.value === '' || isStart || isEnd;\n  const adjustDigitSection = () => {\n    const sectionBoundaries = sectionsValueBoundaries[section.type]({\n      currentDate: activeDate,\n      format: section.format,\n      contentType: section.contentType\n    });\n    const getCleanValue = value => cleanDigitSectionValue(adapter, value, sectionBoundaries, localizedDigits, section);\n    const step = section.type === 'minutes' && stepsAttributes?.minutesStep ? stepsAttributes.minutesStep : 1;\n    let newSectionValueNumber;\n    if (shouldSetAbsolute) {\n      if (section.type === 'year' && !isEnd && !isStart) {\n        return adapter.formatByString(adapter.date(undefined, timezone), section.format);\n      }\n      if (delta > 0 || isStart) {\n        newSectionValueNumber = sectionBoundaries.minimum;\n      } else {\n        newSectionValueNumber = sectionBoundaries.maximum;\n      }\n    } else {\n      const currentSectionValue = parseInt(removeLocalizedDigits(section.value, localizedDigits), 10);\n      newSectionValueNumber = currentSectionValue + delta * step;\n    }\n    if (newSectionValueNumber % step !== 0) {\n      if (delta < 0 || isStart) {\n        newSectionValueNumber += step - (step + newSectionValueNumber) % step; // for JS -3 % 5 = -3 (should be 2)\n      }\n      if (delta > 0 || isEnd) {\n        newSectionValueNumber -= newSectionValueNumber % step;\n      }\n    }\n    if (newSectionValueNumber > sectionBoundaries.maximum) {\n      return getCleanValue(sectionBoundaries.minimum + (newSectionValueNumber - sectionBoundaries.maximum - 1) % (sectionBoundaries.maximum - sectionBoundaries.minimum + 1));\n    }\n    if (newSectionValueNumber < sectionBoundaries.minimum) {\n      return getCleanValue(sectionBoundaries.maximum - (sectionBoundaries.minimum - newSectionValueNumber - 1) % (sectionBoundaries.maximum - sectionBoundaries.minimum + 1));\n    }\n    return getCleanValue(newSectionValueNumber);\n  };\n  const adjustLetterSection = () => {\n    const options = getLetterEditingOptions(adapter, timezone, section.type, section.format);\n    if (options.length === 0) {\n      return section.value;\n    }\n    if (shouldSetAbsolute) {\n      if (delta > 0 || isStart) {\n        return options[0];\n      }\n      return options[options.length - 1];\n    }\n    const currentOptionIndex = options.indexOf(section.value);\n    const newOptionIndex = (currentOptionIndex + delta) % options.length;\n    const clampedIndex = (newOptionIndex + options.length) % options.length;\n    return options[clampedIndex];\n  };\n  if (section.contentType === 'digit' || section.contentType === 'digit-with-letter') {\n    return adjustDigitSection();\n  }\n  return adjustLetterSection();\n}","import useEventCallback from '@mui/utils/useEventCallback';\nimport useTimeout from '@mui/utils/useTimeout';\nimport { useFieldRootHandleKeyDown } from \"./useFieldRootHandleKeyDown.js\";\nimport { getActiveElement } from \"../../utils/utils.js\";\nimport { syncSelectionToDOM } from \"./syncSelectionToDOM.js\";\n\n/**\n * Generate the props to pass to the root element of the field.\n * It is not used by the non-accessible DOM structure (with an <input /> element for editing).\n * It should be used in the MUI accessible DOM structure and the Base UI implementation.\n * @param {UseFieldRootPropsParameters} parameters The parameters of the hook.\n * @returns {UseFieldRootPropsReturnValue} The props to forward to the root element of the field.\n */\nexport function useFieldRootProps(parameters) {\n  const {\n    manager,\n    focused,\n    setFocused,\n    domGetters,\n    stateResponse,\n    applyCharacterEditing,\n    internalPropsWithDefaults,\n    stateResponse: {\n      // States and derived states\n      parsedSelectedSections,\n      sectionOrder,\n      state,\n      // Methods to update the states\n      clearValue,\n      setCharacterQuery,\n      setSelectedSections,\n      updateValueFromValueStr\n    },\n    internalPropsWithDefaults: {\n      disabled = false,\n      readOnly = false\n    }\n  } = parameters;\n\n  // TODO: Inline onContainerKeyDown once the old DOM structure is removed\n  const handleKeyDown = useFieldRootHandleKeyDown({\n    manager,\n    internalPropsWithDefaults,\n    stateResponse\n  });\n  const containerClickTimeout = useTimeout();\n  const handleClick = useEventCallback(event => {\n    if (disabled || !domGetters.isReady()) {\n      return;\n    }\n    setFocused(true);\n    if (parsedSelectedSections === 'all') {\n      containerClickTimeout.start(0, () => {\n        const cursorPosition = document.getSelection().getRangeAt(0).startOffset;\n        if (cursorPosition === 0) {\n          setSelectedSections(sectionOrder.startIndex);\n          return;\n        }\n        let sectionIndex = 0;\n        let cursorOnStartOfSection = 0;\n        while (cursorOnStartOfSection < cursorPosition && sectionIndex < state.sections.length) {\n          const section = state.sections[sectionIndex];\n          sectionIndex += 1;\n          cursorOnStartOfSection += `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`.length;\n        }\n        setSelectedSections(sectionIndex - 1);\n      });\n    } else if (!focused) {\n      setFocused(true);\n      setSelectedSections(sectionOrder.startIndex);\n    } else {\n      const hasClickedOnASection = domGetters.getRoot().contains(event.target);\n      if (!hasClickedOnASection) {\n        setSelectedSections(sectionOrder.startIndex);\n      }\n    }\n  });\n  const handleInput = useEventCallback(event => {\n    if (!domGetters.isReady() || parsedSelectedSections !== 'all') {\n      return;\n    }\n    const target = event.target;\n    const keyPressed = target.textContent ?? '';\n    domGetters.getRoot().innerHTML = state.sections.map(section => `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`).join('');\n    syncSelectionToDOM({\n      focused,\n      domGetters,\n      stateResponse\n    });\n    if (keyPressed.length === 0 || keyPressed.charCodeAt(0) === 10) {\n      clearValue();\n      setSelectedSections('all');\n    } else if (keyPressed.length > 1) {\n      updateValueFromValueStr(keyPressed);\n    } else {\n      if (parsedSelectedSections === 'all') {\n        setSelectedSections(0);\n      }\n      applyCharacterEditing({\n        keyPressed,\n        sectionIndex: 0\n      });\n    }\n  });\n  const handlePaste = useEventCallback(event => {\n    if (readOnly || parsedSelectedSections !== 'all') {\n      event.preventDefault();\n      return;\n    }\n    const pastedValue = event.clipboardData.getData('text');\n    event.preventDefault();\n    setCharacterQuery(null);\n    updateValueFromValueStr(pastedValue);\n  });\n  const handleFocus = useEventCallback(() => {\n    if (focused || disabled || !domGetters.isReady()) {\n      return;\n    }\n    const activeElement = getActiveElement(domGetters.getRoot());\n    setFocused(true);\n    const isFocusInsideASection = domGetters.getSectionIndexFromDOMElement(activeElement) != null;\n    if (!isFocusInsideASection) {\n      setSelectedSections(sectionOrder.startIndex);\n    }\n  });\n  const handleBlur = useEventCallback(() => {\n    setTimeout(() => {\n      if (!domGetters.isReady()) {\n        return;\n      }\n      const activeElement = getActiveElement(domGetters.getRoot());\n      const shouldBlur = !domGetters.getRoot().contains(activeElement);\n      if (shouldBlur) {\n        setFocused(false);\n        setSelectedSections(null);\n      }\n    });\n  });\n  return {\n    // Event handlers\n    onKeyDown: handleKeyDown,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    onClick: handleClick,\n    onPaste: handlePaste,\n    onInput: handleInput,\n    // Other\n    contentEditable: parsedSelectedSections === 'all',\n    tabIndex: internalPropsWithDefaults.disabled || parsedSelectedSections === 0 ? -1 : 0 // TODO: Try to set to undefined when there is a section selected.\n  };\n}","import * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\n/**\n * Generate the props to pass to the hidden input element of the field.\n * It is not used by the non-accessible DOM structure (with an <input /> element for editing).\n * It should be used in the MUI accessible DOM structure and the Base UI implementation.\n * @param {UseFieldHiddenInputPropsParameters} parameters The parameters of the hook.\n * @returns {UseFieldHiddenInputPropsReturnValue} The props to forward to the hidden input element of the field.\n */\nexport function useFieldHiddenInputProps(parameters) {\n  const {\n    manager: {\n      internal_fieldValueManager: fieldValueManager\n    },\n    stateResponse: {\n      // States and derived states\n      areAllSectionsEmpty,\n      state,\n      // Methods to update the states\n      updateValueFromValueStr\n    }\n  } = parameters;\n  const handleChange = useEventCallback(event => {\n    updateValueFromValueStr(event.target.value);\n  });\n  const valueStr = React.useMemo(() => areAllSectionsEmpty ? '' : fieldValueManager.getV7HiddenInputValueFromSections(state.sections), [areAllSectionsEmpty, state.sections, fieldValueManager]);\n  return {\n    value: valueStr,\n    onChange: handleChange\n  };\n}","import * as React from 'react';\n/**\n * Generate the props to pass to the container element of each section of the field.\n * It is not used by the non-accessible DOM structure (with an <input /> element for editing).\n * It should be used in the MUI accessible DOM structure and the Base UI implementation.\n * @param {UseFieldRootPropsParameters} parameters The parameters of the hook.\n * @returns {UseFieldRootPropsReturnValue} The props to forward to the container element of each section of the field.\n */\nexport function useFieldSectionContainerProps(parameters) {\n  const {\n    stateResponse: {\n      // Methods to update the states\n      setSelectedSections\n    },\n    internalPropsWithDefaults: {\n      disabled = false\n    }\n  } = parameters;\n  const createHandleClick = React.useCallback(sectionIndex => event => {\n    // The click event on the clear button would propagate to the input, trigger this handler and result in a wrong section selection.\n    // We avoid this by checking if the call to this function is actually intended, or a side effect.\n    if (disabled || event.isDefaultPrevented()) {\n      return;\n    }\n    setSelectedSections(sectionIndex);\n  }, [disabled, setSelectedSections]);\n  return React.useCallback(sectionIndex => ({\n    'data-sectionindex': sectionIndex,\n    onClick: createHandleClick(sectionIndex)\n  }), [createHandleClick]);\n}","import * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { usePickerAdapter, usePickerTranslations } from \"../../../hooks/index.js\";\nimport { syncSelectionToDOM } from \"./syncSelectionToDOM.js\";\n/**\n * Generate the props to pass to the content element of each section of the field.\n * It is not used by the non-accessible DOM structure (with an <input /> element for editing).\n * It should be used in the MUI accessible DOM structure and the Base UI implementation.\n * @param {UseFieldRootPropsParameters} parameters The parameters of the hook.\n * @returns {UseFieldRootPropsReturnValue} The props to forward to the content element of each section of the field.\n */\nexport function useFieldSectionContentProps(parameters) {\n  const adapter = usePickerAdapter();\n  const translations = usePickerTranslations();\n  const {\n    focused,\n    domGetters,\n    stateResponse,\n    applyCharacterEditing,\n    manager: {\n      internal_fieldValueManager: fieldValueManager\n    },\n    stateResponse: {\n      // States and derived states\n      parsedSelectedSections,\n      sectionsValueBoundaries,\n      state,\n      value,\n      // Methods to update the states\n      clearActiveSection,\n      setCharacterQuery,\n      setSelectedSections,\n      updateSectionValue,\n      updateValueFromValueStr\n    },\n    internalPropsWithDefaults: {\n      disabled = false,\n      readOnly = false\n    }\n  } = parameters;\n  const isContainerEditable = parsedSelectedSections === 'all';\n  const isEditable = !isContainerEditable && !disabled && !readOnly;\n\n  /**\n   * If a section content has been updated with a value we don't want to keep,\n   * Then we need to imperatively revert it (we can't let React do it because the value did not change in his internal representation).\n   */\n  const revertDOMSectionChange = useEventCallback(sectionIndex => {\n    if (!domGetters.isReady()) {\n      return;\n    }\n    const section = state.sections[sectionIndex];\n    domGetters.getSectionContent(sectionIndex).innerHTML = section.value || section.placeholder;\n    syncSelectionToDOM({\n      focused,\n      domGetters,\n      stateResponse\n    });\n  });\n  const handleInput = useEventCallback(event => {\n    if (!domGetters.isReady()) {\n      return;\n    }\n    const target = event.target;\n    const keyPressed = target.textContent ?? '';\n    const sectionIndex = domGetters.getSectionIndexFromDOMElement(target);\n    const section = state.sections[sectionIndex];\n    if (readOnly) {\n      revertDOMSectionChange(sectionIndex);\n      return;\n    }\n    if (keyPressed.length === 0) {\n      if (section.value === '') {\n        revertDOMSectionChange(sectionIndex);\n        return;\n      }\n      const inputType = event.nativeEvent.inputType;\n      if (inputType === 'insertParagraph' || inputType === 'insertLineBreak') {\n        revertDOMSectionChange(sectionIndex);\n        return;\n      }\n      revertDOMSectionChange(sectionIndex);\n      clearActiveSection();\n      return;\n    }\n    applyCharacterEditing({\n      keyPressed,\n      sectionIndex\n    });\n\n    // The DOM value needs to remain the one React is expecting.\n    revertDOMSectionChange(sectionIndex);\n  });\n  const handleMouseUp = useEventCallback(event => {\n    // Without this, the browser will remove the selected when clicking inside an already-selected section.\n    event.preventDefault();\n  });\n  const handlePaste = useEventCallback(event => {\n    // prevent default to avoid the input `onInput` handler being called\n    event.preventDefault();\n    if (readOnly || disabled || typeof parsedSelectedSections !== 'number') {\n      return;\n    }\n    const activeSection = state.sections[parsedSelectedSections];\n    const pastedValue = event.clipboardData.getData('text');\n    const lettersOnly = /^[a-zA-Z]+$/.test(pastedValue);\n    const digitsOnly = /^[0-9]+$/.test(pastedValue);\n    const digitsAndLetterOnly = /^(([a-zA-Z]+)|)([0-9]+)(([a-zA-Z]+)|)$/.test(pastedValue);\n    const isValidPastedValue = activeSection.contentType === 'letter' && lettersOnly || activeSection.contentType === 'digit' && digitsOnly || activeSection.contentType === 'digit-with-letter' && digitsAndLetterOnly;\n    if (isValidPastedValue) {\n      setCharacterQuery(null);\n      updateSectionValue({\n        section: activeSection,\n        newSectionValue: pastedValue,\n        shouldGoToNextSection: true\n      });\n    }\n    // If the pasted value corresponds to a single section, but not the expected type, we skip the modification\n    else if (!lettersOnly && !digitsOnly) {\n      setCharacterQuery(null);\n      updateValueFromValueStr(pastedValue);\n    }\n  });\n  const handleDragOver = useEventCallback(event => {\n    event.preventDefault();\n    event.dataTransfer.dropEffect = 'none';\n  });\n  const createFocusHandler = React.useCallback(sectionIndex => () => {\n    if (disabled) {\n      return;\n    }\n    setSelectedSections(sectionIndex);\n  }, [disabled, setSelectedSections]);\n  return React.useCallback((section, sectionIndex) => {\n    const sectionBoundaries = sectionsValueBoundaries[section.type]({\n      currentDate: fieldValueManager.getDateFromSection(value, section),\n      contentType: section.contentType,\n      format: section.format\n    });\n    return {\n      // Event handlers\n      onInput: handleInput,\n      onPaste: handlePaste,\n      onMouseUp: handleMouseUp,\n      onDragOver: handleDragOver,\n      onFocus: createFocusHandler(sectionIndex),\n      // Aria attributes\n      'aria-readonly': readOnly,\n      'aria-valuenow': getSectionValueNow(section, adapter),\n      'aria-valuemin': sectionBoundaries.minimum,\n      'aria-valuemax': sectionBoundaries.maximum,\n      'aria-valuetext': section.value ? getSectionValueText(section, adapter) : translations.empty,\n      'aria-label': translations[section.type],\n      'aria-disabled': disabled,\n      // Other\n      tabIndex: !isEditable || isContainerEditable || sectionIndex > 0 ? -1 : 0,\n      contentEditable: !isContainerEditable && !disabled && !readOnly,\n      role: 'spinbutton',\n      'data-range-position': section.dateName || undefined,\n      spellCheck: isEditable ? false : undefined,\n      // Firefox hydrates this as `'none`' instead of `'off'`. No problems in chromium with both values.\n      // For reference https://github.com/mui/mui-x/issues/19012\n      autoCapitalize: isEditable ? 'none' : undefined,\n      autoCorrect: isEditable ? 'off' : undefined,\n      children: section.value || section.placeholder,\n      inputMode: section.contentType === 'letter' ? 'text' : 'numeric'\n    };\n  }, [sectionsValueBoundaries, isContainerEditable, disabled, readOnly, isEditable, translations, adapter, handleInput, handlePaste, handleMouseUp, handleDragOver, createFocusHandler, fieldValueManager, value]);\n}\nfunction getSectionValueText(section, adapter) {\n  if (!section.value) {\n    return undefined;\n  }\n  switch (section.type) {\n    case 'month':\n      {\n        if (section.contentType === 'digit') {\n          const dateWithMonth = adapter.setMonth(adapter.date(), Number(section.value) - 1);\n          return adapter.isValid(dateWithMonth) ? adapter.format(dateWithMonth, 'month') : '';\n        }\n        const parsedDate = adapter.parse(section.value, section.format);\n        return parsedDate && adapter.isValid(parsedDate) ? adapter.format(parsedDate, 'month') : undefined;\n      }\n    case 'day':\n      if (section.contentType === 'digit') {\n        const dateWithDay = adapter.setDate(adapter.startOfYear(adapter.date()), Number(section.value));\n        return adapter.isValid(dateWithDay) ? adapter.format(dateWithDay, 'dayOfMonthFull') : '';\n      }\n      return section.value;\n    case 'weekDay':\n      // TODO: improve by providing the label of the week day\n      return undefined;\n    default:\n      return undefined;\n  }\n}\nfunction getSectionValueNow(section, adapter) {\n  if (!section.value) {\n    return undefined;\n  }\n  switch (section.type) {\n    case 'weekDay':\n      {\n        if (section.contentType === 'letter') {\n          // TODO: improve by resolving the week day number from a letter week day\n          return undefined;\n        }\n        return Number(section.value);\n      }\n    case 'meridiem':\n      {\n        const parsedDate = adapter.parse(`01:00 ${section.value}`, `${adapter.formats.hours12h}:${adapter.formats.minutes} ${section.format}`);\n        if (parsedDate) {\n          return adapter.getHours(parsedDate) >= 12 ? 1 : 0;\n        }\n        return undefined;\n      }\n    case 'day':\n      return section.contentType === 'digit-with-letter' ? parseInt(section.value, 10) : Number(section.value);\n    case 'month':\n      {\n        if (section.contentType === 'digit') {\n          return Number(section.value);\n        }\n        const parsedDate = adapter.parse(section.value, section.format);\n        return parsedDate ? adapter.getMonth(parsedDate) + 1 : undefined;\n      }\n    default:\n      return section.contentType !== 'letter' ? Number(section.value) : undefined;\n  }\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useForkRef from '@mui/utils/useForkRef';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { parseSelectedSections } from \"./useField.utils.js\";\nimport { getActiveElement } from \"../../utils/utils.js\";\nimport { useSplitFieldProps } from \"../../../hooks/index.js\";\nimport { useFieldCharacterEditing } from \"./useFieldCharacterEditing.js\";\nimport { useFieldState } from \"./useFieldState.js\";\nimport { useFieldInternalPropsWithDefaults } from \"./useFieldInternalPropsWithDefaults.js\";\nimport { syncSelectionToDOM } from \"./syncSelectionToDOM.js\";\nimport { useFieldRootProps } from \"./useFieldRootProps.js\";\nimport { useFieldHiddenInputProps } from \"./useFieldHiddenInputProps.js\";\nimport { useFieldSectionContainerProps } from \"./useFieldSectionContainerProps.js\";\nimport { useFieldSectionContentProps } from \"./useFieldSectionContentProps.js\";\nexport const useFieldV7TextField = parameters => {\n  const {\n    props,\n    manager,\n    skipContextFieldRefAssignment,\n    manager: {\n      valueType,\n      internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel\n    }\n  } = parameters;\n  const {\n    internalProps,\n    forwardedProps\n  } = useSplitFieldProps(props, valueType);\n  const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({\n    manager,\n    internalProps,\n    skipContextFieldRefAssignment\n  });\n  const {\n    sectionListRef: sectionListRefProp,\n    onBlur,\n    onClick,\n    onFocus,\n    onInput,\n    onPaste,\n    onKeyDown,\n    onClear,\n    clearable\n  } = forwardedProps;\n  const {\n    disabled = false,\n    readOnly = false,\n    autoFocus = false,\n    focused: focusedProp,\n    unstableFieldRef\n  } = internalPropsWithDefaults;\n  const sectionListRef = React.useRef(null);\n  const handleSectionListRef = useForkRef(sectionListRefProp, sectionListRef);\n  const domGetters = React.useMemo(() => ({\n    isReady: () => sectionListRef.current != null,\n    getRoot: () => sectionListRef.current.getRoot(),\n    getSectionContainer: sectionIndex => sectionListRef.current.getSectionContainer(sectionIndex),\n    getSectionContent: sectionIndex => sectionListRef.current.getSectionContent(sectionIndex),\n    getSectionIndexFromDOMElement: element => sectionListRef.current.getSectionIndexFromDOMElement(element)\n  }), [sectionListRef]);\n  const stateResponse = useFieldState({\n    manager,\n    internalPropsWithDefaults,\n    forwardedProps\n  });\n  const {\n    // States and derived states\n    areAllSectionsEmpty,\n    error,\n    parsedSelectedSections,\n    sectionOrder,\n    state,\n    value,\n    // Methods to update the states\n    clearValue,\n    setSelectedSections\n  } = stateResponse;\n  const applyCharacterEditing = useFieldCharacterEditing({\n    stateResponse\n  });\n  const openPickerAriaLabel = useOpenPickerButtonAriaLabel(value);\n  const [focused, setFocused] = React.useState(false);\n  function focusField(newSelectedSections = 0) {\n    if (disabled || !sectionListRef.current ||\n    // if the field is already focused, we don't need to focus it again\n    getActiveSectionIndex(sectionListRef) != null) {\n      return;\n    }\n    const newParsedSelectedSections = parseSelectedSections(newSelectedSections, state.sections);\n    setFocused(true);\n    sectionListRef.current.getSectionContent(newParsedSelectedSections).focus();\n  }\n  const rootProps = useFieldRootProps({\n    manager,\n    internalPropsWithDefaults,\n    stateResponse,\n    applyCharacterEditing,\n    focused,\n    setFocused,\n    domGetters\n  });\n  const hiddenInputProps = useFieldHiddenInputProps({\n    manager,\n    stateResponse\n  });\n  const createSectionContainerProps = useFieldSectionContainerProps({\n    stateResponse,\n    internalPropsWithDefaults\n  });\n  const createSectionContentProps = useFieldSectionContentProps({\n    manager,\n    stateResponse,\n    applyCharacterEditing,\n    internalPropsWithDefaults,\n    domGetters,\n    focused\n  });\n  const handleRootKeyDown = useEventCallback(event => {\n    onKeyDown?.(event);\n    rootProps.onKeyDown(event);\n  });\n  const handleRootBlur = useEventCallback(event => {\n    onBlur?.(event);\n    rootProps.onBlur(event);\n  });\n  const handleRootFocus = useEventCallback(event => {\n    onFocus?.(event);\n    rootProps.onFocus(event);\n  });\n  const handleRootClick = useEventCallback(event => {\n    // The click event on the clear or open button would propagate to the input, trigger this handler and result in an inadvertent section selection.\n    // We avoid this by checking if the call of `handleInputClick` is actually intended, or a propagated call, which should be skipped.\n    if (event.isDefaultPrevented()) {\n      return;\n    }\n    onClick?.(event);\n    rootProps.onClick(event);\n  });\n  const handleRootPaste = useEventCallback(event => {\n    onPaste?.(event);\n    rootProps.onPaste(event);\n  });\n  const handleRootInput = useEventCallback(event => {\n    onInput?.(event);\n    rootProps.onInput(event);\n  });\n  const handleClear = useEventCallback((event, ...args) => {\n    event.preventDefault();\n    onClear?.(event, ...args);\n    clearValue();\n    if (!isFieldFocused(sectionListRef)) {\n      // setSelectedSections is called internally\n      focusField(0);\n    } else {\n      setSelectedSections(sectionOrder.startIndex);\n    }\n  });\n  const elements = React.useMemo(() => {\n    return state.sections.map((section, sectionIndex) => {\n      const content = createSectionContentProps(section, sectionIndex);\n      return {\n        container: createSectionContainerProps(sectionIndex),\n        content: createSectionContentProps(section, sectionIndex),\n        before: {\n          children: section.startSeparator\n        },\n        after: {\n          children: section.endSeparator,\n          'data-range-position': section.isEndFormatSeparator ? content['data-range-position'] : undefined\n        }\n      };\n    });\n  }, [state.sections, createSectionContainerProps, createSectionContentProps]);\n  React.useEffect(() => {\n    if (sectionListRef.current == null) {\n      throw new Error(['MUI X: The `sectionListRef` prop has not been initialized by `PickersSectionList`', 'You probably tried to pass a component to the `textField` slot that contains an `<input />` element instead of a `PickersSectionList`.', '', 'If you want to keep using an `<input />` HTML element for the editing, please add the `enableAccessibleFieldDOMStructure={false}` prop to your Picker or Field component:', '', '<DatePicker enableAccessibleFieldDOMStructure={false} slots={{ textField: MyCustomTextField }} />', '', 'Learn more about the field accessible DOM structure on the MUI documentation: https://mui.com/x/react-date-pickers/fields/#fields-to-edit-a-single-element'].join('\\n'));\n    }\n    if (autoFocus && !disabled && sectionListRef.current) {\n      sectionListRef.current.getSectionContent(sectionOrder.startIndex).focus();\n    }\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n  useEnhancedEffect(() => {\n    if (!focused || !sectionListRef.current) {\n      return;\n    }\n    if (parsedSelectedSections === 'all') {\n      sectionListRef.current.getRoot().focus();\n    } else if (typeof parsedSelectedSections === 'number') {\n      const domElement = sectionListRef.current.getSectionContent(parsedSelectedSections);\n      if (domElement) {\n        domElement.focus();\n      }\n    }\n  }, [parsedSelectedSections, focused]);\n  useEnhancedEffect(() => {\n    syncSelectionToDOM({\n      focused,\n      domGetters,\n      stateResponse\n    });\n  });\n  React.useImperativeHandle(unstableFieldRef, () => ({\n    getSections: () => state.sections,\n    getActiveSectionIndex: () => getActiveSectionIndex(sectionListRef),\n    setSelectedSections: newSelectedSections => {\n      if (disabled || !sectionListRef.current) {\n        return;\n      }\n      const newParsedSelectedSections = parseSelectedSections(newSelectedSections, state.sections);\n      const newActiveSectionIndex = newParsedSelectedSections === 'all' ? 0 : newParsedSelectedSections;\n      setFocused(newActiveSectionIndex !== null);\n      setSelectedSections(newSelectedSections);\n    },\n    focusField,\n    isFieldFocused: () => isFieldFocused(sectionListRef)\n  }));\n  return _extends({}, forwardedProps, rootProps, {\n    onBlur: handleRootBlur,\n    onClick: handleRootClick,\n    onFocus: handleRootFocus,\n    onInput: handleRootInput,\n    onPaste: handleRootPaste,\n    onKeyDown: handleRootKeyDown,\n    onClear: handleClear\n  }, hiddenInputProps, {\n    error,\n    clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled),\n    focused: focusedProp ?? focused,\n    sectionListRef: handleSectionListRef,\n    // Additional\n    enableAccessibleFieldDOMStructure: true,\n    elements,\n    areAllSectionsEmpty,\n    disabled,\n    readOnly,\n    autoFocus,\n    openPickerAriaLabel\n  });\n};\nfunction getActiveSectionIndex(sectionListRef) {\n  const activeElement = getActiveElement(sectionListRef.current?.getRoot());\n  if (!activeElement || !sectionListRef.current || !sectionListRef.current.getRoot().contains(activeElement)) {\n    return null;\n  }\n  return sectionListRef.current.getSectionIndexFromDOMElement(activeElement);\n}\nfunction isFieldFocused(sectionListRef) {\n  const activeElement = getActiveElement(sectionListRef.current?.getRoot());\n  return !!sectionListRef.current && sectionListRef.current.getRoot().contains(activeElement);\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useTimeout from '@mui/utils/useTimeout';\nimport useForkRef from '@mui/utils/useForkRef';\nimport { useSplitFieldProps } from \"../../../hooks/index.js\";\nimport { getActiveElement } from \"../../utils/utils.js\";\nimport { getSectionVisibleValue, isAndroid } from \"./useField.utils.js\";\nimport { useFieldCharacterEditing } from \"./useFieldCharacterEditing.js\";\nimport { useFieldRootHandleKeyDown } from \"./useFieldRootHandleKeyDown.js\";\nimport { useFieldState } from \"./useFieldState.js\";\nimport { useFieldInternalPropsWithDefaults } from \"./useFieldInternalPropsWithDefaults.js\";\nconst cleanString = dirtyString => dirtyString.replace(/[\\u2066\\u2067\\u2068\\u2069]/g, '');\nexport const addPositionPropertiesToSections = (sections, localizedDigits, isRtl) => {\n  let position = 0;\n  let positionInInput = isRtl ? 1 : 0;\n  const newSections = [];\n  for (let i = 0; i < sections.length; i += 1) {\n    const section = sections[i];\n    const renderedValue = getSectionVisibleValue(section, isRtl ? 'input-rtl' : 'input-ltr', localizedDigits);\n    const sectionStr = `${section.startSeparator}${renderedValue}${section.endSeparator}`;\n    const sectionLength = cleanString(sectionStr).length;\n    const sectionLengthInInput = sectionStr.length;\n\n    // The ...InInput values consider the unicode characters but do include them in their indexes\n    const cleanedValue = cleanString(renderedValue);\n    const startInInput = positionInInput + (cleanedValue === '' ? 0 : renderedValue.indexOf(cleanedValue[0])) + section.startSeparator.length;\n    const endInInput = startInInput + cleanedValue.length;\n    newSections.push(_extends({}, section, {\n      start: position,\n      end: position + sectionLength,\n      startInInput,\n      endInInput\n    }));\n    position += sectionLength;\n    // Move position to the end of string associated to the current section\n    positionInInput += sectionLengthInInput;\n  }\n  return newSections;\n};\nexport const useFieldV6TextField = parameters => {\n  const isRtl = useRtl();\n  const focusTimeout = useTimeout();\n  const selectionSyncTimeout = useTimeout();\n  const {\n    props,\n    manager,\n    skipContextFieldRefAssignment,\n    manager: {\n      valueType,\n      internal_valueManager: valueManager,\n      internal_fieldValueManager: fieldValueManager,\n      internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel\n    }\n  } = parameters;\n  const {\n    internalProps,\n    forwardedProps\n  } = useSplitFieldProps(props, valueType);\n  const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({\n    manager,\n    internalProps,\n    skipContextFieldRefAssignment\n  });\n  const {\n    onFocus,\n    onClick,\n    onPaste,\n    onBlur,\n    onKeyDown,\n    onClear,\n    clearable,\n    inputRef: inputRefProp,\n    placeholder: inPlaceholder\n  } = forwardedProps;\n  const {\n    readOnly = false,\n    disabled = false,\n    autoFocus = false,\n    focused,\n    unstableFieldRef\n  } = internalPropsWithDefaults;\n  const inputRef = React.useRef(null);\n  const handleRef = useForkRef(inputRefProp, inputRef);\n  const stateResponse = useFieldState({\n    manager,\n    internalPropsWithDefaults,\n    forwardedProps\n  });\n  const {\n    // States and derived states\n    activeSectionIndex,\n    areAllSectionsEmpty,\n    error,\n    localizedDigits,\n    parsedSelectedSections,\n    sectionOrder,\n    state,\n    value,\n    // Methods to update the states\n    clearValue,\n    clearActiveSection,\n    setCharacterQuery,\n    setSelectedSections,\n    setTempAndroidValueStr,\n    updateSectionValue,\n    updateValueFromValueStr,\n    // Utilities methods\n    getSectionsFromValue\n  } = stateResponse;\n  const applyCharacterEditing = useFieldCharacterEditing({\n    stateResponse\n  });\n  const openPickerAriaLabel = useOpenPickerButtonAriaLabel(value);\n  const sections = React.useMemo(() => addPositionPropertiesToSections(state.sections, localizedDigits, isRtl), [state.sections, localizedDigits, isRtl]);\n  function syncSelectionFromDOM() {\n    const browserStartIndex = inputRef.current.selectionStart ?? 0;\n    let nextSectionIndex;\n    if (browserStartIndex <= sections[0].startInInput) {\n      // Special case if browser index is in invisible characters at the beginning\n      nextSectionIndex = 1;\n    } else if (browserStartIndex >= sections[sections.length - 1].endInInput) {\n      // If the click is after the last character of the input, then we want to select the 1st section.\n      nextSectionIndex = 1;\n    } else {\n      nextSectionIndex = sections.findIndex(section => section.startInInput - section.startSeparator.length > browserStartIndex);\n    }\n    const sectionIndex = nextSectionIndex === -1 ? sections.length - 1 : nextSectionIndex - 1;\n    setSelectedSections(sectionIndex);\n  }\n  function focusField(newSelectedSection = 0) {\n    if (getActiveElement(inputRef.current) === inputRef.current) {\n      return;\n    }\n    inputRef.current?.focus();\n    setSelectedSections(newSelectedSection);\n  }\n  const handleInputFocus = useEventCallback(event => {\n    onFocus?.(event);\n    // The ref is guaranteed to be resolved at this point.\n    const input = inputRef.current;\n    focusTimeout.start(0, () => {\n      // The ref changed, the component got remounted, the focus event is no longer relevant.\n      if (!input || input !== inputRef.current) {\n        return;\n      }\n      if (activeSectionIndex != null) {\n        return;\n      }\n      if (\n      // avoid selecting all sections when focusing empty field without value\n      input.value.length && Number(input.selectionEnd) - Number(input.selectionStart) === input.value.length) {\n        setSelectedSections('all');\n      } else {\n        syncSelectionFromDOM();\n      }\n    });\n  });\n  const handleInputClick = useEventCallback((event, ...args) => {\n    // The click event on the clear button would propagate to the input, trigger this handler and result in a wrong section selection.\n    // We avoid this by checking if the call of `handleInputClick` is actually intended, or a side effect.\n    if (event.isDefaultPrevented()) {\n      return;\n    }\n    onClick?.(event, ...args);\n    syncSelectionFromDOM();\n  });\n  const handleInputPaste = useEventCallback(event => {\n    onPaste?.(event);\n\n    // prevent default to avoid the input `onChange` handler being called\n    event.preventDefault();\n    if (readOnly || disabled) {\n      return;\n    }\n    const pastedValue = event.clipboardData.getData('text');\n    if (typeof parsedSelectedSections === 'number') {\n      const activeSection = state.sections[parsedSelectedSections];\n      const lettersOnly = /^[a-zA-Z]+$/.test(pastedValue);\n      const digitsOnly = /^[0-9]+$/.test(pastedValue);\n      const digitsAndLetterOnly = /^(([a-zA-Z]+)|)([0-9]+)(([a-zA-Z]+)|)$/.test(pastedValue);\n      const isValidPastedValue = activeSection.contentType === 'letter' && lettersOnly || activeSection.contentType === 'digit' && digitsOnly || activeSection.contentType === 'digit-with-letter' && digitsAndLetterOnly;\n      if (isValidPastedValue) {\n        setCharacterQuery(null);\n        updateSectionValue({\n          section: activeSection,\n          newSectionValue: pastedValue,\n          shouldGoToNextSection: true\n        });\n        return;\n      }\n      if (lettersOnly || digitsOnly) {\n        // The pasted value corresponds to a single section, but not the expected type,\n        // skip the modification\n        return;\n      }\n    }\n    setCharacterQuery(null);\n    updateValueFromValueStr(pastedValue);\n  });\n  const handleContainerBlur = useEventCallback(event => {\n    onBlur?.(event);\n    setSelectedSections(null);\n  });\n  const handleInputChange = useEventCallback(event => {\n    if (readOnly) {\n      return;\n    }\n    const targetValue = event.target.value;\n    if (targetValue === '') {\n      clearValue();\n      return;\n    }\n    const eventData = event.nativeEvent.data;\n    // Calling `.fill(04/11/2022)` in playwright will trigger a change event with the requested content to insert in `event.nativeEvent.data`\n    // usual changes have only the currently typed character in the `event.nativeEvent.data`\n    const shouldUseEventData = eventData && eventData.length > 1;\n    const valueStr = shouldUseEventData ? eventData : targetValue;\n    const cleanValueStr = cleanString(valueStr);\n    if (parsedSelectedSections === 'all') {\n      setSelectedSections(activeSectionIndex);\n    }\n\n    // If no section is selected or eventData should be used, we just try to parse the new value\n    // This line is mostly triggered by imperative code / application tests.\n    if (activeSectionIndex == null || shouldUseEventData) {\n      updateValueFromValueStr(shouldUseEventData ? eventData : cleanValueStr);\n      return;\n    }\n    let keyPressed;\n    if (parsedSelectedSections === 'all' && cleanValueStr.length === 1) {\n      keyPressed = cleanValueStr;\n    } else {\n      const prevValueStr = cleanString(fieldValueManager.getV6InputValueFromSections(sections, localizedDigits, isRtl));\n      let startOfDiffIndex = -1;\n      let endOfDiffIndex = -1;\n      for (let i = 0; i < prevValueStr.length; i += 1) {\n        if (startOfDiffIndex === -1 && prevValueStr[i] !== cleanValueStr[i]) {\n          startOfDiffIndex = i;\n        }\n        if (endOfDiffIndex === -1 && prevValueStr[prevValueStr.length - i - 1] !== cleanValueStr[cleanValueStr.length - i - 1]) {\n          endOfDiffIndex = i;\n        }\n      }\n      const activeSection = sections[activeSectionIndex];\n      const hasDiffOutsideOfActiveSection = startOfDiffIndex < activeSection.start || prevValueStr.length - endOfDiffIndex - 1 > activeSection.end;\n      if (hasDiffOutsideOfActiveSection) {\n        // TODO: Support if the new date is valid\n        return;\n      }\n\n      // The active section being selected, the browser has replaced its value with the key pressed by the user.\n      const activeSectionEndRelativeToNewValue = cleanValueStr.length - prevValueStr.length + activeSection.end - cleanString(activeSection.endSeparator || '').length;\n      keyPressed = cleanValueStr.slice(activeSection.start + cleanString(activeSection.startSeparator || '').length, activeSectionEndRelativeToNewValue);\n    }\n    if (keyPressed.length === 0) {\n      if (isAndroid()) {\n        setTempAndroidValueStr(valueStr);\n      }\n      clearActiveSection();\n      return;\n    }\n    applyCharacterEditing({\n      keyPressed,\n      sectionIndex: activeSectionIndex\n    });\n  });\n  const handleClear = useEventCallback((event, ...args) => {\n    event.preventDefault();\n    onClear?.(event, ...args);\n    clearValue();\n    if (!isFieldFocused(inputRef)) {\n      // setSelectedSections is called internally\n      focusField(0);\n    } else {\n      setSelectedSections(sectionOrder.startIndex);\n    }\n  });\n  const handleContainerKeyDown = useFieldRootHandleKeyDown({\n    manager,\n    internalPropsWithDefaults,\n    stateResponse\n  });\n  const wrappedHandleContainerKeyDown = useEventCallback(event => {\n    onKeyDown?.(event);\n    handleContainerKeyDown(event);\n  });\n  const placeholder = React.useMemo(() => {\n    if (inPlaceholder !== undefined) {\n      return inPlaceholder;\n    }\n    return fieldValueManager.getV6InputValueFromSections(getSectionsFromValue(valueManager.emptyValue), localizedDigits, isRtl);\n  }, [inPlaceholder, fieldValueManager, getSectionsFromValue, valueManager.emptyValue, localizedDigits, isRtl]);\n  const valueStr = React.useMemo(() => state.tempValueStrAndroid ?? fieldValueManager.getV6InputValueFromSections(state.sections, localizedDigits, isRtl), [state.sections, fieldValueManager, state.tempValueStrAndroid, localizedDigits, isRtl]);\n  React.useEffect(() => {\n    // Select all the sections when focused on mount (`autoFocus = true` on the input)\n    if (inputRef.current && inputRef.current === getActiveElement(inputRef.current)) {\n      setSelectedSections('all');\n    }\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n  useEnhancedEffect(() => {\n    function syncSelectionToDOM() {\n      if (!inputRef.current) {\n        return;\n      }\n      if (parsedSelectedSections == null) {\n        if (inputRef.current.scrollLeft) {\n          // Ensure that input content is not marked as selected.\n          // setting selection range to 0 causes issues in Safari.\n          // https://bugs.webkit.org/show_bug.cgi?id=224425\n          inputRef.current.scrollLeft = 0;\n        }\n        return;\n      }\n\n      // On multi input range pickers we want to update selection range only for the active input\n      // This helps to avoid the focus jumping on Safari https://github.com/mui/mui-x/issues/9003\n      // because WebKit implements the `setSelectionRange` based on the spec: https://bugs.webkit.org/show_bug.cgi?id=224425\n      if (inputRef.current !== getActiveElement(inputRef.current)) {\n        return;\n      }\n\n      // Fix scroll jumping on iOS browser: https://github.com/mui/mui-x/issues/8321\n      const currentScrollTop = inputRef.current.scrollTop;\n      if (parsedSelectedSections === 'all') {\n        inputRef.current.select();\n      } else {\n        const selectedSection = sections[parsedSelectedSections];\n        const selectionStart = selectedSection.type === 'empty' ? selectedSection.startInInput - selectedSection.startSeparator.length : selectedSection.startInInput;\n        const selectionEnd = selectedSection.type === 'empty' ? selectedSection.endInInput + selectedSection.endSeparator.length : selectedSection.endInInput;\n        if (selectionStart !== inputRef.current.selectionStart || selectionEnd !== inputRef.current.selectionEnd) {\n          if (inputRef.current === getActiveElement(inputRef.current)) {\n            inputRef.current.setSelectionRange(selectionStart, selectionEnd);\n          }\n        }\n        selectionSyncTimeout.start(0, () => {\n          // handle case when the selection is not updated correctly\n          // could happen on Android\n          if (inputRef.current && inputRef.current === getActiveElement(inputRef.current) &&\n          // The section might loose all selection, where `selectionStart === selectionEnd`\n          // https://github.com/mui/mui-x/pull/13652\n          inputRef.current.selectionStart === inputRef.current.selectionEnd && (inputRef.current.selectionStart !== selectionStart || inputRef.current.selectionEnd !== selectionEnd)) {\n            syncSelectionToDOM();\n          }\n        });\n      }\n\n      // Even reading this variable seems to do the trick, but also setting it just to make use of it\n      inputRef.current.scrollTop = currentScrollTop;\n    }\n    syncSelectionToDOM();\n  });\n  const inputMode = React.useMemo(() => {\n    if (activeSectionIndex == null) {\n      return 'text';\n    }\n    if (state.sections[activeSectionIndex].contentType === 'letter') {\n      return 'text';\n    }\n    return 'numeric';\n  }, [activeSectionIndex, state.sections]);\n  const inputHasFocus = inputRef.current && inputRef.current === getActiveElement(inputRef.current);\n  const shouldShowPlaceholder = !inputHasFocus && areAllSectionsEmpty;\n  React.useImperativeHandle(unstableFieldRef, () => ({\n    getSections: () => state.sections,\n    getActiveSectionIndex: () => {\n      const browserStartIndex = inputRef.current.selectionStart ?? 0;\n      const browserEndIndex = inputRef.current.selectionEnd ?? 0;\n      if (browserStartIndex === 0 && browserEndIndex === 0) {\n        return null;\n      }\n      const nextSectionIndex = browserStartIndex <= sections[0].startInInput ? 1 // Special case if browser index is in invisible characters at the beginning.\n      : sections.findIndex(section => section.startInInput - section.startSeparator.length > browserStartIndex);\n      return nextSectionIndex === -1 ? sections.length - 1 : nextSectionIndex - 1;\n    },\n    setSelectedSections: newSelectedSections => setSelectedSections(newSelectedSections),\n    focusField,\n    isFieldFocused: () => isFieldFocused(inputRef)\n  }));\n  return _extends({}, forwardedProps, {\n    error,\n    'aria-invalid': error,\n    clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled),\n    onBlur: handleContainerBlur,\n    onClick: handleInputClick,\n    onFocus: handleInputFocus,\n    onPaste: handleInputPaste,\n    onKeyDown: wrappedHandleContainerKeyDown,\n    onClear: handleClear,\n    inputRef: handleRef,\n    // Additional\n    enableAccessibleFieldDOMStructure: false,\n    placeholder,\n    inputMode,\n    autoComplete: 'off',\n    value: shouldShowPlaceholder ? '' : valueStr,\n    onChange: handleInputChange,\n    focused,\n    disabled,\n    readOnly,\n    autoFocus,\n    openPickerAriaLabel\n  });\n};\nfunction isFieldFocused(inputRef) {\n  return inputRef.current === getActiveElement(inputRef.current);\n}","import { useFieldV7TextField } from \"./useFieldV7TextField.js\";\nimport { useFieldV6TextField } from \"./useFieldV6TextField.js\";\nimport { useNullableFieldPrivateContext } from \"../useNullableFieldPrivateContext.js\";\nexport const useField = parameters => {\n  const fieldPrivateContext = useNullableFieldPrivateContext();\n  const enableAccessibleFieldDOMStructure = parameters.props.enableAccessibleFieldDOMStructure ?? fieldPrivateContext?.enableAccessibleFieldDOMStructure ?? true;\n  const useFieldTextField = enableAccessibleFieldDOMStructure ? useFieldV7TextField : useFieldV6TextField;\n  return useFieldTextField(parameters);\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { applyDefaultDate } from \"../internals/utils/date-utils.js\";\nimport { singleItemFieldValueManager, singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { validateDateTime } from \"../validation/index.js\";\nimport { useDefaultDates } from \"../internals/hooks/useUtils.js\";\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nexport function useDateTimeManager(parameters = {}) {\n  const {\n    enableAccessibleFieldDOMStructure = true\n  } = parameters;\n  return React.useMemo(() => ({\n    valueType: 'date-time',\n    validator: validateDateTime,\n    internal_valueManager: singleItemValueManager,\n    internal_fieldValueManager: singleItemFieldValueManager,\n    internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,\n    internal_useApplyDefaultValuesToFieldInternalProps: useApplyDefaultValuesToDateTimeFieldInternalProps,\n    internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel\n  }), [enableAccessibleFieldDOMStructure]);\n}\nfunction useOpenPickerButtonAriaLabel(value) {\n  const adapter = usePickerAdapter();\n  const translations = usePickerTranslations();\n  return React.useMemo(() => {\n    const formattedValue = adapter.isValid(value) ? adapter.format(value, 'fullDate') : null;\n    return translations.openDatePickerDialogue(formattedValue);\n  }, [value, translations, adapter]);\n}\nfunction useApplyDefaultValuesToDateTimeFieldInternalProps(internalProps) {\n  const adapter = usePickerAdapter();\n  const validationProps = useApplyDefaultValuesToDateTimeValidationProps(internalProps);\n  const ampm = React.useMemo(() => internalProps.ampm ?? adapter.is12HourCycleInCurrentLocale(), [internalProps.ampm, adapter]);\n  return React.useMemo(() => _extends({}, internalProps, validationProps, {\n    format: internalProps.format ?? (ampm ? adapter.formats.keyboardDateTime12h : adapter.formats.keyboardDateTime24h)\n  }), [internalProps, validationProps, ampm, adapter]);\n}\nexport function useApplyDefaultValuesToDateTimeValidationProps(props) {\n  const adapter = usePickerAdapter();\n  const defaultDates = useDefaultDates();\n  return React.useMemo(() => ({\n    disablePast: props.disablePast ?? false,\n    disableFuture: props.disableFuture ?? false,\n    // TODO: Explore if we can remove it from the public API\n    disableIgnoringDatePartForTimeValidation: !!props.minDateTime || !!props.maxDateTime || !!props.disableFuture || !!props.disablePast,\n    minDate: applyDefaultDate(adapter, props.minDateTime ?? props.minDate, defaultDates.minDate),\n    maxDate: applyDefaultDate(adapter, props.maxDateTime ?? props.maxDate, defaultDates.maxDate),\n    minTime: props.minDateTime ?? props.minTime,\n    maxTime: props.maxDateTime ?? props.maxTime\n  }), [props.minDateTime, props.maxDateTime, props.minTime, props.maxTime, props.minDate, props.maxDate, props.disableFuture, props.disablePast, adapter, defaultDates]);\n}","'use client';\n\nimport { useField } from \"../internals/hooks/useField/index.js\";\nimport { useDateManager } from \"../managers/index.js\";\nexport const useDateField = props => {\n  const manager = useDateManager(props);\n  return useField({\n    manager,\n    props\n  });\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { usePickerPrivateContext } from \"./usePickerPrivateContext.js\";\nexport function useFieldOwnerState(parameters) {\n  const {\n    ownerState: pickerOwnerState\n  } = usePickerPrivateContext();\n  const isRtl = useRtl();\n  return React.useMemo(() => _extends({}, pickerOwnerState, {\n    isFieldDisabled: parameters.disabled ?? false,\n    isFieldReadOnly: parameters.readOnly ?? false,\n    isFieldRequired: parameters.required ?? false,\n    fieldDirection: isRtl ? 'rtl' : 'ltr'\n  }), [pickerOwnerState, parameters.disabled, parameters.readOnly, parameters.required, isRtl]);\n}","import { createSvgIcon } from '@mui/material/utils';\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ArrowDropDownIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');\n\n/**\n * @ignore - internal component.\n */\nexport const ArrowLeftIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'ArrowLeft');\n\n/**\n * @ignore - internal component.\n */\nexport const ArrowRightIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'ArrowRight');\n\n/**\n * @ignore - internal component.\n */\nexport const CalendarIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"\n}), 'Calendar');\n\n/**\n * @ignore - internal component.\n */\nexport const ClockIcon = createSvgIcon(/*#__PURE__*/_jsxs(React.Fragment, {\n  children: [/*#__PURE__*/_jsx(\"path\", {\n    d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n  }), /*#__PURE__*/_jsx(\"path\", {\n    d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n  })]\n}), 'Clock');\n\n/**\n * @ignore - internal component.\n */\nexport const DateRangeIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z\"\n}), 'DateRange');\n\n/**\n * @ignore - internal component.\n */\nexport const TimeIcon = createSvgIcon(/*#__PURE__*/_jsxs(React.Fragment, {\n  children: [/*#__PURE__*/_jsx(\"path\", {\n    d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n  }), /*#__PURE__*/_jsx(\"path\", {\n    d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n  })]\n}), 'Time');\n\n/**\n * @ignore - internal component.\n */\nexport const ClearIcon = createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickersTextFieldUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersTextField', slot);\n}\nexport const pickersTextFieldClasses = generateUtilityClasses('MuiPickersTextField', ['root', 'focused', 'disabled', 'error', 'required']);","/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/interal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n *   throw new Error('My message');\n *   throw new Error(`My message: ${foo}`);\n *   throw new Error(`My message: ${foo}` + 'another string');\n *   ...\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code, ...args) {\n  const url = new URL(`https://mui.com/production-error/?code=${code}`);\n  args.forEach(arg => url.searchParams.append('args[]', arg));\n  return `Minified MUI error #${code}; visit ${url} for the full message.`;\n}","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n  if (typeof string !== 'string') {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `capitalize(string)` expects a string argument.' : _formatErrorMessage(7));\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}","const visuallyHidden = {\n  border: 0,\n  clip: 'rect(0 0 0 0)',\n  height: '1px',\n  margin: '-1px',\n  overflow: 'hidden',\n  padding: 0,\n  position: 'absolute',\n  whiteSpace: 'nowrap',\n  width: '1px'\n};\nexport default visuallyHidden;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickersInputBaseUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersInputBase', slot);\n}\nexport const pickersInputBaseClasses = generateUtilityClasses('MuiPickersInputBase', ['root', 'focused', 'disabled', 'error', 'notchedOutline', 'sectionContent', 'sectionBefore', 'sectionAfter', 'adornedStart', 'adornedEnd', 'input', 'inputSizeSmall', 'activeBar']);","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickersSectionListUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersSectionList', slot);\n}\nexport const pickersSectionListClasses = generateUtilityClasses('MuiPickersSectionList', ['root', 'section', 'sectionContent']);","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"slots\", \"slotProps\", \"elements\", \"sectionListRef\", \"classes\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useForkRef from '@mui/utils/useForkRef';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { getPickersSectionListUtilityClass, pickersSectionListClasses } from \"./pickersSectionListClasses.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const PickersSectionListRoot = styled('div', {\n  name: 'MuiPickersSectionList',\n  slot: 'Root'\n})({\n  direction: 'ltr /*! @noflip */',\n  outline: 'none'\n});\nexport const PickersSectionListSection = styled('span', {\n  name: 'MuiPickersSectionList',\n  slot: 'Section'\n})({});\nexport const PickersSectionListSectionSeparator = styled('span', {\n  name: 'MuiPickersSectionList',\n  slot: 'SectionSeparator'\n})({\n  whiteSpace: 'pre'\n});\nexport const PickersSectionListSectionContent = styled('span', {\n  name: 'MuiPickersSectionList',\n  slot: 'SectionContent'\n})({\n  outline: 'none'\n});\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    section: ['section'],\n    sectionContent: ['sectionContent']\n  };\n  return composeClasses(slots, getPickersSectionListUtilityClass, classes);\n};\nfunction PickersSection(props) {\n  const {\n    slots,\n    slotProps,\n    element,\n    classes\n  } = props;\n  const {\n    ownerState\n  } = usePickerPrivateContext();\n  const Section = slots?.section ?? PickersSectionListSection;\n  const sectionProps = useSlotProps({\n    elementType: Section,\n    externalSlotProps: slotProps?.section,\n    externalForwardedProps: element.container,\n    className: classes.section,\n    ownerState\n  });\n  const SectionContent = slots?.sectionContent ?? PickersSectionListSectionContent;\n  const sectionContentProps = useSlotProps({\n    elementType: SectionContent,\n    externalSlotProps: slotProps?.sectionContent,\n    externalForwardedProps: element.content,\n    additionalProps: {\n      suppressContentEditableWarning: true\n    },\n    className: classes.sectionContent,\n    ownerState\n  });\n  const SectionSeparator = slots?.sectionSeparator ?? PickersSectionListSectionSeparator;\n  const sectionSeparatorBeforeProps = useSlotProps({\n    elementType: SectionSeparator,\n    externalSlotProps: slotProps?.sectionSeparator,\n    externalForwardedProps: element.before,\n    ownerState: _extends({}, ownerState, {\n      separatorPosition: 'before'\n    })\n  });\n  const sectionSeparatorAfterProps = useSlotProps({\n    elementType: SectionSeparator,\n    externalSlotProps: slotProps?.sectionSeparator,\n    externalForwardedProps: element.after,\n    ownerState: _extends({}, ownerState, {\n      separatorPosition: 'after'\n    })\n  });\n\n  // Only propagate blur when focus leaves the SectionContent entirely.\n  const sectionContentRef = React.useRef(null);\n  const handleSectionContentRef = useForkRef(sectionContentProps.ref, sectionContentRef);\n  const handleContentBlur = event => {\n    const next = event.relatedTarget;\n    // If the next focused element stays within the whole field (root),\n    // do not propagate blur. We only want blur when leaving the field entirely.\n    const root = event.currentTarget.closest(`.${pickersSectionListClasses.root}`);\n    if (root && next instanceof Node && root.contains(next)) {\n      event.stopPropagation();\n      return;\n    }\n    // Otherwise, focus left the whole field; allow propagation.\n  };\n  return /*#__PURE__*/_jsxs(Section, _extends({}, sectionProps, {\n    children: [/*#__PURE__*/_jsx(SectionSeparator, _extends({}, sectionSeparatorBeforeProps)), /*#__PURE__*/_jsx(SectionContent, _extends({}, sectionContentProps, {\n      ref: handleSectionContentRef,\n      onBlur: handleContentBlur\n    })), /*#__PURE__*/_jsx(SectionSeparator, _extends({}, sectionSeparatorAfterProps))]\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? PickersSection.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  classes: PropTypes.object.isRequired,\n  element: PropTypes.shape({\n    after: PropTypes.object.isRequired,\n    before: PropTypes.object.isRequired,\n    container: PropTypes.object.isRequired,\n    content: PropTypes.object.isRequired\n  }).isRequired,\n  /**\n   * The props used for each component slot.\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   */\n  slots: PropTypes.object\n} : void 0;\n/**\n * Demos:\n *\n * - [Custom field](https://mui.com/x/react-date-pickers/custom-field/)\n *\n * API:\n *\n * - [PickersSectionList API](https://mui.com/x/api/date-pickers/pickers-section-list/)\n */\nconst PickersSectionList = /*#__PURE__*/React.forwardRef(function PickersSectionList(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersSectionList'\n  });\n  const {\n      slots,\n      slotProps,\n      elements,\n      sectionListRef,\n      classes: classesProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(classesProp);\n  const {\n    ownerState\n  } = usePickerPrivateContext();\n  const rootRef = React.useRef(null);\n  const handleRootRef = useForkRef(ref, rootRef);\n  const getRoot = methodName => {\n    if (!rootRef.current) {\n      throw new Error(`MUI X: Cannot call sectionListRef.${methodName} before the mount of the component.`);\n    }\n    return rootRef.current;\n  };\n  React.useImperativeHandle(sectionListRef, () => ({\n    getRoot() {\n      return getRoot('getRoot');\n    },\n    getSectionContainer(index) {\n      const root = getRoot('getSectionContainer');\n      return root.querySelector(`.${pickersSectionListClasses.section}[data-sectionindex=\"${index}\"]`);\n    },\n    getSectionContent(index) {\n      const root = getRoot('getSectionContent');\n      return root.querySelector(`.${pickersSectionListClasses.section}[data-sectionindex=\"${index}\"] .${pickersSectionListClasses.sectionContent}`);\n    },\n    getSectionIndexFromDOMElement(element) {\n      const root = getRoot('getSectionIndexFromDOMElement');\n      if (element == null || !root.contains(element)) {\n        return null;\n      }\n      let sectionContainer = null;\n      if (element.classList.contains(pickersSectionListClasses.section)) {\n        sectionContainer = element;\n      } else if (element.classList.contains(pickersSectionListClasses.sectionContent)) {\n        sectionContainer = element.parentElement;\n      }\n      if (sectionContainer == null) {\n        return null;\n      }\n      return Number(sectionContainer.dataset.sectionindex);\n    }\n  }));\n  const Root = slots?.root ?? PickersSectionListRoot;\n  const rootProps = useSlotProps({\n    elementType: Root,\n    externalSlotProps: slotProps?.root,\n    externalForwardedProps: other,\n    additionalProps: {\n      ref: handleRootRef,\n      suppressContentEditableWarning: true\n    },\n    className: classes.root,\n    ownerState\n  });\n  return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {\n    children: rootProps.contentEditable ? elements.map(({\n      content,\n      before,\n      after\n    }) => `${before.children}${content.children}${after.children}`).join('') : /*#__PURE__*/_jsx(React.Fragment, {\n      children: elements.map((element, elementIndex) => /*#__PURE__*/_jsx(PickersSection, {\n        slots: slots,\n        slotProps: slotProps,\n        element: element,\n        classes: classes\n      }, elementIndex))\n    })\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersSectionList.displayName = \"PickersSectionList\";\nprocess.env.NODE_ENV !== \"production\" ? PickersSectionList.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * If true, the whole element is editable.\n   * Useful when all the sections are selected.\n   */\n  contentEditable: PropTypes.bool.isRequired,\n  /**\n   * The elements to render.\n   * Each element contains the prop to edit a section of the value.\n   */\n  elements: PropTypes.arrayOf(PropTypes.shape({\n    after: PropTypes.object.isRequired,\n    before: PropTypes.object.isRequired,\n    container: PropTypes.object.isRequired,\n    content: PropTypes.object.isRequired\n  })).isRequired,\n  sectionListRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      getRoot: PropTypes.func.isRequired,\n      getSectionContainer: PropTypes.func.isRequired,\n      getSectionContent: PropTypes.func.isRequired,\n      getSectionIndexFromDOMElement: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * The props used for each component slot.\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   */\n  slots: PropTypes.object\n} : void 0;\nexport { PickersSectionList };","'use client';\n\nimport * as React from 'react';\nexport const PickerTextFieldOwnerStateContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") PickerTextFieldOwnerStateContext.displayName = \"PickerTextFieldOwnerStateContext\";\nexport const usePickerTextFieldOwnerState = () => {\n  const value = React.useContext(PickerTextFieldOwnerStateContext);\n  if (value == null) {\n    throw new Error(['MUI X: The `usePickerTextFieldOwnerState` can only be called in components that are used inside a PickerTextField component'].join('\\n'));\n  }\n  return value;\n};","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"elements\", \"areAllSectionsEmpty\", \"defaultValue\", \"label\", \"value\", \"onChange\", \"id\", \"autoFocus\", \"endAdornment\", \"startAdornment\", \"renderSuffix\", \"slots\", \"slotProps\", \"contentEditable\", \"tabIndex\", \"onInput\", \"onPaste\", \"onKeyDown\", \"fullWidth\", \"name\", \"readOnly\", \"inputProps\", \"inputRef\", \"sectionListRef\", \"onFocus\", \"onBlur\", \"classes\", \"ownerState\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useFormControl } from '@mui/material/FormControl';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport useForkRef from '@mui/utils/useForkRef';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport visuallyHidden from '@mui/utils/visuallyHidden';\nimport { pickersInputBaseClasses, getPickersInputBaseUtilityClass } from \"./pickersInputBaseClasses.js\";\nimport { Unstable_PickersSectionList as PickersSectionList, Unstable_PickersSectionListRoot as PickersSectionListRoot, Unstable_PickersSectionListSection as PickersSectionListSection, Unstable_PickersSectionListSectionSeparator as PickersSectionListSectionSeparator, Unstable_PickersSectionListSectionContent as PickersSectionListSectionContent } from \"../../PickersSectionList/index.js\";\nimport { usePickerTextFieldOwnerState } from \"../usePickerTextFieldOwnerState.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst round = value => Math.round(value * 1e5) / 1e5;\nexport const PickersInputBaseRoot = styled('div', {\n  name: 'MuiPickersInputBase',\n  slot: 'Root'\n})(({\n  theme\n}) => _extends({}, theme.typography.body1, {\n  color: (theme.vars || theme).palette.text.primary,\n  cursor: 'text',\n  padding: 0,\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  boxSizing: 'border-box',\n  // Prevent padding issue with fullWidth.\n  letterSpacing: `${round(0.15 / 16)}em`,\n  variants: [{\n    props: {\n      isInputInFullWidth: true\n    },\n    style: {\n      width: '100%'\n    }\n  }]\n}));\nexport const PickersInputBaseSectionsContainer = styled(PickersSectionListRoot, {\n  name: 'MuiPickersInputBase',\n  slot: 'SectionsContainer'\n})(({\n  theme\n}) => ({\n  padding: '4px 0 5px',\n  fontFamily: theme.typography.fontFamily,\n  fontSize: 'inherit',\n  lineHeight: '1.4375em',\n  // 23px\n  flexGrow: 1,\n  outline: 'none',\n  display: 'flex',\n  flexWrap: 'nowrap',\n  overflow: 'hidden',\n  letterSpacing: 'inherit',\n  // Baseline behavior\n  width: '182px',\n  variants: [{\n    props: {\n      fieldDirection: 'rtl'\n    },\n    style: {\n      justifyContent: 'end'\n    }\n  }, {\n    props: {\n      inputSize: 'small'\n    },\n    style: {\n      paddingTop: 1\n    }\n  }, {\n    props: {\n      hasStartAdornment: false,\n      isFieldFocused: false,\n      isFieldValueEmpty: true\n    },\n    style: {\n      color: 'currentColor',\n      opacity: 0\n    }\n  }, {\n    props: {\n      hasStartAdornment: false,\n      isFieldFocused: false,\n      isFieldValueEmpty: true,\n      inputHasLabel: false\n    },\n    style: theme.vars ? {\n      opacity: theme.vars.opacity.inputPlaceholder\n    } : {\n      opacity: theme.palette.mode === 'light' ? 0.42 : 0.5\n    }\n  }, {\n    props: {\n      hasStartAdornment: false,\n      isFieldFocused: false,\n      isFieldValueEmpty: true,\n      inputHasLabel: true,\n      isLabelShrunk: true\n    },\n    style: theme.vars ? {\n      opacity: theme.vars.opacity.inputPlaceholder\n    } : {\n      opacity: theme.palette.mode === 'light' ? 0.42 : 0.5\n    }\n  }]\n}));\nconst PickersInputBaseSection = styled(PickersSectionListSection, {\n  name: 'MuiPickersInputBase',\n  slot: 'Section'\n})(({\n  theme\n}) => ({\n  fontFamily: theme.typography.fontFamily,\n  fontSize: 'inherit',\n  letterSpacing: 'inherit',\n  lineHeight: '1.4375em',\n  // 23px\n  display: 'inline-block',\n  whiteSpace: 'nowrap'\n}));\nconst PickersInputBaseSectionContent = styled(PickersSectionListSectionContent, {\n  name: 'MuiPickersInputBase',\n  slot: 'SectionContent',\n  overridesResolver: (props, styles) => styles.content // FIXME: Inconsistent naming with slot\n})(({\n  theme\n}) => ({\n  fontFamily: theme.typography.fontFamily,\n  lineHeight: '1.4375em',\n  // 23px\n  letterSpacing: 'inherit',\n  width: 'fit-content',\n  outline: 'none'\n}));\nconst PickersInputBaseSectionSeparator = styled(PickersSectionListSectionSeparator, {\n  name: 'MuiPickersInputBase',\n  slot: 'Separator'\n})(() => ({\n  whiteSpace: 'pre',\n  letterSpacing: 'inherit'\n}));\nconst PickersInputBaseInput = styled('input', {\n  name: 'MuiPickersInputBase',\n  slot: 'Input',\n  overridesResolver: (props, styles) => styles.hiddenInput // FIXME: Inconsistent naming with slot\n})(_extends({}, visuallyHidden));\nconst PickersInputBaseActiveBar = styled('div', {\n  name: 'MuiPickersInputBase',\n  slot: 'ActiveBar'\n})(({\n  theme,\n  ownerState\n}) => ({\n  display: 'none',\n  position: 'absolute',\n  height: 2,\n  bottom: 2,\n  borderTopLeftRadius: 2,\n  borderTopRightRadius: 2,\n  transition: theme.transitions.create(['width', 'left'], {\n    duration: theme.transitions.duration.shortest\n  }),\n  backgroundColor: (theme.vars || theme).palette.primary.main,\n  '[data-active-range-position=\"start\"] &, [data-active-range-position=\"end\"] &': {\n    display: 'block'\n  },\n  '[data-active-range-position=\"start\"] &': {\n    left: ownerState.sectionOffsets[0]\n  },\n  '[data-active-range-position=\"end\"] &': {\n    left: ownerState.sectionOffsets[1]\n  }\n}));\nconst useUtilityClasses = (classes, ownerState) => {\n  const {\n    isFieldFocused,\n    isFieldDisabled,\n    isFieldReadOnly,\n    hasFieldError,\n    inputSize,\n    isInputInFullWidth,\n    inputColor,\n    hasStartAdornment,\n    hasEndAdornment\n  } = ownerState;\n  const slots = {\n    root: ['root', isFieldFocused && !isFieldDisabled && 'focused', isFieldDisabled && 'disabled', isFieldReadOnly && 'readOnly', hasFieldError && 'error', isInputInFullWidth && 'fullWidth', `color${capitalize(inputColor)}`, inputSize === 'small' && 'inputSizeSmall', hasStartAdornment && 'adornedStart', hasEndAdornment && 'adornedEnd'],\n    notchedOutline: ['notchedOutline'],\n    input: ['input'],\n    sectionsContainer: ['sectionsContainer'],\n    sectionContent: ['sectionContent'],\n    sectionBefore: ['sectionBefore'],\n    sectionAfter: ['sectionAfter'],\n    activeBar: ['activeBar']\n  };\n  return composeClasses(slots, getPickersInputBaseUtilityClass, classes);\n};\nfunction resolveSectionElementWidth(sectionElement, rootRef, index, dateRangePosition) {\n  if (sectionElement.content.id) {\n    const activeSectionElements = rootRef.current?.querySelectorAll(`[data-sectionindex=\"${index}\"] [data-range-position=\"${dateRangePosition}\"]`);\n    if (activeSectionElements) {\n      return Array.from(activeSectionElements).reduce((currentActiveBarWidth, element) => {\n        return currentActiveBarWidth + element.offsetWidth;\n      }, 0);\n    }\n  }\n  return 0;\n}\nfunction resolveSectionWidthAndOffsets(elements, rootRef) {\n  let activeBarWidth = 0;\n  const activeRangePosition = rootRef.current?.getAttribute('data-active-range-position');\n  if (activeRangePosition === 'end') {\n    for (let i = elements.length - 1; i >= elements.length / 2; i -= 1) {\n      activeBarWidth += resolveSectionElementWidth(elements[i], rootRef, i, 'end');\n    }\n  } else {\n    for (let i = 0; i < elements.length / 2; i += 1) {\n      activeBarWidth += resolveSectionElementWidth(elements[i], rootRef, i, 'start');\n    }\n  }\n  return {\n    activeBarWidth,\n    sectionOffsets: [rootRef.current?.querySelector(`[data-sectionindex=\"0\"]`)?.offsetLeft || 0, rootRef.current?.querySelector(`[data-sectionindex=\"${elements.length / 2}\"]`)?.offsetLeft || 0]\n  };\n}\n\n/**\n * @ignore - internal component.\n */\nconst PickersInputBase = /*#__PURE__*/React.forwardRef(function PickersInputBase(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersInputBase'\n  });\n  const {\n      elements,\n      areAllSectionsEmpty,\n      value,\n      onChange,\n      id,\n      endAdornment,\n      startAdornment,\n      renderSuffix,\n      slots,\n      slotProps,\n      contentEditable,\n      tabIndex,\n      onInput,\n      onPaste,\n      onKeyDown,\n      name,\n      readOnly,\n      inputProps,\n      inputRef,\n      sectionListRef,\n      onFocus,\n      onBlur,\n      classes: classesProp,\n      ownerState: ownerStateProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerStateContext = usePickerTextFieldOwnerState();\n  const rootRef = React.useRef(null);\n  const activeBarRef = React.useRef(null);\n  const sectionOffsetsRef = React.useRef([]);\n  const handleRootRef = useForkRef(ref, rootRef);\n  const handleInputRef = useForkRef(inputProps?.ref, inputRef);\n  const muiFormControl = useFormControl();\n  if (!muiFormControl) {\n    throw new Error('MUI X: PickersInputBase should always be used inside a PickersTextField component');\n  }\n  const ownerState = ownerStateProp ?? ownerStateContext;\n  const handleInputFocus = event => {\n    muiFormControl.onFocus?.(event);\n    onFocus?.(event);\n  };\n  const handleHiddenInputFocus = event => {\n    handleInputFocus(event);\n  };\n  const handleKeyDown = event => {\n    onKeyDown?.(event);\n    if (event.key === 'Enter' && !event.defaultMuiPrevented) {\n      // Do nothing if it's a multi input field\n      if (rootRef.current?.dataset.multiInput) {\n        return;\n      }\n      const closestForm = rootRef.current?.closest('form');\n      const submitTrigger = closestForm?.querySelector('[type=\"submit\"]');\n      if (!closestForm || !submitTrigger) {\n        // do nothing if there is no form or no submit button (trigger)\n        return;\n      }\n      event.preventDefault();\n      // native input trigger submit with the `submitter` field set\n      closestForm.requestSubmit(submitTrigger);\n    }\n  };\n  const handleInputBlur = event => {\n    muiFormControl.onBlur?.(event);\n    onBlur?.(event);\n  };\n  React.useEffect(() => {\n    if (muiFormControl) {\n      muiFormControl.setAdornedStart(Boolean(startAdornment));\n    }\n  }, [muiFormControl, startAdornment]);\n  React.useEffect(() => {\n    if (!muiFormControl) {\n      return;\n    }\n    if (areAllSectionsEmpty) {\n      muiFormControl.onEmpty();\n    } else {\n      muiFormControl.onFilled();\n    }\n  }, [muiFormControl, areAllSectionsEmpty]);\n  const classes = useUtilityClasses(classesProp, ownerState);\n  const InputRoot = slots?.root || PickersInputBaseRoot;\n  const inputRootProps = useSlotProps({\n    elementType: InputRoot,\n    externalSlotProps: slotProps?.root,\n    externalForwardedProps: other,\n    additionalProps: {\n      'aria-invalid': muiFormControl.error,\n      ref: handleRootRef\n    },\n    className: classes.root,\n    ownerState\n  });\n  const InputSectionsContainer = slots?.input || PickersInputBaseSectionsContainer;\n  const isSingleInputRange = elements.some(element => element.content['data-range-position'] !== undefined);\n  React.useEffect(() => {\n    if (!isSingleInputRange || !ownerState.isPickerOpen) {\n      return;\n    }\n    const {\n      activeBarWidth,\n      sectionOffsets\n    } = resolveSectionWidthAndOffsets(elements, rootRef);\n    sectionOffsetsRef.current = [sectionOffsets[0], sectionOffsets[1]];\n    if (activeBarRef.current) {\n      activeBarRef.current.style.width = `${activeBarWidth}px`;\n    }\n  }, [elements, isSingleInputRange, ownerState.isPickerOpen]);\n  return /*#__PURE__*/_jsxs(InputRoot, _extends({}, inputRootProps, {\n    children: [startAdornment, /*#__PURE__*/_jsx(PickersSectionList, {\n      sectionListRef: sectionListRef,\n      elements: elements,\n      contentEditable: contentEditable,\n      tabIndex: tabIndex,\n      className: classes.sectionsContainer,\n      onFocus: handleInputFocus,\n      onBlur: handleInputBlur,\n      onInput: onInput,\n      onPaste: onPaste,\n      onKeyDown: handleKeyDown,\n      slots: {\n        root: InputSectionsContainer,\n        section: PickersInputBaseSection,\n        sectionContent: PickersInputBaseSectionContent,\n        sectionSeparator: PickersInputBaseSectionSeparator\n      },\n      slotProps: {\n        root: _extends({}, slotProps?.input, {\n          ownerState\n        }),\n        sectionContent: {\n          className: pickersInputBaseClasses.sectionContent\n        },\n        sectionSeparator: ({\n          separatorPosition\n        }) => ({\n          className: separatorPosition === 'before' ? pickersInputBaseClasses.sectionBefore : pickersInputBaseClasses.sectionAfter\n        })\n      }\n    }), endAdornment, renderSuffix ? renderSuffix(_extends({}, muiFormControl)) : null, /*#__PURE__*/_jsx(PickersInputBaseInput, _extends({\n      name: name,\n      className: classes.input,\n      value: value,\n      onChange: onChange,\n      id: id,\n      \"aria-hidden\": \"true\",\n      tabIndex: -1,\n      readOnly: readOnly,\n      required: muiFormControl.required,\n      disabled: muiFormControl.disabled\n      // Hidden input element cannot be focused, trigger the root focus instead\n      // This allows to maintain the ability to do `inputRef.current.focus()` to focus the field\n      ,\n      onFocus: handleHiddenInputFocus\n    }, inputProps, {\n      ref: handleInputRef\n    })), isSingleInputRange && /*#__PURE__*/_jsx(PickersInputBaseActiveBar, {\n      className: classes.activeBar,\n      ref: activeBarRef,\n      ownerState: {\n        sectionOffsets: sectionOffsetsRef.current\n      }\n    })]\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersInputBase.displayName = \"PickersInputBase\";\nprocess.env.NODE_ENV !== \"production\" ? PickersInputBase.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Is `true` if the current values equals the empty value.\n   * For a single item value, it means that `value === null`\n   * For a range value, it means that `value === [null, null]`\n   */\n  areAllSectionsEmpty: PropTypes.bool.isRequired,\n  className: PropTypes.string,\n  component: PropTypes.elementType,\n  /**\n   * If true, the whole element is editable.\n   * Useful when all the sections are selected.\n   */\n  contentEditable: PropTypes.bool.isRequired,\n  'data-multi-input': PropTypes.string,\n  /**\n   * The elements to render.\n   * Each element contains the prop to edit a section of the value.\n   */\n  elements: PropTypes.arrayOf(PropTypes.shape({\n    after: PropTypes.object.isRequired,\n    before: PropTypes.object.isRequired,\n    container: PropTypes.object.isRequired,\n    content: PropTypes.object.isRequired\n  })).isRequired,\n  endAdornment: PropTypes.node,\n  fullWidth: PropTypes.bool,\n  id: PropTypes.string,\n  inputProps: PropTypes.object,\n  inputRef: refType,\n  label: PropTypes.node,\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  name: PropTypes.string,\n  onChange: PropTypes.func.isRequired,\n  onClick: PropTypes.func.isRequired,\n  onInput: PropTypes.func.isRequired,\n  onKeyDown: PropTypes.func.isRequired,\n  onPaste: PropTypes.func.isRequired,\n  ownerState: PropTypes /* @typescript-to-proptypes-ignore */.any,\n  readOnly: PropTypes.bool,\n  renderSuffix: PropTypes.func,\n  sectionListRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      getRoot: PropTypes.func.isRequired,\n      getSectionContainer: PropTypes.func.isRequired,\n      getSectionContent: PropTypes.func.isRequired,\n      getSectionIndexFromDOMElement: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.object,\n  startAdornment: PropTypes.node,\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  value: PropTypes.string.isRequired\n} : void 0;\nexport { PickersInputBase };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { pickersInputBaseClasses } from \"../PickersInputBase/index.js\";\nexport function getPickersOutlinedInputUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersOutlinedInput', slot);\n}\nexport const pickersOutlinedInputClasses = _extends({}, pickersInputBaseClasses, generateUtilityClasses('MuiPickersOutlinedInput', ['root', 'notchedOutline', 'input']));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"label\", \"notched\", \"shrink\"];\nimport * as React from 'react';\nimport { styled } from '@mui/material/styles';\nimport { shouldForwardProp } from '@mui/system/createStyled';\nimport { usePickerTextFieldOwnerState } from \"../usePickerTextFieldOwnerState.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst OutlineRoot = styled('fieldset', {\n  name: 'MuiPickersOutlinedInput',\n  slot: 'NotchedOutline'\n})(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return {\n    textAlign: 'left',\n    position: 'absolute',\n    bottom: 0,\n    right: 0,\n    top: -5,\n    left: 0,\n    margin: 0,\n    padding: '0 8px',\n    pointerEvents: 'none',\n    borderRadius: 'inherit',\n    borderStyle: 'solid',\n    borderWidth: 1,\n    overflow: 'hidden',\n    minWidth: '0%',\n    borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n  };\n});\nconst OutlineLabel = styled('span', {\n  slot: 'internal',\n  shouldForwardProp: undefined\n})(({\n  theme\n}) => ({\n  fontFamily: theme.typography.fontFamily,\n  fontSize: 'inherit'\n}));\nconst OutlineLegend = styled('legend', {\n  slot: 'internal',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'notched'\n})(({\n  theme\n}) => ({\n  float: 'unset',\n  // Fix conflict with bootstrap\n  width: 'auto',\n  // Fix conflict with bootstrap\n  overflow: 'hidden',\n  // Fix Horizontal scroll when label too long\n  variants: [{\n    props: {\n      inputHasLabel: false\n    },\n    style: {\n      padding: 0,\n      lineHeight: '11px',\n      // sync with `height` in `legend` styles\n      transition: theme.transitions.create('width', {\n        duration: 150,\n        easing: theme.transitions.easing.easeOut\n      })\n    }\n  }, {\n    props: {\n      inputHasLabel: true\n    },\n    style: {\n      display: 'block',\n      // Fix conflict with normalize.css and sanitize.css\n      padding: 0,\n      height: 11,\n      // sync with `lineHeight` in `legend` styles\n      fontSize: '0.75em',\n      visibility: 'hidden',\n      maxWidth: 0.01,\n      transition: theme.transitions.create('max-width', {\n        duration: 50,\n        easing: theme.transitions.easing.easeOut\n      }),\n      whiteSpace: 'nowrap',\n      '& > span': {\n        paddingLeft: 5,\n        paddingRight: 5,\n        display: 'inline-block',\n        opacity: 0,\n        visibility: 'visible'\n      }\n    }\n  }, {\n    props: {\n      inputHasLabel: true,\n      notched: true\n    },\n    style: {\n      maxWidth: '100%',\n      transition: theme.transitions.create('max-width', {\n        duration: 100,\n        easing: theme.transitions.easing.easeOut,\n        delay: 50\n      })\n    }\n  }]\n}));\n\n/**\n * @ignore - internal component.\n */\nexport default function Outline(props) {\n  const {\n      className,\n      label,\n      notched\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = usePickerTextFieldOwnerState();\n  return /*#__PURE__*/_jsx(OutlineRoot, _extends({\n    \"aria-hidden\": true,\n    className: className\n  }, other, {\n    ownerState: ownerState,\n    children: /*#__PURE__*/_jsx(OutlineLegend, {\n      ownerState: ownerState,\n      notched: notched,\n      children: label ? /*#__PURE__*/_jsx(OutlineLabel, {\n        children: label\n      }) :\n      /*#__PURE__*/\n      // notranslate needed while Google Translate will not fix zero-width space issue\n      _jsx(OutlineLabel, {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      })\n    })\n  }));\n}","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"label\", \"autoFocus\", \"ownerState\", \"classes\", \"notched\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useFormControl } from '@mui/material/FormControl';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { pickersOutlinedInputClasses, getPickersOutlinedInputUtilityClass } from \"./pickersOutlinedInputClasses.js\";\nimport Outline from \"./Outline.js\";\nimport { PickersInputBase } from \"../PickersInputBase/index.js\";\nimport { PickersInputBaseRoot, PickersInputBaseSectionsContainer } from \"../PickersInputBase/PickersInputBase.js\";\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nconst PickersOutlinedInputRoot = styled(PickersInputBaseRoot, {\n  name: 'MuiPickersOutlinedInput',\n  slot: 'Root'\n})(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return {\n    padding: '0 14px',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    [`&:hover .${pickersOutlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.text.primary\n    },\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      [`&:hover .${pickersOutlinedInputClasses.notchedOutline}`]: {\n        borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n      }\n    },\n    [`&.${pickersOutlinedInputClasses.focused} .${pickersOutlinedInputClasses.notchedOutline}`]: {\n      borderStyle: 'solid',\n      borderWidth: 2\n    },\n    [`&.${pickersOutlinedInputClasses.disabled}`]: {\n      [`& .${pickersOutlinedInputClasses.notchedOutline}`]: {\n        borderColor: (theme.vars || theme).palette.action.disabled\n      },\n      '*': {\n        color: (theme.vars || theme).palette.action.disabled\n      }\n    },\n    [`&.${pickersOutlinedInputClasses.error} .${pickersOutlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.error.main\n    },\n    variants: Object.keys((theme.vars ?? theme).palette)\n    // @ts-ignore\n    .filter(key => (theme.vars ?? theme).palette[key]?.main ?? false).map(color => ({\n      props: {\n        inputColor: color\n      },\n      style: {\n        [`&.${pickersOutlinedInputClasses.focused}:not(.${pickersOutlinedInputClasses.error}) .${pickersOutlinedInputClasses.notchedOutline}`]: {\n          // @ts-ignore\n          borderColor: (theme.vars || theme).palette[color].main\n        }\n      }\n    }))\n  };\n});\nconst PickersOutlinedInputSectionsContainer = styled(PickersInputBaseSectionsContainer, {\n  name: 'MuiPickersOutlinedInput',\n  slot: 'SectionsContainer'\n})({\n  padding: '16.5px 0',\n  variants: [{\n    props: {\n      inputSize: 'small'\n    },\n    style: {\n      padding: '8.5px 0'\n    }\n  }]\n});\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    notchedOutline: ['notchedOutline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getPickersOutlinedInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\n\n/**\n * @ignore - internal component.\n */\nconst PickersOutlinedInput = /*#__PURE__*/React.forwardRef(function PickersOutlinedInput(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersOutlinedInput'\n  });\n  const {\n      label,\n      classes: classesProp,\n      notched\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const muiFormControl = useFormControl();\n  const classes = useUtilityClasses(classesProp);\n  return /*#__PURE__*/_jsx(PickersInputBase, _extends({\n    slots: {\n      root: PickersOutlinedInputRoot,\n      input: PickersOutlinedInputSectionsContainer\n    },\n    renderSuffix: state => /*#__PURE__*/_jsx(Outline, {\n      shrink: Boolean(notched || state.adornedStart || state.focused || state.filled),\n      notched: Boolean(notched || state.adornedStart || state.focused || state.filled),\n      className: classes.notchedOutline,\n      label: label != null && label !== '' && muiFormControl?.required ? /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [label, \"\\u2009\", '*']\n      }) : label\n    })\n  }, other, {\n    label: label,\n    classes: classes,\n    ref: ref\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersOutlinedInput.displayName = \"PickersOutlinedInput\";\nprocess.env.NODE_ENV !== \"production\" ? PickersOutlinedInput.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Is `true` if the current values equals the empty value.\n   * For a single item value, it means that `value === null`\n   * For a range value, it means that `value === [null, null]`\n   */\n  areAllSectionsEmpty: PropTypes.bool.isRequired,\n  className: PropTypes.string,\n  component: PropTypes.elementType,\n  /**\n   * If true, the whole element is editable.\n   * Useful when all the sections are selected.\n   */\n  contentEditable: PropTypes.bool.isRequired,\n  'data-multi-input': PropTypes.string,\n  /**\n   * The elements to render.\n   * Each element contains the prop to edit a section of the value.\n   */\n  elements: PropTypes.arrayOf(PropTypes.shape({\n    after: PropTypes.object.isRequired,\n    before: PropTypes.object.isRequired,\n    container: PropTypes.object.isRequired,\n    content: PropTypes.object.isRequired\n  })).isRequired,\n  endAdornment: PropTypes.node,\n  fullWidth: PropTypes.bool,\n  id: PropTypes.string,\n  inputProps: PropTypes.object,\n  inputRef: refType,\n  label: PropTypes.node,\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  name: PropTypes.string,\n  notched: PropTypes.bool,\n  onChange: PropTypes.func.isRequired,\n  onClick: PropTypes.func.isRequired,\n  onInput: PropTypes.func.isRequired,\n  onKeyDown: PropTypes.func.isRequired,\n  onPaste: PropTypes.func.isRequired,\n  ownerState: PropTypes /* @typescript-to-proptypes-ignore */.any,\n  readOnly: PropTypes.bool,\n  renderSuffix: PropTypes.func,\n  sectionListRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      getRoot: PropTypes.func.isRequired,\n      getSectionContainer: PropTypes.func.isRequired,\n      getSectionContent: PropTypes.func.isRequired,\n      getSectionIndexFromDOMElement: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.object,\n  startAdornment: PropTypes.node,\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  value: PropTypes.string.isRequired\n} : void 0;\nexport { PickersOutlinedInput };\nPickersOutlinedInput.muiName = 'Input';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { pickersInputBaseClasses } from \"../PickersInputBase/index.js\";\nexport function getPickersFilledInputUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersFilledInput', slot);\n}\nexport const pickersFilledInputClasses = _extends({}, pickersInputBaseClasses, generateUtilityClasses('MuiPickersFilledInput', ['root', 'underline', 'input']));","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"label\", \"autoFocus\", \"disableUnderline\", \"hiddenLabel\", \"classes\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { shouldForwardProp } from '@mui/system';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { pickersFilledInputClasses, getPickersFilledInputUtilityClass } from \"./pickersFilledInputClasses.js\";\nimport { PickersInputBase } from \"../PickersInputBase/index.js\";\nimport { PickersInputBaseRoot, PickersInputBaseSectionsContainer } from \"../PickersInputBase/PickersInputBase.js\";\nimport { usePickerTextFieldOwnerState } from \"../usePickerTextFieldOwnerState.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PickersFilledInputRoot = styled(PickersInputBaseRoot, {\n  name: 'MuiPickersFilledInput',\n  slot: 'Root',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'disableUnderline'\n})(({\n  theme\n}) => {\n  const light = theme.palette.mode === 'light';\n  const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';\n  const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';\n  const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';\n  return {\n    backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,\n    borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n    borderTopRightRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create('background-color', {\n      duration: theme.transitions.duration.shorter,\n      easing: theme.transitions.easing.easeOut\n    }),\n    '&:hover': {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n      }\n    },\n    [`&.${pickersFilledInputClasses.focused}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n    },\n    [`&.${pickersFilledInputClasses.disabled}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground\n    },\n    variants: [...Object.keys((theme.vars ?? theme).palette)\n    // @ts-ignore\n    .filter(key => (theme.vars ?? theme).palette[key].main).map(color => ({\n      props: {\n        inputColor: color,\n        disableUnderline: false\n      },\n      style: {\n        '&::after': {\n          // @ts-ignore\n          borderBottom: `2px solid ${(theme.vars || theme).palette[color]?.main}`\n        }\n      }\n    })), {\n      props: {\n        disableUnderline: false\n      },\n      style: {\n        '&::after': {\n          left: 0,\n          bottom: 0,\n          // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n          content: '\"\"',\n          position: 'absolute',\n          right: 0,\n          transform: 'scaleX(0)',\n          transition: theme.transitions.create('transform', {\n            duration: theme.transitions.duration.shorter,\n            easing: theme.transitions.easing.easeOut\n          }),\n          pointerEvents: 'none' // Transparent to the hover style.\n        },\n        [`&.${pickersFilledInputClasses.focused}:after`]: {\n          // translateX(0) is a workaround for Safari transform scale bug\n          // See https://github.com/mui/material-ui/issues/31766\n          transform: 'scaleX(1) translateX(0)'\n        },\n        [`&.${pickersFilledInputClasses.error}`]: {\n          '&:before, &:after': {\n            borderBottomColor: (theme.vars || theme).palette.error.main\n          }\n        },\n        '&::before': {\n          borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,\n          left: 0,\n          bottom: 0,\n          // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n          content: '\"\\\\00a0\"',\n          position: 'absolute',\n          right: 0,\n          transition: theme.transitions.create('border-bottom-color', {\n            duration: theme.transitions.duration.shorter\n          }),\n          pointerEvents: 'none' // Transparent to the hover style.\n        },\n        [`&:hover:not(.${pickersFilledInputClasses.disabled}, .${pickersFilledInputClasses.error}):before`]: {\n          borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`\n        },\n        [`&.${pickersFilledInputClasses.disabled}:before`]: {\n          borderBottomStyle: 'dotted'\n        }\n      }\n    }, {\n      props: {\n        hasStartAdornment: true\n      },\n      style: {\n        paddingLeft: 12\n      }\n    }, {\n      props: {\n        hasEndAdornment: true\n      },\n      style: {\n        paddingRight: 12\n      }\n    }]\n  };\n});\nconst PickersFilledSectionsContainer = styled(PickersInputBaseSectionsContainer, {\n  name: 'MuiPickersFilledInput',\n  slot: 'sectionsContainer',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'hiddenLabel'\n})({\n  paddingTop: 25,\n  paddingRight: 12,\n  paddingBottom: 8,\n  paddingLeft: 12,\n  variants: [{\n    props: {\n      inputSize: 'small'\n    },\n    style: {\n      paddingTop: 21,\n      paddingBottom: 4\n    }\n  }, {\n    props: {\n      hasStartAdornment: true\n    },\n    style: {\n      paddingLeft: 0\n    }\n  }, {\n    props: {\n      hasEndAdornment: true\n    },\n    style: {\n      paddingRight: 0\n    }\n  }, {\n    props: {\n      hiddenLabel: true\n    },\n    style: {\n      paddingTop: 16,\n      paddingBottom: 17\n    }\n  }, {\n    props: {\n      hiddenLabel: true,\n      inputSize: 'small'\n    },\n    style: {\n      paddingTop: 8,\n      paddingBottom: 9\n    }\n  }]\n});\nconst useUtilityClasses = (classes, ownerState) => {\n  const {\n    inputHasUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', inputHasUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getPickersFilledInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\n\n/**\n * @ignore - internal component.\n */\nconst PickersFilledInput = /*#__PURE__*/React.forwardRef(function PickersFilledInput(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersFilledInput'\n  });\n  const {\n      label,\n      disableUnderline = false,\n      hiddenLabel = false,\n      classes: classesProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const pickerTextFieldOwnerState = usePickerTextFieldOwnerState();\n  const ownerState = _extends({}, pickerTextFieldOwnerState, {\n    inputHasUnderline: !disableUnderline\n  });\n  const classes = useUtilityClasses(classesProp, ownerState);\n  return /*#__PURE__*/_jsx(PickersInputBase, _extends({\n    slots: {\n      root: PickersFilledInputRoot,\n      input: PickersFilledSectionsContainer\n    },\n    slotProps: {\n      root: {\n        disableUnderline\n      },\n      input: {\n        hiddenLabel\n      }\n    }\n  }, other, {\n    label: label,\n    classes: classes,\n    ref: ref,\n    ownerState: ownerState\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersFilledInput.displayName = \"PickersFilledInput\";\nprocess.env.NODE_ENV !== \"production\" ? PickersFilledInput.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Is `true` if the current values equals the empty value.\n   * For a single item value, it means that `value === null`\n   * For a range value, it means that `value === [null, null]`\n   */\n  areAllSectionsEmpty: PropTypes.bool.isRequired,\n  className: PropTypes.string,\n  component: PropTypes.elementType,\n  /**\n   * If true, the whole element is editable.\n   * Useful when all the sections are selected.\n   */\n  contentEditable: PropTypes.bool.isRequired,\n  'data-multi-input': PropTypes.string,\n  disableUnderline: PropTypes.bool,\n  /**\n   * The elements to render.\n   * Each element contains the prop to edit a section of the value.\n   */\n  elements: PropTypes.arrayOf(PropTypes.shape({\n    after: PropTypes.object.isRequired,\n    before: PropTypes.object.isRequired,\n    container: PropTypes.object.isRequired,\n    content: PropTypes.object.isRequired\n  })).isRequired,\n  endAdornment: PropTypes.node,\n  fullWidth: PropTypes.bool,\n  hiddenLabel: PropTypes.bool,\n  id: PropTypes.string,\n  inputProps: PropTypes.object,\n  inputRef: refType,\n  label: PropTypes.node,\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  name: PropTypes.string,\n  onChange: PropTypes.func.isRequired,\n  onClick: PropTypes.func.isRequired,\n  onInput: PropTypes.func.isRequired,\n  onKeyDown: PropTypes.func.isRequired,\n  onPaste: PropTypes.func.isRequired,\n  ownerState: PropTypes /* @typescript-to-proptypes-ignore */.any,\n  readOnly: PropTypes.bool,\n  renderSuffix: PropTypes.func,\n  sectionListRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      getRoot: PropTypes.func.isRequired,\n      getSectionContainer: PropTypes.func.isRequired,\n      getSectionContent: PropTypes.func.isRequired,\n      getSectionIndexFromDOMElement: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.object,\n  startAdornment: PropTypes.node,\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  value: PropTypes.string.isRequired\n} : void 0;\nexport { PickersFilledInput };\nPickersFilledInput.muiName = 'Input';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { pickersInputBaseClasses } from \"../PickersInputBase/index.js\";\nexport function getPickersInputUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersFilledInput', slot);\n}\nexport const pickersInputClasses = _extends({}, pickersInputBaseClasses, generateUtilityClasses('MuiPickersInput', ['root', 'underline', 'input']));","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"label\", \"autoFocus\", \"disableUnderline\", \"ownerState\", \"classes\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { shouldForwardProp } from '@mui/system/createStyled';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { pickersInputClasses, getPickersInputUtilityClass } from \"./pickersInputClasses.js\";\nimport { PickersInputBase } from \"../PickersInputBase/index.js\";\nimport { PickersInputBaseRoot } from \"../PickersInputBase/PickersInputBase.js\";\nimport { usePickerTextFieldOwnerState } from \"../usePickerTextFieldOwnerState.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PickersInputRoot = styled(PickersInputBaseRoot, {\n  name: 'MuiPickersInput',\n  slot: 'Root',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'disableUnderline'\n})(({\n  theme\n}) => {\n  const light = theme.palette.mode === 'light';\n  let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  if (theme.vars) {\n    bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;\n  }\n  return {\n    'label + &': {\n      marginTop: 16\n    },\n    variants: [...Object.keys((theme.vars ?? theme).palette)\n    // @ts-ignore\n    .filter(key => (theme.vars ?? theme).palette[key].main).map(color => ({\n      props: {\n        inputColor: color,\n        inputHasUnderline: true\n      },\n      style: {\n        '&::after': {\n          // @ts-ignore\n          borderBottom: `2px solid ${(theme.vars || theme).palette[color].main}`\n        }\n      }\n    })), {\n      props: {\n        inputHasUnderline: true\n      },\n      style: {\n        '&::after': {\n          background: 'red',\n          left: 0,\n          bottom: 0,\n          // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n          content: '\"\"',\n          position: 'absolute',\n          right: 0,\n          transform: 'scaleX(0)',\n          transition: theme.transitions.create('transform', {\n            duration: theme.transitions.duration.shorter,\n            easing: theme.transitions.easing.easeOut\n          }),\n          pointerEvents: 'none' // Transparent to the hover style.\n        },\n        [`&.${pickersInputClasses.focused}:after`]: {\n          // translateX(0) is a workaround for Safari transform scale bug\n          // See https://github.com/mui/material-ui/issues/31766\n          transform: 'scaleX(1) translateX(0)'\n        },\n        [`&.${pickersInputClasses.error}`]: {\n          '&:before, &:after': {\n            borderBottomColor: (theme.vars || theme).palette.error.main\n          }\n        },\n        '&::before': {\n          borderBottom: `1px solid ${bottomLineColor}`,\n          left: 0,\n          bottom: 0,\n          // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n          content: '\"\\\\00a0\"',\n          position: 'absolute',\n          right: 0,\n          transition: theme.transitions.create('border-bottom-color', {\n            duration: theme.transitions.duration.shorter\n          }),\n          pointerEvents: 'none' // Transparent to the hover style.\n        },\n        [`&:hover:not(.${pickersInputClasses.disabled}, .${pickersInputClasses.error}):before`]: {\n          borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,\n          // Reset on touch devices, it doesn't add specificity\n          '@media (hover: none)': {\n            borderBottom: `1px solid ${bottomLineColor}`\n          }\n        },\n        [`&.${pickersInputClasses.disabled}:before`]: {\n          borderBottomStyle: 'dotted'\n        }\n      }\n    }]\n  };\n});\nconst useUtilityClasses = (classes, ownerState) => {\n  const {\n    inputHasUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', !inputHasUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getPickersInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\n\n/**\n * @ignore - internal component.\n */\nconst PickersInput = /*#__PURE__*/React.forwardRef(function PickersInput(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersInput'\n  });\n  const {\n      label,\n      disableUnderline = false,\n      classes: classesProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const pickerTextFieldOwnerState = usePickerTextFieldOwnerState();\n  const ownerState = _extends({}, pickerTextFieldOwnerState, {\n    inputHasUnderline: !disableUnderline\n  });\n  const classes = useUtilityClasses(classesProp, ownerState);\n  return /*#__PURE__*/_jsx(PickersInputBase, _extends({\n    slots: {\n      root: PickersInputRoot\n    },\n    slotProps: {\n      root: {\n        disableUnderline\n      }\n    }\n  }, other, {\n    ownerState: ownerState,\n    label: label,\n    classes: classes,\n    ref: ref\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersInput.displayName = \"PickersInput\";\nprocess.env.NODE_ENV !== \"production\" ? PickersInput.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Is `true` if the current values equals the empty value.\n   * For a single item value, it means that `value === null`\n   * For a range value, it means that `value === [null, null]`\n   */\n  areAllSectionsEmpty: PropTypes.bool.isRequired,\n  className: PropTypes.string,\n  component: PropTypes.elementType,\n  /**\n   * If true, the whole element is editable.\n   * Useful when all the sections are selected.\n   */\n  contentEditable: PropTypes.bool.isRequired,\n  'data-multi-input': PropTypes.string,\n  disableUnderline: PropTypes.bool,\n  /**\n   * The elements to render.\n   * Each element contains the prop to edit a section of the value.\n   */\n  elements: PropTypes.arrayOf(PropTypes.shape({\n    after: PropTypes.object.isRequired,\n    before: PropTypes.object.isRequired,\n    container: PropTypes.object.isRequired,\n    content: PropTypes.object.isRequired\n  })).isRequired,\n  endAdornment: PropTypes.node,\n  fullWidth: PropTypes.bool,\n  id: PropTypes.string,\n  inputProps: PropTypes.object,\n  inputRef: refType,\n  label: PropTypes.node,\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  name: PropTypes.string,\n  onChange: PropTypes.func.isRequired,\n  onClick: PropTypes.func.isRequired,\n  onInput: PropTypes.func.isRequired,\n  onKeyDown: PropTypes.func.isRequired,\n  onPaste: PropTypes.func.isRequired,\n  ownerState: PropTypes /* @typescript-to-proptypes-ignore */.any,\n  readOnly: PropTypes.bool,\n  renderSuffix: PropTypes.func,\n  sectionListRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      getRoot: PropTypes.func.isRequired,\n      getSectionContainer: PropTypes.func.isRequired,\n      getSectionContent: PropTypes.func.isRequired,\n      getSectionIndexFromDOMElement: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.object,\n  startAdornment: PropTypes.node,\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  value: PropTypes.string.isRequired\n} : void 0;\nexport { PickersInput };\nPickersInput.muiName = 'Input';","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onFocus\", \"onBlur\", \"className\", \"classes\", \"color\", \"disabled\", \"error\", \"variant\", \"required\", \"hiddenLabel\", \"InputProps\", \"inputProps\", \"inputRef\", \"sectionListRef\", \"elements\", \"areAllSectionsEmpty\", \"onClick\", \"onKeyDown\", \"onKeyUp\", \"onPaste\", \"onInput\", \"endAdornment\", \"startAdornment\", \"tabIndex\", \"contentEditable\", \"focused\", \"value\", \"onChange\", \"fullWidth\", \"id\", \"name\", \"helperText\", \"FormHelperTextProps\", \"label\", \"InputLabelProps\", \"data-active-range-position\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport refType from '@mui/utils/refType';\nimport useForkRef from '@mui/utils/useForkRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport InputLabel from '@mui/material/InputLabel';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControl from '@mui/material/FormControl';\nimport { getPickersTextFieldUtilityClass } from \"./pickersTextFieldClasses.js\";\nimport { PickersOutlinedInput } from \"./PickersOutlinedInput/index.js\";\nimport { PickersFilledInput } from \"./PickersFilledInput/index.js\";\nimport { PickersInput } from \"./PickersInput/index.js\";\nimport { useFieldOwnerState } from \"../internals/hooks/useFieldOwnerState.js\";\nimport { PickerTextFieldOwnerStateContext } from \"./usePickerTextFieldOwnerState.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst VARIANT_COMPONENT = {\n  standard: PickersInput,\n  filled: PickersFilledInput,\n  outlined: PickersOutlinedInput\n};\nconst PickersTextFieldRoot = styled(FormControl, {\n  name: 'MuiPickersTextField',\n  slot: 'Root'\n})({\n  maxWidth: '100%'\n});\nconst useUtilityClasses = (classes, ownerState) => {\n  const {\n    isFieldFocused,\n    isFieldDisabled,\n    isFieldRequired\n  } = ownerState;\n  const slots = {\n    root: ['root', isFieldFocused && !isFieldDisabled && 'focused', isFieldDisabled && 'disabled', isFieldRequired && 'required']\n  };\n  return composeClasses(slots, getPickersTextFieldUtilityClass, classes);\n};\nconst PickersTextField = /*#__PURE__*/React.forwardRef(function PickersTextField(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersTextField'\n  });\n  const {\n      // Props used by FormControl\n      onFocus,\n      onBlur,\n      className,\n      classes: classesProp,\n      color = 'primary',\n      disabled = false,\n      error = false,\n      variant = 'outlined',\n      required = false,\n      hiddenLabel = false,\n      // Props used by PickersInput\n      InputProps,\n      inputProps,\n      inputRef,\n      sectionListRef,\n      elements,\n      areAllSectionsEmpty,\n      onClick,\n      onKeyDown,\n      onKeyUp,\n      onPaste,\n      onInput,\n      endAdornment,\n      startAdornment,\n      tabIndex,\n      contentEditable,\n      focused,\n      value,\n      onChange,\n      fullWidth,\n      id: idProp,\n      name,\n      // Props used by FormHelperText\n      helperText,\n      FormHelperTextProps,\n      // Props used by InputLabel\n      label,\n      InputLabelProps,\n      // @ts-ignore\n      'data-active-range-position': dataActiveRangePosition\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const rootRef = React.useRef(null);\n  const handleRootRef = useForkRef(ref, rootRef);\n  const id = useId(idProp);\n  const helperTextId = helperText && id ? `${id}-helper-text` : undefined;\n  const inputLabelId = label && id ? `${id}-label` : undefined;\n  const fieldOwnerState = useFieldOwnerState({\n    disabled: props.disabled,\n    required: props.required,\n    readOnly: InputProps?.readOnly\n  });\n  const ownerState = React.useMemo(() => _extends({}, fieldOwnerState, {\n    isFieldValueEmpty: areAllSectionsEmpty,\n    isFieldFocused: focused ?? false,\n    hasFieldError: error ?? false,\n    inputSize: props.size ?? 'medium',\n    inputColor: color ?? 'primary',\n    isInputInFullWidth: fullWidth ?? false,\n    hasStartAdornment: Boolean(startAdornment ?? InputProps?.startAdornment),\n    hasEndAdornment: Boolean(endAdornment ?? InputProps?.endAdornment),\n    inputHasLabel: !!label,\n    isLabelShrunk: Boolean(InputLabelProps?.shrink)\n  }), [fieldOwnerState, areAllSectionsEmpty, focused, error, props.size, color, fullWidth, startAdornment, endAdornment, InputProps?.startAdornment, InputProps?.endAdornment, label, InputLabelProps?.shrink]);\n  const classes = useUtilityClasses(classesProp, ownerState);\n  const PickersInputComponent = VARIANT_COMPONENT[variant];\n  const inputAdditionalProps = {};\n  if (variant === 'outlined') {\n    if (InputLabelProps && typeof InputLabelProps.shrink !== 'undefined') {\n      inputAdditionalProps.notched = InputLabelProps.shrink;\n    }\n    inputAdditionalProps.label = label;\n  } else if (variant === 'filled') {\n    inputAdditionalProps.hiddenLabel = hiddenLabel;\n  }\n  return /*#__PURE__*/_jsx(PickerTextFieldOwnerStateContext.Provider, {\n    value: ownerState,\n    children: /*#__PURE__*/_jsxs(PickersTextFieldRoot, _extends({\n      className: clsx(classes.root, className),\n      ref: handleRootRef,\n      focused: focused,\n      disabled: disabled,\n      variant: variant,\n      error: error,\n      color: color,\n      fullWidth: fullWidth,\n      required: required,\n      ownerState: ownerState\n    }, other, {\n      children: [label != null && label !== '' && /*#__PURE__*/_jsx(InputLabel, _extends({\n        htmlFor: id,\n        id: inputLabelId\n      }, InputLabelProps, {\n        children: label\n      })), /*#__PURE__*/_jsx(PickersInputComponent, _extends({\n        elements: elements,\n        areAllSectionsEmpty: areAllSectionsEmpty,\n        onClick: onClick,\n        onKeyDown: onKeyDown,\n        onKeyUp: onKeyUp,\n        onInput: onInput,\n        onPaste: onPaste,\n        onFocus: onFocus,\n        onBlur: onBlur,\n        endAdornment: endAdornment,\n        startAdornment: startAdornment,\n        tabIndex: tabIndex,\n        contentEditable: contentEditable,\n        value: value,\n        onChange: onChange,\n        id: id,\n        fullWidth: fullWidth,\n        inputProps: inputProps,\n        inputRef: inputRef,\n        sectionListRef: sectionListRef,\n        label: label,\n        name: name,\n        role: \"group\",\n        \"aria-labelledby\": inputLabelId,\n        \"aria-describedby\": helperTextId,\n        \"aria-live\": helperTextId ? 'polite' : undefined,\n        \"data-active-range-position\": dataActiveRangePosition\n      }, inputAdditionalProps, InputProps)), helperText && /*#__PURE__*/_jsx(FormHelperText, _extends({\n        id: helperTextId\n      }, FormHelperTextProps, {\n        children: helperText\n      }))]\n    }))\n  });\n});\nif (process.env.NODE_ENV !== \"production\") PickersTextField.displayName = \"PickersTextField\";\nprocess.env.NODE_ENV !== \"production\" ? PickersTextField.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Is `true` if the current values equals the empty value.\n   * For a single item value, it means that `value === null`\n   * For a range value, it means that `value === [null, null]`\n   */\n  areAllSectionsEmpty: PropTypes.bool.isRequired,\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']),\n  component: PropTypes.elementType,\n  /**\n   * If true, the whole element is editable.\n   * Useful when all the sections are selected.\n   */\n  contentEditable: PropTypes.bool.isRequired,\n  disabled: PropTypes.bool.isRequired,\n  /**\n   * The elements to render.\n   * Each element contains the prop to edit a section of the value.\n   */\n  elements: PropTypes.arrayOf(PropTypes.shape({\n    after: PropTypes.object.isRequired,\n    before: PropTypes.object.isRequired,\n    container: PropTypes.object.isRequired,\n    content: PropTypes.object.isRequired\n  })).isRequired,\n  endAdornment: PropTypes.node,\n  error: PropTypes.bool.isRequired,\n  /**\n   * If `true`, the component is displayed in focused state.\n   */\n  focused: PropTypes.bool,\n  FormHelperTextProps: PropTypes.object,\n  fullWidth: PropTypes.bool,\n  /**\n   * The helper text content.\n   */\n  helperText: PropTypes.node,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  id: PropTypes.string,\n  InputLabelProps: PropTypes.object,\n  inputProps: PropTypes.object,\n  /**\n   * Props applied to the Input element.\n   * It will be a [`FilledInput`](/material-ui/api/filled-input/),\n   * [`OutlinedInput`](/material-ui/api/outlined-input/) or [`Input`](/material-ui/api/input/)\n   * component depending on the `variant` prop value.\n   */\n  InputProps: PropTypes.object,\n  inputRef: refType,\n  label: PropTypes.node,\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  name: PropTypes.string,\n  onBlur: PropTypes.func.isRequired,\n  onChange: PropTypes.func.isRequired,\n  onClick: PropTypes.func.isRequired,\n  onFocus: PropTypes.func.isRequired,\n  onInput: PropTypes.func.isRequired,\n  onKeyDown: PropTypes.func.isRequired,\n  onPaste: PropTypes.func.isRequired,\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  sectionListRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      getRoot: PropTypes.func.isRequired,\n      getSectionContainer: PropTypes.func.isRequired,\n      getSectionContent: PropTypes.func.isRequired,\n      getSectionIndexFromDOMElement: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes.oneOf(['medium', 'small']),\n  startAdornment: PropTypes.node,\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  value: PropTypes.string.isRequired,\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport { PickersTextField };","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"enableAccessibleFieldDOMStructure\"],\n  _excluded2 = [\"InputProps\", \"readOnly\", \"onClear\", \"clearable\", \"clearButtonPosition\", \"openPickerButtonPosition\", \"openPickerAriaLabel\"],\n  _excluded3 = [\"onPaste\", \"onKeyDown\", \"inputMode\", \"readOnly\", \"InputProps\", \"inputProps\", \"inputRef\", \"onClear\", \"clearable\", \"clearButtonPosition\", \"openPickerButtonPosition\", \"openPickerAriaLabel\"],\n  _excluded4 = [\"ownerState\"],\n  _excluded5 = [\"ownerState\"],\n  _excluded6 = [\"ownerState\"],\n  _excluded7 = [\"ownerState\"],\n  _excluded8 = [\"InputProps\", \"inputProps\"];\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useForkRef from '@mui/utils/useForkRef';\nimport resolveComponentProps from '@mui/utils/resolveComponentProps';\nimport MuiTextField from '@mui/material/TextField';\nimport MuiIconButton from '@mui/material/IconButton';\nimport MuiInputAdornment from '@mui/material/InputAdornment';\nimport { major as materialMajor } from '@mui/material/version';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport { useFieldOwnerState } from \"../hooks/useFieldOwnerState.js\";\nimport { usePickerTranslations } from \"../../hooks/index.js\";\nimport { ClearIcon as MuiClearIcon } from \"../../icons/index.js\";\nimport { useNullablePickerContext } from \"../hooks/useNullablePickerContext.js\";\nimport { PickersTextField } from \"../../PickersTextField/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst noop = () => {};\nexport const cleanFieldResponse = _ref => {\n  let {\n      enableAccessibleFieldDOMStructure\n    } = _ref,\n    fieldResponse = _objectWithoutPropertiesLoose(_ref, _excluded);\n  if (enableAccessibleFieldDOMStructure) {\n    const {\n        InputProps,\n        readOnly,\n        onClear,\n        clearable,\n        clearButtonPosition,\n        openPickerButtonPosition,\n        openPickerAriaLabel\n      } = fieldResponse,\n      other = _objectWithoutPropertiesLoose(fieldResponse, _excluded2);\n    const mergedInputProps = materialMajor >= 6 && other?.slotProps?.input ? mergeSlotProps(other?.slotProps?.input, InputProps) : noop;\n    return {\n      clearable,\n      onClear,\n      clearButtonPosition,\n      openPickerButtonPosition,\n      openPickerAriaLabel,\n      textFieldProps: _extends({}, other, materialMajor >= 6 && other?.slotProps?.input ? {\n        slotProps: _extends({}, other?.slotProps, {\n          input: ownerState => _extends({}, resolveComponentProps(mergedInputProps, ownerState), {\n            readOnly\n          })\n        })\n      } : {\n        InputProps: _extends({}, InputProps ?? {}, {\n          readOnly\n        })\n      })\n    };\n  }\n  const {\n      onPaste,\n      onKeyDown,\n      inputMode,\n      readOnly,\n      InputProps,\n      inputProps,\n      inputRef,\n      onClear,\n      clearable,\n      clearButtonPosition,\n      openPickerButtonPosition,\n      openPickerAriaLabel\n    } = fieldResponse,\n    other = _objectWithoutPropertiesLoose(fieldResponse, _excluded3);\n  const mergedInputProps = materialMajor >= 6 && other?.slotProps?.input ? mergeSlotProps(other?.slotProps?.input, InputProps) : noop;\n  const mergedHtmlInputProps = materialMajor >= 6 && other?.slotProps?.htmlInput ? mergeSlotProps(other?.slotProps?.htmlInput, inputProps) : noop;\n  return {\n    clearable,\n    onClear,\n    clearButtonPosition,\n    openPickerButtonPosition,\n    openPickerAriaLabel,\n    textFieldProps: _extends({}, other, materialMajor >= 6 && (other?.slotProps?.input || other?.slotProps?.htmlInput) ? {\n      slotProps: _extends({}, other?.slotProps, {\n        input: ownerState => _extends({}, resolveComponentProps(mergedInputProps, ownerState), {\n          readOnly\n        }),\n        htmlInput: ownerState => _extends({}, resolveComponentProps(mergedHtmlInputProps, ownerState), {\n          inputMode,\n          onPaste,\n          onKeyDown,\n          ref: inputRef\n        })\n      })\n    } : {\n      InputProps: _extends({}, InputProps ?? {}, {\n        readOnly\n      }),\n      inputProps: _extends({}, inputProps ?? {}, {\n        inputMode,\n        onPaste,\n        onKeyDown,\n        ref: inputRef\n      })\n    })\n  };\n};\nexport const PickerFieldUIContext = /*#__PURE__*/React.createContext({\n  slots: {},\n  slotProps: {},\n  inputRef: undefined\n});\n\n/**\n * Adds the button to open the Picker and the button to clear the value of the field.\n * @ignore - internal component.\n */\nif (process.env.NODE_ENV !== \"production\") PickerFieldUIContext.displayName = \"PickerFieldUIContext\";\nexport function PickerFieldUI(props) {\n  const {\n    fieldResponse,\n    defaultOpenPickerIcon\n  } = props;\n  const translations = usePickerTranslations();\n  const pickerContext = useNullablePickerContext();\n  const pickerFieldUIContext = React.useContext(PickerFieldUIContext);\n  const {\n    textFieldProps,\n    onClear,\n    clearable,\n    openPickerAriaLabel,\n    clearButtonPosition: clearButtonPositionProp = 'end',\n    openPickerButtonPosition: openPickerButtonPositionProp = 'end'\n  } = cleanFieldResponse(fieldResponse);\n  const ownerState = useFieldOwnerState(textFieldProps);\n  const handleClickOpeningButton = useEventCallback(event => {\n    event.preventDefault();\n    pickerContext?.setOpen(prev => !prev);\n  });\n  const triggerStatus = pickerContext ? pickerContext.triggerStatus : 'hidden';\n  const clearButtonPosition = clearable ? clearButtonPositionProp : null;\n  const openPickerButtonPosition = triggerStatus !== 'hidden' ? openPickerButtonPositionProp : null;\n  const TextField = pickerFieldUIContext.slots.textField ?? (fieldResponse.enableAccessibleFieldDOMStructure === false ? MuiTextField : PickersTextField);\n  const InputAdornment = pickerFieldUIContext.slots.inputAdornment ?? MuiInputAdornment;\n  const _useSlotProps = useSlotProps({\n      elementType: InputAdornment,\n      externalSlotProps: pickerFieldUIContext.slotProps.inputAdornment,\n      additionalProps: {\n        position: 'start'\n      },\n      ownerState: _extends({}, ownerState, {\n        position: 'start'\n      })\n    }),\n    startInputAdornmentProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded4);\n  const _useSlotProps2 = useSlotProps({\n      elementType: InputAdornment,\n      externalSlotProps: pickerFieldUIContext.slotProps.inputAdornment,\n      additionalProps: {\n        position: 'end'\n      },\n      ownerState: _extends({}, ownerState, {\n        position: 'end'\n      })\n    }),\n    endInputAdornmentProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded5);\n  const OpenPickerButton = pickerFieldUIContext.slots.openPickerButton ?? MuiIconButton;\n  // We don't want to forward the `ownerState` to the `<IconButton />` component, see mui/material-ui#34056\n  const _useSlotProps3 = useSlotProps({\n      elementType: OpenPickerButton,\n      externalSlotProps: pickerFieldUIContext.slotProps.openPickerButton,\n      additionalProps: {\n        disabled: triggerStatus === 'disabled',\n        onClick: handleClickOpeningButton,\n        'aria-label': openPickerAriaLabel,\n        edge:\n        // open button is always rendered at the edge\n        textFieldProps.variant !== 'standard' ? openPickerButtonPosition : false\n      },\n      ownerState\n    }),\n    openPickerButtonProps = _objectWithoutPropertiesLoose(_useSlotProps3, _excluded6);\n  const OpenPickerIcon = pickerFieldUIContext.slots.openPickerIcon ?? defaultOpenPickerIcon;\n  const openPickerIconProps = useSlotProps({\n    elementType: OpenPickerIcon,\n    externalSlotProps: pickerFieldUIContext.slotProps.openPickerIcon,\n    ownerState\n  });\n  const ClearButton = pickerFieldUIContext.slots.clearButton ?? MuiIconButton;\n  // We don't want to forward the `ownerState` to the `<IconButton />` component, see mui/material-ui#34056\n  const _useSlotProps4 = useSlotProps({\n      elementType: ClearButton,\n      externalSlotProps: pickerFieldUIContext.slotProps.clearButton,\n      className: 'clearButton',\n      additionalProps: {\n        title: translations.fieldClearLabel,\n        tabIndex: -1,\n        onClick: onClear,\n        disabled: fieldResponse.disabled || fieldResponse.readOnly,\n        edge:\n        // clear button can only be at the edge if it's position differs from the open button\n        textFieldProps.variant !== 'standard' && clearButtonPosition !== openPickerButtonPosition ? clearButtonPosition : false\n      },\n      ownerState\n    }),\n    clearButtonProps = _objectWithoutPropertiesLoose(_useSlotProps4, _excluded7);\n  const ClearIcon = pickerFieldUIContext.slots.clearIcon ?? MuiClearIcon;\n  const clearIconProps = useSlotProps({\n    elementType: ClearIcon,\n    externalSlotProps: pickerFieldUIContext.slotProps.clearIcon,\n    additionalProps: {\n      fontSize: 'small'\n    },\n    ownerState\n  });\n  textFieldProps.ref = useForkRef(textFieldProps.ref, pickerContext?.rootRef);\n  const additionalTextFieldInputProps = {};\n  const textFieldInputProps = resolveComponentProps((materialMajor >= 6 && textFieldProps?.slotProps?.input) ?? textFieldProps.InputProps, ownerState);\n  if (pickerContext) {\n    additionalTextFieldInputProps.ref = pickerContext.triggerRef;\n  }\n  if (!textFieldInputProps?.startAdornment && (clearButtonPosition === 'start' || openPickerButtonPosition === 'start')) {\n    additionalTextFieldInputProps.startAdornment = /*#__PURE__*/_jsxs(InputAdornment, _extends({}, startInputAdornmentProps, {\n      children: [openPickerButtonPosition === 'start' && /*#__PURE__*/_jsx(OpenPickerButton, _extends({}, openPickerButtonProps, {\n        children: /*#__PURE__*/_jsx(OpenPickerIcon, _extends({}, openPickerIconProps))\n      })), clearButtonPosition === 'start' && /*#__PURE__*/_jsx(ClearButton, _extends({}, clearButtonProps, {\n        children: /*#__PURE__*/_jsx(ClearIcon, _extends({}, clearIconProps))\n      }))]\n    }));\n  }\n  if (!textFieldInputProps?.endAdornment && (clearButtonPosition === 'end' || openPickerButtonPosition === 'end')) {\n    additionalTextFieldInputProps.endAdornment = /*#__PURE__*/_jsxs(InputAdornment, _extends({}, endInputAdornmentProps, {\n      children: [clearButtonPosition === 'end' && /*#__PURE__*/_jsx(ClearButton, _extends({}, clearButtonProps, {\n        children: /*#__PURE__*/_jsx(ClearIcon, _extends({}, clearIconProps))\n      })), openPickerButtonPosition === 'end' && /*#__PURE__*/_jsx(OpenPickerButton, _extends({}, openPickerButtonProps, {\n        children: /*#__PURE__*/_jsx(OpenPickerIcon, _extends({}, openPickerIconProps))\n      }))]\n    }));\n  }\n  // handle the case of showing custom `inputAdornment` for Field components\n  if (!additionalTextFieldInputProps?.endAdornment && !additionalTextFieldInputProps?.startAdornment && pickerFieldUIContext.slots.inputAdornment) {\n    additionalTextFieldInputProps.endAdornment = /*#__PURE__*/_jsx(InputAdornment, _extends({}, endInputAdornmentProps));\n  }\n  if (clearButtonPosition != null) {\n    textFieldProps.sx = [{\n      '& .clearButton': {\n        opacity: 1\n      },\n      '@media (pointer: fine)': {\n        '& .clearButton': {\n          opacity: 0\n        },\n        '&:hover, &:focus-within': {\n          '.clearButton': {\n            opacity: 1\n          }\n        }\n      }\n    }, ...(Array.isArray(textFieldProps.sx) ? textFieldProps.sx : [textFieldProps.sx])];\n  }\n  const resolvedTextFieldInputProps = materialMajor >= 6 && textFieldProps?.slotProps?.input ? resolveComponentProps(mergeSlotProps(textFieldInputProps, additionalTextFieldInputProps), ownerState) : _extends({}, textFieldInputProps, additionalTextFieldInputProps);\n\n  // We need to resolve the `inputProps` since we are messing with those props in this component.\n  textFieldProps.inputProps = materialMajor >= 6 && textFieldProps?.slotProps?.htmlInput ? resolveComponentProps(textFieldProps.slotProps.htmlInput, ownerState) : textFieldProps.inputProps;\n\n  // Remove the `input` slotProps to avoid them overriding the manually resolved `InputProps`.\n  // Relevant on `materialMajor >= 6` since `slotProps` would take precedence.\n  delete textFieldProps?.slotProps?.input;\n  if (fieldResponse.enableAccessibleFieldDOMStructure) {\n    // Remove the `slotProps` on `PickersTextField` as they are not supported.\n    delete textFieldProps?.slotProps;\n  }\n  return /*#__PURE__*/_jsx(TextField, _extends({}, textFieldProps, {\n    InputProps: resolvedTextFieldInputProps\n  }));\n}\nexport function mergeSlotProps(slotPropsA, slotPropsB) {\n  if (!slotPropsA) {\n    return slotPropsB;\n  }\n  if (!slotPropsB) {\n    return slotPropsA;\n  }\n  return ownerState => {\n    return _extends({}, resolveComponentProps(slotPropsB, ownerState), resolveComponentProps(slotPropsA, ownerState));\n  };\n}\n\n/**\n * The `textField` slot props cannot be handled inside `PickerFieldUI` because it would be a breaking change to not pass the enriched props to `useField`.\n * Once the non-accessible DOM structure will be removed, we will be able to remove the `textField` slot and clean this logic.\n */\nexport function useFieldTextFieldProps(parameters) {\n  const {\n    ref,\n    externalForwardedProps,\n    slotProps\n  } = parameters;\n  const pickerFieldUIContext = React.useContext(PickerFieldUIContext);\n  const pickerContext = useNullablePickerContext();\n  const ownerState = useFieldOwnerState(externalForwardedProps);\n  const {\n      InputProps,\n      inputProps\n    } = externalForwardedProps,\n    otherExternalForwardedProps = _objectWithoutPropertiesLoose(externalForwardedProps, _excluded8);\n  const textFieldProps = useSlotProps({\n    elementType: PickersTextField,\n    externalSlotProps: mergeSlotProps(pickerFieldUIContext.slotProps.textField, slotProps?.textField),\n    externalForwardedProps: otherExternalForwardedProps,\n    additionalProps: {\n      ref,\n      sx: pickerContext?.rootSx,\n      label: pickerContext?.label,\n      name: pickerContext?.name,\n      className: pickerContext?.rootClassName,\n      inputRef: pickerFieldUIContext.inputRef\n    },\n    ownerState\n  });\n\n  // TODO: Remove when mui/material-ui#35088 will be merged\n  textFieldProps.inputProps = _extends({}, inputProps, textFieldProps.inputProps);\n  textFieldProps.InputProps = _extends({}, InputProps, textFieldProps.InputProps);\n  return textFieldProps;\n}\nexport function PickerFieldUIContextProvider(props) {\n  const {\n    slots = {},\n    slotProps = {},\n    inputRef,\n    children\n  } = props;\n  const contextValue = React.useMemo(() => ({\n    inputRef,\n    slots: {\n      openPickerButton: slots.openPickerButton,\n      openPickerIcon: slots.openPickerIcon,\n      textField: slots.textField,\n      inputAdornment: slots.inputAdornment,\n      clearIcon: slots.clearIcon,\n      clearButton: slots.clearButton\n    },\n    slotProps: {\n      openPickerButton: slotProps.openPickerButton,\n      openPickerIcon: slotProps.openPickerIcon,\n      textField: slotProps.textField,\n      inputAdornment: slotProps.inputAdornment,\n      clearIcon: slotProps.clearIcon,\n      clearButton: slotProps.clearButton\n    }\n  }), [inputRef, slots.openPickerButton, slots.openPickerIcon, slots.textField, slots.inputAdornment, slots.clearIcon, slots.clearButton, slotProps.openPickerButton, slotProps.openPickerIcon, slotProps.textField, slotProps.inputAdornment, slotProps.clearIcon, slotProps.clearButton]);\n  return /*#__PURE__*/_jsx(PickerFieldUIContext.Provider, {\n    value: contextValue,\n    children: children\n  });\n}","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport refType from '@mui/utils/refType';\nimport { useDateField } from \"./useDateField.js\";\nimport { PickerFieldUI, PickerFieldUIContextProvider, useFieldTextFieldProps } from \"../internals/components/PickerFieldUI.js\";\nimport { CalendarIcon } from \"../icons/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Demos:\n *\n * - [DateField](http://mui.com/x/react-date-pickers/date-field/)\n * - [Fields](https://mui.com/x/react-date-pickers/fields/)\n *\n * API:\n *\n * - [DateField API](https://mui.com/x/api/date-pickers/date-field/)\n */\nconst DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, inRef) {\n  const themeProps = useThemeProps({\n    props: inProps,\n    name: 'MuiDateField'\n  });\n  const {\n      slots,\n      slotProps\n    } = themeProps,\n    other = _objectWithoutPropertiesLoose(themeProps, _excluded);\n  const textFieldProps = useFieldTextFieldProps({\n    slotProps,\n    ref: inRef,\n    externalForwardedProps: other\n  });\n  const fieldResponse = useDateField(textFieldProps);\n  return /*#__PURE__*/_jsx(PickerFieldUIContextProvider, {\n    slots: slots,\n    slotProps: slotProps,\n    inputRef: other.inputRef,\n    children: /*#__PURE__*/_jsx(PickerFieldUI, {\n      fieldResponse: fieldResponse,\n      defaultOpenPickerIcon: CalendarIcon\n    })\n  });\n});\nif (process.env.NODE_ENV !== \"production\") DateField.displayName = \"DateField\";\nprocess.env.NODE_ENV !== \"production\" ? DateField.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  className: PropTypes.string,\n  /**\n   * If `true`, a clear button will be shown in the field allowing value clearing.\n   * @default false\n   */\n  clearable: PropTypes.bool,\n  /**\n   * The position at which the clear button is placed.\n   * If the field is not clearable, the button is not rendered.\n   * @default 'end'\n   */\n  clearButtonPosition: PropTypes.oneOf(['end', 'start']),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']),\n  component: PropTypes.elementType,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * @default true\n   */\n  enableAccessibleFieldDOMStructure: PropTypes.bool,\n  /**\n   * If `true`, the component is displayed in focused state.\n   */\n  focused: PropTypes.bool,\n  /**\n   * Format of the date when rendered in the input(s).\n   */\n  format: PropTypes.string,\n  /**\n   * Density of the format when rendered in the input.\n   * Setting `formatDensity` to `\"spacious\"` will add a space before and after each `/`, `-` and `.` character.\n   * @default \"dense\"\n   */\n  formatDensity: PropTypes.oneOf(['dense', 'spacious']),\n  /**\n   * Props applied to the [`FormHelperText`](https://mui.com/material-ui/api/form-helper-text/) element.\n   * @deprecated Use `slotProps.formHelperText` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  FormHelperTextProps: PropTypes.object,\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The helper text content.\n   */\n  helperText: PropTypes.node,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   * Use this prop to make `label` and `helperText` accessible for screen readers.\n   */\n  id: PropTypes.string,\n  /**\n   * Props applied to the [`InputLabel`](https://mui.com/material-ui/api/input-label/) element.\n   * Pointer events like `onClick` are enabled if and only if `shrink` is `true`.\n   * @deprecated Use `slotProps.inputLabel` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  InputLabelProps: PropTypes.object,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input#attributes) applied to the `input` element.\n   * @deprecated Use `slotProps.htmlInput` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Props applied to the Input element.\n   * It will be a [`FilledInput`](https://mui.com/material-ui/api/filled-input/),\n   * [`OutlinedInput`](https://mui.com/material-ui/api/outlined-input/) or [`Input`](https://mui.com/material-ui/api/input/)\n   * component depending on the `variant` prop value.\n   * @deprecated Use `slotProps.input` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  InputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The new value.\n   * @param {FieldChangeHandlerContext<TError>} context The context containing the validation result of the current value.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the clear button is clicked.\n   */\n  onClear: PropTypes.func,\n  /**\n   * Callback fired when the error associated with the current value changes.\n   * When a validation error is detected, the `error` parameter contains a non-null value.\n   * This can be used to render an appropriate form error.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TError} error The reason why the current value is not valid.\n   * @param {TValue} value The value associated with the error.\n   */\n  onError: PropTypes.func,\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the selected sections change.\n   * @param {FieldSelectedSections} newValue The new selected sections.\n   */\n  onSelectedSectionsChange: PropTypes.func,\n  /**\n   * The position at which the opening button is placed.\n   * If there is no Picker to open, the button is not rendered\n   * @default 'end'\n   */\n  openPickerButtonPosition: PropTypes.oneOf(['end', 'start']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * The date used to generate a part of the new value that is not present in the format when both `value` and `defaultValue` are empty.\n   * For example, on time fields it will be used to determine the date to set.\n   * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * If `true`, the label is displayed as required and the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The currently selected sections.\n   * This prop accepts four formats:\n   * 1. If a number is provided, the section at this index will be selected.\n   * 2. If a string of type `FieldSectionType` is provided, the first section with that name will be selected.\n   * 3. If `\"all\"` is provided, all the sections will be selected.\n   * 4. If `null` is provided, no section will be selected.\n   * If not provided, the selected sections will be handled internally.\n   */\n  selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number]),\n  /**\n   * Disable specific date.\n   *\n   * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.\n   *\n   * @param {PickerValidDate} day The date to test.\n   * @returns {boolean} If `true` the date will be disabled.\n   */\n  shouldDisableDate: PropTypes.func,\n  /**\n   * Disable specific month.\n   * @param {PickerValidDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * Disable specific year.\n   * @param {PickerValidDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * If `true`, the format will respect the leading zeroes (for example on dayjs, the format `M/D/YYYY` will render `8/16/2018`)\n   * If `false`, the format will always add leading zeroes (for example on dayjs, the format `M/D/YYYY` will render `08/16/2018`)\n   *\n   * Warning n°1: Luxon is not able to respect the leading zeroes when using macro tokens (for example \"DD\"), so `shouldRespectLeadingZeros={true}` might lead to inconsistencies when using `AdapterLuxon`.\n   *\n   * Warning n°2: When `shouldRespectLeadingZeros={true}`, the field will add an invisible character on the sections containing a single digit to make sure `onChange` is fired.\n   * If you need to get the clean value from the input, you can remove this character using `input.value.replace(/\\u200e/g, '')`.\n   *\n   * Warning n°3: When used in strict mode, dayjs and moment require to respect the leading zeros.\n   * This mean that when using `shouldRespectLeadingZeros={false}`, if you retrieve the value directly from the input (not listening to `onChange`) and your format contains tokens without leading zeros, the value will not be parsed by your library.\n   *\n   * @default false\n   */\n  shouldRespectLeadingZeros: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes.oneOf(['medium', 'small']),\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The ref object used to imperatively interact with the field.\n   */\n  unstableFieldRef: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport { DateField };","'use client';\n\nimport * as React from 'react';\nimport { validateDate } from \"../validation/index.js\";\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nexport const useIsDateDisabled = ({\n  shouldDisableDate,\n  shouldDisableMonth,\n  shouldDisableYear,\n  minDate,\n  maxDate,\n  disableFuture,\n  disablePast,\n  timezone\n}) => {\n  const adapter = usePickerAdapter();\n  return React.useCallback(day => validateDate({\n    adapter,\n    value: day,\n    timezone,\n    props: {\n      shouldDisableDate,\n      shouldDisableMonth,\n      shouldDisableYear,\n      minDate,\n      maxDate,\n      disableFuture,\n      disablePast\n    }\n  }) !== null, [adapter, shouldDisableDate, shouldDisableMonth, shouldDisableYear, minDate, maxDate, disableFuture, disablePast, timezone]);\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { useIsDateDisabled } from \"./useIsDateDisabled.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { SECTION_TYPE_GRANULARITY } from \"../internals/utils/getDefaultReferenceDate.js\";\nimport { findClosestEnabledDate } from \"../internals/utils/date-utils.js\";\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nconst createCalendarStateReducer = (reduceAnimations, adapter) => (state, action) => {\n  switch (action.type) {\n    case 'setVisibleDate':\n      return _extends({}, state, {\n        slideDirection: action.direction,\n        currentMonth: action.month,\n        isMonthSwitchingAnimating: !adapter.isSameMonth(action.month, state.currentMonth) && !reduceAnimations && !action.skipAnimation,\n        focusedDay: action.focusedDay\n      });\n    case 'changeMonthTimezone':\n      {\n        const newTimezone = action.newTimezone;\n        if (adapter.getTimezone(state.currentMonth) === newTimezone) {\n          return state;\n        }\n        let newCurrentMonth = adapter.setTimezone(state.currentMonth, newTimezone);\n        if (adapter.getMonth(newCurrentMonth) !== adapter.getMonth(state.currentMonth)) {\n          newCurrentMonth = adapter.setMonth(newCurrentMonth, adapter.getMonth(state.currentMonth));\n        }\n        return _extends({}, state, {\n          currentMonth: newCurrentMonth\n        });\n      }\n    case 'finishMonthSwitchingAnimation':\n      return _extends({}, state, {\n        isMonthSwitchingAnimating: false\n      });\n    default:\n      throw new Error('missing support');\n  }\n};\nexport const useCalendarState = params => {\n  const {\n    value,\n    referenceDate: referenceDateProp,\n    disableFuture,\n    disablePast,\n    maxDate,\n    minDate,\n    onMonthChange,\n    onYearChange,\n    reduceAnimations,\n    shouldDisableDate,\n    timezone,\n    getCurrentMonthFromVisibleDate\n  } = params;\n  const adapter = usePickerAdapter();\n  const reducerFn = React.useRef(createCalendarStateReducer(Boolean(reduceAnimations), adapter)).current;\n  const referenceDate = React.useMemo(() => {\n    return singleItemValueManager.getInitialReferenceValue({\n      value,\n      adapter,\n      timezone,\n      props: params,\n      referenceDate: referenceDateProp,\n      granularity: SECTION_TYPE_GRANULARITY.day\n    });\n  },\n  // We want the `referenceDate` to update on prop and `timezone` change (https://github.com/mui/mui-x/issues/10804)\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  [referenceDateProp, timezone]);\n  const [calendarState, dispatch] = React.useReducer(reducerFn, {\n    isMonthSwitchingAnimating: false,\n    focusedDay: referenceDate,\n    // Keep the time from the reference date when computing the current month anchor.\n    // Using startOfMonth would reset the time to 00:00 which breaks expectations\n    // that month selections preserve the referenceDate time when no value is provided.\n    // See tests: \"should use `referenceDate` when no value defined\".\n    currentMonth: adapter.setDate(referenceDate, 1),\n    slideDirection: 'left'\n  });\n  const isDateDisabled = useIsDateDisabled({\n    shouldDisableDate,\n    minDate,\n    maxDate,\n    disableFuture,\n    disablePast,\n    timezone\n  });\n\n  // Ensure that `calendarState.currentMonth` timezone is updated when `referenceDate` (or timezone changes)\n  // https://github.com/mui/mui-x/issues/10804\n  React.useEffect(() => {\n    dispatch({\n      type: 'changeMonthTimezone',\n      newTimezone: adapter.getTimezone(referenceDate)\n    });\n  }, [referenceDate, adapter]);\n  const setVisibleDate = useEventCallback(({\n    target,\n    reason\n  }) => {\n    if (reason === 'cell-interaction' && calendarState.focusedDay != null && adapter.isSameDay(target, calendarState.focusedDay)) {\n      return;\n    }\n    const skipAnimation = reason === 'cell-interaction';\n    let month;\n    let focusedDay;\n    if (reason === 'cell-interaction') {\n      month = getCurrentMonthFromVisibleDate(target, calendarState.currentMonth);\n      focusedDay = target;\n    } else {\n      month = adapter.isSameMonth(target, calendarState.currentMonth) ? calendarState.currentMonth : adapter.startOfMonth(target);\n      focusedDay = target;\n\n      // If the date is disabled, we try to find a non-disabled date inside the same month.\n      if (isDateDisabled(focusedDay)) {\n        const startOfMonth = adapter.startOfMonth(target);\n        const endOfMonth = adapter.endOfMonth(target);\n        focusedDay = findClosestEnabledDate({\n          adapter,\n          date: focusedDay,\n          minDate: adapter.isBefore(minDate, startOfMonth) ? startOfMonth : minDate,\n          maxDate: adapter.isAfter(maxDate, endOfMonth) ? endOfMonth : maxDate,\n          disablePast,\n          disableFuture,\n          isDateDisabled,\n          timezone\n        });\n      }\n    }\n    const hasChangedMonth = !adapter.isSameMonth(calendarState.currentMonth, month);\n    const hasChangedYear = !adapter.isSameYear(calendarState.currentMonth, month);\n    if (hasChangedMonth) {\n      onMonthChange?.(month);\n    }\n    if (hasChangedYear) {\n      onYearChange?.(adapter.startOfYear(month));\n    }\n    dispatch({\n      type: 'setVisibleDate',\n      month,\n      direction: adapter.isAfterDay(month, calendarState.currentMonth) ? 'left' : 'right',\n      focusedDay: calendarState.focusedDay != null && focusedDay != null && adapter.isSameDay(focusedDay, calendarState.focusedDay) ? calendarState.focusedDay : focusedDay,\n      skipAnimation\n    });\n  });\n  const onMonthSwitchingAnimationEnd = React.useCallback(() => {\n    dispatch({\n      type: 'finishMonthSwitchingAnimation'\n    });\n  }, []);\n  return {\n    referenceDate,\n    calendarState,\n    setVisibleDate,\n    isDateDisabled,\n    onMonthSwitchingAnimationEnd\n  };\n};","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport const getPickersFadeTransitionGroupUtilityClass = slot => generateUtilityClass('MuiPickersFadeTransitionGroup', slot);\nexport const pickersFadeTransitionGroupClasses = generateUtilityClasses('MuiPickersFadeTransitionGroup', ['root']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { TransitionGroup } from 'react-transition-group';\nimport Fade from '@mui/material/Fade';\nimport { styled, useTheme, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { getPickersFadeTransitionGroupUtilityClass } from \"./pickersFadeTransitionGroupClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getPickersFadeTransitionGroupUtilityClass, classes);\n};\nconst PickersFadeTransitionGroupRoot = styled(TransitionGroup, {\n  name: 'MuiPickersFadeTransitionGroup',\n  slot: 'Root'\n})({\n  display: 'block',\n  position: 'relative'\n});\n\n/**\n * @ignore - do not document.\n */\nexport function PickersFadeTransitionGroup(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersFadeTransitionGroup'\n  });\n  const {\n    className,\n    reduceAnimations,\n    transKey,\n    classes: classesProp\n  } = props;\n  const {\n      children\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(classesProp);\n  const theme = useTheme();\n  if (reduceAnimations) {\n    return children;\n  }\n  return /*#__PURE__*/_jsx(PickersFadeTransitionGroupRoot, {\n    className: clsx(classes.root, className),\n    ownerState: other,\n    children: /*#__PURE__*/_jsx(Fade, {\n      appear: false,\n      mountOnEnter: true,\n      unmountOnExit: true,\n      timeout: {\n        appear: theme.transitions.duration.enteringScreen,\n        enter: theme.transitions.duration.enteringScreen,\n        exit: 0\n      },\n      children: children\n    }, transKey)\n  });\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickersDayUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersDay', slot);\n}\nexport const pickersDayClasses = generateUtilityClasses('MuiPickersDay', ['root', 'dayWithMargin', 'dayOutsideMonth', 'hiddenDaySpacingFiller', 'today', 'selected', 'disabled']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nexport function usePickerDayOwnerState(parameters) {\n  const {\n    disabled,\n    selected,\n    today,\n    outsideCurrentMonth,\n    day,\n    disableMargin,\n    disableHighlightToday,\n    showDaysOutsideCurrentMonth\n  } = parameters;\n  const adapter = usePickerAdapter();\n  const {\n    ownerState: pickerOwnerState\n  } = usePickerPrivateContext();\n  return React.useMemo(() => _extends({}, pickerOwnerState, {\n    day,\n    isDaySelected: selected ?? false,\n    isDayDisabled: disabled ?? false,\n    isDayCurrent: today ?? false,\n    isDayOutsideMonth: outsideCurrentMonth ?? false,\n    isDayStartOfWeek: adapter.isSameDay(day, adapter.startOfWeek(day)),\n    isDayEndOfWeek: adapter.isSameDay(day, adapter.endOfWeek(day)),\n    disableMargin: disableMargin ?? false,\n    disableHighlightToday: disableHighlightToday ?? false,\n    showDaysOutsideCurrentMonth: showDaysOutsideCurrentMonth ?? false\n  }), [adapter, pickerOwnerState, day, selected, disabled, today, outsideCurrentMonth, disableMargin, disableHighlightToday, showDaysOutsideCurrentMonth]);\n}","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"classes\", \"hidden\", \"isAnimating\", \"onClick\", \"onDaySelect\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onMouseDown\", \"onMouseEnter\", \"children\", \"isFirstVisibleCell\", \"isLastVisibleCell\", \"day\", \"selected\", \"disabled\", \"today\", \"outsideCurrentMonth\", \"disableMargin\", \"disableHighlightToday\", \"showDaysOutsideCurrentMonth\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useForkRef from '@mui/utils/useForkRef';\nimport { alpha, styled, useThemeProps } from '@mui/material/styles';\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nimport { DAY_SIZE, DAY_MARGIN } from \"../internals/constants/dimensions.js\";\nimport { getPickersDayUtilityClass, pickersDayClasses } from \"./pickersDayClasses.js\";\nimport { usePickerDayOwnerState } from \"./usePickerDayOwnerState.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = (classes, ownerState) => {\n  const {\n    isDaySelected,\n    isDayDisabled,\n    isDayCurrent,\n    isDayOutsideMonth,\n    disableMargin,\n    disableHighlightToday,\n    showDaysOutsideCurrentMonth\n  } = ownerState;\n  const isHiddenDaySpacingFiller = isDayOutsideMonth && !showDaysOutsideCurrentMonth;\n  const slots = {\n    root: ['root', isDaySelected && !isHiddenDaySpacingFiller && 'selected', isDayDisabled && 'disabled', !disableMargin && 'dayWithMargin', !disableHighlightToday && isDayCurrent && 'today', isDayOutsideMonth && showDaysOutsideCurrentMonth && 'dayOutsideMonth', isHiddenDaySpacingFiller && 'hiddenDaySpacingFiller'],\n    hiddenDaySpacingFiller: ['hiddenDaySpacingFiller']\n  };\n  return composeClasses(slots, getPickersDayUtilityClass, classes);\n};\nconst styleArg = ({\n  theme\n}) => _extends({}, theme.typography.caption, {\n  width: DAY_SIZE,\n  height: DAY_SIZE,\n  borderRadius: '50%',\n  padding: 0,\n  // explicitly setting to `transparent` to avoid potentially getting impacted by change from the overridden component\n  backgroundColor: 'transparent',\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.short\n  }),\n  color: (theme.vars || theme).palette.text.primary,\n  '@media (pointer: fine)': {\n    '&:hover': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity)\n    }\n  },\n  '&:focus': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.focusOpacity),\n    [`&.${pickersDayClasses.selected}`]: {\n      willChange: 'background-color',\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    }\n  },\n  [`&.${pickersDayClasses.selected}`]: {\n    color: (theme.vars || theme).palette.primary.contrastText,\n    backgroundColor: (theme.vars || theme).palette.primary.main,\n    fontWeight: theme.typography.fontWeightMedium,\n    '&:hover': {\n      willChange: 'background-color',\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    }\n  },\n  [`&.${pickersDayClasses.disabled}:not(.${pickersDayClasses.selected})`]: {\n    color: (theme.vars || theme).palette.text.disabled\n  },\n  [`&.${pickersDayClasses.disabled}&.${pickersDayClasses.selected}`]: {\n    opacity: 0.6\n  },\n  variants: [{\n    props: {\n      disableMargin: false\n    },\n    style: {\n      margin: `0 ${DAY_MARGIN}px`\n    }\n  }, {\n    props: {\n      isDayOutsideMonth: true,\n      showDaysOutsideCurrentMonth: true\n    },\n    style: {\n      color: (theme.vars || theme).palette.text.secondary\n    }\n  }, {\n    props: {\n      disableHighlightToday: false,\n      isDayCurrent: true\n    },\n    style: {\n      [`&:not(.${pickersDayClasses.selected})`]: {\n        border: `1px solid ${(theme.vars || theme).palette.text.secondary}`\n      }\n    }\n  }]\n});\nconst overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, !ownerState.disableMargin && styles.dayWithMargin, !ownerState.disableHighlightToday && ownerState.isDayCurrent && styles.today, ownerState.isDayOutsideMonth && ownerState.showDaysOutsideCurrentMonth && styles.dayOutsideMonth, ownerState.isDayOutsideMonth && !ownerState.showDaysOutsideCurrentMonth && styles.hiddenDaySpacingFiller];\n};\nconst PickersDayRoot = styled(ButtonBase, {\n  name: 'MuiPickersDay',\n  slot: 'Root',\n  overridesResolver\n})(styleArg);\nconst PickersDayFiller = styled('div', {\n  name: 'MuiPickersDay',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme\n}) => _extends({}, styleArg({\n  theme\n}), {\n  // visibility: 'hidden' does not work here as it hides the element from screen readers as well\n  opacity: 0,\n  pointerEvents: 'none'\n}));\nconst noop = () => {};\nconst PickersDayRaw = /*#__PURE__*/React.forwardRef(function PickersDay(inProps, forwardedRef) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersDay'\n  });\n  const {\n      autoFocus = false,\n      className,\n      classes: classesProp,\n      isAnimating,\n      onClick,\n      onDaySelect,\n      onFocus = noop,\n      onBlur = noop,\n      onKeyDown = noop,\n      onMouseDown = noop,\n      onMouseEnter = noop,\n      children,\n      day,\n      selected,\n      disabled,\n      today,\n      outsideCurrentMonth,\n      disableMargin,\n      disableHighlightToday,\n      showDaysOutsideCurrentMonth\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = usePickerDayOwnerState({\n    day,\n    selected,\n    disabled,\n    today,\n    outsideCurrentMonth,\n    disableMargin,\n    disableHighlightToday,\n    showDaysOutsideCurrentMonth\n  });\n  const classes = useUtilityClasses(classesProp, ownerState);\n  const adapter = usePickerAdapter();\n  const ref = React.useRef(null);\n  const handleRef = useForkRef(ref, forwardedRef);\n\n  // Since this is rendered when a Popper is opened we can't use passive effects.\n  // Focusing in passive effects in Popper causes scroll jump.\n  useEnhancedEffect(() => {\n    if (autoFocus && !disabled && !isAnimating && !outsideCurrentMonth) {\n      // ref.current being null would be a bug in MUI\n      ref.current.focus();\n    }\n  }, [autoFocus, disabled, isAnimating, outsideCurrentMonth]);\n\n  // For a day outside the current month, move the focus from mouseDown to mouseUp\n  // Goal: have the onClick ends before sliding to the new month\n  const handleMouseDown = event => {\n    onMouseDown(event);\n    if (outsideCurrentMonth) {\n      event.preventDefault();\n    }\n  };\n  const handleClick = event => {\n    event.defaultMuiPrevented = true;\n    if (!disabled) {\n      onDaySelect(day);\n    }\n    if (outsideCurrentMonth) {\n      event.currentTarget.focus();\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  if (outsideCurrentMonth && !showDaysOutsideCurrentMonth) {\n    return /*#__PURE__*/_jsx(PickersDayFiller, {\n      className: clsx(classes.root, classes.hiddenDaySpacingFiller, className),\n      ownerState: ownerState,\n      role: other.role\n    });\n  }\n  return /*#__PURE__*/_jsx(PickersDayRoot, _extends({\n    className: clsx(classes.root, className),\n    ref: handleRef,\n    centerRipple: true,\n    disabled: disabled,\n    tabIndex: selected ? 0 : -1,\n    onKeyDown: event => onKeyDown(event, day),\n    onFocus: event => onFocus(event, day),\n    onBlur: event => onBlur(event, day),\n    onMouseEnter: event => onMouseEnter(event, day),\n    onClick: handleClick,\n    onMouseDown: handleMouseDown\n  }, other, {\n    ownerState: ownerState,\n    children: children ?? adapter.format(day, 'dayOfMonth')\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersDayRaw.displayName = \"PickersDayRaw\";\nprocess.env.NODE_ENV !== \"production\" ? PickersDayRaw.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * A ref for imperative actions.\n   * It currently only supports `focusVisible()` action.\n   */\n  action: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      focusVisible: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * If `true`, the ripples are centered.\n   * They won't start at the cursor interaction position.\n   * @default false\n   */\n  centerRipple: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  component: PropTypes.elementType,\n  /**\n   * The date to show.\n   */\n  day: PropTypes.object.isRequired,\n  /**\n   * If `true`, renders as disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, days are rendering without margin. Useful for displaying linked range of days.\n   * @default false\n   */\n  disableMargin: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If `true`, the touch ripple effect is disabled.\n   * @default false\n   */\n  disableTouchRipple: PropTypes.bool,\n  /**\n   * If `true`, the base button will have a keyboard focus ripple.\n   * @default false\n   */\n  focusRipple: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  isAnimating: PropTypes.bool,\n  /**\n   * If `true`, day is the first visible cell of the month.\n   * Either the first day of the month or the first day of the week depending on `showDaysOutsideCurrentMonth`.\n   */\n  isFirstVisibleCell: PropTypes.bool.isRequired,\n  /**\n   * If `true`, day is the last visible cell of the month.\n   * Either the last day of the month or the last day of the week depending on `showDaysOutsideCurrentMonth`.\n   */\n  isLastVisibleCell: PropTypes.bool.isRequired,\n  onBlur: PropTypes.func,\n  onDaySelect: PropTypes.func.isRequired,\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the component is focused with a keyboard.\n   * We trigger a `onFocus` callback too.\n   */\n  onFocusVisible: PropTypes.func,\n  onKeyDown: PropTypes.func,\n  onMouseEnter: PropTypes.func,\n  /**\n   * If `true`, day is outside of month and will be hidden.\n   */\n  outsideCurrentMonth: PropTypes.bool.isRequired,\n  /**\n   * If `true`, renders as selected.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * If `true`, days outside the current month are rendered:\n   *\n   * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.\n   *\n   * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.\n   *\n   * - ignored if `calendars` equals more than `1` on range pickers.\n   * @default false\n   */\n  showDaysOutsideCurrentMonth: PropTypes.bool,\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @default 0\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * If `true`, renders as today date.\n   * @default false\n   */\n  today: PropTypes.bool,\n  /**\n   * Props applied to the `TouchRipple` element.\n   */\n  TouchRippleProps: PropTypes.object,\n  /**\n   * A ref that points to the `TouchRipple` element.\n   */\n  touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      pulsate: PropTypes.func.isRequired,\n      start: PropTypes.func.isRequired,\n      stop: PropTypes.func.isRequired\n    })\n  })])\n} : void 0;\n\n/**\n * Demos:\n *\n * - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)\n * API:\n *\n * - [PickersDay API](https://mui.com/x/api/date-pickers/pickers-day/)\n */\nexport const PickersDay = /*#__PURE__*/React.memo(PickersDayRaw);\nif (process.env.NODE_ENV !== \"production\") PickersDay.displayName = \"PickersDay\";","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport const getPickersSlideTransitionUtilityClass = slot => generateUtilityClass('MuiPickersSlideTransition', slot);\nexport const pickersSlideTransitionClasses = generateUtilityClasses('MuiPickersSlideTransition', ['root', 'slideEnter-left', 'slideEnter-right', 'slideEnterActive', 'slideExit', 'slideExitActiveLeft-left', 'slideExitActiveLeft-right']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"reduceAnimations\", \"slideDirection\", \"transKey\", \"classes\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, useTheme, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { getPickersSlideTransitionUtilityClass, pickersSlideTransitionClasses } from \"./pickersSlideTransitionClasses.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = (classes, ownerState) => {\n  const {\n    slideDirection\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    exit: ['slideExit'],\n    enterActive: ['slideEnterActive'],\n    enter: [`slideEnter-${slideDirection}`],\n    exitActive: [`slideExitActiveLeft-${slideDirection}`]\n  };\n  return composeClasses(slots, getPickersSlideTransitionUtilityClass, classes);\n};\nconst PickersSlideTransitionRoot = styled(TransitionGroup, {\n  name: 'MuiPickersSlideTransition',\n  slot: 'Root',\n  overridesResolver: (_, styles) => [styles.root, {\n    [`.${pickersSlideTransitionClasses['slideEnter-left']}`]: styles['slideEnter-left']\n  }, {\n    [`.${pickersSlideTransitionClasses['slideEnter-right']}`]: styles['slideEnter-right']\n  }, {\n    [`.${pickersSlideTransitionClasses.slideEnterActive}`]: styles.slideEnterActive\n  }, {\n    [`.${pickersSlideTransitionClasses.slideExit}`]: styles.slideExit\n  }, {\n    [`.${pickersSlideTransitionClasses['slideExitActiveLeft-left']}`]: styles['slideExitActiveLeft-left']\n  }, {\n    [`.${pickersSlideTransitionClasses['slideExitActiveLeft-right']}`]: styles['slideExitActiveLeft-right']\n  }]\n})(({\n  theme\n}) => {\n  const slideTransition = theme.transitions.create('transform', {\n    duration: theme.transitions.duration.complex,\n    easing: 'cubic-bezier(0.35, 0.8, 0.4, 1)'\n  });\n  return {\n    display: 'block',\n    position: 'relative',\n    overflowX: 'hidden',\n    '& > *': {\n      position: 'absolute',\n      top: 0,\n      right: 0,\n      left: 0\n    },\n    [`& .${pickersSlideTransitionClasses['slideEnter-left']}`]: {\n      willChange: 'transform',\n      transform: 'translate(100%)',\n      zIndex: 1\n    },\n    [`& .${pickersSlideTransitionClasses['slideEnter-right']}`]: {\n      willChange: 'transform',\n      transform: 'translate(-100%)',\n      zIndex: 1\n    },\n    [`& .${pickersSlideTransitionClasses.slideEnterActive}`]: {\n      transform: 'translate(0%)',\n      transition: slideTransition\n    },\n    [`& .${pickersSlideTransitionClasses.slideExit}`]: {\n      transform: 'translate(0%)'\n    },\n    [`& .${pickersSlideTransitionClasses['slideExitActiveLeft-left']}`]: {\n      willChange: 'transform',\n      transform: 'translate(-100%)',\n      transition: slideTransition,\n      zIndex: 0\n    },\n    [`& .${pickersSlideTransitionClasses['slideExitActiveLeft-right']}`]: {\n      willChange: 'transform',\n      transform: 'translate(100%)',\n      transition: slideTransition,\n      zIndex: 0\n    }\n  };\n});\n\n/**\n * @ignore - do not document.\n */\nexport function PickersSlideTransition(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersSlideTransition'\n  });\n  const {\n      children,\n      className,\n      reduceAnimations,\n      slideDirection,\n      transKey,\n      classes: classesProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    ownerState: pickerOwnerState\n  } = usePickerPrivateContext();\n  const ownerState = _extends({}, pickerOwnerState, {\n    slideDirection\n  });\n  const classes = useUtilityClasses(classesProp, ownerState);\n  const theme = useTheme();\n  if (reduceAnimations) {\n    return /*#__PURE__*/_jsx(\"div\", {\n      className: clsx(classes.root, className),\n      children: children\n    });\n  }\n  const transitionClasses = {\n    exit: classes.exit,\n    enterActive: classes.enterActive,\n    enter: classes.enter,\n    exitActive: classes.exitActive\n  };\n  return /*#__PURE__*/_jsx(PickersSlideTransitionRoot, {\n    className: clsx(classes.root, className),\n    childFactory: element => /*#__PURE__*/React.cloneElement(element, {\n      classNames: transitionClasses\n    }),\n    role: \"presentation\",\n    ownerState: ownerState,\n    children: /*#__PURE__*/_jsx(CSSTransition, _extends({\n      mountOnEnter: true,\n      unmountOnExit: true,\n      timeout: theme.transitions.duration.complex,\n      classNames: transitionClasses\n    }, other, {\n      children: children\n    }), transKey)\n  });\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport const getDayCalendarUtilityClass = slot => generateUtilityClass('MuiDayCalendar', slot);\nexport const dayCalendarClasses = generateUtilityClasses('MuiDayCalendar', ['root', 'header', 'weekDayLabel', 'loadingContainer', 'slideTransition', 'monthContainer', 'weekContainer', 'weekNumberLabel', 'weekNumber']);","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"parentProps\", \"day\", \"focusedDay\", \"selectedDays\", \"isDateDisabled\", \"currentMonthNumber\", \"isViewFocused\"],\n  _excluded2 = [\"ownerState\"];\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport Typography from '@mui/material/Typography';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport { PickersDay } from \"../PickersDay/index.js\";\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nimport { useNow } from \"../internals/hooks/useUtils.js\";\nimport { DAY_SIZE, DAY_MARGIN } from \"../internals/constants/dimensions.js\";\nimport { PickersSlideTransition } from \"./PickersSlideTransition.js\";\nimport { useIsDateDisabled } from \"./useIsDateDisabled.js\";\nimport { findClosestEnabledDate, getWeekdays } from \"../internals/utils/date-utils.js\";\nimport { getDayCalendarUtilityClass } from \"./dayCalendarClasses.js\";\nimport { usePickerDayOwnerState } from \"../PickersDay/usePickerDayOwnerState.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    header: ['header'],\n    weekDayLabel: ['weekDayLabel'],\n    loadingContainer: ['loadingContainer'],\n    slideTransition: ['slideTransition'],\n    monthContainer: ['monthContainer'],\n    weekContainer: ['weekContainer'],\n    weekNumberLabel: ['weekNumberLabel'],\n    weekNumber: ['weekNumber']\n  };\n  return composeClasses(slots, getDayCalendarUtilityClass, classes);\n};\nconst weeksContainerHeight = (DAY_SIZE + DAY_MARGIN * 2) * 6;\nconst PickersCalendarDayRoot = styled('div', {\n  name: 'MuiDayCalendar',\n  slot: 'Root'\n})({});\nconst PickersCalendarDayHeader = styled('div', {\n  name: 'MuiDayCalendar',\n  slot: 'Header'\n})({\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center'\n});\nconst PickersCalendarWeekDayLabel = styled(Typography, {\n  name: 'MuiDayCalendar',\n  slot: 'WeekDayLabel'\n})(({\n  theme\n}) => ({\n  width: 36,\n  height: 40,\n  margin: '0 2px',\n  textAlign: 'center',\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center',\n  color: (theme.vars || theme).palette.text.secondary\n}));\nconst PickersCalendarWeekNumberLabel = styled(Typography, {\n  name: 'MuiDayCalendar',\n  slot: 'WeekNumberLabel'\n})(({\n  theme\n}) => ({\n  width: 36,\n  height: 40,\n  margin: '0 2px',\n  textAlign: 'center',\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center',\n  color: (theme.vars || theme).palette.text.disabled\n}));\nconst PickersCalendarWeekNumber = styled(Typography, {\n  name: 'MuiDayCalendar',\n  slot: 'WeekNumber'\n})(({\n  theme\n}) => _extends({}, theme.typography.caption, {\n  width: DAY_SIZE,\n  height: DAY_SIZE,\n  padding: 0,\n  margin: `0 ${DAY_MARGIN}px`,\n  color: (theme.vars || theme).palette.text.disabled,\n  fontSize: '0.75rem',\n  alignItems: 'center',\n  justifyContent: 'center',\n  display: 'inline-flex'\n}));\nconst PickersCalendarLoadingContainer = styled('div', {\n  name: 'MuiDayCalendar',\n  slot: 'LoadingContainer'\n})({\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center',\n  minHeight: weeksContainerHeight\n});\nconst PickersCalendarSlideTransition = styled(PickersSlideTransition, {\n  name: 'MuiDayCalendar',\n  slot: 'SlideTransition'\n})({\n  minHeight: weeksContainerHeight\n});\nconst PickersCalendarWeekContainer = styled('div', {\n  name: 'MuiDayCalendar',\n  slot: 'MonthContainer'\n})({\n  overflow: 'hidden'\n});\nconst PickersCalendarWeek = styled('div', {\n  name: 'MuiDayCalendar',\n  slot: 'WeekContainer'\n})({\n  margin: `${DAY_MARGIN}px 0`,\n  display: 'flex',\n  justifyContent: 'center'\n});\nfunction WrappedDay(_ref) {\n  let {\n      parentProps,\n      day,\n      focusedDay,\n      selectedDays,\n      isDateDisabled,\n      currentMonthNumber,\n      isViewFocused\n    } = _ref,\n    other = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const {\n    disabled,\n    disableHighlightToday,\n    isMonthSwitchingAnimating,\n    showDaysOutsideCurrentMonth,\n    slots,\n    slotProps,\n    timezone\n  } = parentProps;\n  const adapter = usePickerAdapter();\n  const now = useNow(timezone);\n  const isFocusableDay = focusedDay != null && adapter.isSameDay(day, focusedDay);\n  const isFocusedDay = isViewFocused && isFocusableDay;\n  const isSelected = selectedDays.some(selectedDay => adapter.isSameDay(selectedDay, day));\n  const isToday = adapter.isSameDay(day, now);\n  const isDisabled = React.useMemo(() => disabled || isDateDisabled(day), [disabled, isDateDisabled, day]);\n  const isOutsideCurrentMonth = React.useMemo(() => adapter.getMonth(day) !== currentMonthNumber, [adapter, day, currentMonthNumber]);\n  const ownerState = usePickerDayOwnerState({\n    day,\n    selected: isSelected,\n    disabled: isDisabled,\n    today: isToday,\n    outsideCurrentMonth: isOutsideCurrentMonth,\n    disableMargin: undefined,\n    // This prop can only be defined using slotProps.day so the ownerState for useSlotProps cannot have its value.\n    disableHighlightToday,\n    showDaysOutsideCurrentMonth\n  });\n  const Day = slots?.day ?? PickersDay;\n  // We don't want to pass to ownerState down, to avoid re-rendering all the day whenever a prop changes.\n  const _useSlotProps = useSlotProps({\n      elementType: Day,\n      externalSlotProps: slotProps?.day,\n      additionalProps: _extends({\n        disableHighlightToday,\n        showDaysOutsideCurrentMonth,\n        role: 'gridcell',\n        isAnimating: isMonthSwitchingAnimating,\n        // it is used in date range dragging logic by accessing `dataset.timestamp`\n        'data-timestamp': adapter.toJsDate(day).valueOf()\n      }, other),\n      ownerState: _extends({}, ownerState, {\n        day,\n        isDayDisabled: isDisabled,\n        isDaySelected: isSelected\n      })\n    }),\n    dayProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n  const isFirstVisibleCell = React.useMemo(() => {\n    const startOfMonth = adapter.startOfMonth(adapter.setMonth(day, currentMonthNumber));\n    if (!showDaysOutsideCurrentMonth) {\n      return adapter.isSameDay(day, startOfMonth);\n    }\n    return adapter.isSameDay(day, adapter.startOfWeek(startOfMonth));\n  }, [currentMonthNumber, day, showDaysOutsideCurrentMonth, adapter]);\n  const isLastVisibleCell = React.useMemo(() => {\n    const endOfMonth = adapter.endOfMonth(adapter.setMonth(day, currentMonthNumber));\n    if (!showDaysOutsideCurrentMonth) {\n      return adapter.isSameDay(day, endOfMonth);\n    }\n    return adapter.isSameDay(day, adapter.endOfWeek(endOfMonth));\n  }, [currentMonthNumber, day, showDaysOutsideCurrentMonth, adapter]);\n  return /*#__PURE__*/_jsx(Day, _extends({}, dayProps, {\n    day: day,\n    disabled: isDisabled,\n    autoFocus: !isOutsideCurrentMonth && isFocusedDay,\n    today: isToday,\n    outsideCurrentMonth: isOutsideCurrentMonth,\n    isFirstVisibleCell: isFirstVisibleCell,\n    isLastVisibleCell: isLastVisibleCell,\n    selected: isSelected,\n    tabIndex: isFocusableDay ? 0 : -1,\n    \"aria-selected\": isSelected,\n    \"aria-current\": isToday ? 'date' : undefined\n  }));\n}\n\n/**\n * @ignore - do not document.\n */\nexport function DayCalendar(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDayCalendar'\n  });\n  const adapter = usePickerAdapter();\n  const {\n    onFocusedDayChange,\n    className,\n    classes: classesProp,\n    currentMonth,\n    selectedDays,\n    focusedDay,\n    loading,\n    onSelectedDaysChange,\n    onMonthSwitchingAnimationEnd,\n    readOnly,\n    reduceAnimations,\n    renderLoading = () => /*#__PURE__*/_jsx(\"span\", {\n      children: \"...\"\n    }),\n    slideDirection,\n    TransitionProps,\n    disablePast,\n    disableFuture,\n    minDate,\n    maxDate,\n    shouldDisableDate,\n    shouldDisableMonth,\n    shouldDisableYear,\n    dayOfWeekFormatter = date => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase(),\n    hasFocus,\n    onFocusedViewChange,\n    gridLabelId,\n    displayWeekNumber,\n    fixedWeekNumber,\n    timezone\n  } = props;\n  const now = useNow(timezone);\n  const classes = useUtilityClasses(classesProp);\n  const isRtl = useRtl();\n  const isDateDisabled = useIsDateDisabled({\n    shouldDisableDate,\n    shouldDisableMonth,\n    shouldDisableYear,\n    minDate,\n    maxDate,\n    disablePast,\n    disableFuture,\n    timezone\n  });\n  const translations = usePickerTranslations();\n  const handleDaySelect = useEventCallback(day => {\n    if (readOnly) {\n      return;\n    }\n    onSelectedDaysChange(day);\n  });\n  const focusDay = day => {\n    if (!isDateDisabled(day)) {\n      onFocusedDayChange(day);\n      onFocusedViewChange?.(true);\n    }\n  };\n  const handleKeyDown = useEventCallback((event, day) => {\n    switch (event.key) {\n      case 'ArrowUp':\n        focusDay(adapter.addDays(day, -7));\n        event.preventDefault();\n        break;\n      case 'ArrowDown':\n        focusDay(adapter.addDays(day, 7));\n        event.preventDefault();\n        break;\n      case 'ArrowLeft':\n        {\n          const newFocusedDayDefault = adapter.addDays(day, isRtl ? 1 : -1);\n          const nextAvailableMonth = adapter.addMonths(day, isRtl ? 1 : -1);\n          const closestDayToFocus = findClosestEnabledDate({\n            adapter,\n            date: newFocusedDayDefault,\n            minDate: isRtl ? newFocusedDayDefault : adapter.startOfMonth(nextAvailableMonth),\n            maxDate: isRtl ? adapter.endOfMonth(nextAvailableMonth) : newFocusedDayDefault,\n            isDateDisabled,\n            timezone\n          });\n          focusDay(closestDayToFocus || newFocusedDayDefault);\n          event.preventDefault();\n          break;\n        }\n      case 'ArrowRight':\n        {\n          const newFocusedDayDefault = adapter.addDays(day, isRtl ? -1 : 1);\n          const nextAvailableMonth = adapter.addMonths(day, isRtl ? -1 : 1);\n          const closestDayToFocus = findClosestEnabledDate({\n            adapter,\n            date: newFocusedDayDefault,\n            minDate: isRtl ? adapter.startOfMonth(nextAvailableMonth) : newFocusedDayDefault,\n            maxDate: isRtl ? newFocusedDayDefault : adapter.endOfMonth(nextAvailableMonth),\n            isDateDisabled,\n            timezone\n          });\n          focusDay(closestDayToFocus || newFocusedDayDefault);\n          event.preventDefault();\n          break;\n        }\n      case 'Home':\n        focusDay(adapter.startOfWeek(day));\n        event.preventDefault();\n        break;\n      case 'End':\n        focusDay(adapter.endOfWeek(day));\n        event.preventDefault();\n        break;\n      case 'PageUp':\n        focusDay(adapter.addMonths(day, 1));\n        event.preventDefault();\n        break;\n      case 'PageDown':\n        focusDay(adapter.addMonths(day, -1));\n        event.preventDefault();\n        break;\n      default:\n        break;\n    }\n  });\n  const handleFocus = useEventCallback((event, day) => focusDay(day));\n  const handleBlur = useEventCallback((event, day) => {\n    if (focusedDay != null && adapter.isSameDay(focusedDay, day)) {\n      onFocusedViewChange?.(false);\n    }\n  });\n  const currentMonthNumber = adapter.getMonth(currentMonth);\n  const currentYearNumber = adapter.getYear(currentMonth);\n  const validSelectedDays = React.useMemo(() => selectedDays.filter(day => !!day).map(day => adapter.startOfDay(day)), [adapter, selectedDays]);\n\n  // need a new ref whenever the `key` of the transition changes: https://reactcommunity.org/react-transition-group/transition/#Transition-prop-nodeRef.\n  const transitionKey = `${currentYearNumber}-${currentMonthNumber}`;\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const slideNodeRef = React.useMemo(() => /*#__PURE__*/React.createRef(), [transitionKey]);\n  const weeksToDisplay = React.useMemo(() => {\n    const toDisplay = adapter.getWeekArray(currentMonth);\n    let nextMonth = adapter.addMonths(currentMonth, 1);\n    while (fixedWeekNumber && toDisplay.length < fixedWeekNumber) {\n      const additionalWeeks = adapter.getWeekArray(nextMonth);\n      const hasCommonWeek = adapter.isSameDay(toDisplay[toDisplay.length - 1][0], additionalWeeks[0][0]);\n      additionalWeeks.slice(hasCommonWeek ? 1 : 0).forEach(week => {\n        if (toDisplay.length < fixedWeekNumber) {\n          toDisplay.push(week);\n        }\n      });\n      nextMonth = adapter.addMonths(nextMonth, 1);\n    }\n    return toDisplay;\n  }, [currentMonth, fixedWeekNumber, adapter]);\n  return /*#__PURE__*/_jsxs(PickersCalendarDayRoot, {\n    role: \"grid\",\n    \"aria-labelledby\": gridLabelId,\n    className: classes.root,\n    children: [/*#__PURE__*/_jsxs(PickersCalendarDayHeader, {\n      role: \"row\",\n      className: classes.header,\n      children: [displayWeekNumber && /*#__PURE__*/_jsx(PickersCalendarWeekNumberLabel, {\n        variant: \"caption\",\n        role: \"columnheader\",\n        \"aria-label\": translations.calendarWeekNumberHeaderLabel,\n        className: classes.weekNumberLabel,\n        children: translations.calendarWeekNumberHeaderText\n      }), getWeekdays(adapter, now).map((weekday, i) => /*#__PURE__*/_jsx(PickersCalendarWeekDayLabel, {\n        variant: \"caption\",\n        role: \"columnheader\",\n        \"aria-label\": adapter.format(weekday, 'weekday'),\n        className: classes.weekDayLabel,\n        children: dayOfWeekFormatter(weekday)\n      }, i.toString()))]\n    }), loading ? /*#__PURE__*/_jsx(PickersCalendarLoadingContainer, {\n      className: classes.loadingContainer,\n      children: renderLoading()\n    }) : /*#__PURE__*/_jsx(PickersCalendarSlideTransition, _extends({\n      transKey: transitionKey,\n      onExited: onMonthSwitchingAnimationEnd,\n      reduceAnimations: reduceAnimations,\n      slideDirection: slideDirection,\n      className: clsx(className, classes.slideTransition)\n    }, TransitionProps, {\n      nodeRef: slideNodeRef,\n      children: /*#__PURE__*/_jsx(PickersCalendarWeekContainer, {\n        ref: slideNodeRef,\n        role: \"rowgroup\",\n        className: classes.monthContainer,\n        children: weeksToDisplay.map((week, index) => /*#__PURE__*/_jsxs(PickersCalendarWeek, {\n          role: \"row\",\n          className: classes.weekContainer\n          // fix issue of announcing row 1 as row 2\n          // caused by week day labels row\n          ,\n          \"aria-rowindex\": index + 1,\n          children: [displayWeekNumber && /*#__PURE__*/_jsx(PickersCalendarWeekNumber, {\n            className: classes.weekNumber,\n            role: \"rowheader\",\n            \"aria-label\": translations.calendarWeekNumberAriaLabelText(adapter.getWeekNumber(week[0])),\n            children: translations.calendarWeekNumberText(adapter.getWeekNumber(week[0]))\n          }), week.map((day, dayIndex) => /*#__PURE__*/_jsx(WrappedDay, {\n            parentProps: props,\n            day: day,\n            selectedDays: validSelectedDays,\n            isViewFocused: hasFocus,\n            focusedDay: focusedDay,\n            onKeyDown: handleKeyDown,\n            onFocus: handleFocus,\n            onBlur: handleBlur,\n            onDaySelect: handleDaySelect,\n            isDateDisabled: isDateDisabled,\n            currentMonthNumber: currentMonthNumber\n            // fix issue of announcing column 1 as column 2 when `displayWeekNumber` is enabled\n            ,\n            \"aria-colindex\": dayIndex + 1\n          }, day.toString()))]\n        }, `week-${week[0]}`))\n      })\n    }))]\n  });\n}","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getMonthCalendarUtilityClass(slot) {\n  return generateUtilityClass('MuiMonthCalendar', slot);\n}\nexport const monthCalendarClasses = generateUtilityClasses('MuiMonthCalendar', ['root', 'button', 'disabled', 'selected']);","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"classes\", \"disabled\", \"selected\", \"value\", \"onClick\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport { styled, alpha } from '@mui/material/styles';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { getMonthCalendarUtilityClass, monthCalendarClasses } from \"./monthCalendarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = (classes, ownerState) => {\n  const slots = {\n    button: ['button', ownerState.isMonthDisabled && 'disabled', ownerState.isMonthSelected && 'selected']\n  };\n  return composeClasses(slots, getMonthCalendarUtilityClass, classes);\n};\nconst DefaultMonthButton = styled('button', {\n  name: 'MuiMonthCalendar',\n  slot: 'Button',\n  overridesResolver: (_, styles) => [styles.button, {\n    [`&.${monthCalendarClasses.disabled}`]: styles.disabled\n  }, {\n    [`&.${monthCalendarClasses.selected}`]: styles.selected\n  }]\n})(({\n  theme\n}) => _extends({\n  color: 'unset',\n  backgroundColor: 'transparent',\n  border: 0,\n  outline: 0\n}, theme.typography.subtitle1, {\n  height: 36,\n  width: 72,\n  borderRadius: 18,\n  cursor: 'pointer',\n  '&:focus': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n  },\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n  },\n  '&:disabled': {\n    cursor: 'auto',\n    pointerEvents: 'none'\n  },\n  [`&.${monthCalendarClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.secondary\n  },\n  [`&.${monthCalendarClasses.selected}`]: {\n    color: (theme.vars || theme).palette.primary.contrastText,\n    backgroundColor: (theme.vars || theme).palette.primary.main,\n    '&:focus, &:hover': {\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    }\n  }\n}));\n\n/**\n * @ignore - do not document.\n */\nexport const MonthCalendarButton = /*#__PURE__*/React.memo(function MonthCalendarButton(props) {\n  const {\n      autoFocus,\n      classes: classesProp,\n      disabled,\n      selected,\n      value,\n      onClick,\n      onKeyDown,\n      onFocus,\n      onBlur,\n      slots,\n      slotProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ref = React.useRef(null);\n  const {\n    ownerState: pickerOwnerState\n  } = usePickerPrivateContext();\n  const ownerState = _extends({}, pickerOwnerState, {\n    isMonthDisabled: disabled,\n    isMonthSelected: selected\n  });\n  const classes = useUtilityClasses(classesProp, ownerState);\n\n  // We can't forward the `autoFocus` to the button because it is a native button, not a MUI Button\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      // `ref.current` being `null` would be a bug in MUI.\n      ref.current?.focus();\n    }\n  }, [autoFocus]);\n  const MonthButton = slots?.monthButton ?? DefaultMonthButton;\n  const monthButtonProps = useSlotProps({\n    elementType: MonthButton,\n    externalSlotProps: slotProps?.monthButton,\n    externalForwardedProps: other,\n    additionalProps: {\n      disabled,\n      ref,\n      type: 'button',\n      role: 'radio',\n      'aria-checked': selected,\n      onClick: event => onClick(event, value),\n      onKeyDown: event => onKeyDown(event, value),\n      onFocus: event => onFocus(event, value),\n      onBlur: event => onBlur(event, value)\n    },\n    ownerState,\n    className: classes.button\n  });\n  return /*#__PURE__*/_jsx(MonthButton, _extends({}, monthButtonProps));\n});\nif (process.env.NODE_ENV !== \"production\") MonthCalendarButton.displayName = \"MonthCalendarButton\";","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"currentMonth\", \"classes\", \"value\", \"defaultValue\", \"referenceDate\", \"disabled\", \"disableFuture\", \"disablePast\", \"maxDate\", \"minDate\", \"onChange\", \"shouldDisableMonth\", \"readOnly\", \"disableHighlightToday\", \"onMonthFocus\", \"hasFocus\", \"onFocusedViewChange\", \"monthsPerRow\", \"timezone\", \"gridLabelId\", \"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { shouldForwardProp } from '@mui/system/createStyled';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport useControlled from '@mui/utils/useControlled';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { MonthCalendarButton } from \"./MonthCalendarButton.js\";\nimport { useNow } from \"../internals/hooks/useUtils.js\";\nimport { getMonthCalendarUtilityClass } from \"./monthCalendarClasses.js\";\nimport { getMonthsInYear } from \"../internals/utils/date-utils.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { SECTION_TYPE_GRANULARITY } from \"../internals/utils/getDefaultReferenceDate.js\";\nimport { useControlledValue } from \"../internals/hooks/useControlledValue.js\";\nimport { DIALOG_WIDTH } from \"../internals/constants/dimensions.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { useApplyDefaultValuesToDateValidationProps } from \"../managers/useDateManager.js\";\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getMonthCalendarUtilityClass, classes);\n};\nexport function useMonthCalendarDefaultizedProps(props, name) {\n  const themeProps = useThemeProps({\n    props,\n    name\n  });\n  const validationProps = useApplyDefaultValuesToDateValidationProps(themeProps);\n  return _extends({}, themeProps, validationProps, {\n    monthsPerRow: themeProps.monthsPerRow ?? 3\n  });\n}\nconst isSameMonth = (monthA, monthB, yearA, yearB, adapter) => Boolean(monthA === monthB && yearB && adapter.isSameYear(yearA, yearB));\nconst MonthCalendarRoot = styled('div', {\n  name: 'MuiMonthCalendar',\n  slot: 'Root',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'monthsPerRow'\n})({\n  display: 'flex',\n  flexWrap: 'wrap',\n  justifyContent: 'space-evenly',\n  rowGap: 16,\n  padding: '8px 0',\n  width: DIALOG_WIDTH,\n  // avoid padding increasing width over defined\n  boxSizing: 'border-box',\n  variants: [{\n    props: {\n      monthsPerRow: 3\n    },\n    style: {\n      columnGap: 24\n    }\n  }, {\n    props: {\n      monthsPerRow: 4\n    },\n    style: {\n      columnGap: 0\n    }\n  }]\n});\n/**\n * Demos:\n *\n * - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)\n *\n * API:\n *\n * - [MonthCalendar API](https://mui.com/x/api/date-pickers/month-calendar/)\n */\nexport const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inProps, ref) {\n  const props = useMonthCalendarDefaultizedProps(inProps, 'MuiMonthCalendar');\n  const {\n      autoFocus,\n      className,\n      currentMonth,\n      classes: classesProp,\n      value: valueProp,\n      defaultValue,\n      referenceDate: referenceDateProp,\n      disabled,\n      disableFuture,\n      disablePast,\n      maxDate,\n      minDate,\n      onChange,\n      shouldDisableMonth,\n      readOnly,\n      onMonthFocus,\n      hasFocus,\n      onFocusedViewChange,\n      monthsPerRow,\n      timezone: timezoneProp,\n      gridLabelId,\n      slots,\n      slotProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    value,\n    handleValueChange,\n    timezone\n  } = useControlledValue({\n    name: 'MonthCalendar',\n    timezone: timezoneProp,\n    value: valueProp,\n    defaultValue,\n    referenceDate: referenceDateProp,\n    onChange,\n    valueManager: singleItemValueManager\n  });\n  const now = useNow(timezone);\n  const isRtl = useRtl();\n  const adapter = usePickerAdapter();\n  const {\n    ownerState\n  } = usePickerPrivateContext();\n  const referenceDate = React.useMemo(() => singleItemValueManager.getInitialReferenceValue({\n    value,\n    adapter,\n    props,\n    timezone,\n    referenceDate: referenceDateProp,\n    granularity: SECTION_TYPE_GRANULARITY.month\n  }), [] // eslint-disable-line react-hooks/exhaustive-deps\n  );\n  const classes = useUtilityClasses(classesProp);\n  const todayMonth = React.useMemo(() => adapter.getMonth(now), [adapter, now]);\n  const selectedMonth = React.useMemo(() => {\n    if (value != null) {\n      return adapter.getMonth(value);\n    }\n    return null;\n  }, [value, adapter]);\n  const [focusedMonth, setFocusedMonth] = React.useState(() => selectedMonth || adapter.getMonth(referenceDate));\n  const [internalHasFocus, setInternalHasFocus] = useControlled({\n    name: 'MonthCalendar',\n    state: 'hasFocus',\n    controlled: hasFocus,\n    default: autoFocus ?? false\n  });\n  const changeHasFocus = useEventCallback(newHasFocus => {\n    setInternalHasFocus(newHasFocus);\n    if (onFocusedViewChange) {\n      onFocusedViewChange(newHasFocus);\n    }\n  });\n  const isMonthDisabled = React.useCallback(dateToValidate => {\n    const firstEnabledMonth = adapter.startOfMonth(disablePast && adapter.isAfter(now, minDate) ? now : minDate);\n    const lastEnabledMonth = adapter.startOfMonth(disableFuture && adapter.isBefore(now, maxDate) ? now : maxDate);\n    const monthToValidate = adapter.startOfMonth(dateToValidate);\n    if (adapter.isBefore(monthToValidate, firstEnabledMonth)) {\n      return true;\n    }\n    if (adapter.isAfter(monthToValidate, lastEnabledMonth)) {\n      return true;\n    }\n    if (!shouldDisableMonth) {\n      return false;\n    }\n    return shouldDisableMonth(monthToValidate);\n  }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableMonth, adapter]);\n  const handleMonthSelection = useEventCallback((event, month) => {\n    if (readOnly) {\n      return;\n    }\n    const currentValue = value && currentMonth && !adapter.isSameYear(value, currentMonth) ? adapter.setYear(value, adapter.getYear(currentMonth)) : value;\n    // When no value is selected yet but a year was chosen (via YearCalendar),\n    // prefer using currentMonth (which carries the selected year) over the initial referenceDate.\n    // Fix for: https://github.com/mui/mui-x/issues/20624\n    const baseDateForMonth = currentValue ?? currentMonth ?? referenceDate;\n    const newDate = adapter.setMonth(baseDateForMonth, month);\n    handleValueChange(newDate);\n  });\n  const focusMonth = useEventCallback(month => {\n    if (!isMonthDisabled(adapter.setMonth(value ?? currentMonth ?? referenceDate, month))) {\n      setFocusedMonth(month);\n      changeHasFocus(true);\n      if (onMonthFocus) {\n        onMonthFocus(month);\n      }\n    }\n  });\n  React.useEffect(() => {\n    setFocusedMonth(prevFocusedMonth => selectedMonth !== null && prevFocusedMonth !== selectedMonth ? selectedMonth : prevFocusedMonth);\n  }, [selectedMonth]);\n  const handleKeyDown = useEventCallback((event, month) => {\n    const monthsInYear = 12;\n    const monthsInRow = 3;\n    switch (event.key) {\n      case 'ArrowUp':\n        focusMonth((monthsInYear + month - monthsInRow) % monthsInYear);\n        event.preventDefault();\n        break;\n      case 'ArrowDown':\n        focusMonth((monthsInYear + month + monthsInRow) % monthsInYear);\n        event.preventDefault();\n        break;\n      case 'ArrowLeft':\n        focusMonth((monthsInYear + month + (isRtl ? 1 : -1)) % monthsInYear);\n        event.preventDefault();\n        break;\n      case 'ArrowRight':\n        focusMonth((monthsInYear + month + (isRtl ? -1 : 1)) % monthsInYear);\n        event.preventDefault();\n        break;\n      default:\n        break;\n    }\n  });\n  const handleMonthFocus = useEventCallback((event, month) => {\n    focusMonth(month);\n  });\n  const handleMonthBlur = useEventCallback((event, month) => {\n    if (focusedMonth === month) {\n      changeHasFocus(false);\n    }\n  });\n  return /*#__PURE__*/_jsx(MonthCalendarRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    role: \"radiogroup\",\n    \"aria-labelledby\": gridLabelId,\n    monthsPerRow: monthsPerRow\n  }, other, {\n    children: getMonthsInYear(adapter, currentMonth ?? value ?? referenceDate).map(month => {\n      const monthNumber = adapter.getMonth(month);\n      const monthText = adapter.format(month, 'monthShort');\n      const monthLabel = adapter.format(month, 'month');\n      const isSelected = isSameMonth(monthNumber, selectedMonth, month, value, adapter);\n      const isDisabled = disabled || isMonthDisabled(month);\n      return /*#__PURE__*/_jsx(MonthCalendarButton, {\n        selected: isSelected,\n        value: monthNumber,\n        onClick: handleMonthSelection,\n        onKeyDown: handleKeyDown,\n        autoFocus: internalHasFocus && monthNumber === focusedMonth,\n        disabled: isDisabled,\n        tabIndex: monthNumber === focusedMonth && !isDisabled ? 0 : -1,\n        onFocus: handleMonthFocus,\n        onBlur: handleMonthBlur,\n        \"aria-current\": isSameMonth(monthNumber, todayMonth, month, now, adapter) ? 'date' : undefined,\n        \"aria-label\": monthLabel,\n        slots: slots,\n        slotProps: slotProps,\n        classes: classesProp,\n        children: monthText\n      }, monthText);\n    })\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") MonthCalendar.displayName = \"MonthCalendar\";\nprocess.env.NODE_ENV !== \"production\" ? MonthCalendar.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  currentMonth: PropTypes.object,\n  /**\n   * The default selected value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  gridLabelId: PropTypes.string,\n  hasFocus: PropTypes.bool,\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Months rendered per row.\n   * @default 3\n   */\n  monthsPerRow: PropTypes.oneOf([3, 4]),\n  /**\n   * Callback fired when the value changes.\n   * @param {PickerValidDate} value The new value.\n   */\n  onChange: PropTypes.func,\n  onFocusedViewChange: PropTypes.func,\n  onMonthFocus: PropTypes.func,\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid month using the validation props, except callbacks such as `shouldDisableMonth`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Disable specific month.\n   * @param {PickerValidDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object\n} : void 0;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getYearCalendarUtilityClass(slot) {\n  return generateUtilityClass('MuiYearCalendar', slot);\n}\nexport const yearCalendarClasses = generateUtilityClasses('MuiYearCalendar', ['root', 'button', 'disabled', 'selected']);","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"classes\", \"disabled\", \"selected\", \"value\", \"onClick\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport { styled, alpha } from '@mui/material/styles';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { getYearCalendarUtilityClass, yearCalendarClasses } from \"./yearCalendarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = (classes, ownerState) => {\n  const slots = {\n    button: ['button', ownerState.isYearDisabled && 'disabled', ownerState.isYearSelected && 'selected']\n  };\n  return composeClasses(slots, getYearCalendarUtilityClass, classes);\n};\nconst DefaultYearButton = styled('button', {\n  name: 'MuiYearCalendar',\n  slot: 'Button',\n  overridesResolver: (_, styles) => [styles.button, {\n    [`&.${yearCalendarClasses.disabled}`]: styles.disabled\n  }, {\n    [`&.${yearCalendarClasses.selected}`]: styles.selected\n  }]\n})(({\n  theme\n}) => _extends({\n  color: 'unset',\n  backgroundColor: 'transparent',\n  border: 0,\n  outline: 0\n}, theme.typography.subtitle1, {\n  height: 36,\n  width: 72,\n  borderRadius: 18,\n  cursor: 'pointer',\n  '&:focus': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette.action.active, theme.palette.action.focusOpacity)\n  },\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n  },\n  '&:disabled': {\n    cursor: 'auto',\n    pointerEvents: 'none'\n  },\n  [`&.${yearCalendarClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.secondary\n  },\n  [`&.${yearCalendarClasses.selected}`]: {\n    color: (theme.vars || theme).palette.primary.contrastText,\n    backgroundColor: (theme.vars || theme).palette.primary.main,\n    '&:focus, &:hover': {\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    }\n  }\n}));\n\n/**\n * @ignore - internal component.\n */\nexport const YearCalendarButton = /*#__PURE__*/React.memo(function YearCalendarButton(props) {\n  const {\n      autoFocus,\n      classes: classesProp,\n      disabled,\n      selected,\n      value,\n      onClick,\n      onKeyDown,\n      onFocus,\n      onBlur,\n      slots,\n      slotProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ref = React.useRef(null);\n  const {\n    ownerState: pickerOwnerState\n  } = usePickerPrivateContext();\n  const ownerState = _extends({}, pickerOwnerState, {\n    isYearDisabled: disabled,\n    isYearSelected: selected\n  });\n  const classes = useUtilityClasses(classesProp, ownerState);\n\n  // We can't forward the `autoFocus` to the button because it is a native button, not a MUI Button\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      // `ref.current` being `null` would be a bug in MUI.\n      ref.current?.focus();\n    }\n  }, [autoFocus]);\n  const YearButton = slots?.yearButton ?? DefaultYearButton;\n  const yearButtonProps = useSlotProps({\n    elementType: YearButton,\n    externalSlotProps: slotProps?.yearButton,\n    externalForwardedProps: other,\n    additionalProps: {\n      disabled,\n      ref,\n      type: 'button',\n      role: 'radio',\n      'aria-checked': selected,\n      onClick: event => onClick(event, value),\n      onKeyDown: event => onKeyDown(event, value),\n      onFocus: event => onFocus(event, value),\n      onBlur: event => onBlur(event, value)\n    },\n    ownerState,\n    className: classes.button\n  });\n  return /*#__PURE__*/_jsx(YearButton, _extends({}, yearButtonProps));\n});\nif (process.env.NODE_ENV !== \"production\") YearCalendarButton.displayName = \"YearCalendarButton\";","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"classes\", \"value\", \"defaultValue\", \"referenceDate\", \"disabled\", \"disableFuture\", \"disablePast\", \"maxDate\", \"minDate\", \"onChange\", \"readOnly\", \"shouldDisableYear\", \"disableHighlightToday\", \"onYearFocus\", \"hasFocus\", \"onFocusedViewChange\", \"yearsOrder\", \"yearsPerRow\", \"timezone\", \"gridLabelId\", \"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { shouldForwardProp } from '@mui/system/createStyled';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport useForkRef from '@mui/utils/useForkRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useControlled from '@mui/utils/useControlled';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { YearCalendarButton } from \"./YearCalendarButton.js\";\nimport { useNow } from \"../internals/hooks/useUtils.js\";\nimport { getYearCalendarUtilityClass } from \"./yearCalendarClasses.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { SECTION_TYPE_GRANULARITY } from \"../internals/utils/getDefaultReferenceDate.js\";\nimport { useControlledValue } from \"../internals/hooks/useControlledValue.js\";\nimport { DIALOG_WIDTH, MAX_CALENDAR_HEIGHT } from \"../internals/constants/dimensions.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { useApplyDefaultValuesToDateValidationProps } from \"../managers/useDateManager.js\";\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getYearCalendarUtilityClass, classes);\n};\nfunction useYearCalendarDefaultizedProps(props, name) {\n  const themeProps = useThemeProps({\n    props,\n    name\n  });\n  const validationProps = useApplyDefaultValuesToDateValidationProps(themeProps);\n  return _extends({}, themeProps, validationProps, {\n    yearsPerRow: themeProps.yearsPerRow ?? 3,\n    yearsOrder: themeProps.yearsOrder ?? 'asc'\n  });\n}\nconst YearCalendarRoot = styled('div', {\n  name: 'MuiYearCalendar',\n  slot: 'Root',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'yearsPerRow'\n})({\n  display: 'flex',\n  flexWrap: 'wrap',\n  justifyContent: 'space-evenly',\n  rowGap: 12,\n  padding: '6px 0',\n  overflowY: 'auto',\n  height: '100%',\n  width: DIALOG_WIDTH,\n  maxHeight: MAX_CALENDAR_HEIGHT,\n  // avoid padding increasing width over defined\n  boxSizing: 'border-box',\n  position: 'relative',\n  variants: [{\n    props: {\n      yearsPerRow: 3\n    },\n    style: {\n      columnGap: 24\n    }\n  }, {\n    props: {\n      yearsPerRow: 4\n    },\n    style: {\n      columnGap: 0,\n      padding: '0 2px'\n    }\n  }]\n});\nconst YearCalendarButtonFiller = styled('div', {\n  name: 'MuiYearCalendar',\n  slot: 'ButtonFiller'\n})({\n  height: 36,\n  width: 72\n});\n/**\n * Demos:\n *\n * - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)\n *\n * API:\n *\n * - [YearCalendar API](https://mui.com/x/api/date-pickers/year-calendar/)\n */\nexport const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps, ref) {\n  const props = useYearCalendarDefaultizedProps(inProps, 'MuiYearCalendar');\n  const {\n      autoFocus,\n      className,\n      classes: classesProp,\n      value: valueProp,\n      defaultValue,\n      referenceDate: referenceDateProp,\n      disabled,\n      disableFuture,\n      disablePast,\n      maxDate,\n      minDate,\n      onChange,\n      readOnly,\n      shouldDisableYear,\n      onYearFocus,\n      hasFocus,\n      onFocusedViewChange,\n      yearsOrder,\n      yearsPerRow,\n      timezone: timezoneProp,\n      gridLabelId,\n      slots,\n      slotProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    value,\n    handleValueChange,\n    timezone\n  } = useControlledValue({\n    name: 'YearCalendar',\n    timezone: timezoneProp,\n    value: valueProp,\n    defaultValue,\n    referenceDate: referenceDateProp,\n    onChange,\n    valueManager: singleItemValueManager\n  });\n  const now = useNow(timezone);\n  const isRtl = useRtl();\n  const adapter = usePickerAdapter();\n  const {\n    ownerState\n  } = usePickerPrivateContext();\n  const referenceDate = React.useMemo(() => singleItemValueManager.getInitialReferenceValue({\n    value,\n    adapter,\n    props,\n    timezone,\n    referenceDate: referenceDateProp,\n    granularity: SECTION_TYPE_GRANULARITY.year\n  }), [] // eslint-disable-line react-hooks/exhaustive-deps\n  );\n  const classes = useUtilityClasses(classesProp);\n  const todayYear = React.useMemo(() => adapter.getYear(now), [adapter, now]);\n  const selectedYear = React.useMemo(() => {\n    if (value != null) {\n      return adapter.getYear(value);\n    }\n    return null;\n  }, [value, adapter]);\n  const [focusedYear, setFocusedYear] = React.useState(() => selectedYear || adapter.getYear(referenceDate));\n  const [internalHasFocus, setInternalHasFocus] = useControlled({\n    name: 'YearCalendar',\n    state: 'hasFocus',\n    controlled: hasFocus,\n    default: autoFocus ?? false\n  });\n  const changeHasFocus = useEventCallback(newHasFocus => {\n    setInternalHasFocus(newHasFocus);\n    if (onFocusedViewChange) {\n      onFocusedViewChange(newHasFocus);\n    }\n  });\n  const isYearDisabled = React.useCallback(dateToValidate => {\n    if (disablePast && adapter.isBeforeYear(dateToValidate, now)) {\n      return true;\n    }\n    if (disableFuture && adapter.isAfterYear(dateToValidate, now)) {\n      return true;\n    }\n    if (minDate && adapter.isBeforeYear(dateToValidate, minDate)) {\n      return true;\n    }\n    if (maxDate && adapter.isAfterYear(dateToValidate, maxDate)) {\n      return true;\n    }\n    if (!shouldDisableYear) {\n      return false;\n    }\n    const yearToValidate = adapter.startOfYear(dateToValidate);\n    return shouldDisableYear(yearToValidate);\n  }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableYear, adapter]);\n  const handleYearSelection = useEventCallback((event, year) => {\n    if (readOnly) {\n      return;\n    }\n    const newDate = adapter.setYear(value ?? referenceDate, year);\n    handleValueChange(newDate);\n  });\n  const focusYear = useEventCallback(year => {\n    if (!isYearDisabled(adapter.setYear(value ?? referenceDate, year))) {\n      setFocusedYear(year);\n      changeHasFocus(true);\n      onYearFocus?.(year);\n    }\n  });\n  React.useEffect(() => {\n    setFocusedYear(prevFocusedYear => selectedYear !== null && prevFocusedYear !== selectedYear ? selectedYear : prevFocusedYear);\n  }, [selectedYear]);\n  const verticalDirection = yearsOrder !== 'desc' ? yearsPerRow * 1 : yearsPerRow * -1;\n  const horizontalDirection = isRtl && yearsOrder === 'asc' || !isRtl && yearsOrder === 'desc' ? -1 : 1;\n  const handleKeyDown = useEventCallback((event, year) => {\n    switch (event.key) {\n      case 'ArrowUp':\n        focusYear(year - verticalDirection);\n        event.preventDefault();\n        break;\n      case 'ArrowDown':\n        focusYear(year + verticalDirection);\n        event.preventDefault();\n        break;\n      case 'ArrowLeft':\n        focusYear(year - horizontalDirection);\n        event.preventDefault();\n        break;\n      case 'ArrowRight':\n        focusYear(year + horizontalDirection);\n        event.preventDefault();\n        break;\n      default:\n        break;\n    }\n  });\n  const handleYearFocus = useEventCallback((event, year) => {\n    focusYear(year);\n  });\n  const handleYearBlur = useEventCallback((event, year) => {\n    if (focusedYear === year) {\n      changeHasFocus(false);\n    }\n  });\n  const scrollerRef = React.useRef(null);\n  const handleRef = useForkRef(ref, scrollerRef);\n  React.useEffect(() => {\n    if (autoFocus || scrollerRef.current === null) {\n      return;\n    }\n    const tabbableButton = scrollerRef.current.querySelector('[tabindex=\"0\"]');\n    if (!tabbableButton) {\n      return;\n    }\n\n    // Taken from useScroll in x-data-grid, but vertically centered\n    const offsetHeight = tabbableButton.offsetHeight;\n    const offsetTop = tabbableButton.offsetTop;\n    const clientHeight = scrollerRef.current.clientHeight;\n    const scrollTop = scrollerRef.current.scrollTop;\n    const elementBottom = offsetTop + offsetHeight;\n    if (offsetHeight > clientHeight || offsetTop < scrollTop) {\n      // Button already visible\n      return;\n    }\n    scrollerRef.current.scrollTop = elementBottom - clientHeight / 2 - offsetHeight / 2;\n  }, [autoFocus]);\n  const yearRange = adapter.getYearRange([minDate, maxDate]);\n  if (yearsOrder === 'desc') {\n    yearRange.reverse();\n  }\n  let fillerAmount = yearsPerRow - yearRange.length % yearsPerRow;\n  if (fillerAmount === yearsPerRow) {\n    fillerAmount = 0;\n  }\n  return /*#__PURE__*/_jsxs(YearCalendarRoot, _extends({\n    ref: handleRef,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    role: \"radiogroup\",\n    \"aria-labelledby\": gridLabelId,\n    yearsPerRow: yearsPerRow\n  }, other, {\n    children: [yearRange.map(year => {\n      const yearNumber = adapter.getYear(year);\n      const isSelected = yearNumber === selectedYear;\n      const isDisabled = disabled || isYearDisabled(year);\n      return /*#__PURE__*/_jsx(YearCalendarButton, {\n        selected: isSelected,\n        value: yearNumber,\n        onClick: handleYearSelection,\n        onKeyDown: handleKeyDown,\n        autoFocus: internalHasFocus && yearNumber === focusedYear,\n        disabled: isDisabled,\n        tabIndex: yearNumber === focusedYear && !isDisabled ? 0 : -1,\n        onFocus: handleYearFocus,\n        onBlur: handleYearBlur,\n        \"aria-current\": todayYear === yearNumber ? 'date' : undefined,\n        slots: slots,\n        slotProps: slotProps,\n        classes: classesProp,\n        children: adapter.format(year, 'year')\n      }, adapter.format(year, 'year'));\n    }), Array.from({\n      length: fillerAmount\n    }, (_, index) => /*#__PURE__*/_jsx(YearCalendarButtonFiller, {}, index))]\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") YearCalendar.displayName = \"YearCalendar\";\nprocess.env.NODE_ENV !== \"production\" ? YearCalendar.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * The default selected value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  gridLabelId: PropTypes.string,\n  hasFocus: PropTypes.bool,\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Callback fired when the value changes.\n   * @param {PickerValidDate} value The new value.\n   */\n  onChange: PropTypes.func,\n  onFocusedViewChange: PropTypes.func,\n  onYearFocus: PropTypes.func,\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid year using the validation props, except callbacks such as `shouldDisableYear`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Disable specific year.\n   * @param {PickerValidDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * Years are displayed in ascending (chronological) order by default.\n   * If `desc`, years are displayed in descending order.\n   * @default 'asc'\n   */\n  yearsOrder: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Years rendered per row.\n   * @default 3\n   */\n  yearsPerRow: PropTypes.oneOf([3, 4])\n} : void 0;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport const getPickersCalendarHeaderUtilityClass = slot => generateUtilityClass('MuiPickersCalendarHeader', slot);\nexport const pickersCalendarHeaderClasses = generateUtilityClasses('MuiPickersCalendarHeader', ['root', 'labelContainer', 'label', 'switchViewButton', 'switchViewIcon']);","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickersArrowSwitcherUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersArrowSwitcher', slot);\n}\nexport const pickersArrowSwitcherClasses = generateUtilityClasses('MuiPickersArrowSwitcher', ['root', 'spacer', 'button', 'previousIconButton', 'nextIconButton', 'leftArrowIcon', 'rightArrowIcon']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"slots\", \"slotProps\", \"isNextDisabled\", \"isNextHidden\", \"onGoToNext\", \"nextLabel\", \"isPreviousDisabled\", \"isPreviousHidden\", \"onGoToPrevious\", \"previousLabel\", \"labelId\", \"classes\"],\n  _excluded2 = [\"ownerState\"],\n  _excluded3 = [\"ownerState\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport IconButton from '@mui/material/IconButton';\nimport { ArrowLeftIcon, ArrowRightIcon } from \"../../../icons/index.js\";\nimport { getPickersArrowSwitcherUtilityClass } from \"./pickersArrowSwitcherClasses.js\";\nimport { usePickerPrivateContext } from \"../../hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersArrowSwitcherRoot = styled('div', {\n  name: 'MuiPickersArrowSwitcher',\n  slot: 'Root'\n})({\n  display: 'flex'\n});\nconst PickersArrowSwitcherSpacer = styled('div', {\n  name: 'MuiPickersArrowSwitcher',\n  slot: 'Spacer'\n})(({\n  theme\n}) => ({\n  width: theme.spacing(3)\n}));\nconst PickersArrowSwitcherButton = styled(IconButton, {\n  name: 'MuiPickersArrowSwitcher',\n  slot: 'Button'\n})({\n  variants: [{\n    props: {\n      isButtonHidden: true\n    },\n    style: {\n      visibility: 'hidden'\n    }\n  }]\n});\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    spacer: ['spacer'],\n    button: ['button'],\n    previousIconButton: ['previousIconButton'],\n    nextIconButton: ['nextIconButton'],\n    leftArrowIcon: ['leftArrowIcon'],\n    rightArrowIcon: ['rightArrowIcon']\n  };\n  return composeClasses(slots, getPickersArrowSwitcherUtilityClass, classes);\n};\nexport const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function PickersArrowSwitcher(inProps, ref) {\n  const isRtl = useRtl();\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersArrowSwitcher'\n  });\n  const {\n      children,\n      className,\n      slots,\n      slotProps,\n      isNextDisabled,\n      isNextHidden,\n      onGoToNext,\n      nextLabel,\n      isPreviousDisabled,\n      isPreviousHidden,\n      onGoToPrevious,\n      previousLabel,\n      labelId,\n      classes: classesProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    ownerState\n  } = usePickerPrivateContext();\n  const classes = useUtilityClasses(classesProp);\n  const nextProps = {\n    isDisabled: isNextDisabled,\n    isHidden: isNextHidden,\n    goTo: onGoToNext,\n    label: nextLabel\n  };\n  const previousProps = {\n    isDisabled: isPreviousDisabled,\n    isHidden: isPreviousHidden,\n    goTo: onGoToPrevious,\n    label: previousLabel\n  };\n  const PreviousIconButton = slots?.previousIconButton ?? PickersArrowSwitcherButton;\n  const previousIconButtonProps = useSlotProps({\n    elementType: PreviousIconButton,\n    externalSlotProps: slotProps?.previousIconButton,\n    additionalProps: {\n      size: 'medium',\n      title: previousProps.label,\n      'aria-label': previousProps.label,\n      disabled: previousProps.isDisabled,\n      edge: 'end',\n      onClick: previousProps.goTo\n    },\n    ownerState: _extends({}, ownerState, {\n      isButtonHidden: previousProps.isHidden ?? false\n    }),\n    className: clsx(classes.button, classes.previousIconButton)\n  });\n  const NextIconButton = slots?.nextIconButton ?? PickersArrowSwitcherButton;\n  const nextIconButtonProps = useSlotProps({\n    elementType: NextIconButton,\n    externalSlotProps: slotProps?.nextIconButton,\n    additionalProps: {\n      size: 'medium',\n      title: nextProps.label,\n      'aria-label': nextProps.label,\n      disabled: nextProps.isDisabled,\n      edge: 'start',\n      onClick: nextProps.goTo\n    },\n    ownerState: _extends({}, ownerState, {\n      isButtonHidden: nextProps.isHidden ?? false\n    }),\n    className: clsx(classes.button, classes.nextIconButton)\n  });\n  const LeftArrowIcon = slots?.leftArrowIcon ?? ArrowLeftIcon;\n  // The spread is here to avoid this bug mui/material-ui#34056\n  const _useSlotProps = useSlotProps({\n      elementType: LeftArrowIcon,\n      externalSlotProps: slotProps?.leftArrowIcon,\n      additionalProps: {\n        fontSize: 'inherit'\n      },\n      ownerState,\n      className: classes.leftArrowIcon\n    }),\n    leftArrowIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n  const RightArrowIcon = slots?.rightArrowIcon ?? ArrowRightIcon;\n  // The spread is here to avoid this bug mui/material-ui#34056\n  const _useSlotProps2 = useSlotProps({\n      elementType: RightArrowIcon,\n      externalSlotProps: slotProps?.rightArrowIcon,\n      additionalProps: {\n        fontSize: 'inherit'\n      },\n      ownerState,\n      className: classes.rightArrowIcon\n    }),\n    rightArrowIconProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);\n  return /*#__PURE__*/_jsxs(PickersArrowSwitcherRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other, {\n    children: [/*#__PURE__*/_jsx(PreviousIconButton, _extends({}, previousIconButtonProps, {\n      children: isRtl ? /*#__PURE__*/_jsx(RightArrowIcon, _extends({}, rightArrowIconProps)) : /*#__PURE__*/_jsx(LeftArrowIcon, _extends({}, leftArrowIconProps))\n    })), children ? /*#__PURE__*/_jsx(Typography, {\n      variant: \"subtitle1\",\n      component: \"span\",\n      id: labelId,\n      children: children\n    }) : /*#__PURE__*/_jsx(PickersArrowSwitcherSpacer, {\n      className: classes.spacer,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(NextIconButton, _extends({}, nextIconButtonProps, {\n      children: isRtl ? /*#__PURE__*/_jsx(LeftArrowIcon, _extends({}, leftArrowIconProps)) : /*#__PURE__*/_jsx(RightArrowIcon, _extends({}, rightArrowIconProps))\n    }))]\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersArrowSwitcher.displayName = \"PickersArrowSwitcher\";","import * as React from 'react';\nimport { getMeridiem, convertToMeridiem } from \"../utils/time-utils.js\";\nimport { usePickerAdapter } from \"../../hooks/usePickerAdapter.js\";\nexport function useNextMonthDisabled(month, {\n  disableFuture,\n  maxDate,\n  timezone\n}) {\n  const adapter = usePickerAdapter();\n  return React.useMemo(() => {\n    const now = adapter.date(undefined, timezone);\n    const lastEnabledMonth = adapter.startOfMonth(disableFuture && adapter.isBefore(now, maxDate) ? now : maxDate);\n    return !adapter.isAfter(lastEnabledMonth, month);\n  }, [disableFuture, maxDate, month, adapter, timezone]);\n}\nexport function usePreviousMonthDisabled(month, {\n  disablePast,\n  minDate,\n  timezone\n}) {\n  const adapter = usePickerAdapter();\n  return React.useMemo(() => {\n    const now = adapter.date(undefined, timezone);\n    const firstEnabledMonth = adapter.startOfMonth(disablePast && adapter.isAfter(now, minDate) ? now : minDate);\n    return !adapter.isBefore(firstEnabledMonth, month);\n  }, [disablePast, minDate, month, adapter, timezone]);\n}\nexport function useMeridiemMode(date, ampm, onChange, selectionState) {\n  const adapter = usePickerAdapter();\n  const cleanDate = React.useMemo(() => !adapter.isValid(date) ? null : date, [adapter, date]);\n  const meridiemMode = getMeridiem(cleanDate, adapter);\n  const handleMeridiemChange = React.useCallback(mode => {\n    const timeWithMeridiem = cleanDate == null ? null : convertToMeridiem(cleanDate, mode, Boolean(ampm), adapter);\n    onChange(timeWithMeridiem, selectionState ?? 'partial');\n  }, [ampm, cleanDate, onChange, selectionState, adapter]);\n  return {\n    meridiemMode,\n    handleMeridiemChange\n  };\n}","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"slots\", \"slotProps\", \"currentMonth\", \"disabled\", \"disableFuture\", \"disablePast\", \"maxDate\", \"minDate\", \"onMonthChange\", \"onViewChange\", \"view\", \"reduceAnimations\", \"views\", \"labelId\", \"className\", \"classes\", \"timezone\", \"format\"],\n  _excluded2 = [\"ownerState\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Fade from '@mui/material/Fade';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport IconButton from '@mui/material/IconButton';\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nimport { PickersFadeTransitionGroup } from \"../DateCalendar/PickersFadeTransitionGroup.js\";\nimport { ArrowDropDownIcon } from \"../icons/index.js\";\nimport { PickersArrowSwitcher } from \"../internals/components/PickersArrowSwitcher/index.js\";\nimport { usePreviousMonthDisabled, useNextMonthDisabled } from \"../internals/hooks/date-helpers-hooks.js\";\nimport { getPickersCalendarHeaderUtilityClass, pickersCalendarHeaderClasses } from \"./pickersCalendarHeaderClasses.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    labelContainer: ['labelContainer'],\n    label: ['label'],\n    switchViewButton: ['switchViewButton'],\n    switchViewIcon: ['switchViewIcon']\n  };\n  return composeClasses(slots, getPickersCalendarHeaderUtilityClass, classes);\n};\nconst PickersCalendarHeaderRoot = styled('div', {\n  name: 'MuiPickersCalendarHeader',\n  slot: 'Root'\n})({\n  display: 'flex',\n  alignItems: 'center',\n  marginTop: 12,\n  marginBottom: 4,\n  paddingLeft: 24,\n  paddingRight: 12,\n  // prevent jumping in safari\n  maxHeight: 40,\n  minHeight: 40\n});\nconst PickersCalendarHeaderLabelContainer = styled('div', {\n  name: 'MuiPickersCalendarHeader',\n  slot: 'LabelContainer'\n})(({\n  theme\n}) => _extends({\n  display: 'flex',\n  overflow: 'hidden',\n  alignItems: 'center',\n  cursor: 'pointer',\n  marginRight: 'auto'\n}, theme.typography.body1, {\n  fontWeight: theme.typography.fontWeightMedium\n}));\nconst PickersCalendarHeaderLabel = styled('div', {\n  name: 'MuiPickersCalendarHeader',\n  slot: 'Label'\n})({\n  marginRight: 6\n});\nconst PickersCalendarHeaderSwitchViewButton = styled(IconButton, {\n  name: 'MuiPickersCalendarHeader',\n  slot: 'SwitchViewButton'\n})({\n  marginRight: 'auto',\n  variants: [{\n    props: {\n      view: 'year'\n    },\n    style: {\n      [`.${pickersCalendarHeaderClasses.switchViewIcon}`]: {\n        transform: 'rotate(180deg)'\n      }\n    }\n  }]\n});\nconst PickersCalendarHeaderSwitchViewIcon = styled(ArrowDropDownIcon, {\n  name: 'MuiPickersCalendarHeader',\n  slot: 'SwitchViewIcon'\n})(({\n  theme\n}) => ({\n  willChange: 'transform',\n  transition: theme.transitions.create('transform'),\n  transform: 'rotate(0deg)'\n}));\n/**\n * Demos:\n *\n * - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)\n * - [DateRangeCalendar](https://mui.com/x/react-date-pickers/date-range-calendar/)\n * - [Custom slots and subcomponents](https://mui.com/x/react-date-pickers/custom-components/)\n *\n * API:\n *\n * - [PickersCalendarHeader API](https://mui.com/x/api/date-pickers/pickers-calendar-header/)\n */\nconst PickersCalendarHeader = /*#__PURE__*/React.forwardRef(function PickersCalendarHeader(inProps, ref) {\n  const translations = usePickerTranslations();\n  const adapter = usePickerAdapter();\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersCalendarHeader'\n  });\n  const {\n      slots,\n      slotProps,\n      currentMonth: month,\n      disabled,\n      disableFuture,\n      disablePast,\n      maxDate,\n      minDate,\n      onMonthChange,\n      onViewChange,\n      view,\n      reduceAnimations,\n      views,\n      labelId,\n      className,\n      classes: classesProp,\n      timezone,\n      format = `${adapter.formats.month} ${adapter.formats.year}`\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    ownerState\n  } = usePickerPrivateContext();\n  const classes = useUtilityClasses(classesProp);\n  const SwitchViewButton = slots?.switchViewButton ?? PickersCalendarHeaderSwitchViewButton;\n  const switchViewButtonProps = useSlotProps({\n    elementType: SwitchViewButton,\n    externalSlotProps: slotProps?.switchViewButton,\n    additionalProps: {\n      size: 'small',\n      'aria-label': translations.calendarViewSwitchingButtonAriaLabel(view)\n    },\n    ownerState: _extends({}, ownerState, {\n      view\n    }),\n    className: classes.switchViewButton\n  });\n  const SwitchViewIcon = slots?.switchViewIcon ?? PickersCalendarHeaderSwitchViewIcon;\n  // The spread is here to avoid this bug mui/material-ui#34056\n  const _useSlotProps = useSlotProps({\n      elementType: SwitchViewIcon,\n      externalSlotProps: slotProps?.switchViewIcon,\n      ownerState,\n      className: classes.switchViewIcon\n    }),\n    switchViewIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n  const selectNextMonth = () => onMonthChange(adapter.addMonths(month, 1));\n  const selectPreviousMonth = () => onMonthChange(adapter.addMonths(month, -1));\n  const isNextMonthDisabled = useNextMonthDisabled(month, {\n    disableFuture,\n    maxDate,\n    timezone\n  });\n  const isPreviousMonthDisabled = usePreviousMonthDisabled(month, {\n    disablePast,\n    minDate,\n    timezone\n  });\n  const handleToggleView = () => {\n    if (views.length === 1 || !onViewChange || disabled) {\n      return;\n    }\n    if (views.length === 2) {\n      onViewChange(views.find(el => el !== view) || views[0]);\n    } else {\n      // switching only between first 2\n      const nextIndexToOpen = views.indexOf(view) !== 0 ? 0 : 1;\n      onViewChange(views[nextIndexToOpen]);\n    }\n  };\n\n  // No need to display more information\n  if (views.length === 1 && views[0] === 'year') {\n    return null;\n  }\n  const label = adapter.formatByString(month, format);\n  return /*#__PURE__*/_jsxs(PickersCalendarHeaderRoot, _extends({}, other, {\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref,\n    children: [/*#__PURE__*/_jsxs(PickersCalendarHeaderLabelContainer, {\n      role: \"presentation\",\n      onClick: handleToggleView,\n      ownerState: ownerState\n      // putting this on the label item element below breaks when using transition\n      ,\n      \"aria-live\": \"polite\",\n      className: classes.labelContainer,\n      children: [/*#__PURE__*/_jsx(PickersFadeTransitionGroup, {\n        reduceAnimations: reduceAnimations,\n        transKey: label,\n        children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabel, {\n          id: labelId,\n          ownerState: ownerState,\n          className: classes.label,\n          children: label\n        })\n      }), views.length > 1 && !disabled && /*#__PURE__*/_jsx(SwitchViewButton, _extends({}, switchViewButtonProps, {\n        children: /*#__PURE__*/_jsx(SwitchViewIcon, _extends({}, switchViewIconProps))\n      }))]\n    }), /*#__PURE__*/_jsx(Fade, {\n      in: view === 'day',\n      appear: !reduceAnimations,\n      enter: !reduceAnimations,\n      children: /*#__PURE__*/_jsx(PickersArrowSwitcher, {\n        slots: slots,\n        slotProps: slotProps,\n        onGoToPrevious: selectPreviousMonth,\n        isPreviousDisabled: isPreviousMonthDisabled,\n        previousLabel: translations.previousMonth,\n        onGoToNext: selectNextMonth,\n        isNextDisabled: isNextMonthDisabled,\n        nextLabel: translations.nextMonth\n      })\n    })]\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersCalendarHeader.displayName = \"PickersCalendarHeader\";\nprocess.env.NODE_ENV !== \"production\" ? PickersCalendarHeader.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  currentMonth: PropTypes.object.isRequired,\n  disabled: PropTypes.bool,\n  disableFuture: PropTypes.bool,\n  disablePast: PropTypes.bool,\n  /**\n   * Format used to display the date.\n   * @default `${adapter.formats.month} ${adapter.formats.year}`\n   */\n  format: PropTypes.string,\n  /**\n   * Id of the calendar text element.\n   * It is used to establish an `aria-labelledby` relationship with the calendar `grid` element.\n   */\n  labelId: PropTypes.string,\n  maxDate: PropTypes.object.isRequired,\n  minDate: PropTypes.object.isRequired,\n  onMonthChange: PropTypes.func.isRequired,\n  onViewChange: PropTypes.func,\n  reduceAnimations: PropTypes.bool.isRequired,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  timezone: PropTypes.string.isRequired,\n  view: PropTypes.oneOf(['day', 'month', 'year']).isRequired,\n  views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired).isRequired\n} : void 0;\nexport { PickersCalendarHeader };","import { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH, VIEW_HEIGHT } from \"../../constants/dimensions.js\";\nexport const PickerViewRoot = styled('div', {\n  slot: 'internal',\n  shouldForwardProp: undefined\n})({\n  overflow: 'hidden',\n  width: DIALOG_WIDTH,\n  maxHeight: VIEW_HEIGHT,\n  display: 'flex',\n  flexDirection: 'column',\n  margin: '0 auto'\n});","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport const getDateCalendarUtilityClass = slot => generateUtilityClass('MuiDateCalendar', slot);\nexport const dateCalendarClasses = generateUtilityClasses('MuiDateCalendar', ['root', 'viewTransitionContainer']);","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"onViewChange\", \"value\", \"defaultValue\", \"referenceDate\", \"disableFuture\", \"disablePast\", \"onChange\", \"onYearChange\", \"onMonthChange\", \"reduceAnimations\", \"shouldDisableDate\", \"shouldDisableMonth\", \"shouldDisableYear\", \"view\", \"views\", \"openTo\", \"className\", \"classes\", \"disabled\", \"readOnly\", \"minDate\", \"maxDate\", \"disableHighlightToday\", \"focusedView\", \"onFocusedViewChange\", \"showDaysOutsideCurrentMonth\", \"fixedWeekNumber\", \"dayOfWeekFormatter\", \"slots\", \"slotProps\", \"loading\", \"renderLoading\", \"displayWeekNumber\", \"yearsOrder\", \"yearsPerRow\", \"monthsPerRow\", \"timezone\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { useCalendarState } from \"./useCalendarState.js\";\nimport { PickersFadeTransitionGroup } from \"./PickersFadeTransitionGroup.js\";\nimport { DayCalendar } from \"./DayCalendar.js\";\nimport { MonthCalendar } from \"../MonthCalendar/index.js\";\nimport { YearCalendar } from \"../YearCalendar/index.js\";\nimport { useViews } from \"../internals/hooks/useViews.js\";\nimport { PickersCalendarHeader } from \"../PickersCalendarHeader/index.js\";\nimport { findClosestEnabledDate, mergeDateAndTime } from \"../internals/utils/date-utils.js\";\nimport { PickerViewRoot } from \"../internals/components/PickerViewRoot/index.js\";\nimport { useReduceAnimations } from \"../internals/hooks/useReduceAnimations.js\";\nimport { getDateCalendarUtilityClass } from \"./dateCalendarClasses.js\";\nimport { useControlledValue } from \"../internals/hooks/useControlledValue.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { VIEW_HEIGHT } from \"../internals/constants/dimensions.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { useApplyDefaultValuesToDateValidationProps } from \"../managers/useDateManager.js\";\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    viewTransitionContainer: ['viewTransitionContainer']\n  };\n  return composeClasses(slots, getDateCalendarUtilityClass, classes);\n};\nfunction useDateCalendarDefaultizedProps(props, name) {\n  const themeProps = useThemeProps({\n    props,\n    name\n  });\n  const reduceAnimations = useReduceAnimations(themeProps.reduceAnimations);\n  const validationProps = useApplyDefaultValuesToDateValidationProps(themeProps);\n  return _extends({}, themeProps, validationProps, {\n    loading: themeProps.loading ?? false,\n    openTo: themeProps.openTo ?? 'day',\n    views: themeProps.views ?? ['year', 'day'],\n    reduceAnimations,\n    renderLoading: themeProps.renderLoading ?? (() => /*#__PURE__*/_jsx(\"span\", {\n      children: \"...\"\n    }))\n  });\n}\nconst DateCalendarRoot = styled(PickerViewRoot, {\n  name: 'MuiDateCalendar',\n  slot: 'Root'\n})({\n  display: 'flex',\n  flexDirection: 'column',\n  height: VIEW_HEIGHT\n});\nconst DateCalendarViewTransitionContainer = styled(PickersFadeTransitionGroup, {\n  name: 'MuiDateCalendar',\n  slot: 'ViewTransitionContainer'\n})({});\n/**\n * Demos:\n *\n * - [DatePicker](https://mui.com/x/react-date-pickers/date-picker/)\n * - [DateCalendar](https://mui.com/x/react-date-pickers/date-calendar/)\n * - [Validation](https://mui.com/x/react-date-pickers/validation/)\n *\n * API:\n *\n * - [DateCalendar API](https://mui.com/x/api/date-pickers/date-calendar/)\n */\nexport const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(inProps, ref) {\n  const adapter = usePickerAdapter();\n  const {\n    ownerState\n  } = usePickerPrivateContext();\n  const id = useId();\n  const props = useDateCalendarDefaultizedProps(inProps, 'MuiDateCalendar');\n  const {\n      autoFocus,\n      onViewChange,\n      value: valueProp,\n      defaultValue,\n      referenceDate: referenceDateProp,\n      disableFuture,\n      disablePast,\n      onChange,\n      onMonthChange,\n      reduceAnimations,\n      shouldDisableDate,\n      shouldDisableMonth,\n      shouldDisableYear,\n      view: inView,\n      views,\n      openTo,\n      className,\n      classes: classesProp,\n      disabled,\n      readOnly,\n      minDate,\n      maxDate,\n      disableHighlightToday,\n      focusedView: focusedViewProp,\n      onFocusedViewChange,\n      showDaysOutsideCurrentMonth,\n      fixedWeekNumber,\n      dayOfWeekFormatter,\n      slots,\n      slotProps,\n      loading,\n      renderLoading,\n      displayWeekNumber,\n      yearsOrder,\n      yearsPerRow,\n      monthsPerRow,\n      timezone: timezoneProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    value,\n    handleValueChange,\n    timezone\n  } = useControlledValue({\n    name: 'DateCalendar',\n    timezone: timezoneProp,\n    value: valueProp,\n    defaultValue,\n    referenceDate: referenceDateProp,\n    onChange,\n    valueManager: singleItemValueManager\n  });\n  const {\n    view,\n    setView,\n    focusedView,\n    setFocusedView,\n    goToNextView,\n    setValueAndGoToNextView\n  } = useViews({\n    view: inView,\n    views,\n    openTo,\n    onChange: handleValueChange,\n    onViewChange,\n    autoFocus,\n    focusedView: focusedViewProp,\n    onFocusedViewChange\n  });\n  const {\n    referenceDate,\n    calendarState,\n    setVisibleDate,\n    isDateDisabled,\n    onMonthSwitchingAnimationEnd\n  } = useCalendarState({\n    value,\n    referenceDate: referenceDateProp,\n    reduceAnimations,\n    onMonthChange,\n    minDate,\n    maxDate,\n    shouldDisableDate,\n    disablePast,\n    disableFuture,\n    timezone,\n    getCurrentMonthFromVisibleDate: (visibleDate, prevMonth) => {\n      if (adapter.isSameMonth(visibleDate, prevMonth)) {\n        return prevMonth;\n      }\n      return adapter.startOfMonth(visibleDate);\n    }\n  });\n\n  // When disabled, limit the view to the selected date\n  const minDateWithDisabled = disabled && value || minDate;\n  const maxDateWithDisabled = disabled && value || maxDate;\n  const gridLabelId = `${id}-grid-label`;\n  const hasFocus = focusedView !== null;\n  const CalendarHeader = slots?.calendarHeader ?? PickersCalendarHeader;\n  const calendarHeaderProps = useSlotProps({\n    elementType: CalendarHeader,\n    externalSlotProps: slotProps?.calendarHeader,\n    additionalProps: {\n      views,\n      view,\n      currentMonth: calendarState.currentMonth,\n      onViewChange: setView,\n      onMonthChange: month => setVisibleDate({\n        target: month,\n        reason: 'header-navigation'\n      }),\n      minDate: minDateWithDisabled,\n      maxDate: maxDateWithDisabled,\n      disabled,\n      disablePast,\n      disableFuture,\n      reduceAnimations,\n      timezone,\n      labelId: gridLabelId\n    },\n    ownerState\n  });\n  const handleDateMonthChange = useEventCallback(newDate => {\n    const startOfMonth = adapter.startOfMonth(newDate);\n    const endOfMonth = adapter.endOfMonth(newDate);\n    const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n      adapter,\n      date: newDate,\n      minDate: adapter.isBefore(minDate, startOfMonth) ? startOfMonth : minDate,\n      maxDate: adapter.isAfter(maxDate, endOfMonth) ? endOfMonth : maxDate,\n      disablePast,\n      disableFuture,\n      isDateDisabled,\n      timezone\n    }) : newDate;\n    if (closestEnabledDate) {\n      setValueAndGoToNextView(closestEnabledDate, 'finish');\n      setVisibleDate({\n        target: closestEnabledDate,\n        reason: 'cell-interaction'\n      });\n    } else {\n      goToNextView();\n      setVisibleDate({\n        target: startOfMonth,\n        reason: 'cell-interaction'\n      });\n    }\n  });\n  const handleDateYearChange = useEventCallback(newDate => {\n    const startOfYear = adapter.startOfYear(newDate);\n    const endOfYear = adapter.endOfYear(newDate);\n    const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n      adapter,\n      date: newDate,\n      minDate: adapter.isBefore(minDate, startOfYear) ? startOfYear : minDate,\n      maxDate: adapter.isAfter(maxDate, endOfYear) ? endOfYear : maxDate,\n      disablePast,\n      disableFuture,\n      isDateDisabled,\n      timezone\n    }) : newDate;\n    if (closestEnabledDate) {\n      setValueAndGoToNextView(closestEnabledDate, 'finish');\n      setVisibleDate({\n        target: closestEnabledDate,\n        reason: 'cell-interaction'\n      });\n    } else {\n      goToNextView();\n      setVisibleDate({\n        target: startOfYear,\n        reason: 'cell-interaction'\n      });\n    }\n  });\n  const handleSelectedDayChange = useEventCallback(day => {\n    if (day) {\n      // If there is a date already selected, then we want to keep its time\n      return handleValueChange(mergeDateAndTime(adapter, day, value ?? referenceDate), 'finish', view);\n    }\n    return handleValueChange(day, 'finish', view);\n  });\n  React.useEffect(() => {\n    if (adapter.isValid(value)) {\n      setVisibleDate({\n        target: value,\n        reason: 'controlled-value-change'\n      });\n    }\n  }, [value]); // eslint-disable-line\n\n  const classes = useUtilityClasses(classesProp);\n  const baseDateValidationProps = {\n    disablePast,\n    disableFuture,\n    maxDate,\n    minDate\n  };\n  const commonViewProps = {\n    disableHighlightToday,\n    readOnly,\n    disabled,\n    timezone,\n    gridLabelId,\n    slots,\n    slotProps\n  };\n  const prevOpenViewRef = React.useRef(view);\n  React.useEffect(() => {\n    // If the view change and the focus was on the previous view\n    // Then we update the focus.\n    if (prevOpenViewRef.current === view) {\n      return;\n    }\n    if (focusedView === prevOpenViewRef.current) {\n      setFocusedView(view, true);\n    }\n    prevOpenViewRef.current = view;\n  }, [focusedView, setFocusedView, view]);\n  const selectedDays = React.useMemo(() => [value], [value]);\n  return /*#__PURE__*/_jsxs(DateCalendarRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other, {\n    children: [/*#__PURE__*/_jsx(CalendarHeader, _extends({}, calendarHeaderProps, {\n      slots: slots,\n      slotProps: slotProps\n    })), /*#__PURE__*/_jsx(DateCalendarViewTransitionContainer, {\n      reduceAnimations: reduceAnimations,\n      className: classes.viewTransitionContainer,\n      transKey: view,\n      ownerState: ownerState,\n      children: /*#__PURE__*/_jsxs(\"div\", {\n        children: [view === 'year' && /*#__PURE__*/_jsx(YearCalendar, _extends({}, baseDateValidationProps, commonViewProps, {\n          value: value,\n          onChange: handleDateYearChange,\n          shouldDisableYear: shouldDisableYear,\n          hasFocus: hasFocus,\n          onFocusedViewChange: isViewFocused => setFocusedView('year', isViewFocused),\n          yearsOrder: yearsOrder,\n          yearsPerRow: yearsPerRow,\n          referenceDate: referenceDate\n        })), view === 'month' && /*#__PURE__*/_jsx(MonthCalendar, _extends({}, baseDateValidationProps, commonViewProps, {\n          currentMonth: calendarState.currentMonth,\n          hasFocus: hasFocus,\n          className: className,\n          value: value,\n          onChange: handleDateMonthChange,\n          shouldDisableMonth: shouldDisableMonth,\n          onFocusedViewChange: isViewFocused => setFocusedView('month', isViewFocused),\n          monthsPerRow: monthsPerRow,\n          referenceDate: referenceDate\n        })), view === 'day' && /*#__PURE__*/_jsx(DayCalendar, _extends({}, calendarState, baseDateValidationProps, commonViewProps, {\n          onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,\n          hasFocus: hasFocus,\n          onFocusedDayChange: focusedDate => setVisibleDate({\n            target: focusedDate,\n            reason: 'cell-interaction'\n          }),\n          reduceAnimations: reduceAnimations,\n          selectedDays: selectedDays,\n          onSelectedDaysChange: handleSelectedDayChange,\n          shouldDisableDate: shouldDisableDate,\n          shouldDisableMonth: shouldDisableMonth,\n          shouldDisableYear: shouldDisableYear,\n          onFocusedViewChange: isViewFocused => setFocusedView('day', isViewFocused),\n          showDaysOutsideCurrentMonth: showDaysOutsideCurrentMonth,\n          fixedWeekNumber: fixedWeekNumber,\n          dayOfWeekFormatter: dayOfWeekFormatter,\n          displayWeekNumber: displayWeekNumber,\n          loading: loading,\n          renderLoading: renderLoading\n        }))]\n      })\n    })]\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") DateCalendar.displayName = \"DateCalendar\";\nprocess.env.NODE_ENV !== \"production\" ? DateCalendar.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the main element is focused during the first mount.\n   * This main element is:\n   * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n   * - the `input` element if there is a field rendered.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * Formats the day of week displayed in the calendar header.\n   * @param {PickerValidDate} date The date of the day of week provided by the adapter.\n   * @returns {string} The name to display.\n   * @default (date: PickerValidDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()\n   */\n  dayOfWeekFormatter: PropTypes.func,\n  /**\n   * The default selected value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * If `true`, the week number will be display in the calendar.\n   */\n  displayWeekNumber: PropTypes.bool,\n  /**\n   * The day view will show as many weeks as needed after the end of the current month to match this value.\n   * Put it to 6 to have a fixed number of weeks in Gregorian calendars\n   */\n  fixedWeekNumber: PropTypes.number,\n  /**\n   * Controlled focused view.\n   */\n  focusedView: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * If `true`, calls `renderLoading` instead of rendering the day calendar.\n   * Can be used to preload information and show it in calendar.\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Months rendered per row.\n   * @default 3\n   */\n  monthsPerRow: PropTypes.oneOf([3, 4]),\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TView The view type. Will be one of date or time views.\n   * @param {TValue} value The new value.\n   * @param {PickerSelectionState | undefined} selectionState Indicates if the date selection is complete.\n   * @param {TView | undefined} selectedView Indicates the view in which the selection has been made.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired on focused view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view to focus or not.\n   * @param {boolean} hasFocus `true` if the view should be focused.\n   */\n  onFocusedViewChange: PropTypes.func,\n  /**\n   * Callback fired on month change.\n   * @param {PickerValidDate} month The new month.\n   */\n  onMonthChange: PropTypes.func,\n  /**\n   * Callback fired on view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view.\n   */\n  onViewChange: PropTypes.func,\n  /**\n   * Callback fired on year change.\n   * @param {PickerValidDate} year The new year.\n   */\n  onYearChange: PropTypes.func,\n  /**\n   * The default visible view.\n   * Used when the component view is not controlled.\n   * Must be a valid option from `views` list.\n   */\n  openTo: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, disable heavy animations.\n   * @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13\n   */\n  reduceAnimations: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Component displaying when passed `loading` true.\n   * @returns {React.ReactNode} The node to render when loading.\n   * @default () => <span>...</span>\n   */\n  renderLoading: PropTypes.func,\n  /**\n   * Disable specific date.\n   *\n   * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.\n   *\n   * @param {PickerValidDate} day The date to test.\n   * @returns {boolean} If `true` the date will be disabled.\n   */\n  shouldDisableDate: PropTypes.func,\n  /**\n   * Disable specific month.\n   * @param {PickerValidDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * Disable specific year.\n   * @param {PickerValidDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * If `true`, days outside the current month are rendered:\n   *\n   * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.\n   *\n   * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.\n   *\n   * - ignored if `calendars` equals more than `1` on range pickers.\n   * @default false\n   */\n  showDaysOutsideCurrentMonth: PropTypes.bool,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The visible view.\n   * Used when the component view is controlled.\n   * Must be a valid option from `views` list.\n   */\n  view: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * Available views.\n   */\n  views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired),\n  /**\n   * Years are displayed in ascending (chronological) order by default.\n   * If `desc`, years are displayed in descending order.\n   * @default 'asc'\n   */\n  yearsOrder: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Years rendered per row.\n   * @default 3\n   */\n  yearsPerRow: PropTypes.oneOf([3, 4])\n} : void 0;","import { DateCalendar } from \"../DateCalendar/index.js\";\nimport { isDatePickerView } from \"../internals/utils/date-utils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const renderDateViewCalendar = ({\n  view,\n  onViewChange,\n  views,\n  focusedView,\n  onFocusedViewChange,\n  value,\n  defaultValue,\n  referenceDate,\n  onChange,\n  className,\n  classes,\n  disableFuture,\n  disablePast,\n  minDate,\n  maxDate,\n  shouldDisableDate,\n  shouldDisableMonth,\n  shouldDisableYear,\n  reduceAnimations,\n  onMonthChange,\n  monthsPerRow,\n  onYearChange,\n  yearsOrder,\n  yearsPerRow,\n  slots,\n  slotProps,\n  loading,\n  renderLoading,\n  disableHighlightToday,\n  readOnly,\n  disabled,\n  showDaysOutsideCurrentMonth,\n  dayOfWeekFormatter,\n  sx,\n  autoFocus,\n  fixedWeekNumber,\n  displayWeekNumber,\n  timezone\n}) => /*#__PURE__*/_jsx(DateCalendar, {\n  view: view,\n  onViewChange: onViewChange,\n  views: views.filter(isDatePickerView),\n  focusedView: focusedView && isDatePickerView(focusedView) ? focusedView : null,\n  onFocusedViewChange: onFocusedViewChange,\n  value: value,\n  defaultValue: defaultValue,\n  referenceDate: referenceDate,\n  onChange: onChange,\n  className: className,\n  classes: classes,\n  disableFuture: disableFuture,\n  disablePast: disablePast,\n  minDate: minDate,\n  maxDate: maxDate,\n  shouldDisableDate: shouldDisableDate,\n  shouldDisableMonth: shouldDisableMonth,\n  shouldDisableYear: shouldDisableYear,\n  reduceAnimations: reduceAnimations,\n  onMonthChange: onMonthChange,\n  monthsPerRow: monthsPerRow,\n  onYearChange: onYearChange,\n  yearsOrder: yearsOrder,\n  yearsPerRow: yearsPerRow,\n  slots: slots,\n  slotProps: slotProps,\n  loading: loading,\n  renderLoading: renderLoading,\n  disableHighlightToday: disableHighlightToday,\n  readOnly: readOnly,\n  disabled: disabled,\n  showDaysOutsideCurrentMonth: showDaysOutsideCurrentMonth,\n  dayOfWeekFormatter: dayOfWeekFormatter,\n  sx: sx,\n  autoFocus: autoFocus,\n  fixedWeekNumber: fixedWeekNumber,\n  displayWeekNumber: displayWeekNumber,\n  timezone: timezone\n});\nif (process.env.NODE_ENV !== \"production\") renderDateViewCalendar.displayName = \"renderDateViewCalendar\";","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveComponentProps from '@mui/utils/resolveComponentProps';\nimport refType from '@mui/utils/refType';\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { useDatePickerDefaultizedProps } from \"../DatePicker/shared.js\";\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nimport { validateDate, extractValidationProps } from \"../validation/index.js\";\nimport { useDesktopPicker } from \"../internals/hooks/useDesktopPicker/index.js\";\nimport { DateField } from \"../DateField/index.js\";\nimport { renderDateViewCalendar } from \"../dateViewRenderers/index.js\";\nimport { resolveDateFormat } from \"../internals/utils/date-utils.js\";\n/**\n * Demos:\n *\n * - [DatePicker](https://mui.com/x/react-date-pickers/date-picker/)\n * - [Validation](https://mui.com/x/react-date-pickers/validation/)\n *\n * API:\n *\n * - [DesktopDatePicker API](https://mui.com/x/api/date-pickers/desktop-date-picker/)\n */\nconst DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePicker(inProps, ref) {\n  const adapter = usePickerAdapter();\n\n  // Props with the default values common to all date pickers\n  const defaultizedProps = useDatePickerDefaultizedProps(inProps, 'MuiDesktopDatePicker');\n  const viewRenderers = _extends({\n    day: renderDateViewCalendar,\n    month: renderDateViewCalendar,\n    year: renderDateViewCalendar\n  }, defaultizedProps.viewRenderers);\n\n  // Props with the default values specific to the desktop variant\n  const props = _extends({}, defaultizedProps, {\n    closeOnSelect: defaultizedProps.closeOnSelect ?? true,\n    viewRenderers,\n    format: resolveDateFormat(adapter, defaultizedProps, false),\n    yearsPerRow: defaultizedProps.yearsPerRow ?? 4,\n    slots: _extends({\n      field: DateField\n    }, defaultizedProps.slots),\n    slotProps: _extends({}, defaultizedProps.slotProps, {\n      field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps)),\n      toolbar: _extends({\n        hidden: true\n      }, defaultizedProps.slotProps?.toolbar)\n    })\n  });\n  const {\n    renderPicker\n  } = useDesktopPicker({\n    ref,\n    props,\n    valueManager: singleItemValueManager,\n    valueType: 'date',\n    validator: validateDate,\n    steps: null\n  });\n  return renderPicker();\n});\nif (process.env.NODE_ENV !== \"production\") DesktopDatePicker.displayName = \"DesktopDatePicker\";\nDesktopDatePicker.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the main element is focused during the first mount.\n   * This main element is:\n   * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n   * - the `input` element if there is a field rendered.\n   */\n  autoFocus: PropTypes.bool,\n  className: PropTypes.string,\n  /**\n   * If `true`, the Picker will close after submitting the full date.\n   * @default true\n   */\n  closeOnSelect: PropTypes.bool,\n  /**\n   * Formats the day of week displayed in the calendar header.\n   * @param {PickerValidDate} date The date of the day of week provided by the adapter.\n   * @returns {string} The name to display.\n   * @default (date: PickerValidDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()\n   */\n  dayOfWeekFormatter: PropTypes.func,\n  /**\n   * The default value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, the button to open the Picker will not be rendered (it will only render the field).\n   * @deprecated Use the [field component](https://mui.com/x/react-date-pickers/fields/) instead.\n   * @default false\n   */\n  disableOpenPicker: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * If `true`, the week number will be display in the calendar.\n   */\n  displayWeekNumber: PropTypes.bool,\n  /**\n   * @default true\n   */\n  enableAccessibleFieldDOMStructure: PropTypes.any,\n  /**\n   * The day view will show as many weeks as needed after the end of the current month to match this value.\n   * Put it to 6 to have a fixed number of weeks in Gregorian calendars\n   */\n  fixedWeekNumber: PropTypes.number,\n  /**\n   * Format of the date when rendered in the input(s).\n   * Defaults to localized format based on the used `views`.\n   */\n  format: PropTypes.string,\n  /**\n   * Density of the format when rendered in the input.\n   * Setting `formatDensity` to `\"spacious\"` will add a space before and after each `/`, `-` and `.` character.\n   * @default \"dense\"\n   */\n  formatDensity: PropTypes.oneOf(['dense', 'spacious']),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `true`, calls `renderLoading` instead of rendering the day calendar.\n   * Can be used to preload information and show it in calendar.\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Locale for components texts.\n   * Allows overriding texts coming from `LocalizationProvider` and `theme`.\n   */\n  localeText: PropTypes.object,\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Months rendered per row.\n   * @default 3\n   */\n  monthsPerRow: PropTypes.oneOf([3, 4]),\n  /**\n   * Name attribute used by the `input` element in the Field.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is accepted.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The value that was just accepted.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this acceptance:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the acceptance. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the value was accepted via a shortcut selection\n   */\n  onAccept: PropTypes.func,\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The new value.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this change:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the change. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the change was triggered by a shortcut selection\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see `open`).\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the error associated with the current value changes.\n   * When a validation error is detected, the `error` parameter contains a non-null value.\n   * This can be used to render an appropriate form error.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TError} error The reason why the current value is not valid.\n   * @param {TValue} value The value associated with the error.\n   */\n  onError: PropTypes.func,\n  /**\n   * Callback fired on month change.\n   * @param {PickerValidDate} month The new month.\n   */\n  onMonthChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see `open`).\n   */\n  onOpen: PropTypes.func,\n  /**\n   * Callback fired when the selected sections change.\n   * @param {FieldSelectedSections} newValue The new selected sections.\n   */\n  onSelectedSectionsChange: PropTypes.func,\n  /**\n   * Callback fired on view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view.\n   */\n  onViewChange: PropTypes.func,\n  /**\n   * Callback fired on year change.\n   * @param {PickerValidDate} year The new year.\n   */\n  onYearChange: PropTypes.func,\n  /**\n   * Control the popup or dialog open state.\n   * @default false\n   */\n  open: PropTypes.bool,\n  /**\n   * The default visible view.\n   * Used when the component view is not controlled.\n   * Must be a valid option from `views` list.\n   */\n  openTo: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * Force rendering in particular orientation.\n   */\n  orientation: PropTypes.oneOf(['landscape', 'portrait']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, disable heavy animations.\n   * @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13\n   */\n  reduceAnimations: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Component displaying when passed `loading` true.\n   * @returns {React.ReactNode} The node to render when loading.\n   * @default () => <span>...</span>\n   */\n  renderLoading: PropTypes.func,\n  /**\n   * The currently selected sections.\n   * This prop accepts four formats:\n   * 1. If a number is provided, the section at this index will be selected.\n   * 2. If a string of type `FieldSectionType` is provided, the first section with that name will be selected.\n   * 3. If `\"all\"` is provided, all the sections will be selected.\n   * 4. If `null` is provided, no section will be selected.\n   * If not provided, the selected sections will be handled internally.\n   */\n  selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number]),\n  /**\n   * Disable specific date.\n   *\n   * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.\n   *\n   * @param {PickerValidDate} day The date to test.\n   * @returns {boolean} If `true` the date will be disabled.\n   */\n  shouldDisableDate: PropTypes.func,\n  /**\n   * Disable specific month.\n   * @param {PickerValidDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * Disable specific year.\n   * @param {PickerValidDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * If `true`, days outside the current month are rendered:\n   *\n   * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.\n   *\n   * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.\n   *\n   * - ignored if `calendars` equals more than `1` on range pickers.\n   * @default false\n   */\n  showDaysOutsideCurrentMonth: PropTypes.bool,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The visible view.\n   * Used when the component view is controlled.\n   * Must be a valid option from `views` list.\n   */\n  view: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * Define custom view renderers for each section.\n   * If `null`, the section will only have field editing.\n   * If `undefined`, internally defined view will be used.\n   */\n  viewRenderers: PropTypes.shape({\n    day: PropTypes.func,\n    month: PropTypes.func,\n    year: PropTypes.func\n  }),\n  /**\n   * Available views.\n   */\n  views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired),\n  /**\n   * Years are displayed in ascending (chronological) order by default.\n   * If `desc`, years are displayed in descending order.\n   * @default 'asc'\n   */\n  yearsOrder: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Years rendered per row.\n   * @default 4\n   */\n  yearsPerRow: PropTypes.oneOf([3, 4])\n};\nexport { DesktopDatePicker };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport DialogContent from '@mui/material/DialogContent';\nimport Fade from '@mui/material/Fade';\nimport MuiDialog, { dialogClasses } from '@mui/material/Dialog';\nimport { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH } from \"../constants/dimensions.js\";\nimport { usePickerContext } from \"../../hooks/index.js\";\nimport { usePickerPrivateContext } from \"../hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PickersModalDialogRoot = styled(MuiDialog, {\n  slot: 'internal'\n})({\n  [`& .${dialogClasses.container}`]: {\n    outline: 0\n  },\n  [`& .${dialogClasses.paper}`]: {\n    outline: 0,\n    minWidth: DIALOG_WIDTH\n  }\n});\nconst PickersModalDialogContent = styled(DialogContent, {\n  slot: 'internal'\n})({\n  '&:first-of-type': {\n    padding: 0\n  }\n});\nexport function PickersModalDialog(props) {\n  const {\n    children,\n    slots,\n    slotProps\n  } = props;\n  const {\n    open\n  } = usePickerContext();\n  const {\n    dismissViews,\n    onPopperExited\n  } = usePickerPrivateContext();\n  const Dialog = slots?.dialog ?? PickersModalDialogRoot;\n  const Transition = slots?.mobileTransition ?? Fade;\n  return /*#__PURE__*/_jsx(Dialog, _extends({\n    open: open,\n    onClose: () => {\n      dismissViews();\n      onPopperExited?.();\n    }\n  }, slotProps?.dialog, {\n    TransitionComponent: Transition,\n    TransitionProps: slotProps?.mobileTransition,\n    PaperComponent: slots?.mobilePaper,\n    PaperProps: slotProps?.mobilePaper,\n    children: /*#__PURE__*/_jsx(PickersModalDialogContent, {\n      children: children\n    })\n  }));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"props\", \"steps\"],\n  _excluded2 = [\"ownerState\"];\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport { PickersModalDialog } from \"../../components/PickersModalDialog.js\";\nimport { usePicker } from \"../usePicker/index.js\";\nimport { PickersLayout } from \"../../../PickersLayout/index.js\";\nimport { PickerProvider } from \"../../components/PickerProvider.js\";\nimport { createNonRangePickerStepNavigation } from \"../../utils/createNonRangePickerStepNavigation.js\";\n\n/**\n * Hook managing all the single-date mobile pickers:\n * - MobileDatePicker\n * - MobileDateTimePicker\n * - MobileTimePicker\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const useMobilePicker = _ref => {\n  let {\n      props,\n      steps\n    } = _ref,\n    pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const {\n    slots,\n    slotProps: innerSlotProps,\n    label,\n    inputRef,\n    localeText\n  } = props;\n  const getStepNavigation = createNonRangePickerStepNavigation({\n    steps\n  });\n  const {\n    providerProps,\n    renderCurrentView,\n    ownerState\n  } = usePicker(_extends({}, pickerParams, {\n    props,\n    localeText,\n    autoFocusView: true,\n    viewContainerRole: 'dialog',\n    variant: 'mobile',\n    getStepNavigation\n  }));\n  const labelId = providerProps.privateContextValue.labelId;\n  const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;\n  const Field = slots.field;\n  const _useSlotProps = useSlotProps({\n      elementType: Field,\n      externalSlotProps: innerSlotProps?.field,\n      additionalProps: _extends({}, isToolbarHidden && {\n        id: labelId\n      }),\n      ownerState\n    }),\n    fieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n  const Layout = slots.layout ?? PickersLayout;\n  let labelledById = labelId;\n  if (isToolbarHidden) {\n    if (label) {\n      labelledById = `${labelId}-label`;\n    } else {\n      labelledById = undefined;\n    }\n  }\n  const slotProps = _extends({}, innerSlotProps, {\n    toolbar: _extends({}, innerSlotProps?.toolbar, {\n      titleId: labelId\n    }),\n    mobilePaper: _extends({\n      'aria-labelledby': labelledById\n    }, innerSlotProps?.mobilePaper)\n  });\n  const renderPicker = () => /*#__PURE__*/_jsxs(PickerProvider, _extends({}, providerProps, {\n    children: [/*#__PURE__*/_jsx(Field, _extends({}, fieldProps, {\n      slots: _extends({}, slots, fieldProps.slots),\n      slotProps: _extends({}, slotProps, fieldProps.slotProps),\n      inputRef: inputRef\n    })), /*#__PURE__*/_jsx(PickersModalDialog, {\n      slots: slots,\n      slotProps: slotProps,\n      children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {\n        slots: slots,\n        slotProps: slotProps,\n        children: renderCurrentView()\n      }))\n    })]\n  }));\n  if (process.env.NODE_ENV !== \"production\") renderPicker.displayName = \"renderPicker\";\n  return {\n    renderPicker\n  };\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveComponentProps from '@mui/utils/resolveComponentProps';\nimport refType from '@mui/utils/refType';\nimport { useMobilePicker } from \"../internals/hooks/useMobilePicker/index.js\";\nimport { useDatePickerDefaultizedProps } from \"../DatePicker/shared.js\";\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nimport { extractValidationProps, validateDate } from \"../validation/index.js\";\nimport { DateField } from \"../DateField/index.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { renderDateViewCalendar } from \"../dateViewRenderers/index.js\";\nimport { resolveDateFormat } from \"../internals/utils/date-utils.js\";\n/**\n * Demos:\n *\n * - [DatePicker](https://mui.com/x/react-date-pickers/date-picker/)\n * - [Validation](https://mui.com/x/react-date-pickers/validation/)\n *\n * API:\n *\n * - [MobileDatePicker API](https://mui.com/x/api/date-pickers/mobile-date-picker/)\n */\nconst MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker(inProps, ref) {\n  const adapter = usePickerAdapter();\n\n  // Props with the default values common to all date pickers\n  const defaultizedProps = useDatePickerDefaultizedProps(inProps, 'MuiMobileDatePicker');\n  const viewRenderers = _extends({\n    day: renderDateViewCalendar,\n    month: renderDateViewCalendar,\n    year: renderDateViewCalendar\n  }, defaultizedProps.viewRenderers);\n\n  // Props with the default values specific to the mobile variant\n  const props = _extends({}, defaultizedProps, {\n    viewRenderers,\n    format: resolveDateFormat(adapter, defaultizedProps, false),\n    slots: _extends({\n      field: DateField\n    }, defaultizedProps.slots),\n    slotProps: _extends({}, defaultizedProps.slotProps, {\n      field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps)),\n      toolbar: _extends({\n        hidden: false\n      }, defaultizedProps.slotProps?.toolbar)\n    })\n  });\n  const {\n    renderPicker\n  } = useMobilePicker({\n    ref,\n    props,\n    valueManager: singleItemValueManager,\n    valueType: 'date',\n    validator: validateDate,\n    steps: null\n  });\n  return renderPicker();\n});\nif (process.env.NODE_ENV !== \"production\") MobileDatePicker.displayName = \"MobileDatePicker\";\nMobileDatePicker.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the main element is focused during the first mount.\n   * This main element is:\n   * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n   * - the `input` element if there is a field rendered.\n   */\n  autoFocus: PropTypes.bool,\n  className: PropTypes.string,\n  /**\n   * If `true`, the Picker will close after submitting the full date.\n   * @default false\n   */\n  closeOnSelect: PropTypes.bool,\n  /**\n   * Formats the day of week displayed in the calendar header.\n   * @param {PickerValidDate} date The date of the day of week provided by the adapter.\n   * @returns {string} The name to display.\n   * @default (date: PickerValidDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()\n   */\n  dayOfWeekFormatter: PropTypes.func,\n  /**\n   * The default value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, the button to open the Picker will not be rendered (it will only render the field).\n   * @deprecated Use the [field component](https://mui.com/x/react-date-pickers/fields/) instead.\n   * @default false\n   */\n  disableOpenPicker: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * If `true`, the week number will be display in the calendar.\n   */\n  displayWeekNumber: PropTypes.bool,\n  /**\n   * @default true\n   */\n  enableAccessibleFieldDOMStructure: PropTypes.any,\n  /**\n   * The day view will show as many weeks as needed after the end of the current month to match this value.\n   * Put it to 6 to have a fixed number of weeks in Gregorian calendars\n   */\n  fixedWeekNumber: PropTypes.number,\n  /**\n   * Format of the date when rendered in the input(s).\n   * Defaults to localized format based on the used `views`.\n   */\n  format: PropTypes.string,\n  /**\n   * Density of the format when rendered in the input.\n   * Setting `formatDensity` to `\"spacious\"` will add a space before and after each `/`, `-` and `.` character.\n   * @default \"dense\"\n   */\n  formatDensity: PropTypes.oneOf(['dense', 'spacious']),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `true`, calls `renderLoading` instead of rendering the day calendar.\n   * Can be used to preload information and show it in calendar.\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Locale for components texts.\n   * Allows overriding texts coming from `LocalizationProvider` and `theme`.\n   */\n  localeText: PropTypes.object,\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Months rendered per row.\n   * @default 3\n   */\n  monthsPerRow: PropTypes.oneOf([3, 4]),\n  /**\n   * Name attribute used by the `input` element in the Field.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is accepted.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The value that was just accepted.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this acceptance:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the acceptance. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the value was accepted via a shortcut selection\n   */\n  onAccept: PropTypes.func,\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The new value.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this change:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the change. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the change was triggered by a shortcut selection\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see `open`).\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the error associated with the current value changes.\n   * When a validation error is detected, the `error` parameter contains a non-null value.\n   * This can be used to render an appropriate form error.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TError} error The reason why the current value is not valid.\n   * @param {TValue} value The value associated with the error.\n   */\n  onError: PropTypes.func,\n  /**\n   * Callback fired on month change.\n   * @param {PickerValidDate} month The new month.\n   */\n  onMonthChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see `open`).\n   */\n  onOpen: PropTypes.func,\n  /**\n   * Callback fired when the selected sections change.\n   * @param {FieldSelectedSections} newValue The new selected sections.\n   */\n  onSelectedSectionsChange: PropTypes.func,\n  /**\n   * Callback fired on view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view.\n   */\n  onViewChange: PropTypes.func,\n  /**\n   * Callback fired on year change.\n   * @param {PickerValidDate} year The new year.\n   */\n  onYearChange: PropTypes.func,\n  /**\n   * Control the popup or dialog open state.\n   * @default false\n   */\n  open: PropTypes.bool,\n  /**\n   * The default visible view.\n   * Used when the component view is not controlled.\n   * Must be a valid option from `views` list.\n   */\n  openTo: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * Force rendering in particular orientation.\n   */\n  orientation: PropTypes.oneOf(['landscape', 'portrait']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, disable heavy animations.\n   * @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13\n   */\n  reduceAnimations: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Component displaying when passed `loading` true.\n   * @returns {React.ReactNode} The node to render when loading.\n   * @default () => <span>...</span>\n   */\n  renderLoading: PropTypes.func,\n  /**\n   * The currently selected sections.\n   * This prop accepts four formats:\n   * 1. If a number is provided, the section at this index will be selected.\n   * 2. If a string of type `FieldSectionType` is provided, the first section with that name will be selected.\n   * 3. If `\"all\"` is provided, all the sections will be selected.\n   * 4. If `null` is provided, no section will be selected.\n   * If not provided, the selected sections will be handled internally.\n   */\n  selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number]),\n  /**\n   * Disable specific date.\n   *\n   * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.\n   *\n   * @param {PickerValidDate} day The date to test.\n   * @returns {boolean} If `true` the date will be disabled.\n   */\n  shouldDisableDate: PropTypes.func,\n  /**\n   * Disable specific month.\n   * @param {PickerValidDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * Disable specific year.\n   * @param {PickerValidDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * If `true`, days outside the current month are rendered:\n   *\n   * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.\n   *\n   * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.\n   *\n   * - ignored if `calendars` equals more than `1` on range pickers.\n   * @default false\n   */\n  showDaysOutsideCurrentMonth: PropTypes.bool,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The visible view.\n   * Used when the component view is controlled.\n   * Must be a valid option from `views` list.\n   */\n  view: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * Define custom view renderers for each section.\n   * If `null`, the section will only have field editing.\n   * If `undefined`, internally defined view will be used.\n   */\n  viewRenderers: PropTypes.shape({\n    day: PropTypes.func,\n    month: PropTypes.func,\n    year: PropTypes.func\n  }),\n  /**\n   * Available views.\n   */\n  views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired),\n  /**\n   * Years are displayed in ascending (chronological) order by default.\n   * If `desc`, years are displayed in descending order.\n   * @default 'asc'\n   */\n  yearsOrder: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Years rendered per row.\n   * @default 3\n   */\n  yearsPerRow: PropTypes.oneOf([3, 4])\n};\nexport { MobileDatePicker };","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"desktopModeMediaQuery\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useThemeProps } from '@mui/material/styles';\nimport refType from '@mui/utils/refType';\nimport { DesktopDatePicker } from \"../DesktopDatePicker/index.js\";\nimport { MobileDatePicker } from \"../MobileDatePicker/index.js\";\nimport { DEFAULT_DESKTOP_MODE_MEDIA_QUERY } from \"../internals/utils/utils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Demos:\n *\n * - [DatePicker](https://mui.com/x/react-date-pickers/date-picker/)\n * - [Validation](https://mui.com/x/react-date-pickers/validation/)\n *\n * API:\n *\n * - [DatePicker API](https://mui.com/x/api/date-pickers/date-picker/)\n */\nconst DatePicker = /*#__PURE__*/React.forwardRef(function DatePicker(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDatePicker'\n  });\n  const {\n      desktopModeMediaQuery = DEFAULT_DESKTOP_MODE_MEDIA_QUERY\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n\n  // defaults to `true` in environments where `window.matchMedia` would not be available (i.e. test/jsdom)\n  const isDesktop = useMediaQuery(desktopModeMediaQuery, {\n    defaultMatches: true\n  });\n  if (isDesktop) {\n    return /*#__PURE__*/_jsx(DesktopDatePicker, _extends({\n      ref: ref\n    }, other));\n  }\n  return /*#__PURE__*/_jsx(MobileDatePicker, _extends({\n    ref: ref\n  }, other));\n});\nif (process.env.NODE_ENV !== \"production\") DatePicker.displayName = \"DatePicker\";\nprocess.env.NODE_ENV !== \"production\" ? DatePicker.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * If `true`, the main element is focused during the first mount.\n   * This main element is:\n   * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n   * - the `input` element if there is a field rendered.\n   */\n  autoFocus: PropTypes.bool,\n  className: PropTypes.string,\n  /**\n   * If `true`, the Picker will close after submitting the full date.\n   * @default `true` for desktop, `false` for mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n   */\n  closeOnSelect: PropTypes.bool,\n  /**\n   * Formats the day of week displayed in the calendar header.\n   * @param {PickerValidDate} date The date of the day of week provided by the adapter.\n   * @returns {string} The name to display.\n   * @default (date: PickerValidDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()\n   */\n  dayOfWeekFormatter: PropTypes.func,\n  /**\n   * The default value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * CSS media query when `Mobile` mode will be changed to `Desktop`.\n   * @default '@media (pointer: fine)'\n   * @example '@media (min-width: 720px)' or theme.breakpoints.up(\"sm\")\n   */\n  desktopModeMediaQuery: PropTypes.string,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * If `true`, the button to open the Picker will not be rendered (it will only render the field).\n   * @deprecated Use the [field component](https://mui.com/x/react-date-pickers/fields/) instead.\n   * @default false\n   */\n  disableOpenPicker: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * If `true`, the week number will be display in the calendar.\n   */\n  displayWeekNumber: PropTypes.bool,\n  /**\n   * @default true\n   */\n  enableAccessibleFieldDOMStructure: PropTypes.any,\n  /**\n   * The day view will show as many weeks as needed after the end of the current month to match this value.\n   * Put it to 6 to have a fixed number of weeks in Gregorian calendars\n   */\n  fixedWeekNumber: PropTypes.number,\n  /**\n   * Format of the date when rendered in the input(s).\n   * Defaults to localized format based on the used `views`.\n   */\n  format: PropTypes.string,\n  /**\n   * Density of the format when rendered in the input.\n   * Setting `formatDensity` to `\"spacious\"` will add a space before and after each `/`, `-` and `.` character.\n   * @default \"dense\"\n   */\n  formatDensity: PropTypes.oneOf(['dense', 'spacious']),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `true`, calls `renderLoading` instead of rendering the day calendar.\n   * Can be used to preload information and show it in calendar.\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Locale for components texts.\n   * Allows overriding texts coming from `LocalizationProvider` and `theme`.\n   */\n  localeText: PropTypes.object,\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Months rendered per row.\n   * @default 3\n   */\n  monthsPerRow: PropTypes.oneOf([3, 4]),\n  /**\n   * Name attribute used by the `input` element in the Field.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is accepted.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The value that was just accepted.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this acceptance:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the acceptance. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the value was accepted via a shortcut selection\n   */\n  onAccept: PropTypes.func,\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The new value.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this change:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the change. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the change was triggered by a shortcut selection\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see `open`).\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the error associated with the current value changes.\n   * When a validation error is detected, the `error` parameter contains a non-null value.\n   * This can be used to render an appropriate form error.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TError} error The reason why the current value is not valid.\n   * @param {TValue} value The value associated with the error.\n   */\n  onError: PropTypes.func,\n  /**\n   * Callback fired on month change.\n   * @param {PickerValidDate} month The new month.\n   */\n  onMonthChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see `open`).\n   */\n  onOpen: PropTypes.func,\n  /**\n   * Callback fired when the selected sections change.\n   * @param {FieldSelectedSections} newValue The new selected sections.\n   */\n  onSelectedSectionsChange: PropTypes.func,\n  /**\n   * Callback fired on view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view.\n   */\n  onViewChange: PropTypes.func,\n  /**\n   * Callback fired on year change.\n   * @param {PickerValidDate} year The new year.\n   */\n  onYearChange: PropTypes.func,\n  /**\n   * Control the popup or dialog open state.\n   * @default false\n   */\n  open: PropTypes.bool,\n  /**\n   * The default visible view.\n   * Used when the component view is not controlled.\n   * Must be a valid option from `views` list.\n   */\n  openTo: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * Force rendering in particular orientation.\n   */\n  orientation: PropTypes.oneOf(['landscape', 'portrait']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, disable heavy animations.\n   * @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13\n   */\n  reduceAnimations: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Component displaying when passed `loading` true.\n   * @returns {React.ReactNode} The node to render when loading.\n   * @default () => <span>...</span>\n   */\n  renderLoading: PropTypes.func,\n  /**\n   * The currently selected sections.\n   * This prop accepts four formats:\n   * 1. If a number is provided, the section at this index will be selected.\n   * 2. If a string of type `FieldSectionType` is provided, the first section with that name will be selected.\n   * 3. If `\"all\"` is provided, all the sections will be selected.\n   * 4. If `null` is provided, no section will be selected.\n   * If not provided, the selected sections will be handled internally.\n   */\n  selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number]),\n  /**\n   * Disable specific date.\n   *\n   * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.\n   *\n   * @param {PickerValidDate} day The date to test.\n   * @returns {boolean} If `true` the date will be disabled.\n   */\n  shouldDisableDate: PropTypes.func,\n  /**\n   * Disable specific month.\n   * @param {PickerValidDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * Disable specific year.\n   * @param {PickerValidDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * If `true`, days outside the current month are rendered:\n   *\n   * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.\n   *\n   * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.\n   *\n   * - ignored if `calendars` equals more than `1` on range pickers.\n   * @default false\n   */\n  showDaysOutsideCurrentMonth: PropTypes.bool,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The visible view.\n   * Used when the component view is controlled.\n   * Must be a valid option from `views` list.\n   */\n  view: PropTypes.oneOf(['day', 'month', 'year']),\n  /**\n   * Define custom view renderers for each section.\n   * If `null`, the section will only have field editing.\n   * If `undefined`, internally defined view will be used.\n   */\n  viewRenderers: PropTypes.shape({\n    day: PropTypes.func,\n    month: PropTypes.func,\n    year: PropTypes.func\n  }),\n  /**\n   * Available views.\n   */\n  views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired),\n  /**\n   * Years are displayed in ascending (chronological) order by default.\n   * If `desc`, years are displayed in descending order.\n   * @default 'asc'\n   */\n  yearsOrder: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Years rendered per row.\n   * @default 4 on desktop, 3 on mobile\n   */\n  yearsPerRow: PropTypes.oneOf([3, 4])\n} : void 0;\nexport { DatePicker };","!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(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_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","!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_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","!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_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","!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_isBetween=i()}(this,(function(){\"use strict\";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r=\"(\"===(f=f||\"()\")[0],u=\")\"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}}));","!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_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return s.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return s.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return s.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return n.bind(this)(a)}}}));","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* v8 ignore start */\nimport dayjs from 'dayjs';\n// dayjs has no exports field defined\n// See https://github.com/iamkun/dayjs/issues/2562\n/* eslint-disable import/extensions */\nimport weekOfYearPlugin from 'dayjs/plugin/weekOfYear.js';\nimport customParseFormatPlugin from 'dayjs/plugin/customParseFormat.js';\nimport localizedFormatPlugin from 'dayjs/plugin/localizedFormat.js';\nimport isBetweenPlugin from 'dayjs/plugin/isBetween.js';\nimport advancedFormatPlugin from 'dayjs/plugin/advancedFormat.js';\n/* v8 ignore stop */\n/* eslint-enable import/extensions */\nimport { warnOnce } from '@mui/x-internals/warning';\ndayjs.extend(localizedFormatPlugin);\ndayjs.extend(weekOfYearPlugin);\ndayjs.extend(isBetweenPlugin);\ndayjs.extend(advancedFormatPlugin);\nconst formatTokenMap = {\n  // Year\n  YY: 'year',\n  YYYY: {\n    sectionType: 'year',\n    contentType: 'digit',\n    maxLength: 4\n  },\n  // Month\n  M: {\n    sectionType: 'month',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  MM: 'month',\n  MMM: {\n    sectionType: 'month',\n    contentType: 'letter'\n  },\n  MMMM: {\n    sectionType: 'month',\n    contentType: 'letter'\n  },\n  // Day of the month\n  D: {\n    sectionType: 'day',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  DD: 'day',\n  Do: {\n    sectionType: 'day',\n    contentType: 'digit-with-letter'\n  },\n  // Day of the week\n  d: {\n    sectionType: 'weekDay',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  dd: {\n    sectionType: 'weekDay',\n    contentType: 'letter'\n  },\n  ddd: {\n    sectionType: 'weekDay',\n    contentType: 'letter'\n  },\n  dddd: {\n    sectionType: 'weekDay',\n    contentType: 'letter'\n  },\n  // Meridiem\n  A: 'meridiem',\n  a: 'meridiem',\n  // Hours\n  H: {\n    sectionType: 'hours',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  HH: 'hours',\n  h: {\n    sectionType: 'hours',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  hh: 'hours',\n  // Minutes\n  m: {\n    sectionType: 'minutes',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  mm: 'minutes',\n  // Seconds\n  s: {\n    sectionType: 'seconds',\n    contentType: 'digit',\n    maxLength: 2\n  },\n  ss: 'seconds'\n};\nconst defaultFormats = {\n  year: 'YYYY',\n  month: 'MMMM',\n  monthShort: 'MMM',\n  dayOfMonth: 'D',\n  dayOfMonthFull: 'Do',\n  weekday: 'dddd',\n  weekdayShort: 'dd',\n  hours24h: 'HH',\n  hours12h: 'hh',\n  meridiem: 'A',\n  minutes: 'mm',\n  seconds: 'ss',\n  fullDate: 'll',\n  keyboardDate: 'L',\n  shortDate: 'MMM D',\n  normalDate: 'D MMMM',\n  normalDateWithWeekday: 'ddd, MMM D',\n  fullTime12h: 'hh:mm A',\n  fullTime24h: 'HH:mm',\n  keyboardDateTime12h: 'L hh:mm A',\n  keyboardDateTime24h: 'L HH:mm'\n};\nconst MISSING_UTC_PLUGIN = ['Missing UTC plugin', 'To be able to use UTC or timezones, you have to enable the `utc` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc'].join('\\n');\nconst MISSING_TIMEZONE_PLUGIN = ['Missing timezone plugin', 'To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone'].join('\\n');\n/**\n * Based on `@date-io/dayjs`\n *\n * MIT License\n *\n * Copyright (c) 2017 Dmitriy Kovalenko\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport class AdapterDayjs {\n  isMUIAdapter = true;\n  isTimezoneCompatible = true;\n  lib = 'dayjs';\n  escapedCharacters = {\n    start: '[',\n    end: ']'\n  };\n  formatTokenMap = (() => formatTokenMap)();\n  constructor({\n    locale,\n    formats\n  } = {}) {\n    this.locale = locale;\n    this.formats = _extends({}, defaultFormats, formats);\n\n    // Moved plugins to the constructor to allow for users to use options on the library\n    // for reference: https://github.com/mui/mui-x/pull/11151\n    dayjs.extend(customParseFormatPlugin);\n  }\n  setLocaleToValue = value => {\n    const expectedLocale = this.getCurrentLocaleCode();\n    if (expectedLocale === value.locale()) {\n      return value;\n    }\n    return value.locale(expectedLocale);\n  };\n  hasUTCPlugin = () => typeof dayjs.utc !== 'undefined';\n  hasTimezonePlugin = () => typeof dayjs.tz !== 'undefined';\n  isSame = (value, comparing, comparisonTemplate) => {\n    const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));\n    return value.format(comparisonTemplate) === comparingInValueTimezone.format(comparisonTemplate);\n  };\n\n  /**\n   * Replaces \"default\" by undefined and \"system\" by the system timezone before passing it to `dayjs`.\n   */\n  cleanTimezone = timezone => {\n    switch (timezone) {\n      case 'default':\n        {\n          return undefined;\n        }\n      case 'system':\n        {\n          return dayjs.tz.guess();\n        }\n      default:\n        {\n          return timezone;\n        }\n    }\n  };\n  createSystemDate = value => {\n    let date;\n    if (this.hasUTCPlugin() && this.hasTimezonePlugin()) {\n      const timezone = dayjs.tz.guess();\n      if (timezone === 'UTC') {\n        date = dayjs(value);\n      } /* v8 ignore next 3 */else {\n        // We can't change the system timezone in the tests\n        date = dayjs.tz(value, timezone);\n      }\n    } else {\n      date = dayjs(value);\n    }\n    return this.setLocaleToValue(date);\n  };\n  createUTCDate = value => {\n    /* v8 ignore next 3 */\n    if (!this.hasUTCPlugin()) {\n      throw new Error(MISSING_UTC_PLUGIN);\n    }\n    return this.setLocaleToValue(dayjs.utc(value));\n  };\n  createTZDate = (value, timezone) => {\n    /* v8 ignore next 3 */\n    if (!this.hasUTCPlugin()) {\n      throw new Error(MISSING_UTC_PLUGIN);\n    }\n\n    /* v8 ignore next 3 */\n    if (!this.hasTimezonePlugin()) {\n      throw new Error(MISSING_TIMEZONE_PLUGIN);\n    }\n    const keepLocalTime = value !== undefined && !value.endsWith('Z');\n    return this.setLocaleToValue(dayjs(value).tz(this.cleanTimezone(timezone), keepLocalTime));\n  };\n  getLocaleFormats = () => {\n    const locales = dayjs.Ls;\n    const locale = this.locale || 'en';\n    let localeObject = locales[locale];\n    if (localeObject === undefined) {\n      /* v8 ignore start */\n      if (process.env.NODE_ENV !== 'production') {\n        warnOnce(['MUI X: Your locale has not been found.', 'Either the locale key is not a supported one. Locales supported by dayjs are available here: https://github.com/iamkun/dayjs/tree/dev/src/locale.', \"Or you forget to import the locale from 'dayjs/locale/{localeUsed}'\", 'fallback on English locale.']);\n      }\n      /* v8 ignore stop */\n      localeObject = locales.en;\n    }\n    return localeObject.formats;\n  };\n\n  /**\n   * If the new day does not have the same offset as the old one (when switching to summer day time for example),\n   * Then dayjs will not automatically adjust the offset (moment does).\n   * We have to parse again the value to make sure the `fixOffset` method is applied.\n   * See https://github.com/iamkun/dayjs/blob/b3624de619d6e734cd0ffdbbd3502185041c1b60/src/plugin/timezone/index.js#L72\n   */\n  adjustOffset = value => {\n    if (!this.hasTimezonePlugin()) {\n      return value;\n    }\n    const timezone = this.getTimezone(value);\n    if (timezone !== 'UTC') {\n      const fixedValue = value.tz(this.cleanTimezone(timezone), true);\n      // TODO: Simplify the case when we raise the `dayjs` peer dep to 1.11.12 (https://github.com/iamkun/dayjs/releases/tag/v1.11.12)\n      /* v8 ignore next 3 */\n      // @ts-ignore\n      if (fixedValue.$offset === (value.$offset ?? 0)) {\n        return value;\n      }\n      // Change only what is needed to avoid creating a new object with unwanted data\n      // Especially important when used in an environment where utc or timezone dates are used only in some places\n      // Reference: https://github.com/mui/mui-x/issues/13290\n      // @ts-ignore\n      value.$offset = fixedValue.$offset;\n    }\n    return value;\n  };\n  date = (value, timezone = 'default') => {\n    if (value === null) {\n      return null;\n    }\n    if (timezone === 'UTC') {\n      return this.createUTCDate(value);\n    }\n    if (timezone === 'system' || timezone === 'default' && !this.hasTimezonePlugin()) {\n      return this.createSystemDate(value);\n    }\n    return this.createTZDate(value, timezone);\n  };\n  getInvalidDate = () => dayjs(new Date('Invalid date'));\n  getTimezone = value => {\n    if (this.hasTimezonePlugin()) {\n      // @ts-ignore\n      const zone = value.$x?.$timezone;\n      if (zone) {\n        return zone;\n      }\n    }\n    if (this.hasUTCPlugin() && value.isUTC()) {\n      return 'UTC';\n    }\n    return 'system';\n  };\n  setTimezone = (value, timezone) => {\n    if (this.getTimezone(value) === timezone) {\n      return value;\n    }\n    if (timezone === 'UTC') {\n      /* v8 ignore next 3 */\n      if (!this.hasUTCPlugin()) {\n        throw new Error(MISSING_UTC_PLUGIN);\n      }\n      return value.utc();\n    }\n\n    // We know that we have the UTC plugin.\n    // Otherwise, the value timezone would always equal \"system\".\n    // And it would be caught by the first \"if\" of this method.\n    if (timezone === 'system') {\n      return value.local();\n    }\n    if (!this.hasTimezonePlugin()) {\n      if (timezone === 'default') {\n        return value;\n      }\n\n      /* v8 ignore next */\n      throw new Error(MISSING_TIMEZONE_PLUGIN);\n    }\n    return this.setLocaleToValue(dayjs.tz(value, this.cleanTimezone(timezone)));\n  };\n  toJsDate = value => {\n    return value.toDate();\n  };\n  parse = (value, format) => {\n    if (value === '') {\n      return null;\n    }\n    return dayjs(value, format, this.locale, true);\n  };\n  getCurrentLocaleCode = () => {\n    return this.locale || 'en';\n  };\n  is12HourCycleInCurrentLocale = () => {\n    /* v8 ignore next */\n    return /A|a/.test(this.getLocaleFormats().LT || '');\n  };\n  expandFormat = format => {\n    const localeFormats = this.getLocaleFormats();\n\n    // @see https://github.com/iamkun/dayjs/blob/dev/src/plugin/localizedFormat/index.js\n    const t = formatBis => formatBis.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, (_, a, b) => a || b.slice(1));\n    return format.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g, (_, a, b) => {\n      const B = b && b.toUpperCase();\n      return a || localeFormats[b] || t(localeFormats[B]);\n    });\n  };\n  isValid = value => {\n    if (value == null) {\n      return false;\n    }\n    return value.isValid();\n  };\n  format = (value, formatKey) => {\n    return this.formatByString(value, this.formats[formatKey]);\n  };\n  formatByString = (value, formatString) => {\n    return this.setLocaleToValue(value).format(formatString);\n  };\n  formatNumber = numberToFormat => {\n    return numberToFormat;\n  };\n  isEqual = (value, comparing) => {\n    if (value === null && comparing === null) {\n      return true;\n    }\n    if (value === null || comparing === null) {\n      return false;\n    }\n    return value.toDate().getTime() === comparing.toDate().getTime();\n  };\n  isSameYear = (value, comparing) => {\n    return this.isSame(value, comparing, 'YYYY');\n  };\n  isSameMonth = (value, comparing) => {\n    return this.isSame(value, comparing, 'YYYY-MM');\n  };\n  isSameDay = (value, comparing) => {\n    return this.isSame(value, comparing, 'YYYY-MM-DD');\n  };\n  isSameHour = (value, comparing) => {\n    return value.isSame(comparing, 'hour');\n  };\n  isAfter = (value, comparing) => {\n    return value > comparing;\n  };\n  isAfterYear = (value, comparing) => {\n    if (!this.hasUTCPlugin()) {\n      return value.isAfter(comparing, 'year');\n    }\n    return !this.isSameYear(value, comparing) && value.utc() > comparing.utc();\n  };\n  isAfterDay = (value, comparing) => {\n    if (!this.hasUTCPlugin()) {\n      return value.isAfter(comparing, 'day');\n    }\n    return !this.isSameDay(value, comparing) && value.utc() > comparing.utc();\n  };\n  isBefore = (value, comparing) => {\n    return value < comparing;\n  };\n  isBeforeYear = (value, comparing) => {\n    if (!this.hasUTCPlugin()) {\n      return value.isBefore(comparing, 'year');\n    }\n    return !this.isSameYear(value, comparing) && value.utc() < comparing.utc();\n  };\n  isBeforeDay = (value, comparing) => {\n    if (!this.hasUTCPlugin()) {\n      return value.isBefore(comparing, 'day');\n    }\n    return !this.isSameDay(value, comparing) && value.utc() < comparing.utc();\n  };\n  isWithinRange = (value, [start, end]) => {\n    return value >= start && value <= end;\n  };\n  startOfYear = value => {\n    return this.adjustOffset(value.startOf('year'));\n  };\n  startOfMonth = value => {\n    return this.adjustOffset(value.startOf('month'));\n  };\n  startOfWeek = value => {\n    return this.adjustOffset(this.setLocaleToValue(value).startOf('week'));\n  };\n  startOfDay = value => {\n    return this.adjustOffset(value.startOf('day'));\n  };\n  endOfYear = value => {\n    return this.adjustOffset(value.endOf('year'));\n  };\n  endOfMonth = value => {\n    return this.adjustOffset(value.endOf('month'));\n  };\n  endOfWeek = value => {\n    return this.adjustOffset(this.setLocaleToValue(value).endOf('week'));\n  };\n  endOfDay = value => {\n    return this.adjustOffset(value.endOf('day'));\n  };\n  addYears = (value, amount) => {\n    return this.adjustOffset(value.add(amount, 'year'));\n  };\n  addMonths = (value, amount) => {\n    return this.adjustOffset(value.add(amount, 'month'));\n  };\n  addWeeks = (value, amount) => {\n    return this.adjustOffset(value.add(amount, 'week'));\n  };\n  addDays = (value, amount) => {\n    return this.adjustOffset(value.add(amount, 'day'));\n  };\n  addHours = (value, amount) => {\n    return this.adjustOffset(value.add(amount, 'hour'));\n  };\n  addMinutes = (value, amount) => {\n    return this.adjustOffset(value.add(amount, 'minute'));\n  };\n  addSeconds = (value, amount) => {\n    return this.adjustOffset(value.add(amount, 'second'));\n  };\n  getYear = value => {\n    return value.year();\n  };\n  getMonth = value => {\n    return value.month();\n  };\n  getDate = value => {\n    return value.date();\n  };\n  getHours = value => {\n    return value.hour();\n  };\n  getMinutes = value => {\n    return value.minute();\n  };\n  getSeconds = value => {\n    return value.second();\n  };\n  getMilliseconds = value => {\n    return value.millisecond();\n  };\n  setYear = (value, year) => {\n    return this.adjustOffset(value.set('year', year));\n  };\n  setMonth = (value, month) => {\n    return this.adjustOffset(value.set('month', month));\n  };\n  setDate = (value, date) => {\n    return this.adjustOffset(value.set('date', date));\n  };\n  setHours = (value, hours) => {\n    return this.adjustOffset(value.set('hour', hours));\n  };\n  setMinutes = (value, minutes) => {\n    return this.adjustOffset(value.set('minute', minutes));\n  };\n  setSeconds = (value, seconds) => {\n    return this.adjustOffset(value.set('second', seconds));\n  };\n  setMilliseconds = (value, milliseconds) => {\n    return this.adjustOffset(value.set('millisecond', milliseconds));\n  };\n  getDaysInMonth = value => {\n    return value.daysInMonth();\n  };\n  getWeekArray = value => {\n    const start = this.startOfWeek(this.startOfMonth(value));\n    const end = this.endOfWeek(this.endOfMonth(value));\n    let count = 0;\n    let current = start;\n    const nestedWeeks = [];\n    while (current < end) {\n      const weekNumber = Math.floor(count / 7);\n      nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n      nestedWeeks[weekNumber].push(current);\n      current = this.addDays(current, 1);\n      count += 1;\n    }\n    return nestedWeeks;\n  };\n  getWeekNumber = value => {\n    return value.week();\n  };\n  getDayOfWeek(value) {\n    return value.day() + 1;\n  }\n  getYearRange = ([start, end]) => {\n    const startDate = this.startOfYear(start);\n    const endDate = this.endOfYear(end);\n    const years = [];\n    let current = startDate;\n    while (this.isBefore(current, endDate)) {\n      years.push(current);\n      current = this.addYears(current, 1);\n    }\n    return years;\n  };\n}","import React from \"react\";\nimport { DatePickerProps as MuiDatePickerProps, DatePicker as MuiDatePicker } from \"@mui/x-date-pickers/DatePicker\";\nimport { TextFieldProps } from \"@mui/material\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\nimport dayjs, { Dayjs } from \"dayjs\";\n\n/**\n * ⚠️ DIVERGENCE:\n * We’re intentionally breaking the “no API changes” guideline here.\n *\n * Background:\n * This control isn’t a native MUI component, even though it comes from the @mui scope.\n * Out of the box, the `x-date-pickers` API requires devs to wire validation through `slotProps.textField`,\n * which is inconsistent with the rest of our MUI-like inputs.\n *\n * What:\n * Exposed `error`, `helperText`, and related props directly on the component.\n *\n * Why:\n * - Aligns this component’s API with other inputs in our DS (TextField, Select, Checkbox, etc.).\n * - Matches MUI’s common pattern of accepting `error` and `helperText` at the top level, making it more intuitive.\n * - Simplifies validation wiring, avoiding the need to engage with `slotProps.textField`.\n * - Reduces cognitive overhead and onboarding time for developers familiar with MUI conventions.\n *\n * Approved by Ash & Vee.\n */\n\nexport type DatePickerProps = MuiDatePickerProps & {\n  label?: string;\n  value: Dayjs | null;\n  error?: boolean;\n  helperText?: string;\n  textFieldProps?: TextFieldProps;\n  minDate?: Dayjs;\n  maxDate?: Dayjs;\n  errorMsg?: String;\n  fullWidth?: boolean;\n};\n\nconst DatePicker: React.FC<DatePickerProps> = ({\n  label = \"Select date\",\n  errorMsg,\n  helperText,\n  error = Boolean(errorMsg),\n  textFieldProps = {},\n  fullWidth = false,\n  ...rest\n}) => {\n  return (\n    <LocalizationProvider dateAdapter={AdapterDayjs}>\n      <MuiDatePicker\n        label={label}\n        slotProps={{\n          textField: {\n            fullWidth,\n            error,\n            helperText: error ? errorMsg : helperText,\n            ...textFieldProps,\n          },\n        }}\n        {...rest}\n      />\n    </LocalizationProvider>\n  );\n};\n\nexport default DatePicker;\n","'use client';\n\nimport { useField } from \"../internals/hooks/useField/index.js\";\nimport { useDateTimeManager } from \"../managers/index.js\";\nexport const useDateTimeField = props => {\n  const manager = useDateTimeManager(props);\n  return useField({\n    manager,\n    props\n  });\n};","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport refType from '@mui/utils/refType';\nimport { useDateTimeField } from \"./useDateTimeField.js\";\nimport { PickerFieldUI, PickerFieldUIContextProvider, useFieldTextFieldProps } from \"../internals/components/PickerFieldUI.js\";\nimport { CalendarIcon } from \"../icons/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Demos:\n *\n * - [DateTimeField](http://mui.com/x/react-date-pickers/date-time-field/)\n * - [Fields](https://mui.com/x/react-date-pickers/fields/)\n *\n * API:\n *\n * - [DateTimeField API](https://mui.com/x/api/date-pickers/date-time-field/)\n */\nconst DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps, inRef) {\n  const themeProps = useThemeProps({\n    props: inProps,\n    name: 'MuiDateTimeField'\n  });\n  const {\n      slots,\n      slotProps\n    } = themeProps,\n    other = _objectWithoutPropertiesLoose(themeProps, _excluded);\n  const textFieldProps = useFieldTextFieldProps({\n    slotProps,\n    ref: inRef,\n    externalForwardedProps: other\n  });\n  const fieldResponse = useDateTimeField(textFieldProps);\n  return /*#__PURE__*/_jsx(PickerFieldUIContextProvider, {\n    slots: slots,\n    slotProps: slotProps,\n    inputRef: other.inputRef,\n    children: /*#__PURE__*/_jsx(PickerFieldUI, {\n      fieldResponse: fieldResponse,\n      defaultOpenPickerIcon: CalendarIcon\n    })\n  });\n});\nif (process.env.NODE_ENV !== \"production\") DateTimeField.displayName = \"DateTimeField\";\nprocess.env.NODE_ENV !== \"production\" ? DateTimeField.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * 12h/24h view for hour selection clock.\n   * @default adapter.is12HourCycleInCurrentLocale()\n   */\n  ampm: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  className: PropTypes.string,\n  /**\n   * If `true`, a clear button will be shown in the field allowing value clearing.\n   * @default false\n   */\n  clearable: PropTypes.bool,\n  /**\n   * The position at which the clear button is placed.\n   * If the field is not clearable, the button is not rendered.\n   * @default 'end'\n   */\n  clearButtonPosition: PropTypes.oneOf(['end', 'start']),\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']),\n  component: PropTypes.elementType,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * Do not ignore date part when validating min/max time.\n   * @default false\n   */\n  disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * @default true\n   */\n  enableAccessibleFieldDOMStructure: PropTypes.bool,\n  /**\n   * If `true`, the component is displayed in focused state.\n   */\n  focused: PropTypes.bool,\n  /**\n   * Format of the date when rendered in the input(s).\n   */\n  format: PropTypes.string,\n  /**\n   * Density of the format when rendered in the input.\n   * Setting `formatDensity` to `\"spacious\"` will add a space before and after each `/`, `-` and `.` character.\n   * @default \"dense\"\n   */\n  formatDensity: PropTypes.oneOf(['dense', 'spacious']),\n  /**\n   * Props applied to the [`FormHelperText`](https://mui.com/material-ui/api/form-helper-text/) element.\n   * @deprecated Use `slotProps.formHelperText` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  FormHelperTextProps: PropTypes.object,\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The helper text content.\n   */\n  helperText: PropTypes.node,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   * Use this prop to make `label` and `helperText` accessible for screen readers.\n   */\n  id: PropTypes.string,\n  /**\n   * Props applied to the [`InputLabel`](https://mui.com/material-ui/api/input-label/) element.\n   * Pointer events like `onClick` are enabled if and only if `shrink` is `true`.\n   * @deprecated Use `slotProps.inputLabel` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  InputLabelProps: PropTypes.object,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input#attributes) applied to the `input` element.\n   * @deprecated Use `slotProps.htmlInput` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Props applied to the Input element.\n   * It will be a [`FilledInput`](https://mui.com/material-ui/api/filled-input/),\n   * [`OutlinedInput`](https://mui.com/material-ui/api/outlined-input/) or [`Input`](https://mui.com/material-ui/api/input/)\n   * component depending on the `variant` prop value.\n   * @deprecated Use `slotProps.input` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n   */\n  InputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n   */\n  maxDateTime: PropTypes.object,\n  /**\n   * Maximal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  maxTime: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n   */\n  minDateTime: PropTypes.object,\n  /**\n   * Minimal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  minTime: PropTypes.object,\n  /**\n   * Step over minutes.\n   * @default 1\n   */\n  minutesStep: PropTypes.number,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The new value.\n   * @param {FieldChangeHandlerContext<TError>} context The context containing the validation result of the current value.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the clear button is clicked.\n   */\n  onClear: PropTypes.func,\n  /**\n   * Callback fired when the error associated with the current value changes.\n   * When a validation error is detected, the `error` parameter contains a non-null value.\n   * This can be used to render an appropriate form error.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TError} error The reason why the current value is not valid.\n   * @param {TValue} value The value associated with the error.\n   */\n  onError: PropTypes.func,\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the selected sections change.\n   * @param {FieldSelectedSections} newValue The new selected sections.\n   */\n  onSelectedSectionsChange: PropTypes.func,\n  /**\n   * The position at which the opening button is placed.\n   * If there is no Picker to open, the button is not rendered\n   * @default 'end'\n   */\n  openPickerButtonPosition: PropTypes.oneOf(['end', 'start']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * The date used to generate a part of the new value that is not present in the format when both `value` and `defaultValue` are empty.\n   * For example, on time fields it will be used to determine the date to set.\n   * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * If `true`, the label is displayed as required and the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The currently selected sections.\n   * This prop accepts four formats:\n   * 1. If a number is provided, the section at this index will be selected.\n   * 2. If a string of type `FieldSectionType` is provided, the first section with that name will be selected.\n   * 3. If `\"all\"` is provided, all the sections will be selected.\n   * 4. If `null` is provided, no section will be selected.\n   * If not provided, the selected sections will be handled internally.\n   */\n  selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number]),\n  /**\n   * Disable specific date.\n   *\n   * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.\n   *\n   * @param {PickerValidDate} day The date to test.\n   * @returns {boolean} If `true` the date will be disabled.\n   */\n  shouldDisableDate: PropTypes.func,\n  /**\n   * Disable specific month.\n   * @param {PickerValidDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * Disable specific time.\n   * @param {PickerValidDate} value The value to check.\n   * @param {TimeView} view The clock type of the timeValue.\n   * @returns {boolean} If `true` the time will be disabled.\n   */\n  shouldDisableTime: PropTypes.func,\n  /**\n   * Disable specific year.\n   * @param {PickerValidDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * If `true`, the format will respect the leading zeroes (for example on dayjs, the format `M/D/YYYY` will render `8/16/2018`)\n   * If `false`, the format will always add leading zeroes (for example on dayjs, the format `M/D/YYYY` will render `08/16/2018`)\n   *\n   * Warning n°1: Luxon is not able to respect the leading zeroes when using macro tokens (for example \"DD\"), so `shouldRespectLeadingZeros={true}` might lead to inconsistencies when using `AdapterLuxon`.\n   *\n   * Warning n°2: When `shouldRespectLeadingZeros={true}`, the field will add an invisible character on the sections containing a single digit to make sure `onChange` is fired.\n   * If you need to get the clean value from the input, you can remove this character using `input.value.replace(/\\u200e/g, '')`.\n   *\n   * Warning n°3: When used in strict mode, dayjs and moment require to respect the leading zeros.\n   * This mean that when using `shouldRespectLeadingZeros={false}`, if you retrieve the value directly from the input (not listening to `onChange`) and your format contains tokens without leading zeros, the value will not be parsed by your library.\n   *\n   * @default false\n   */\n  shouldRespectLeadingZeros: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes.oneOf(['medium', 'small']),\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The ref object used to imperatively interact with the field.\n   */\n  unstableFieldRef: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport { DateTimeField };","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getDateTimePickerTabsUtilityClass(slot) {\n  return generateUtilityClass('MuiDateTimePickerTabs', slot);\n}\nexport const dateTimePickerTabsClasses = generateUtilityClasses('MuiDateTimePickerTabs', ['root']);","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport Tab from '@mui/material/Tab';\nimport Tabs, { tabsClasses } from '@mui/material/Tabs';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { TimeIcon, DateRangeIcon } from \"../icons/index.js\";\nimport { usePickerTranslations } from \"../hooks/usePickerTranslations.js\";\nimport { getDateTimePickerTabsUtilityClass } from \"./dateTimePickerTabsClasses.js\";\nimport { isDatePickerView } from \"../internals/utils/date-utils.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { usePickerContext } from \"../hooks/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst viewToTab = view => {\n  if (isDatePickerView(view)) {\n    return 'date';\n  }\n  return 'time';\n};\nconst tabToView = tab => {\n  if (tab === 'date') {\n    return 'day';\n  }\n  return 'hours';\n};\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getDateTimePickerTabsUtilityClass, classes);\n};\nconst DateTimePickerTabsRoot = styled(Tabs, {\n  name: 'MuiDateTimePickerTabs',\n  slot: 'Root'\n})(({\n  theme\n}) => ({\n  boxShadow: `0 -1px 0 0 inset ${(theme.vars || theme).palette.divider}`,\n  '&:last-child': {\n    boxShadow: `0 1px 0 0 inset ${(theme.vars || theme).palette.divider}`,\n    [`& .${tabsClasses.indicator}`]: {\n      bottom: 'auto',\n      top: 0\n    }\n  }\n}));\n\n/**\n * Demos:\n *\n * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)\n * - [Custom slots and subcomponents](https://mui.com/x/react-date-pickers/custom-components/)\n *\n * API:\n *\n * - [DateTimePickerTabs API](https://mui.com/x/api/date-pickers/date-time-picker-tabs/)\n */\nconst DateTimePickerTabs = function DateTimePickerTabs(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDateTimePickerTabs'\n  });\n  const {\n    dateIcon = /*#__PURE__*/_jsx(DateRangeIcon, {}),\n    timeIcon = /*#__PURE__*/_jsx(TimeIcon, {}),\n    hidden = typeof window === 'undefined' || window.innerHeight < 667,\n    className,\n    classes: classesProp,\n    sx\n  } = props;\n  const translations = usePickerTranslations();\n  const {\n    ownerState\n  } = usePickerPrivateContext();\n  const {\n    view,\n    setView\n  } = usePickerContext();\n  const classes = useUtilityClasses(classesProp);\n  const handleChange = (event, value) => {\n    setView(tabToView(value));\n  };\n  if (hidden) {\n    return null;\n  }\n  return /*#__PURE__*/_jsxs(DateTimePickerTabsRoot, {\n    ownerState: ownerState,\n    variant: \"fullWidth\",\n    value: viewToTab(view),\n    onChange: handleChange,\n    className: clsx(className, classes.root),\n    sx: sx,\n    children: [/*#__PURE__*/_jsx(Tab, {\n      value: \"date\",\n      \"aria-label\": translations.dateTableLabel,\n      icon: /*#__PURE__*/_jsx(React.Fragment, {\n        children: dateIcon\n      })\n    }), /*#__PURE__*/_jsx(Tab, {\n      value: \"time\",\n      \"aria-label\": translations.timeTableLabel,\n      icon: /*#__PURE__*/_jsx(React.Fragment, {\n        children: timeIcon\n      })\n    })]\n  });\n};\nif (process.env.NODE_ENV !== \"production\") DateTimePickerTabs.displayName = \"DateTimePickerTabs\";\nprocess.env.NODE_ENV !== \"production\" ? DateTimePickerTabs.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * Date tab icon.\n   * @default DateRange\n   */\n  dateIcon: PropTypes.node,\n  /**\n   * Toggles visibility of the tabs allowing view switching.\n   * @default `window.innerHeight < 667` for `DesktopDateTimePicker` and `MobileDateTimePicker`, `displayStaticWrapperAs === 'desktop'` for `StaticDateTimePicker`\n   */\n  hidden: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Time tab icon.\n   * @default Time\n   */\n  timeIcon: PropTypes.node\n} : void 0;\nexport { DateTimePickerTabs };","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getPickersToolbarTextUtilityClass(slot) {\n  return generateUtilityClass('MuiPickersToolbarText', slot);\n}\nexport const pickersToolbarTextClasses = generateUtilityClasses('MuiPickersToolbarText', ['root']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"classes\", \"selected\", \"value\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { getPickersToolbarTextUtilityClass } from \"./pickersToolbarTextClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getPickersToolbarTextUtilityClass, classes);\n};\nconst PickersToolbarTextRoot = styled(Typography, {\n  name: 'MuiPickersToolbarText',\n  slot: 'Root'\n})(({\n  theme\n}) => ({\n  transition: theme.transitions.create('color'),\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&[data-selected]`]: {\n    color: (theme.vars || theme).palette.text.primary\n  }\n}));\nexport const PickersToolbarText = /*#__PURE__*/React.forwardRef(function PickersToolbarText(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersToolbarText'\n  });\n  const {\n      className,\n      classes: classesProp,\n      selected,\n      value\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(classesProp);\n  return /*#__PURE__*/_jsx(PickersToolbarTextRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    component: \"span\",\n    ownerState: props\n  }, selected && {\n    'data-selected': true\n  }, other, {\n    children: value\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersToolbarText.displayName = \"PickersToolbarText\";","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"align\", \"className\", \"classes\", \"selected\", \"typographyClassName\", \"value\", \"variant\", \"width\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Button from '@mui/material/Button';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { PickersToolbarText } from \"./PickersToolbarText.js\";\nimport { getPickersToolbarUtilityClass } from \"./pickersToolbarClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getPickersToolbarUtilityClass, classes);\n};\nconst PickersToolbarButtonRoot = styled(Button, {\n  name: 'MuiPickersToolbarButton',\n  slot: 'Root'\n})({\n  padding: 0,\n  minWidth: 16,\n  textTransform: 'none'\n});\nexport const PickersToolbarButton = /*#__PURE__*/React.forwardRef(function PickersToolbarButton(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPickersToolbarButton'\n  });\n  const {\n      align,\n      className,\n      classes: classesProp,\n      selected,\n      typographyClassName,\n      value,\n      variant,\n      width\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(classesProp);\n  return /*#__PURE__*/_jsx(PickersToolbarButtonRoot, _extends({\n    variant: \"text\",\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: props\n  }, width ? {\n    sx: {\n      width\n    }\n  } : {}, other, {\n    children: /*#__PURE__*/_jsx(PickersToolbarText, {\n      align: align,\n      className: typographyClassName,\n      variant: variant,\n      value: value,\n      selected: selected\n    })\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") PickersToolbarButton.displayName = \"PickersToolbarButton\";","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getDateTimePickerToolbarUtilityClass(slot) {\n  return generateUtilityClass('MuiDateTimePickerToolbar', slot);\n}\nexport const dateTimePickerToolbarClasses = generateUtilityClasses('MuiDateTimePickerToolbar', ['root', 'dateContainer', 'timeContainer', 'timeDigitsContainer', 'separator', 'timeLabelReverse', 'ampmSelection', 'ampmLandscape', 'ampmLabel']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ampm\", \"ampmInClock\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"className\", \"classes\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { shouldForwardProp } from '@mui/system/createStyled';\nimport { PickersToolbarText } from \"../internals/components/PickersToolbarText.js\";\nimport { PickersToolbar } from \"../internals/components/PickersToolbar.js\";\nimport { PickersToolbarButton } from \"../internals/components/PickersToolbarButton.js\";\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nimport { dateTimePickerToolbarClasses, getDateTimePickerToolbarUtilityClass } from \"./dateTimePickerToolbarClasses.js\";\nimport { useMeridiemMode } from \"../internals/hooks/date-helpers-hooks.js\";\nimport { MULTI_SECTION_CLOCK_SECTION_WIDTH } from \"../internals/constants/dimensions.js\";\nimport { formatMeridiem } from \"../internals/utils/date-utils.js\";\nimport { pickersToolbarTextClasses } from \"../internals/components/pickersToolbarTextClasses.js\";\nimport { pickersToolbarClasses } from \"../internals/components/pickersToolbarClasses.js\";\nimport { usePickerContext } from \"../hooks/usePickerContext.js\";\nimport { useToolbarOwnerState } from \"../internals/hooks/useToolbarOwnerState.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = (classes, ownerState) => {\n  const {\n    pickerOrientation,\n    toolbarDirection\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    dateContainer: ['dateContainer'],\n    timeContainer: ['timeContainer', toolbarDirection === 'rtl' && 'timeLabelReverse'],\n    timeDigitsContainer: ['timeDigitsContainer', toolbarDirection === 'rtl' && 'timeLabelReverse'],\n    separator: ['separator'],\n    ampmSelection: ['ampmSelection', pickerOrientation === 'landscape' && 'ampmLandscape'],\n    ampmLabel: ['ampmLabel']\n  };\n  return composeClasses(slots, getDateTimePickerToolbarUtilityClass, classes);\n};\nconst DateTimePickerToolbarRoot = styled(PickersToolbar, {\n  name: 'MuiDateTimePickerToolbar',\n  slot: 'Root',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'toolbarVariant'\n})(({\n  theme\n}) => ({\n  paddingLeft: 16,\n  paddingRight: 16,\n  justifyContent: 'space-around',\n  position: 'relative',\n  variants: [{\n    props: {\n      toolbarVariant: 'desktop'\n    },\n    style: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n      [`& .${pickersToolbarClasses.content} .${pickersToolbarTextClasses.root}[data-selected]`]: {\n        color: (theme.vars || theme).palette.primary.main,\n        fontWeight: theme.typography.fontWeightBold\n      }\n    }\n  }, {\n    props: {\n      toolbarVariant: 'desktop',\n      pickerOrientation: 'landscape'\n    },\n    style: {\n      borderRight: `1px solid ${(theme.vars || theme).palette.divider}`\n    }\n  }, {\n    props: {\n      toolbarVariant: 'desktop',\n      pickerOrientation: 'portrait'\n    },\n    style: {\n      paddingLeft: 24,\n      paddingRight: 0\n    }\n  }]\n}));\nconst DateTimePickerToolbarDateContainer = styled('div', {\n  name: 'MuiDateTimePickerToolbar',\n  slot: 'DateContainer'\n})({\n  display: 'flex',\n  flexDirection: 'column',\n  alignItems: 'flex-start'\n});\nconst DateTimePickerToolbarTimeContainer = styled('div', {\n  name: 'MuiDateTimePickerToolbar',\n  slot: 'TimeContainer',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'toolbarVariant'\n})({\n  display: 'flex',\n  flexDirection: 'row',\n  variants: [{\n    props: {\n      toolbarDirection: 'rtl'\n    },\n    style: {\n      flexDirection: 'row-reverse'\n    }\n  }, {\n    props: {\n      toolbarVariant: 'desktop',\n      pickerOrientation: 'portrait'\n    },\n    style: {\n      gap: 9,\n      marginRight: 4,\n      alignSelf: 'flex-end'\n    }\n  }, {\n    props: ({\n      pickerOrientation,\n      toolbarVariant\n    }) => pickerOrientation === 'landscape' && toolbarVariant !== 'desktop',\n    style: {\n      flexDirection: 'column'\n    }\n  }, {\n    props: ({\n      pickerOrientation,\n      toolbarVariant,\n      toolbarDirection\n    }) => pickerOrientation === 'landscape' && toolbarVariant !== 'desktop' && toolbarDirection === 'rtl',\n    style: {\n      flexDirection: 'column-reverse'\n    }\n  }]\n});\nconst DateTimePickerToolbarTimeDigitsContainer = styled('div', {\n  name: 'MuiDateTimePickerToolbar',\n  slot: 'TimeDigitsContainer',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'toolbarVariant'\n})({\n  display: 'flex',\n  variants: [{\n    props: {\n      toolbarDirection: 'rtl'\n    },\n    style: {\n      flexDirection: 'row-reverse'\n    }\n  }, {\n    props: {\n      toolbarVariant: 'desktop'\n    },\n    style: {\n      gap: 1.5\n    }\n  }]\n});\nconst DateTimePickerToolbarSeparator = styled(PickersToolbarText, {\n  name: 'MuiDateTimePickerToolbar',\n  slot: 'Separator',\n  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'toolbarVariant'\n})({\n  margin: '0 4px 0 2px',\n  cursor: 'default',\n  variants: [{\n    props: {\n      toolbarVariant: 'desktop'\n    },\n    style: {\n      margin: 0\n    }\n  }]\n});\n\n// Taken from TimePickerToolbar\nconst DateTimePickerToolbarAmPmSelection = styled('div', {\n  name: 'MuiDateTimePickerToolbar',\n  slot: 'AmPmSelection',\n  overridesResolver: (props, styles) => [{\n    [`.${dateTimePickerToolbarClasses.ampmLabel}`]: styles.ampmLabel\n  }, {\n    [`&.${dateTimePickerToolbarClasses.ampmLandscape}`]: styles.ampmLandscape\n  }, styles.ampmSelection]\n})({\n  display: 'flex',\n  flexDirection: 'column',\n  marginRight: 'auto',\n  marginLeft: 12,\n  [`& .${dateTimePickerToolbarClasses.ampmLabel}`]: {\n    fontSize: 17\n  },\n  variants: [{\n    props: {\n      pickerOrientation: 'landscape'\n    },\n    style: {\n      margin: '4px 0 auto',\n      flexDirection: 'row',\n      justifyContent: 'space-around',\n      width: '100%'\n    }\n  }]\n});\n\n/**\n * If `forceDesktopVariant` is set to `true`, the toolbar will always be rendered in the desktop mode.\n * If `onViewChange` is defined, the toolbar will call it instead of calling the default handler from `usePickerContext`.\n * This is used by the Date Time Range Picker Toolbar.\n */\nexport const DateTimePickerToolbarOverrideContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Demos:\n *\n * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)\n * - [Custom components](https://mui.com/x/react-date-pickers/custom-components/)\n *\n * API:\n *\n * - [DateTimePickerToolbar API](https://mui.com/x/api/date-pickers/date-time-picker-toolbar/)\n */\nif (process.env.NODE_ENV !== \"production\") DateTimePickerToolbarOverrideContext.displayName = \"DateTimePickerToolbarOverrideContext\";\nfunction DateTimePickerToolbar(inProps) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDateTimePickerToolbar'\n  });\n  const {\n      ampm,\n      ampmInClock,\n      toolbarFormat,\n      toolbarPlaceholder = '––',\n      toolbarTitle: inToolbarTitle,\n      className,\n      classes: classesProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    value: valueContext,\n    setValue: setValueContext,\n    disabled,\n    readOnly,\n    variant,\n    orientation,\n    view: viewContext,\n    setView: setViewContext,\n    views\n  } = usePickerContext();\n  const translations = usePickerTranslations();\n  const ownerState = useToolbarOwnerState();\n  const classes = useUtilityClasses(classesProp, ownerState);\n  const adapter = usePickerAdapter();\n  const overrides = React.useContext(DateTimePickerToolbarOverrideContext);\n  const value = overrides ? overrides.value : valueContext;\n  const setValue = overrides ? overrides.setValue : setValueContext;\n  const view = overrides ? overrides.view : viewContext;\n  const setView = overrides ? overrides.setView : setViewContext;\n  const {\n    meridiemMode,\n    handleMeridiemChange\n  } = useMeridiemMode(value, ampm, newValue => setValue(newValue, {\n    changeImportance: 'set',\n    source: 'view'\n  }));\n  const toolbarVariant = overrides?.forceDesktopVariant ? 'desktop' : variant;\n  const isDesktop = toolbarVariant === 'desktop';\n  const showAmPmControl = Boolean(ampm && !ampmInClock);\n  const toolbarTitle = inToolbarTitle ?? translations.dateTimePickerToolbarTitle;\n  const dateText = React.useMemo(() => {\n    if (!adapter.isValid(value)) {\n      return toolbarPlaceholder;\n    }\n    if (toolbarFormat) {\n      return adapter.formatByString(value, toolbarFormat);\n    }\n    return adapter.format(value, 'shortDate');\n  }, [value, toolbarFormat, toolbarPlaceholder, adapter]);\n  const formatSection = (format, fallback) => {\n    if (!adapter.isValid(value)) {\n      return fallback;\n    }\n    return adapter.format(value, format);\n  };\n  return /*#__PURE__*/_jsxs(DateTimePickerToolbarRoot, _extends({\n    className: clsx(classes.root, className),\n    toolbarTitle: toolbarTitle,\n    toolbarVariant: toolbarVariant\n  }, other, {\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsxs(DateTimePickerToolbarDateContainer, {\n      className: classes.dateContainer,\n      ownerState: ownerState,\n      children: [views.includes('year') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n        tabIndex: -1,\n        variant: \"subtitle1\",\n        onClick: () => setView('year'),\n        selected: view === 'year',\n        value: formatSection('year', '–')\n      }), views.includes('day') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n        tabIndex: -1,\n        variant: isDesktop ? 'h5' : 'h4',\n        onClick: () => setView('day'),\n        selected: view === 'day',\n        value: dateText\n      })]\n    }), /*#__PURE__*/_jsxs(DateTimePickerToolbarTimeContainer, {\n      className: classes.timeContainer,\n      ownerState: ownerState,\n      toolbarVariant: toolbarVariant,\n      children: [/*#__PURE__*/_jsxs(DateTimePickerToolbarTimeDigitsContainer, {\n        className: classes.timeDigitsContainer,\n        ownerState: ownerState,\n        toolbarVariant: toolbarVariant,\n        children: [views.includes('hours') && /*#__PURE__*/_jsxs(React.Fragment, {\n          children: [/*#__PURE__*/_jsx(PickersToolbarButton, {\n            variant: isDesktop ? 'h5' : 'h3',\n            width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,\n            onClick: () => setView('hours'),\n            selected: view === 'hours',\n            value: formatSection(ampm ? 'hours12h' : 'hours24h', '--')\n          }), /*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {\n            variant: isDesktop ? 'h5' : 'h3',\n            value: \":\",\n            className: classes.separator,\n            ownerState: ownerState,\n            toolbarVariant: toolbarVariant\n          }), /*#__PURE__*/_jsx(PickersToolbarButton, {\n            variant: isDesktop ? 'h5' : 'h3',\n            width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,\n            onClick: () => setView('minutes'),\n            selected: view === 'minutes' || !views.includes('minutes') && view === 'hours',\n            value: formatSection('minutes', '--'),\n            disabled: !views.includes('minutes')\n          })]\n        }), views.includes('seconds') && /*#__PURE__*/_jsxs(React.Fragment, {\n          children: [/*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {\n            variant: isDesktop ? 'h5' : 'h3',\n            value: \":\",\n            className: classes.separator,\n            ownerState: ownerState,\n            toolbarVariant: toolbarVariant\n          }), /*#__PURE__*/_jsx(PickersToolbarButton, {\n            variant: isDesktop ? 'h5' : 'h3',\n            width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,\n            onClick: () => setView('seconds'),\n            selected: view === 'seconds',\n            value: formatSection('seconds', '--')\n          })]\n        })]\n      }), showAmPmControl && !isDesktop && /*#__PURE__*/_jsxs(DateTimePickerToolbarAmPmSelection, {\n        className: classes.ampmSelection,\n        ownerState: ownerState,\n        children: [/*#__PURE__*/_jsx(PickersToolbarButton, {\n          variant: \"subtitle2\",\n          selected: meridiemMode === 'am',\n          typographyClassName: classes.ampmLabel,\n          value: formatMeridiem(adapter, 'am'),\n          onClick: readOnly ? undefined : () => handleMeridiemChange('am'),\n          disabled: disabled\n        }), /*#__PURE__*/_jsx(PickersToolbarButton, {\n          variant: \"subtitle2\",\n          selected: meridiemMode === 'pm',\n          typographyClassName: classes.ampmLabel,\n          value: formatMeridiem(adapter, 'pm'),\n          onClick: readOnly ? undefined : () => handleMeridiemChange('pm'),\n          disabled: disabled\n        })]\n      }), ampm && isDesktop && /*#__PURE__*/_jsx(PickersToolbarButton, {\n        variant: \"h5\",\n        onClick: () => setView('meridiem'),\n        selected: view === 'meridiem',\n        value: value && meridiemMode ? formatMeridiem(adapter, meridiemMode) : '--',\n        width: MULTI_SECTION_CLOCK_SECTION_WIDTH\n      })]\n    })]\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? DateTimePickerToolbar.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  ampm: PropTypes.bool,\n  ampmInClock: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * If `true`, show the toolbar even in desktop mode.\n   * @default `true` for Desktop, `false` for Mobile.\n   */\n  hidden: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  titleId: PropTypes.string,\n  /**\n   * Toolbar date format.\n   */\n  toolbarFormat: PropTypes.string,\n  /**\n   * Toolbar value placeholder—it is displayed when the value is empty.\n   * @default \"––\"\n   */\n  toolbarPlaceholder: PropTypes.node,\n  /**\n   * If provided, it will be used instead of `dateTimePickerToolbarTitle` from localization.\n   */\n  toolbarTitle: PropTypes.node\n} : void 0;\nexport { DateTimePickerToolbar };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"views\", \"format\"];\nimport { resolveTimeFormat, isTimeView, isInternalTimeView } from \"./time-utils.js\";\nimport { isDatePickerView, resolveDateFormat } from \"./date-utils.js\";\nexport const resolveDateTimeFormat = (adapter, _ref, ignoreDateResolving) => {\n  let {\n      views,\n      format\n    } = _ref,\n    other = _objectWithoutPropertiesLoose(_ref, _excluded);\n  if (format) {\n    return format;\n  }\n  const dateViews = [];\n  const timeViews = [];\n  views.forEach(view => {\n    if (isTimeView(view)) {\n      timeViews.push(view);\n    } else if (isDatePickerView(view)) {\n      dateViews.push(view);\n    }\n  });\n  if (timeViews.length === 0) {\n    return resolveDateFormat(adapter, _extends({\n      views: dateViews\n    }, other), false);\n  }\n  if (dateViews.length === 0) {\n    return resolveTimeFormat(adapter, _extends({\n      views: timeViews\n    }, other));\n  }\n  const timeFormat = resolveTimeFormat(adapter, _extends({\n    views: timeViews\n  }, other));\n  const dateFormat = ignoreDateResolving ? adapter.formats.keyboardDate : resolveDateFormat(adapter, _extends({\n    views: dateViews\n  }, other), false);\n  return `${dateFormat} ${timeFormat}`;\n};\nconst resolveViews = (ampm, views, shouldUseSingleColumn) => {\n  if (shouldUseSingleColumn) {\n    return views.filter(view => !isInternalTimeView(view) || view === 'hours');\n  }\n  return ampm ? [...views, 'meridiem'] : views;\n};\nconst resolveShouldRenderTimeInASingleColumn = (timeSteps, threshold) => 24 * 60 / ((timeSteps.hours ?? 1) * (timeSteps.minutes ?? 5)) <= threshold;\nexport function resolveTimeViewsResponse({\n  thresholdToRenderTimeInASingleColumn: inThreshold,\n  ampm,\n  timeSteps: inTimeSteps,\n  views\n}) {\n  const thresholdToRenderTimeInASingleColumn = inThreshold ?? 24;\n  const timeSteps = _extends({\n    hours: 1,\n    minutes: 5,\n    seconds: 5\n  }, inTimeSteps);\n  const shouldRenderTimeInASingleColumn = resolveShouldRenderTimeInASingleColumn(timeSteps, thresholdToRenderTimeInASingleColumn);\n  return {\n    thresholdToRenderTimeInASingleColumn,\n    timeSteps,\n    shouldRenderTimeInASingleColumn,\n    views: resolveViews(ampm, views, shouldRenderTimeInASingleColumn)\n  };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useThemeProps } from '@mui/material/styles';\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nimport { DateTimePickerTabs } from \"./DateTimePickerTabs.js\";\nimport { DateTimePickerToolbar } from \"./DateTimePickerToolbar.js\";\nimport { applyDefaultViewProps } from \"../internals/utils/views.js\";\nimport { resolveTimeViewsResponse } from \"../internals/utils/date-time-utils.js\";\nimport { useApplyDefaultValuesToDateTimeValidationProps } from \"../managers/useDateTimeManager.js\";\nexport function useDateTimePickerDefaultizedProps(props, name) {\n  const adapter = usePickerAdapter();\n  const themeProps = useThemeProps({\n    props,\n    name\n  });\n  const validationProps = useApplyDefaultValuesToDateTimeValidationProps(themeProps);\n  const ampm = themeProps.ampm ?? adapter.is12HourCycleInCurrentLocale();\n  const localeText = React.useMemo(() => {\n    if (themeProps.localeText?.toolbarTitle == null) {\n      return themeProps.localeText;\n    }\n    return _extends({}, themeProps.localeText, {\n      dateTimePickerToolbarTitle: themeProps.localeText.toolbarTitle\n    });\n  }, [themeProps.localeText]);\n  const {\n    openTo,\n    views: defaultViews\n  } = applyDefaultViewProps({\n    views: themeProps.views,\n    openTo: themeProps.openTo,\n    defaultViews: ['year', 'day', 'hours', 'minutes'],\n    defaultOpenTo: 'day'\n  });\n  const {\n    shouldRenderTimeInASingleColumn,\n    thresholdToRenderTimeInASingleColumn,\n    views,\n    timeSteps\n  } = resolveTimeViewsResponse({\n    thresholdToRenderTimeInASingleColumn: themeProps.thresholdToRenderTimeInASingleColumn,\n    ampm,\n    timeSteps: themeProps.timeSteps,\n    views: defaultViews\n  });\n\n  // Keep the original views for format calculation (before filtering)\n  const viewsForFormatting = ampm ? [...defaultViews, 'meridiem'] : defaultViews;\n  return _extends({}, themeProps, validationProps, {\n    timeSteps,\n    openTo,\n    shouldRenderTimeInASingleColumn,\n    thresholdToRenderTimeInASingleColumn,\n    views,\n    viewsForFormatting,\n    ampm,\n    localeText,\n    orientation: themeProps.orientation ?? 'portrait',\n    slots: _extends({\n      toolbar: DateTimePickerToolbar,\n      tabs: DateTimePickerTabs\n    }, themeProps.slots),\n    slotProps: _extends({}, themeProps.slotProps, {\n      toolbar: _extends({\n        ampm\n      }, themeProps.slotProps?.toolbar)\n    })\n  });\n}","import * as React from 'react';\nimport { singleItemValueManager } from \"../utils/valueManagers.js\";\nimport { getTodayDate } from \"../utils/date-utils.js\";\nimport { SECTION_TYPE_GRANULARITY } from \"../utils/getDefaultReferenceDate.js\";\nexport const useClockReferenceDate = ({\n  value,\n  referenceDate: referenceDateProp,\n  adapter,\n  props,\n  timezone\n}) => {\n  const referenceDate = React.useMemo(() => singleItemValueManager.getInitialReferenceValue({\n    value,\n    adapter,\n    props,\n    referenceDate: referenceDateProp,\n    granularity: SECTION_TYPE_GRANULARITY.day,\n    timezone,\n    getTodayDate: () => getTodayDate(adapter, timezone, 'date')\n  }),\n  // We want the `referenceDate` to update on prop and `timezone` change (https://github.com/mui/mui-x/issues/10804)\n  [referenceDateProp, timezone] // eslint-disable-line react-hooks/exhaustive-deps\n  );\n  return value ?? referenceDate;\n};","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getDigitalClockUtilityClass(slot) {\n  return generateUtilityClass('MuiDigitalClock', slot);\n}\nexport const digitalClockClasses = generateUtilityClasses('MuiDigitalClock', ['root', 'list', 'item']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ampm\", \"timeStep\", \"autoFocus\", \"slots\", \"slotProps\", \"value\", \"defaultValue\", \"referenceDate\", \"disableIgnoringDatePartForTimeValidation\", \"maxTime\", \"minTime\", \"disableFuture\", \"disablePast\", \"minutesStep\", \"shouldDisableTime\", \"onChange\", \"view\", \"openTo\", \"onViewChange\", \"focusedView\", \"onFocusedViewChange\", \"className\", \"classes\", \"disabled\", \"readOnly\", \"views\", \"skipDisabled\", \"timezone\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport { alpha, styled, useThemeProps } from '@mui/material/styles';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport composeClasses from '@mui/utils/composeClasses';\nimport MenuItem from '@mui/material/MenuItem';\nimport MenuList from '@mui/material/MenuList';\nimport useForkRef from '@mui/utils/useForkRef';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nimport { useNow } from \"../internals/hooks/useUtils.js\";\nimport { createIsAfterIgnoreDatePart } from \"../internals/utils/time-utils.js\";\nimport { PickerViewRoot } from \"../internals/components/PickerViewRoot/index.js\";\nimport { getDigitalClockUtilityClass } from \"./digitalClockClasses.js\";\nimport { useViews } from \"../internals/hooks/useViews.js\";\nimport { DIGITAL_CLOCK_VIEW_HEIGHT } from \"../internals/constants/dimensions.js\";\nimport { useControlledValue } from \"../internals/hooks/useControlledValue.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { useClockReferenceDate } from \"../internals/hooks/useClockReferenceDate.js\";\nimport { getFocusedListItemIndex } from \"../internals/utils/utils.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    list: ['list'],\n    item: ['item']\n  };\n  return composeClasses(slots, getDigitalClockUtilityClass, classes);\n};\nconst DigitalClockRoot = styled(PickerViewRoot, {\n  name: 'MuiDigitalClock',\n  slot: 'Root'\n})({\n  overflowY: 'auto',\n  width: '100%',\n  scrollbarWidth: 'thin',\n  '@media (prefers-reduced-motion: no-preference)': {\n    scrollBehavior: 'auto'\n  },\n  maxHeight: DIGITAL_CLOCK_VIEW_HEIGHT,\n  variants: [{\n    props: {\n      hasDigitalClockAlreadyBeenRendered: true\n    },\n    style: {\n      '@media (prefers-reduced-motion: no-preference)': {\n        scrollBehavior: 'smooth'\n      }\n    }\n  }]\n});\nconst DigitalClockList = styled(MenuList, {\n  name: 'MuiDigitalClock',\n  slot: 'List'\n})({\n  padding: 0\n});\nexport const DigitalClockItem = styled(MenuItem, {\n  name: 'MuiDigitalClock',\n  slot: 'Item',\n  shouldForwardProp: prop => prop !== 'itemValue' && prop !== 'formattedValue'\n})(({\n  theme\n}) => ({\n  padding: '8px 16px',\n  margin: '2px 4px',\n  '&:first-of-type': {\n    marginTop: 4\n  },\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity)\n  },\n  '&.Mui-selected': {\n    backgroundColor: (theme.vars || theme).palette.primary.main,\n    color: (theme.vars || theme).palette.primary.contrastText,\n    '&:focus-visible, &:hover': {\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    }\n  },\n  '&.Mui-focusVisible': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.focusOpacity)\n  }\n}));\n/**\n * Demos:\n *\n * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)\n * - [DigitalClock](https://mui.com/x/react-date-pickers/digital-clock/)\n *\n * API:\n *\n * - [DigitalClock API](https://mui.com/x/api/date-pickers/digital-clock/)\n */\nexport const DigitalClock = /*#__PURE__*/React.forwardRef(function DigitalClock(inProps, ref) {\n  const adapter = usePickerAdapter();\n  const containerRef = React.useRef(null);\n  const handleRef = useForkRef(ref, containerRef);\n  const listRef = React.useRef(null);\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDigitalClock'\n  });\n  const {\n      ampm = adapter.is12HourCycleInCurrentLocale(),\n      timeStep = 30,\n      autoFocus,\n      slots,\n      slotProps,\n      value: valueProp,\n      defaultValue,\n      referenceDate: referenceDateProp,\n      disableIgnoringDatePartForTimeValidation = false,\n      maxTime,\n      minTime,\n      disableFuture,\n      disablePast,\n      minutesStep = 1,\n      shouldDisableTime,\n      onChange,\n      view: inView,\n      openTo,\n      onViewChange,\n      focusedView,\n      onFocusedViewChange,\n      className,\n      classes: classesProp,\n      disabled,\n      readOnly,\n      views = ['hours'],\n      skipDisabled = false,\n      timezone: timezoneProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    value,\n    handleValueChange: handleRawValueChange,\n    timezone\n  } = useControlledValue({\n    name: 'DigitalClock',\n    timezone: timezoneProp,\n    value: valueProp,\n    defaultValue,\n    referenceDate: referenceDateProp,\n    onChange,\n    valueManager: singleItemValueManager\n  });\n  const translations = usePickerTranslations();\n  const now = useNow(timezone);\n  const {\n    ownerState: pickerOwnerState\n  } = usePickerPrivateContext();\n  const ownerState = _extends({}, pickerOwnerState, {\n    hasDigitalClockAlreadyBeenRendered: !!containerRef.current\n  });\n  const classes = useUtilityClasses(classesProp);\n  const ClockItem = slots?.digitalClockItem ?? DigitalClockItem;\n  const clockItemProps = useSlotProps({\n    elementType: ClockItem,\n    externalSlotProps: slotProps?.digitalClockItem,\n    ownerState,\n    className: classes.item\n  });\n  const valueOrReferenceDate = useClockReferenceDate({\n    value,\n    referenceDate: referenceDateProp,\n    adapter,\n    props,\n    timezone\n  });\n  const handleValueChange = useEventCallback(newValue => handleRawValueChange(newValue, 'finish', 'hours'));\n  const {\n    setValueAndGoToNextView\n  } = useViews({\n    view: inView,\n    views,\n    openTo,\n    onViewChange,\n    onChange: handleValueChange,\n    focusedView,\n    onFocusedViewChange\n  });\n  const handleItemSelect = useEventCallback(newValue => {\n    setValueAndGoToNextView(newValue, 'finish');\n  });\n  useEnhancedEffect(() => {\n    if (containerRef.current === null) {\n      return;\n    }\n    const activeItem = containerRef.current.querySelector('[role=\"listbox\"] [role=\"option\"][tabindex=\"0\"], [role=\"listbox\"] [role=\"option\"][aria-selected=\"true\"]');\n    if (!activeItem) {\n      return;\n    }\n    const offsetTop = activeItem.offsetTop;\n    if (autoFocus || !!focusedView) {\n      activeItem.focus();\n    }\n\n    // Subtracting the 4px of extra margin intended for the first visible section item\n    containerRef.current.scrollTop = offsetTop - 4;\n  });\n  const isTimeDisabled = React.useCallback(valueToCheck => {\n    const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter);\n    const containsValidTime = () => {\n      if (minTime && isAfter(minTime, valueToCheck)) {\n        return false;\n      }\n      if (maxTime && isAfter(valueToCheck, maxTime)) {\n        return false;\n      }\n      if (disableFuture && isAfter(valueToCheck, now)) {\n        return false;\n      }\n      if (disablePast && isAfter(now, valueToCheck)) {\n        return false;\n      }\n      return true;\n    };\n    const isValidValue = () => {\n      if (adapter.getMinutes(valueToCheck) % minutesStep !== 0) {\n        return false;\n      }\n      if (shouldDisableTime) {\n        return !shouldDisableTime(valueToCheck, 'hours');\n      }\n      return true;\n    };\n    return !containsValidTime() || !isValidValue();\n  }, [disableIgnoringDatePartForTimeValidation, adapter, minTime, maxTime, disableFuture, now, disablePast, minutesStep, shouldDisableTime]);\n  const timeOptions = React.useMemo(() => {\n    const result = [];\n    const startOfDay = adapter.startOfDay(valueOrReferenceDate);\n    let nextTimeStepOption = startOfDay;\n    while (adapter.isSameDay(valueOrReferenceDate, nextTimeStepOption)) {\n      result.push(nextTimeStepOption);\n      nextTimeStepOption = adapter.addMinutes(nextTimeStepOption, timeStep);\n    }\n    return result;\n  }, [valueOrReferenceDate, timeStep, adapter]);\n  const focusedOptionIndex = timeOptions.findIndex(option => adapter.isEqual(option, valueOrReferenceDate));\n  const handleKeyDown = event => {\n    switch (event.key) {\n      case 'PageUp':\n        {\n          const newIndex = getFocusedListItemIndex(listRef.current) - 5;\n          const children = listRef.current.children;\n          const newFocusedIndex = Math.max(0, newIndex);\n          const childToFocus = children[newFocusedIndex];\n          if (childToFocus) {\n            childToFocus.focus();\n          }\n          event.preventDefault();\n          break;\n        }\n      case 'PageDown':\n        {\n          const newIndex = getFocusedListItemIndex(listRef.current) + 5;\n          const children = listRef.current.children;\n          const newFocusedIndex = Math.min(children.length - 1, newIndex);\n          const childToFocus = children[newFocusedIndex];\n          if (childToFocus) {\n            childToFocus.focus();\n          }\n          event.preventDefault();\n          break;\n        }\n      default:\n    }\n  };\n  return /*#__PURE__*/_jsx(DigitalClockRoot, _extends({\n    ref: handleRef,\n    className: clsx(classes.root, className),\n    ownerState: ownerState\n  }, other, {\n    children: /*#__PURE__*/_jsx(DigitalClockList, {\n      ref: listRef,\n      role: \"listbox\",\n      \"aria-label\": translations.timePickerToolbarTitle,\n      className: classes.list,\n      onKeyDown: handleKeyDown,\n      children: timeOptions.map((option, index) => {\n        const optionDisabled = isTimeDisabled(option);\n        if (skipDisabled && optionDisabled) {\n          return null;\n        }\n        const isSelected = adapter.isEqual(option, value);\n        const formattedValue = adapter.format(option, ampm ? 'fullTime12h' : 'fullTime24h');\n        const isFocused = focusedOptionIndex === index || focusedOptionIndex === -1 && index === 0;\n        const tabIndex = isFocused ? 0 : -1;\n        return /*#__PURE__*/_jsx(ClockItem, _extends({\n          onClick: () => !readOnly && handleItemSelect(option),\n          selected: isSelected,\n          disabled: disabled || optionDisabled,\n          disableRipple: readOnly,\n          role: \"option\"\n          // aria-readonly is not supported here and does not have any effect\n          ,\n          \"aria-disabled\": readOnly,\n          \"aria-selected\": isSelected,\n          tabIndex: tabIndex,\n          itemValue: option,\n          formattedValue: formattedValue\n        }, clockItemProps, {\n          children: formattedValue\n        }), `${option.valueOf()}-${formattedValue}`);\n      })\n    })\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") DigitalClock.displayName = \"DigitalClock\";\nprocess.env.NODE_ENV !== \"production\" ? DigitalClock.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * 12h/24h view for hour selection clock.\n   * @default adapter.is12HourCycleInCurrentLocale()\n   */\n  ampm: PropTypes.bool,\n  /**\n   * If `true`, the main element is focused during the first mount.\n   * This main element is:\n   * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n   * - the `input` element if there is a field rendered.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * The default selected value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * Do not ignore date part when validating min/max time.\n   * @default false\n   */\n  disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * Controlled focused view.\n   */\n  focusedView: PropTypes.oneOf(['hours']),\n  /**\n   * Maximal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  maxTime: PropTypes.object,\n  /**\n   * Minimal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  minTime: PropTypes.object,\n  /**\n   * Step over minutes.\n   * @default 1\n   */\n  minutesStep: PropTypes.number,\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TView The view type. Will be one of date or time views.\n   * @param {TValue} value The new value.\n   * @param {PickerSelectionState | undefined} selectionState Indicates if the date selection is complete.\n   * @param {TView | undefined} selectedView Indicates the view in which the selection has been made.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired on focused view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view to focus or not.\n   * @param {boolean} hasFocus `true` if the view should be focused.\n   */\n  onFocusedViewChange: PropTypes.func,\n  /**\n   * Callback fired on view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view.\n   */\n  onViewChange: PropTypes.func,\n  /**\n   * The default visible view.\n   * Used when the component view is not controlled.\n   * Must be a valid option from `views` list.\n   */\n  openTo: PropTypes.oneOf(['hours']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid time using the validation props, except callbacks such as `shouldDisableTime`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Disable specific time.\n   * @param {PickerValidDate} value The value to check.\n   * @param {TimeView} view The clock type of the timeValue.\n   * @returns {boolean} If `true` the time will be disabled.\n   */\n  shouldDisableTime: PropTypes.func,\n  /**\n   * If `true`, disabled digital clock items will not be rendered.\n   * @default false\n   */\n  skipDisabled: PropTypes.bool,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overrideable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The time steps between two time options.\n   * For example, if `timeStep = 45`, then the available time options will be `[00:00, 00:45, 01:30, 02:15, 03:00, etc.]`.\n   * @default 30\n   */\n  timeStep: PropTypes.number,\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The visible view.\n   * Used when the component view is controlled.\n   * Must be a valid option from `views` list.\n   */\n  view: PropTypes.oneOf(['hours']),\n  /**\n   * Available views.\n   * @default ['hours']\n   */\n  views: PropTypes.arrayOf(PropTypes.oneOf(['hours']))\n} : void 0;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getMultiSectionDigitalClockUtilityClass(slot) {\n  return generateUtilityClass('MuiMultiSectionDigitalClock', slot);\n}\nexport const multiSectionDigitalClockClasses = generateUtilityClasses('MuiMultiSectionDigitalClock', ['root']);","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getMultiSectionDigitalClockSectionUtilityClass(slot) {\n  return generateUtilityClass('MuiMultiSectionDigitalClockSection', slot);\n}\nexport const multiSectionDigitalClockSectionClasses = generateUtilityClasses('MuiMultiSectionDigitalClockSection', ['root', 'item']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"autoFocus\", \"onChange\", \"className\", \"classes\", \"disabled\", \"readOnly\", \"items\", \"active\", \"slots\", \"slotProps\", \"skipDisabled\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { alpha, styled, useThemeProps } from '@mui/material/styles';\nimport composeClasses from '@mui/utils/composeClasses';\nimport MenuList from '@mui/material/MenuList';\nimport MenuItem from '@mui/material/MenuItem';\nimport useForkRef from '@mui/utils/useForkRef';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { getMultiSectionDigitalClockSectionUtilityClass } from \"./multiSectionDigitalClockSectionClasses.js\";\nimport { DIGITAL_CLOCK_VIEW_HEIGHT, MULTI_SECTION_CLOCK_SECTION_WIDTH } from \"../internals/constants/dimensions.js\";\nimport { getFocusedListItemIndex } from \"../internals/utils/utils.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root'],\n    item: ['item']\n  };\n  return composeClasses(slots, getMultiSectionDigitalClockSectionUtilityClass, classes);\n};\nconst MultiSectionDigitalClockSectionRoot = styled(MenuList, {\n  name: 'MuiMultiSectionDigitalClockSection',\n  slot: 'Root'\n})(({\n  theme\n}) => ({\n  maxHeight: DIGITAL_CLOCK_VIEW_HEIGHT,\n  width: 56,\n  padding: 0,\n  overflow: 'hidden',\n  scrollbarWidth: 'thin',\n  '@media (prefers-reduced-motion: no-preference)': {\n    scrollBehavior: 'auto'\n  },\n  '@media (pointer: fine)': {\n    '&:hover': {\n      overflowY: 'auto'\n    }\n  },\n  '@media (pointer: none), (pointer: coarse)': {\n    overflowY: 'auto'\n  },\n  '&:not(:first-of-type)': {\n    borderLeft: `1px solid ${(theme.vars || theme).palette.divider}`\n  },\n  variants: [{\n    props: {\n      hasDigitalClockAlreadyBeenRendered: true\n    },\n    style: {\n      '@media (prefers-reduced-motion: no-preference)': {\n        scrollBehavior: 'smooth'\n      }\n    }\n  }]\n}));\nconst MultiSectionDigitalClockSectionItem = styled(MenuItem, {\n  name: 'MuiMultiSectionDigitalClockSection',\n  slot: 'Item'\n})(({\n  theme\n}) => ({\n  padding: 8,\n  margin: '2px 4px',\n  width: MULTI_SECTION_CLOCK_SECTION_WIDTH,\n  justifyContent: 'center',\n  '&:first-of-type': {\n    marginTop: 4\n  },\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.hoverOpacity)\n  },\n  '&.Mui-selected': {\n    backgroundColor: (theme.vars || theme).palette.primary.main,\n    color: (theme.vars || theme).palette.primary.contrastText,\n    '&:focus-visible, &:hover': {\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    }\n  },\n  '&.Mui-focusVisible': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.focusOpacity)\n  }\n}));\n/**\n * @ignore - internal component.\n */\nexport const MultiSectionDigitalClockSection = /*#__PURE__*/React.forwardRef(function MultiSectionDigitalClockSection(inProps, ref) {\n  const containerRef = React.useRef(null);\n  const handleRef = useForkRef(ref, containerRef);\n  const previousActive = React.useRef(null);\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiMultiSectionDigitalClockSection'\n  });\n  const {\n      autoFocus,\n      onChange,\n      className,\n      classes: classesProp,\n      disabled,\n      readOnly,\n      items,\n      active,\n      slots,\n      slotProps,\n      skipDisabled\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    ownerState: pickerOwnerState\n  } = usePickerPrivateContext();\n  const ownerState = _extends({}, pickerOwnerState, {\n    hasDigitalClockAlreadyBeenRendered: !!containerRef.current\n  });\n  const classes = useUtilityClasses(classesProp);\n  const DigitalClockSectionItem = slots?.digitalClockSectionItem ?? MultiSectionDigitalClockSectionItem;\n  useEnhancedEffect(() => {\n    if (containerRef.current === null) {\n      return;\n    }\n    const activeItem = containerRef.current.querySelector('[role=\"option\"][tabindex=\"0\"], [role=\"option\"][aria-selected=\"true\"]');\n    if (active && autoFocus && activeItem) {\n      activeItem.focus();\n    }\n    if (!activeItem || previousActive.current === activeItem) {\n      return;\n    }\n    previousActive.current = activeItem;\n    const offsetTop = activeItem.offsetTop;\n    const itemHeight = activeItem.offsetHeight;\n    const containerHeight = containerRef.current.clientHeight;\n    const scrollableHeight = containerRef.current.scrollHeight;\n\n    // Calculate the ideal centered position\n    const centeredPosition = offsetTop - containerHeight / 2 + itemHeight / 2;\n\n    // Calculate the maximum scroll position that would show content at the bottom\n    const maxScrollTop = scrollableHeight - containerHeight;\n\n    // If centering would create empty space at the bottom, align the last items to the bottom instead\n    const scrollPosition = Math.min(centeredPosition, maxScrollTop);\n\n    // Ensure we don't scroll past the top\n    containerRef.current.scrollTop = Math.max(0, scrollPosition);\n  });\n  const focusedOptionIndex = items.findIndex(item => item.isFocused(item.value));\n  const handleKeyDown = event => {\n    switch (event.key) {\n      case 'PageUp':\n        {\n          const newIndex = getFocusedListItemIndex(containerRef.current) - 5;\n          const children = containerRef.current.children;\n          const newFocusedIndex = Math.max(0, newIndex);\n          const childToFocus = children[newFocusedIndex];\n          if (childToFocus) {\n            childToFocus.focus();\n          }\n          event.preventDefault();\n          break;\n        }\n      case 'PageDown':\n        {\n          const newIndex = getFocusedListItemIndex(containerRef.current) + 5;\n          const children = containerRef.current.children;\n          const newFocusedIndex = Math.min(children.length - 1, newIndex);\n          const childToFocus = children[newFocusedIndex];\n          if (childToFocus) {\n            childToFocus.focus();\n          }\n          event.preventDefault();\n          break;\n        }\n      default:\n    }\n  };\n  return /*#__PURE__*/_jsx(MultiSectionDigitalClockSectionRoot, _extends({\n    ref: handleRef,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    autoFocusItem: autoFocus && active,\n    role: \"listbox\",\n    onKeyDown: handleKeyDown\n  }, other, {\n    children: items.map((option, index) => {\n      const isItemDisabled = option.isDisabled?.(option.value);\n      const isDisabled = disabled || isItemDisabled;\n      if (skipDisabled && isDisabled) {\n        return null;\n      }\n      const isSelected = option.isSelected(option.value);\n      const tabIndex = focusedOptionIndex === index || focusedOptionIndex === -1 && index === 0 ? 0 : -1;\n      return /*#__PURE__*/_jsx(DigitalClockSectionItem, _extends({\n        onClick: () => !readOnly && onChange(option.value),\n        selected: isSelected,\n        disabled: isDisabled,\n        disableRipple: readOnly,\n        role: \"option\"\n        // aria-readonly is not supported here and does not have any effect\n        ,\n        \"aria-disabled\": readOnly || isDisabled || undefined,\n        \"aria-label\": option.ariaLabel,\n        \"aria-selected\": isSelected,\n        tabIndex: tabIndex,\n        className: classes.item\n      }, slotProps?.digitalClockSectionItem, {\n        children: option.label\n      }), option.label);\n    })\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") MultiSectionDigitalClockSection.displayName = \"MultiSectionDigitalClockSection\";","export const getHourSectionOptions = ({\n  now,\n  value,\n  adapter,\n  ampm,\n  isDisabled,\n  resolveAriaLabel,\n  timeStep,\n  valueOrReferenceDate\n}) => {\n  const currentHours = value ? adapter.getHours(value) : null;\n  const result = [];\n  const isSelected = (hour, overriddenCurrentHours) => {\n    const resolvedCurrentHours = overriddenCurrentHours ?? currentHours;\n    if (resolvedCurrentHours === null) {\n      return false;\n    }\n    if (ampm) {\n      if (hour === 12) {\n        return resolvedCurrentHours === 12 || resolvedCurrentHours === 0;\n      }\n      return resolvedCurrentHours === hour || resolvedCurrentHours - 12 === hour;\n    }\n    return resolvedCurrentHours === hour;\n  };\n  const isFocused = hour => {\n    return isSelected(hour, adapter.getHours(valueOrReferenceDate));\n  };\n  const endHour = ampm ? 11 : 23;\n  for (let hour = 0; hour <= endHour; hour += timeStep) {\n    let label = adapter.format(adapter.setHours(now, hour), ampm ? 'hours12h' : 'hours24h');\n    const ariaLabel = resolveAriaLabel(parseInt(label, 10).toString());\n    label = adapter.formatNumber(label);\n    result.push({\n      value: hour,\n      label,\n      isSelected,\n      isDisabled,\n      isFocused,\n      ariaLabel\n    });\n  }\n  return result;\n};\nexport const getTimeSectionOptions = ({\n  value,\n  adapter,\n  isDisabled,\n  timeStep,\n  resolveLabel,\n  resolveAriaLabel,\n  hasValue = true\n}) => {\n  const isSelected = timeValue => {\n    if (value === null) {\n      return false;\n    }\n    return hasValue && value === timeValue;\n  };\n  const isFocused = timeValue => {\n    return value === timeValue;\n  };\n  return [...Array.from({\n    length: Math.ceil(60 / timeStep)\n  }, (_, index) => {\n    const timeValue = timeStep * index;\n    return {\n      value: timeValue,\n      label: adapter.formatNumber(resolveLabel(timeValue)),\n      isDisabled,\n      isSelected,\n      isFocused,\n      ariaLabel: resolveAriaLabel(timeValue.toString())\n    };\n  })];\n};","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ampm\", \"timeSteps\", \"autoFocus\", \"slots\", \"slotProps\", \"value\", \"defaultValue\", \"referenceDate\", \"disableIgnoringDatePartForTimeValidation\", \"maxTime\", \"minTime\", \"disableFuture\", \"disablePast\", \"minutesStep\", \"shouldDisableTime\", \"onChange\", \"view\", \"views\", \"openTo\", \"onViewChange\", \"focusedView\", \"onFocusedViewChange\", \"className\", \"classes\", \"disabled\", \"readOnly\", \"skipDisabled\", \"timezone\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { usePickerAdapter, usePickerTranslations } from \"../hooks/index.js\";\nimport { useNow } from \"../internals/hooks/useUtils.js\";\nimport { convertValueToMeridiem, createIsAfterIgnoreDatePart } from \"../internals/utils/time-utils.js\";\nimport { useViews } from \"../internals/hooks/useViews.js\";\nimport { useMeridiemMode } from \"../internals/hooks/date-helpers-hooks.js\";\nimport { PickerViewRoot } from \"../internals/components/PickerViewRoot/index.js\";\nimport { getMultiSectionDigitalClockUtilityClass } from \"./multiSectionDigitalClockClasses.js\";\nimport { MultiSectionDigitalClockSection } from \"./MultiSectionDigitalClockSection.js\";\nimport { getHourSectionOptions, getTimeSectionOptions } from \"./MultiSectionDigitalClock.utils.js\";\nimport { useControlledValue } from \"../internals/hooks/useControlledValue.js\";\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { useClockReferenceDate } from \"../internals/hooks/useClockReferenceDate.js\";\nimport { formatMeridiem } from \"../internals/utils/date-utils.js\";\nimport { usePickerPrivateContext } from \"../internals/hooks/usePickerPrivateContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = classes => {\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getMultiSectionDigitalClockUtilityClass, classes);\n};\nconst MultiSectionDigitalClockRoot = styled(PickerViewRoot, {\n  name: 'MuiMultiSectionDigitalClock',\n  slot: 'Root'\n})(({\n  theme\n}) => ({\n  flexDirection: 'row',\n  width: '100%',\n  borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n}));\n/**\n * Demos:\n *\n * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)\n * - [DigitalClock](https://mui.com/x/react-date-pickers/digital-clock/)\n *\n * API:\n *\n * - [MultiSectionDigitalClock API](https://mui.com/x/api/date-pickers/multi-section-digital-clock/)\n */\nexport const MultiSectionDigitalClock = /*#__PURE__*/React.forwardRef(function MultiSectionDigitalClock(inProps, ref) {\n  const adapter = usePickerAdapter();\n  const isRtl = useRtl();\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiMultiSectionDigitalClock'\n  });\n  const {\n      ampm = adapter.is12HourCycleInCurrentLocale(),\n      timeSteps: inTimeSteps,\n      autoFocus,\n      slots,\n      slotProps,\n      value: valueProp,\n      defaultValue,\n      referenceDate: referenceDateProp,\n      disableIgnoringDatePartForTimeValidation = false,\n      maxTime,\n      minTime,\n      disableFuture,\n      disablePast,\n      minutesStep = 1,\n      shouldDisableTime,\n      onChange,\n      view: inView,\n      views: inViews = ['hours', 'minutes'],\n      openTo,\n      onViewChange,\n      focusedView: inFocusedView,\n      onFocusedViewChange,\n      className,\n      classes: classesProp,\n      disabled,\n      readOnly,\n      skipDisabled = false,\n      timezone: timezoneProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    value,\n    handleValueChange: handleRawValueChange,\n    timezone\n  } = useControlledValue({\n    name: 'MultiSectionDigitalClock',\n    timezone: timezoneProp,\n    value: valueProp,\n    defaultValue,\n    referenceDate: referenceDateProp,\n    onChange,\n    valueManager: singleItemValueManager\n  });\n  const translations = usePickerTranslations();\n  const now = useNow(timezone);\n  const timeSteps = React.useMemo(() => _extends({\n    hours: 1,\n    minutes: 5,\n    seconds: 5\n  }, inTimeSteps), [inTimeSteps]);\n  const valueOrReferenceDate = useClockReferenceDate({\n    value,\n    referenceDate: referenceDateProp,\n    adapter,\n    props,\n    timezone\n  });\n  const handleValueChange = useEventCallback((newValue, selectionState, selectedView) => handleRawValueChange(newValue, selectionState, selectedView));\n  const views = React.useMemo(() => {\n    if (!ampm || !inViews.includes('hours')) {\n      return inViews;\n    }\n    return inViews.includes('meridiem') ? inViews : [...inViews, 'meridiem'];\n  }, [ampm, inViews]);\n  const {\n    view,\n    setValueAndGoToNextView,\n    focusedView\n  } = useViews({\n    view: inView,\n    views,\n    openTo,\n    onViewChange,\n    onChange: handleValueChange,\n    focusedView: inFocusedView,\n    onFocusedViewChange\n  });\n  const handleMeridiemValueChange = useEventCallback(newValue => {\n    setValueAndGoToNextView(newValue, 'finish', 'meridiem');\n  });\n  const {\n    meridiemMode,\n    handleMeridiemChange\n  } = useMeridiemMode(valueOrReferenceDate, ampm, handleMeridiemValueChange, 'finish');\n  const isTimeDisabled = React.useCallback((rawValue, viewType) => {\n    const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter);\n    const shouldCheckPastEnd = viewType === 'hours' || viewType === 'minutes' && views.includes('seconds');\n    const containsValidTime = ({\n      start,\n      end\n    }) => {\n      if (minTime && isAfter(minTime, end)) {\n        return false;\n      }\n      if (maxTime && isAfter(start, maxTime)) {\n        return false;\n      }\n      if (disableFuture && isAfter(start, now)) {\n        return false;\n      }\n      if (disablePast && isAfter(now, shouldCheckPastEnd ? end : start)) {\n        return false;\n      }\n      return true;\n    };\n    const isValidValue = (timeValue, step = 1) => {\n      if (timeValue % step !== 0) {\n        return false;\n      }\n      if (shouldDisableTime) {\n        switch (viewType) {\n          case 'hours':\n            return !shouldDisableTime(adapter.setHours(valueOrReferenceDate, timeValue), 'hours');\n          case 'minutes':\n            return !shouldDisableTime(adapter.setMinutes(valueOrReferenceDate, timeValue), 'minutes');\n          case 'seconds':\n            return !shouldDisableTime(adapter.setSeconds(valueOrReferenceDate, timeValue), 'seconds');\n          default:\n            return false;\n        }\n      }\n      return true;\n    };\n    switch (viewType) {\n      case 'hours':\n        {\n          const valueWithMeridiem = convertValueToMeridiem(rawValue, meridiemMode, ampm);\n          const dateWithNewHours = adapter.setHours(valueOrReferenceDate, valueWithMeridiem);\n          if (adapter.getHours(dateWithNewHours) !== valueWithMeridiem) {\n            return true;\n          }\n          const start = adapter.setSeconds(adapter.setMinutes(dateWithNewHours, 0), 0);\n          const end = adapter.setSeconds(adapter.setMinutes(dateWithNewHours, 59), 59);\n          return !containsValidTime({\n            start,\n            end\n          }) || !isValidValue(valueWithMeridiem);\n        }\n      case 'minutes':\n        {\n          const dateWithNewMinutes = adapter.setMinutes(valueOrReferenceDate, rawValue);\n          const start = adapter.setSeconds(dateWithNewMinutes, 0);\n          const end = adapter.setSeconds(dateWithNewMinutes, 59);\n          return !containsValidTime({\n            start,\n            end\n          }) || !isValidValue(rawValue, minutesStep);\n        }\n      case 'seconds':\n        {\n          const dateWithNewSeconds = adapter.setSeconds(valueOrReferenceDate, rawValue);\n          const start = dateWithNewSeconds;\n          const end = dateWithNewSeconds;\n          return !containsValidTime({\n            start,\n            end\n          }) || !isValidValue(rawValue);\n        }\n      default:\n        throw new Error('not supported');\n    }\n  }, [ampm, valueOrReferenceDate, disableIgnoringDatePartForTimeValidation, maxTime, meridiemMode, minTime, minutesStep, shouldDisableTime, adapter, disableFuture, disablePast, now, views]);\n  const buildViewProps = React.useCallback(viewToBuild => {\n    switch (viewToBuild) {\n      case 'hours':\n        {\n          return {\n            onChange: hours => {\n              const valueWithMeridiem = convertValueToMeridiem(hours, meridiemMode, ampm);\n              setValueAndGoToNextView(adapter.setHours(valueOrReferenceDate, valueWithMeridiem), 'finish', 'hours');\n            },\n            items: getHourSectionOptions({\n              now,\n              value,\n              ampm,\n              adapter,\n              isDisabled: hours => isTimeDisabled(hours, 'hours'),\n              timeStep: timeSteps.hours,\n              resolveAriaLabel: translations.hoursClockNumberText,\n              valueOrReferenceDate\n            })\n          };\n        }\n      case 'minutes':\n        {\n          return {\n            onChange: minutes => {\n              setValueAndGoToNextView(adapter.setMinutes(valueOrReferenceDate, minutes), 'finish', 'minutes');\n            },\n            items: getTimeSectionOptions({\n              value: adapter.getMinutes(valueOrReferenceDate),\n              adapter,\n              isDisabled: minutes => isTimeDisabled(minutes, 'minutes'),\n              resolveLabel: minutes => adapter.format(adapter.setMinutes(now, minutes), 'minutes'),\n              timeStep: timeSteps.minutes,\n              hasValue: !!value,\n              resolveAriaLabel: translations.minutesClockNumberText\n            })\n          };\n        }\n      case 'seconds':\n        {\n          return {\n            onChange: seconds => {\n              setValueAndGoToNextView(adapter.setSeconds(valueOrReferenceDate, seconds), 'finish', 'seconds');\n            },\n            items: getTimeSectionOptions({\n              value: adapter.getSeconds(valueOrReferenceDate),\n              adapter,\n              isDisabled: seconds => isTimeDisabled(seconds, 'seconds'),\n              resolveLabel: seconds => adapter.format(adapter.setSeconds(now, seconds), 'seconds'),\n              timeStep: timeSteps.seconds,\n              hasValue: !!value,\n              resolveAriaLabel: translations.secondsClockNumberText\n            })\n          };\n        }\n      case 'meridiem':\n        {\n          const amLabel = formatMeridiem(adapter, 'am');\n          const pmLabel = formatMeridiem(adapter, 'pm');\n          return {\n            onChange: handleMeridiemChange,\n            items: [{\n              value: 'am',\n              label: amLabel,\n              isSelected: () => !!value && meridiemMode === 'am',\n              isFocused: () => !!valueOrReferenceDate && meridiemMode === 'am',\n              ariaLabel: amLabel\n            }, {\n              value: 'pm',\n              label: pmLabel,\n              isSelected: () => !!value && meridiemMode === 'pm',\n              isFocused: () => !!valueOrReferenceDate && meridiemMode === 'pm',\n              ariaLabel: pmLabel\n            }]\n          };\n        }\n      default:\n        throw new Error(`Unknown view: ${viewToBuild} found.`);\n    }\n  }, [now, value, ampm, adapter, timeSteps.hours, timeSteps.minutes, timeSteps.seconds, translations.hoursClockNumberText, translations.minutesClockNumberText, translations.secondsClockNumberText, meridiemMode, setValueAndGoToNextView, valueOrReferenceDate, isTimeDisabled, handleMeridiemChange]);\n  const viewsToRender = React.useMemo(() => {\n    if (!isRtl) {\n      return views;\n    }\n    const digitViews = views.filter(v => v !== 'meridiem');\n    digitViews.reverse();\n    if (views.includes('meridiem')) {\n      digitViews.push('meridiem');\n    }\n    return digitViews;\n  }, [isRtl, views]);\n  const viewTimeOptions = React.useMemo(() => {\n    return views.reduce((result, currentView) => {\n      return _extends({}, result, {\n        [currentView]: buildViewProps(currentView)\n      });\n    }, {});\n  }, [views, buildViewProps]);\n  const {\n    ownerState\n  } = usePickerPrivateContext();\n  const classes = useUtilityClasses(classesProp);\n  return /*#__PURE__*/_jsx(MultiSectionDigitalClockRoot, _extends({\n    ref: ref,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    role: \"group\"\n  }, other, {\n    children: viewsToRender.map(timeView => /*#__PURE__*/_jsx(MultiSectionDigitalClockSection, {\n      items: viewTimeOptions[timeView].items,\n      onChange: viewTimeOptions[timeView].onChange,\n      active: view === timeView,\n      autoFocus: autoFocus || focusedView === timeView,\n      disabled: disabled,\n      readOnly: readOnly,\n      slots: slots,\n      slotProps: slotProps,\n      skipDisabled: skipDisabled,\n      \"aria-label\": translations.selectViewText(timeView)\n    }, timeView))\n  }));\n});\nif (process.env.NODE_ENV !== \"production\") MultiSectionDigitalClock.displayName = \"MultiSectionDigitalClock\";\nprocess.env.NODE_ENV !== \"production\" ? MultiSectionDigitalClock.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * 12h/24h view for hour selection clock.\n   * @default adapter.is12HourCycleInCurrentLocale()\n   */\n  ampm: PropTypes.bool,\n  /**\n   * If `true`, the main element is focused during the first mount.\n   * This main element is:\n   * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n   * - the `input` element if there is a field rendered.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * The default selected value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * Do not ignore date part when validating min/max time.\n   * @default false\n   */\n  disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * Controlled focused view.\n   */\n  focusedView: PropTypes.oneOf(['hours', 'meridiem', 'minutes', 'seconds']),\n  /**\n   * Maximal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  maxTime: PropTypes.object,\n  /**\n   * Minimal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  minTime: PropTypes.object,\n  /**\n   * Step over minutes.\n   * @default 1\n   */\n  minutesStep: PropTypes.number,\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TView The view type. Will be one of date or time views.\n   * @param {TValue} value The new value.\n   * @param {PickerSelectionState | undefined} selectionState Indicates if the date selection is complete.\n   * @param {TView | undefined} selectedView Indicates the view in which the selection has been made.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired on focused view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view to focus or not.\n   * @param {boolean} hasFocus `true` if the view should be focused.\n   */\n  onFocusedViewChange: PropTypes.func,\n  /**\n   * Callback fired on view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view.\n   */\n  onViewChange: PropTypes.func,\n  /**\n   * The default visible view.\n   * Used when the component view is not controlled.\n   * Must be a valid option from `views` list.\n   */\n  openTo: PropTypes.oneOf(['hours', 'meridiem', 'minutes', 'seconds']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid time using the validation props, except callbacks such as `shouldDisableTime`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Disable specific time.\n   * @param {PickerValidDate} value The value to check.\n   * @param {TimeView} view The clock type of the timeValue.\n   * @returns {boolean} If `true` the time will be disabled.\n   */\n  shouldDisableTime: PropTypes.func,\n  /**\n   * If `true`, disabled digital clock items will not be rendered.\n   * @default false\n   */\n  skipDisabled: PropTypes.bool,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overrideable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The time steps between two time unit options.\n   * For example, if `timeSteps.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.\n   * @default{ hours: 1, minutes: 5, seconds: 5 }\n   */\n  timeSteps: PropTypes.shape({\n    hours: PropTypes.number,\n    minutes: PropTypes.number,\n    seconds: PropTypes.number\n  }),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The visible view.\n   * Used when the component view is controlled.\n   * Must be a valid option from `views` list.\n   */\n  view: PropTypes.oneOf(['hours', 'meridiem', 'minutes', 'seconds']),\n  /**\n   * Available views.\n   * @default ['hours', 'minutes']\n   */\n  views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'meridiem', 'minutes', 'seconds']).isRequired)\n} : void 0;","import { TimeClock } from \"../TimeClock/index.js\";\nimport { DigitalClock } from \"../DigitalClock/index.js\";\nimport { MultiSectionDigitalClock } from \"../MultiSectionDigitalClock/index.js\";\nimport { isInternalTimeView, isTimeView } from \"../internals/utils/time-utils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const renderTimeViewClock = ({\n  view,\n  onViewChange,\n  focusedView,\n  onFocusedViewChange,\n  views,\n  value,\n  defaultValue,\n  referenceDate,\n  onChange,\n  className,\n  classes,\n  disableFuture,\n  disablePast,\n  minTime,\n  maxTime,\n  shouldDisableTime,\n  minutesStep,\n  ampm,\n  ampmInClock,\n  slots,\n  slotProps,\n  readOnly,\n  disabled,\n  sx,\n  autoFocus,\n  showViewSwitcher,\n  disableIgnoringDatePartForTimeValidation,\n  timezone\n}) => /*#__PURE__*/_jsx(TimeClock, {\n  view: view,\n  onViewChange: onViewChange,\n  focusedView: focusedView && isTimeView(focusedView) ? focusedView : null,\n  onFocusedViewChange: onFocusedViewChange,\n  views: views.filter(isTimeView),\n  value: value,\n  defaultValue: defaultValue,\n  referenceDate: referenceDate,\n  onChange: onChange,\n  className: className,\n  classes: classes,\n  disableFuture: disableFuture,\n  disablePast: disablePast,\n  minTime: minTime,\n  maxTime: maxTime,\n  shouldDisableTime: shouldDisableTime,\n  minutesStep: minutesStep,\n  ampm: ampm,\n  ampmInClock: ampmInClock,\n  slots: slots,\n  slotProps: slotProps,\n  readOnly: readOnly,\n  disabled: disabled,\n  sx: sx,\n  autoFocus: autoFocus,\n  showViewSwitcher: showViewSwitcher,\n  disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,\n  timezone: timezone\n});\nif (process.env.NODE_ENV !== \"production\") renderTimeViewClock.displayName = \"renderTimeViewClock\";\nexport const renderDigitalClockTimeView = ({\n  view,\n  onViewChange,\n  focusedView,\n  onFocusedViewChange,\n  views,\n  value,\n  defaultValue,\n  referenceDate,\n  onChange,\n  className,\n  classes,\n  disableFuture,\n  disablePast,\n  minTime,\n  maxTime,\n  shouldDisableTime,\n  minutesStep,\n  ampm,\n  slots,\n  slotProps,\n  readOnly,\n  disabled,\n  sx,\n  autoFocus,\n  disableIgnoringDatePartForTimeValidation,\n  timeSteps,\n  skipDisabled,\n  timezone\n}) => /*#__PURE__*/_jsx(DigitalClock, {\n  view: view,\n  onViewChange: onViewChange,\n  focusedView: focusedView && isTimeView(focusedView) ? focusedView : null,\n  onFocusedViewChange: onFocusedViewChange,\n  views: views.filter(isTimeView),\n  value: value,\n  defaultValue: defaultValue,\n  referenceDate: referenceDate,\n  onChange: onChange,\n  className: className,\n  classes: classes,\n  disableFuture: disableFuture,\n  disablePast: disablePast,\n  minTime: minTime,\n  maxTime: maxTime,\n  shouldDisableTime: shouldDisableTime,\n  minutesStep: minutesStep,\n  ampm: ampm,\n  slots: slots,\n  slotProps: slotProps,\n  readOnly: readOnly,\n  disabled: disabled,\n  sx: sx,\n  autoFocus: autoFocus,\n  disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,\n  timeStep: timeSteps?.minutes,\n  skipDisabled: skipDisabled,\n  timezone: timezone\n});\nif (process.env.NODE_ENV !== \"production\") renderDigitalClockTimeView.displayName = \"renderDigitalClockTimeView\";\nexport const renderMultiSectionDigitalClockTimeView = ({\n  view,\n  onViewChange,\n  focusedView,\n  onFocusedViewChange,\n  views,\n  value,\n  defaultValue,\n  referenceDate,\n  onChange,\n  className,\n  classes,\n  disableFuture,\n  disablePast,\n  minTime,\n  maxTime,\n  shouldDisableTime,\n  minutesStep,\n  ampm,\n  slots,\n  slotProps,\n  readOnly,\n  disabled,\n  sx,\n  autoFocus,\n  disableIgnoringDatePartForTimeValidation,\n  timeSteps,\n  skipDisabled,\n  timezone\n}) => /*#__PURE__*/_jsx(MultiSectionDigitalClock, {\n  view: view,\n  onViewChange: onViewChange,\n  focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,\n  onFocusedViewChange: onFocusedViewChange,\n  views: views.filter(isTimeView),\n  value: value,\n  defaultValue: defaultValue,\n  referenceDate: referenceDate,\n  onChange: onChange,\n  className: className,\n  classes: classes,\n  disableFuture: disableFuture,\n  disablePast: disablePast,\n  minTime: minTime,\n  maxTime: maxTime,\n  shouldDisableTime: shouldDisableTime,\n  minutesStep: minutesStep,\n  ampm: ampm,\n  slots: slots,\n  slotProps: slotProps,\n  readOnly: readOnly,\n  disabled: disabled,\n  sx: sx,\n  autoFocus: autoFocus,\n  disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,\n  timeSteps: timeSteps,\n  skipDisabled: skipDisabled,\n  timezone: timezone\n});\nif (process.env.NODE_ENV !== \"production\") renderMultiSectionDigitalClockTimeView.displayName = \"renderMultiSectionDigitalClockTimeView\";","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Divider from '@mui/material/Divider';\nimport { PickersLayoutContentWrapper, PickersLayoutRoot, pickersLayoutClasses, usePickerLayout } from \"../PickersLayout/index.js\";\nimport { usePickerContext } from \"../hooks/usePickerContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * @ignore - internal component.\n */\nconst DesktopDateTimePickerLayout = /*#__PURE__*/React.forwardRef(function DesktopDateTimePickerLayout(props, ref) {\n  const {\n    toolbar,\n    tabs,\n    content,\n    actionBar,\n    shortcuts,\n    ownerState\n  } = usePickerLayout(props);\n  const {\n    orientation\n  } = usePickerContext();\n  const {\n    sx,\n    className,\n    classes\n  } = props;\n  const isActionBarVisible = actionBar && (actionBar.props.actions?.length ?? 0) > 0;\n  return /*#__PURE__*/_jsxs(PickersLayoutRoot, {\n    ref: ref,\n    className: clsx(pickersLayoutClasses.root, classes?.root, className),\n    sx: [{\n      [`& .${pickersLayoutClasses.tabs}`]: {\n        gridRow: 4,\n        gridColumn: '1 / 4'\n      },\n      [`& .${pickersLayoutClasses.actionBar}`]: {\n        gridRow: 5\n      }\n    }, ...(Array.isArray(sx) ? sx : [sx])],\n    ownerState: ownerState,\n    children: [orientation === 'landscape' ? shortcuts : toolbar, orientation === 'landscape' ? toolbar : shortcuts, /*#__PURE__*/_jsxs(PickersLayoutContentWrapper, {\n      className: clsx(pickersLayoutClasses.contentWrapper, classes?.contentWrapper),\n      ownerState: ownerState,\n      sx: {\n        display: 'grid'\n      },\n      children: [content, tabs, isActionBarVisible && /*#__PURE__*/_jsx(Divider, {\n        sx: {\n          gridRow: 3,\n          gridColumn: '1 / 4'\n        }\n      })]\n    }), actionBar]\n  });\n});\nif (process.env.NODE_ENV !== \"production\") DesktopDateTimePickerLayout.displayName = \"DesktopDateTimePickerLayout\";\nprocess.env.NODE_ENV !== \"production\" ? DesktopDateTimePickerLayout.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  className: PropTypes.string,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { DesktopDateTimePickerLayout };","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"openTo\", \"focusedView\", \"timeViewsCount\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveComponentProps from '@mui/utils/resolveComponentProps';\nimport refType from '@mui/utils/refType';\nimport Divider from '@mui/material/Divider';\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { DateTimeField } from \"../DateTimeField/index.js\";\nimport { useDateTimePickerDefaultizedProps } from \"../DateTimePicker/shared.js\";\nimport { renderDateViewCalendar } from \"../dateViewRenderers/dateViewRenderers.js\";\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nimport { validateDateTime, extractValidationProps } from \"../validation/index.js\";\nimport { useDesktopPicker } from \"../internals/hooks/useDesktopPicker/index.js\";\nimport { resolveDateTimeFormat } from \"../internals/utils/date-time-utils.js\";\nimport { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from \"../timeViewRenderers/index.js\";\nimport { multiSectionDigitalClockClasses, multiSectionDigitalClockSectionClasses } from \"../MultiSectionDigitalClock/index.js\";\nimport { digitalClockClasses } from \"../DigitalClock/index.js\";\nimport { DesktopDateTimePickerLayout } from \"./DesktopDateTimePickerLayout.js\";\nimport { VIEW_HEIGHT } from \"../internals/constants/dimensions.js\";\nimport { isInternalTimeView } from \"../internals/utils/time-utils.js\";\nimport { isDatePickerView } from \"../internals/utils/date-utils.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst rendererInterceptor = function RendererInterceptor(props) {\n  const {\n    viewRenderers,\n    popperView,\n    rendererProps\n  } = props;\n  const {\n      openTo,\n      focusedView,\n      timeViewsCount\n    } = rendererProps,\n    otherProps = _objectWithoutPropertiesLoose(rendererProps, _excluded);\n  const finalProps = _extends({}, otherProps, {\n    // we control the focused view manually\n    autoFocus: false,\n    focusedView: null,\n    sx: [{\n      [`&.${multiSectionDigitalClockClasses.root}`]: {\n        borderBottom: 0\n      },\n      [`&.${multiSectionDigitalClockClasses.root}, .${multiSectionDigitalClockSectionClasses.root}, &.${digitalClockClasses.root}`]: {\n        maxHeight: VIEW_HEIGHT\n      }\n    }]\n  });\n  const isTimeViewActive = isInternalTimeView(popperView);\n  const dateView = isTimeViewActive ? 'day' : popperView;\n  const timeView = isTimeViewActive ? popperView : 'hours';\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [viewRenderers[dateView]?.(_extends({}, rendererProps, {\n      view: !isTimeViewActive ? popperView : 'day',\n      focusedView: focusedView && isDatePickerView(focusedView) ? focusedView : null,\n      views: rendererProps.views.filter(isDatePickerView),\n      sx: [{\n        gridColumn: 1\n      }, ...finalProps.sx]\n    })), timeViewsCount > 0 && /*#__PURE__*/_jsxs(React.Fragment, {\n      children: [/*#__PURE__*/_jsx(Divider, {\n        orientation: \"vertical\",\n        sx: {\n          gridColumn: 2\n        }\n      }), viewRenderers[timeView]?.(_extends({}, finalProps, {\n        view: isTimeViewActive ? popperView : 'hours',\n        focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,\n        openTo: isInternalTimeView(openTo) ? openTo : 'hours',\n        views: rendererProps.views.filter(isInternalTimeView),\n        sx: [{\n          gridColumn: 3\n        }, ...finalProps.sx]\n      }))]\n    })]\n  });\n};\nif (process.env.NODE_ENV !== \"production\") rendererInterceptor.displayName = \"rendererInterceptor\";\n/**\n * Demos:\n *\n * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)\n * - [Validation](https://mui.com/x/react-date-pickers/validation/)\n *\n * API:\n *\n * - [DesktopDateTimePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-picker/)\n */\nconst DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimePicker(inProps, ref) {\n  const adapter = usePickerAdapter();\n\n  // Props with the default values common to all date time pickers\n  const defaultizedProps = useDateTimePickerDefaultizedProps(inProps, 'MuiDesktopDateTimePicker');\n  const renderTimeView = defaultizedProps.shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;\n  const viewRenderers = _extends({\n    day: renderDateViewCalendar,\n    month: renderDateViewCalendar,\n    year: renderDateViewCalendar,\n    hours: renderTimeView,\n    minutes: renderTimeView,\n    seconds: renderTimeView,\n    meridiem: renderTimeView\n  }, defaultizedProps.viewRenderers);\n  const ampmInClock = defaultizedProps.ampmInClock ?? true;\n  // Need to avoid adding the `meridiem` view when unexpected renderer is specified\n  const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;\n  const views = !shouldHoursRendererContainMeridiemView ? defaultizedProps.views.filter(view => view !== 'meridiem') : defaultizedProps.views;\n\n  // Props with the default values specific to the desktop variant\n  const props = _extends({}, defaultizedProps, {\n    viewRenderers,\n    format: resolveDateTimeFormat(adapter, _extends({}, defaultizedProps, {\n      views: defaultizedProps.viewsForFormatting\n    })),\n    views,\n    yearsPerRow: defaultizedProps.yearsPerRow ?? 4,\n    ampmInClock,\n    slots: _extends({\n      field: DateTimeField,\n      layout: DesktopDateTimePickerLayout\n    }, defaultizedProps.slots),\n    slotProps: _extends({}, defaultizedProps.slotProps, {\n      field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps)),\n      toolbar: _extends({\n        hidden: true,\n        ampmInClock\n      }, defaultizedProps.slotProps?.toolbar),\n      tabs: _extends({\n        hidden: true\n      }, defaultizedProps.slotProps?.tabs)\n    })\n  });\n  const {\n    renderPicker\n  } = useDesktopPicker({\n    ref,\n    props,\n    valueManager: singleItemValueManager,\n    valueType: 'date-time',\n    validator: validateDateTime,\n    rendererInterceptor,\n    steps: null\n  });\n  return renderPicker();\n});\nif (process.env.NODE_ENV !== \"production\") DesktopDateTimePicker.displayName = \"DesktopDateTimePicker\";\nDesktopDateTimePicker.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * 12h/24h view for hour selection clock.\n   * @default adapter.is12HourCycleInCurrentLocale()\n   */\n  ampm: PropTypes.bool,\n  /**\n   * Display ampm controls under the clock (instead of in the toolbar).\n   * @default true on desktop, false on mobile\n   */\n  ampmInClock: PropTypes.bool,\n  /**\n   * If `true`, the main element is focused during the first mount.\n   * This main element is:\n   * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n   * - the `input` element if there is a field rendered.\n   */\n  autoFocus: PropTypes.bool,\n  className: PropTypes.string,\n  /**\n   * If `true`, the Picker will close after submitting the full date.\n   * @default false\n   */\n  closeOnSelect: PropTypes.bool,\n  /**\n   * Formats the day of week displayed in the calendar header.\n   * @param {PickerValidDate} date The date of the day of week provided by the adapter.\n   * @returns {string} The name to display.\n   * @default (date: PickerValidDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()\n   */\n  dayOfWeekFormatter: PropTypes.func,\n  /**\n   * The default value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * Do not ignore date part when validating min/max time.\n   * @default false\n   */\n  disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n  /**\n   * If `true`, the button to open the Picker will not be rendered (it will only render the field).\n   * @deprecated Use the [field component](https://mui.com/x/react-date-pickers/fields/) instead.\n   * @default false\n   */\n  disableOpenPicker: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * If `true`, the week number will be display in the calendar.\n   */\n  displayWeekNumber: PropTypes.bool,\n  /**\n   * @default true\n   */\n  enableAccessibleFieldDOMStructure: PropTypes.any,\n  /**\n   * The day view will show as many weeks as needed after the end of the current month to match this value.\n   * Put it to 6 to have a fixed number of weeks in Gregorian calendars\n   */\n  fixedWeekNumber: PropTypes.number,\n  /**\n   * Format of the date when rendered in the input(s).\n   * Defaults to localized format based on the used `views`.\n   */\n  format: PropTypes.string,\n  /**\n   * Density of the format when rendered in the input.\n   * Setting `formatDensity` to `\"spacious\"` will add a space before and after each `/`, `-` and `.` character.\n   * @default \"dense\"\n   */\n  formatDensity: PropTypes.oneOf(['dense', 'spacious']),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `true`, calls `renderLoading` instead of rendering the day calendar.\n   * Can be used to preload information and show it in calendar.\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Locale for components texts.\n   * Allows overriding texts coming from `LocalizationProvider` and `theme`.\n   */\n  localeText: PropTypes.object,\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n   */\n  maxDateTime: PropTypes.object,\n  /**\n   * Maximal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  maxTime: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n   */\n  minDateTime: PropTypes.object,\n  /**\n   * Minimal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  minTime: PropTypes.object,\n  /**\n   * Step over minutes.\n   * @default 1\n   */\n  minutesStep: PropTypes.number,\n  /**\n   * Months rendered per row.\n   * @default 3\n   */\n  monthsPerRow: PropTypes.oneOf([3, 4]),\n  /**\n   * Name attribute used by the `input` element in the Field.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is accepted.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The value that was just accepted.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this acceptance:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the acceptance. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the value was accepted via a shortcut selection\n   */\n  onAccept: PropTypes.func,\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The new value.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this change:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the change. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the change was triggered by a shortcut selection\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see `open`).\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the error associated with the current value changes.\n   * When a validation error is detected, the `error` parameter contains a non-null value.\n   * This can be used to render an appropriate form error.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TError} error The reason why the current value is not valid.\n   * @param {TValue} value The value associated with the error.\n   */\n  onError: PropTypes.func,\n  /**\n   * Callback fired on month change.\n   * @param {PickerValidDate} month The new month.\n   */\n  onMonthChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see `open`).\n   */\n  onOpen: PropTypes.func,\n  /**\n   * Callback fired when the selected sections change.\n   * @param {FieldSelectedSections} newValue The new selected sections.\n   */\n  onSelectedSectionsChange: PropTypes.func,\n  /**\n   * Callback fired on view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view.\n   */\n  onViewChange: PropTypes.func,\n  /**\n   * Callback fired on year change.\n   * @param {PickerValidDate} year The new year.\n   */\n  onYearChange: PropTypes.func,\n  /**\n   * Control the popup or dialog open state.\n   * @default false\n   */\n  open: PropTypes.bool,\n  /**\n   * The default visible view.\n   * Used when the component view is not controlled.\n   * Must be a valid option from `views` list.\n   */\n  openTo: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),\n  /**\n   * Force rendering in particular orientation.\n   */\n  orientation: PropTypes.oneOf(['landscape', 'portrait']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, disable heavy animations.\n   * @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13\n   */\n  reduceAnimations: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Component displaying when passed `loading` true.\n   * @returns {React.ReactNode} The node to render when loading.\n   * @default () => <span>...</span>\n   */\n  renderLoading: PropTypes.func,\n  /**\n   * The currently selected sections.\n   * This prop accepts four formats:\n   * 1. If a number is provided, the section at this index will be selected.\n   * 2. If a string of type `FieldSectionType` is provided, the first section with that name will be selected.\n   * 3. If `\"all\"` is provided, all the sections will be selected.\n   * 4. If `null` is provided, no section will be selected.\n   * If not provided, the selected sections will be handled internally.\n   */\n  selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number]),\n  /**\n   * Disable specific date.\n   *\n   * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.\n   *\n   * @param {PickerValidDate} day The date to test.\n   * @returns {boolean} If `true` the date will be disabled.\n   */\n  shouldDisableDate: PropTypes.func,\n  /**\n   * Disable specific month.\n   * @param {PickerValidDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * Disable specific time.\n   * @param {PickerValidDate} value The value to check.\n   * @param {TimeView} view The clock type of the timeValue.\n   * @returns {boolean} If `true` the time will be disabled.\n   */\n  shouldDisableTime: PropTypes.func,\n  /**\n   * Disable specific year.\n   * @param {PickerValidDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * If `true`, days outside the current month are rendered:\n   *\n   * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.\n   *\n   * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.\n   *\n   * - ignored if `calendars` equals more than `1` on range pickers.\n   * @default false\n   */\n  showDaysOutsideCurrentMonth: PropTypes.bool,\n  /**\n   * If `true`, disabled digital clock items will not be rendered.\n   * @default false\n   */\n  skipDisabled: PropTypes.bool,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Amount of time options below or at which the single column time renderer is used.\n   * @default 24\n   */\n  thresholdToRenderTimeInASingleColumn: PropTypes.number,\n  /**\n   * The time steps between two time unit options.\n   * For example, if `timeSteps.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.\n   * When single column time renderer is used, only `timeSteps.minutes` will be used.\n   * @default{ hours: 1, minutes: 5, seconds: 5 }\n   */\n  timeSteps: PropTypes.shape({\n    hours: PropTypes.number,\n    minutes: PropTypes.number,\n    seconds: PropTypes.number\n  }),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The visible view.\n   * Used when the component view is controlled.\n   * Must be a valid option from `views` list.\n   */\n  view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),\n  /**\n   * Define custom view renderers for each section.\n   * If `null`, the section will only have field editing.\n   * If `undefined`, internally defined view will be used.\n   */\n  viewRenderers: PropTypes.shape({\n    day: PropTypes.func,\n    hours: PropTypes.func,\n    meridiem: PropTypes.func,\n    minutes: PropTypes.func,\n    month: PropTypes.func,\n    seconds: PropTypes.func,\n    year: PropTypes.func\n  }),\n  /**\n   * Available views.\n   */\n  views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),\n  /**\n   * Years are displayed in ascending (chronological) order by default.\n   * If `desc`, years are displayed in descending order.\n   * @default 'asc'\n   */\n  yearsOrder: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Years rendered per row.\n   * @default 4\n   */\n  yearsPerRow: PropTypes.oneOf([3, 4])\n};\nexport { DesktopDateTimePicker };","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveComponentProps from '@mui/utils/resolveComponentProps';\nimport refType from '@mui/utils/refType';\nimport { singleItemValueManager } from \"../internals/utils/valueManagers.js\";\nimport { DateTimeField } from \"../DateTimeField/index.js\";\nimport { useDateTimePickerDefaultizedProps } from \"../DateTimePicker/shared.js\";\nimport { usePickerAdapter } from \"../hooks/usePickerAdapter.js\";\nimport { extractValidationProps, validateDateTime } from \"../validation/index.js\";\nimport { useMobilePicker } from \"../internals/hooks/useMobilePicker/index.js\";\nimport { renderDateViewCalendar } from \"../dateViewRenderers/index.js\";\nimport { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from \"../timeViewRenderers/index.js\";\nimport { resolveDateTimeFormat } from \"../internals/utils/date-time-utils.js\";\nimport { DIALOG_WIDTH, VIEW_HEIGHT } from \"../internals/constants/dimensions.js\";\nimport { multiSectionDigitalClockClasses, multiSectionDigitalClockSectionClasses } from \"../MultiSectionDigitalClock/index.js\";\nimport { mergeSx } from \"../internals/utils/utils.js\";\nimport { digitalClockClasses } from \"../DigitalClock/index.js\";\nimport { EXPORTED_TIME_VIEWS } from \"../internals/utils/time-utils.js\";\nimport { DATE_VIEWS } from \"../internals/utils/date-utils.js\";\nconst STEPS = [{\n  views: DATE_VIEWS\n}, {\n  views: EXPORTED_TIME_VIEWS\n}];\n/**\n * Demos:\n *\n * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)\n * - [Validation](https://mui.com/x/react-date-pickers/validation/)\n *\n * API:\n *\n * - [MobileDateTimePicker API](https://mui.com/x/api/date-pickers/mobile-date-time-picker/)\n */\nconst MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimePicker(inProps, ref) {\n  const adapter = usePickerAdapter();\n\n  // Props with the default values common to all date time pickers\n  const defaultizedProps = useDateTimePickerDefaultizedProps(inProps, 'MuiMobileDateTimePicker');\n  const renderTimeView = defaultizedProps.shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;\n  const viewRenderers = _extends({\n    day: renderDateViewCalendar,\n    month: renderDateViewCalendar,\n    year: renderDateViewCalendar,\n    hours: renderTimeView,\n    minutes: renderTimeView,\n    seconds: renderTimeView,\n    meridiem: renderTimeView\n  }, defaultizedProps.viewRenderers);\n  const ampmInClock = defaultizedProps.ampmInClock ?? false;\n  // Need to avoid adding the `meridiem` view when unexpected renderer is specified\n  const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;\n  const views = !shouldHoursRendererContainMeridiemView ? defaultizedProps.views.filter(view => view !== 'meridiem') : defaultizedProps.views;\n\n  // Props with the default values specific to the mobile variant\n  const props = _extends({}, defaultizedProps, {\n    viewRenderers,\n    format: resolveDateTimeFormat(adapter, _extends({}, defaultizedProps, {\n      views: defaultizedProps.viewsForFormatting\n    })),\n    views,\n    ampmInClock,\n    slots: _extends({\n      field: DateTimeField\n    }, defaultizedProps.slots),\n    slotProps: _extends({}, defaultizedProps.slotProps, {\n      field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps)),\n      toolbar: _extends({\n        hidden: false,\n        ampmInClock\n      }, defaultizedProps.slotProps?.toolbar),\n      tabs: _extends({\n        hidden: false\n      }, defaultizedProps.slotProps?.tabs),\n      layout: _extends({}, defaultizedProps.slotProps?.layout, {\n        sx: mergeSx([{\n          [`& .${multiSectionDigitalClockClasses.root}`]: {\n            width: DIALOG_WIDTH\n          },\n          [`& .${multiSectionDigitalClockSectionClasses.root}`]: {\n            flex: 1,\n            // account for the border on `MultiSectionDigitalClock`\n            maxHeight: VIEW_HEIGHT - 1,\n            [`.${multiSectionDigitalClockSectionClasses.item}`]: {\n              width: 'auto'\n            }\n          },\n          [`& .${digitalClockClasses.root}`]: {\n            width: DIALOG_WIDTH,\n            maxHeight: VIEW_HEIGHT,\n            flex: 1,\n            [`.${digitalClockClasses.item}`]: {\n              justifyContent: 'center'\n            }\n          }\n        }], defaultizedProps.slotProps?.layout?.sx)\n      })\n    })\n  });\n  const {\n    renderPicker\n  } = useMobilePicker({\n    ref,\n    props,\n    valueManager: singleItemValueManager,\n    valueType: 'date-time',\n    validator: validateDateTime,\n    steps: STEPS\n  });\n  return renderPicker();\n});\nif (process.env.NODE_ENV !== \"production\") MobileDateTimePicker.displayName = \"MobileDateTimePicker\";\nMobileDateTimePicker.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * 12h/24h view for hour selection clock.\n   * @default adapter.is12HourCycleInCurrentLocale()\n   */\n  ampm: PropTypes.bool,\n  /**\n   * Display ampm controls under the clock (instead of in the toolbar).\n   * @default true on desktop, false on mobile\n   */\n  ampmInClock: PropTypes.bool,\n  /**\n   * If `true`, the main element is focused during the first mount.\n   * This main element is:\n   * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n   * - the `input` element if there is a field rendered.\n   */\n  autoFocus: PropTypes.bool,\n  className: PropTypes.string,\n  /**\n   * If `true`, the Picker will close after submitting the full date.\n   * @default false\n   */\n  closeOnSelect: PropTypes.bool,\n  /**\n   * Formats the day of week displayed in the calendar header.\n   * @param {PickerValidDate} date The date of the day of week provided by the adapter.\n   * @returns {string} The name to display.\n   * @default (date: PickerValidDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()\n   */\n  dayOfWeekFormatter: PropTypes.func,\n  /**\n   * The default value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * Do not ignore date part when validating min/max time.\n   * @default false\n   */\n  disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n  /**\n   * If `true`, the button to open the Picker will not be rendered (it will only render the field).\n   * @deprecated Use the [field component](https://mui.com/x/react-date-pickers/fields/) instead.\n   * @default false\n   */\n  disableOpenPicker: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * If `true`, the week number will be display in the calendar.\n   */\n  displayWeekNumber: PropTypes.bool,\n  /**\n   * @default true\n   */\n  enableAccessibleFieldDOMStructure: PropTypes.any,\n  /**\n   * The day view will show as many weeks as needed after the end of the current month to match this value.\n   * Put it to 6 to have a fixed number of weeks in Gregorian calendars\n   */\n  fixedWeekNumber: PropTypes.number,\n  /**\n   * Format of the date when rendered in the input(s).\n   * Defaults to localized format based on the used `views`.\n   */\n  format: PropTypes.string,\n  /**\n   * Density of the format when rendered in the input.\n   * Setting `formatDensity` to `\"spacious\"` will add a space before and after each `/`, `-` and `.` character.\n   * @default \"dense\"\n   */\n  formatDensity: PropTypes.oneOf(['dense', 'spacious']),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `true`, calls `renderLoading` instead of rendering the day calendar.\n   * Can be used to preload information and show it in calendar.\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Locale for components texts.\n   * Allows overriding texts coming from `LocalizationProvider` and `theme`.\n   */\n  localeText: PropTypes.object,\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n   */\n  maxDateTime: PropTypes.object,\n  /**\n   * Maximal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  maxTime: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n   */\n  minDateTime: PropTypes.object,\n  /**\n   * Minimal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  minTime: PropTypes.object,\n  /**\n   * Step over minutes.\n   * @default 1\n   */\n  minutesStep: PropTypes.number,\n  /**\n   * Months rendered per row.\n   * @default 3\n   */\n  monthsPerRow: PropTypes.oneOf([3, 4]),\n  /**\n   * Name attribute used by the `input` element in the Field.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is accepted.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The value that was just accepted.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this acceptance:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the acceptance. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the value was accepted via a shortcut selection\n   */\n  onAccept: PropTypes.func,\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The new value.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this change:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the change. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the change was triggered by a shortcut selection\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see `open`).\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the error associated with the current value changes.\n   * When a validation error is detected, the `error` parameter contains a non-null value.\n   * This can be used to render an appropriate form error.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TError} error The reason why the current value is not valid.\n   * @param {TValue} value The value associated with the error.\n   */\n  onError: PropTypes.func,\n  /**\n   * Callback fired on month change.\n   * @param {PickerValidDate} month The new month.\n   */\n  onMonthChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see `open`).\n   */\n  onOpen: PropTypes.func,\n  /**\n   * Callback fired when the selected sections change.\n   * @param {FieldSelectedSections} newValue The new selected sections.\n   */\n  onSelectedSectionsChange: PropTypes.func,\n  /**\n   * Callback fired on view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view.\n   */\n  onViewChange: PropTypes.func,\n  /**\n   * Callback fired on year change.\n   * @param {PickerValidDate} year The new year.\n   */\n  onYearChange: PropTypes.func,\n  /**\n   * Control the popup or dialog open state.\n   * @default false\n   */\n  open: PropTypes.bool,\n  /**\n   * The default visible view.\n   * Used when the component view is not controlled.\n   * Must be a valid option from `views` list.\n   */\n  openTo: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),\n  /**\n   * Force rendering in particular orientation.\n   */\n  orientation: PropTypes.oneOf(['landscape', 'portrait']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, disable heavy animations.\n   * @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13\n   */\n  reduceAnimations: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Component displaying when passed `loading` true.\n   * @returns {React.ReactNode} The node to render when loading.\n   * @default () => <span>...</span>\n   */\n  renderLoading: PropTypes.func,\n  /**\n   * The currently selected sections.\n   * This prop accepts four formats:\n   * 1. If a number is provided, the section at this index will be selected.\n   * 2. If a string of type `FieldSectionType` is provided, the first section with that name will be selected.\n   * 3. If `\"all\"` is provided, all the sections will be selected.\n   * 4. If `null` is provided, no section will be selected.\n   * If not provided, the selected sections will be handled internally.\n   */\n  selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number]),\n  /**\n   * Disable specific date.\n   *\n   * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.\n   *\n   * @param {PickerValidDate} day The date to test.\n   * @returns {boolean} If `true` the date will be disabled.\n   */\n  shouldDisableDate: PropTypes.func,\n  /**\n   * Disable specific month.\n   * @param {PickerValidDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * Disable specific time.\n   * @param {PickerValidDate} value The value to check.\n   * @param {TimeView} view The clock type of the timeValue.\n   * @returns {boolean} If `true` the time will be disabled.\n   */\n  shouldDisableTime: PropTypes.func,\n  /**\n   * Disable specific year.\n   * @param {PickerValidDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * If `true`, days outside the current month are rendered:\n   *\n   * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.\n   *\n   * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.\n   *\n   * - ignored if `calendars` equals more than `1` on range pickers.\n   * @default false\n   */\n  showDaysOutsideCurrentMonth: PropTypes.bool,\n  /**\n   * If `true`, disabled digital clock items will not be rendered.\n   * @default false\n   */\n  skipDisabled: PropTypes.bool,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Amount of time options below or at which the single column time renderer is used.\n   * @default 24\n   */\n  thresholdToRenderTimeInASingleColumn: PropTypes.number,\n  /**\n   * The time steps between two time unit options.\n   * For example, if `timeSteps.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.\n   * When single column time renderer is used, only `timeSteps.minutes` will be used.\n   * @default{ hours: 1, minutes: 5, seconds: 5 }\n   */\n  timeSteps: PropTypes.shape({\n    hours: PropTypes.number,\n    minutes: PropTypes.number,\n    seconds: PropTypes.number\n  }),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The visible view.\n   * Used when the component view is controlled.\n   * Must be a valid option from `views` list.\n   */\n  view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),\n  /**\n   * Define custom view renderers for each section.\n   * If `null`, the section will only have field editing.\n   * If `undefined`, internally defined view will be used.\n   */\n  viewRenderers: PropTypes.shape({\n    day: PropTypes.func,\n    hours: PropTypes.func,\n    meridiem: PropTypes.func,\n    minutes: PropTypes.func,\n    month: PropTypes.func,\n    seconds: PropTypes.func,\n    year: PropTypes.func\n  }),\n  /**\n   * Available views.\n   */\n  views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),\n  /**\n   * Years are displayed in ascending (chronological) order by default.\n   * If `desc`, years are displayed in descending order.\n   * @default 'asc'\n   */\n  yearsOrder: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Years rendered per row.\n   * @default 3\n   */\n  yearsPerRow: PropTypes.oneOf([3, 4])\n};\nexport { MobileDateTimePicker };","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"desktopModeMediaQuery\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useThemeProps } from '@mui/material/styles';\nimport refType from '@mui/utils/refType';\nimport { DesktopDateTimePicker } from \"../DesktopDateTimePicker/index.js\";\nimport { MobileDateTimePicker } from \"../MobileDateTimePicker/index.js\";\nimport { DEFAULT_DESKTOP_MODE_MEDIA_QUERY } from \"../internals/utils/utils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Demos:\n *\n * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)\n * - [Validation](https://mui.com/x/react-date-pickers/validation/)\n *\n * API:\n *\n * - [DateTimePicker API](https://mui.com/x/api/date-pickers/date-time-picker/)\n */\nconst DateTimePicker = /*#__PURE__*/React.forwardRef(function DateTimePicker(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDateTimePicker'\n  });\n  const {\n      desktopModeMediaQuery = DEFAULT_DESKTOP_MODE_MEDIA_QUERY\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n\n  // defaults to `true` in environments where `window.matchMedia` would not be available (i.e. test/jsdom)\n  const isDesktop = useMediaQuery(desktopModeMediaQuery, {\n    defaultMatches: true\n  });\n  if (isDesktop) {\n    return /*#__PURE__*/_jsx(DesktopDateTimePicker, _extends({\n      ref: ref\n    }, other));\n  }\n  return /*#__PURE__*/_jsx(MobileDateTimePicker, _extends({\n    ref: ref\n  }, other));\n});\nif (process.env.NODE_ENV !== \"production\") DateTimePicker.displayName = \"DateTimePicker\";\nprocess.env.NODE_ENV !== \"production\" ? DateTimePicker.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // | To update them edit the TypeScript types and run \"pnpm proptypes\"  |\n  // ----------------------------------------------------------------------\n  /**\n   * 12h/24h view for hour selection clock.\n   * @default adapter.is12HourCycleInCurrentLocale()\n   */\n  ampm: PropTypes.bool,\n  /**\n   * Display ampm controls under the clock (instead of in the toolbar).\n   * @default true on desktop, false on mobile\n   */\n  ampmInClock: PropTypes.bool,\n  /**\n   * If `true`, the main element is focused during the first mount.\n   * This main element is:\n   * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).\n   * - the `input` element if there is a field rendered.\n   */\n  autoFocus: PropTypes.bool,\n  className: PropTypes.string,\n  /**\n   * If `true`, the Picker will close after submitting the full date.\n   * @default false\n   */\n  closeOnSelect: PropTypes.bool,\n  /**\n   * Formats the day of week displayed in the calendar header.\n   * @param {PickerValidDate} date The date of the day of week provided by the adapter.\n   * @returns {string} The name to display.\n   * @default (date: PickerValidDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()\n   */\n  dayOfWeekFormatter: PropTypes.func,\n  /**\n   * The default value.\n   * Used when the component is not controlled.\n   */\n  defaultValue: PropTypes.object,\n  /**\n   * CSS media query when `Mobile` mode will be changed to `Desktop`.\n   * @default '@media (pointer: fine)'\n   * @example '@media (min-width: 720px)' or theme.breakpoints.up(\"sm\")\n   */\n  desktopModeMediaQuery: PropTypes.string,\n  /**\n   * If `true`, the component is disabled.\n   * When disabled, the value cannot be changed and no interaction is possible.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, disable values after the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disableFuture: PropTypes.bool,\n  /**\n   * If `true`, today's date is rendering without highlighting with circle.\n   * @default false\n   */\n  disableHighlightToday: PropTypes.bool,\n  /**\n   * Do not ignore date part when validating min/max time.\n   * @default false\n   */\n  disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n  /**\n   * If `true`, the button to open the Picker will not be rendered (it will only render the field).\n   * @deprecated Use the [field component](https://mui.com/x/react-date-pickers/fields/) instead.\n   * @default false\n   */\n  disableOpenPicker: PropTypes.bool,\n  /**\n   * If `true`, disable values before the current date for date components, time for time components and both for date time components.\n   * @default false\n   */\n  disablePast: PropTypes.bool,\n  /**\n   * If `true`, the week number will be display in the calendar.\n   */\n  displayWeekNumber: PropTypes.bool,\n  /**\n   * @default true\n   */\n  enableAccessibleFieldDOMStructure: PropTypes.any,\n  /**\n   * The day view will show as many weeks as needed after the end of the current month to match this value.\n   * Put it to 6 to have a fixed number of weeks in Gregorian calendars\n   */\n  fixedWeekNumber: PropTypes.number,\n  /**\n   * Format of the date when rendered in the input(s).\n   * Defaults to localized format based on the used `views`.\n   */\n  format: PropTypes.string,\n  /**\n   * Density of the format when rendered in the input.\n   * Setting `formatDensity` to `\"spacious\"` will add a space before and after each `/`, `-` and `.` character.\n   * @default \"dense\"\n   */\n  formatDensity: PropTypes.oneOf(['dense', 'spacious']),\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label content.\n   */\n  label: PropTypes.node,\n  /**\n   * If `true`, calls `renderLoading` instead of rendering the day calendar.\n   * Can be used to preload information and show it in calendar.\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Locale for components texts.\n   * Allows overriding texts coming from `LocalizationProvider` and `theme`.\n   */\n  localeText: PropTypes.object,\n  /**\n   * Maximal selectable date.\n   * @default 2099-12-31\n   */\n  maxDate: PropTypes.object,\n  /**\n   * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n   */\n  maxDateTime: PropTypes.object,\n  /**\n   * Maximal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  maxTime: PropTypes.object,\n  /**\n   * Minimal selectable date.\n   * @default 1900-01-01\n   */\n  minDate: PropTypes.object,\n  /**\n   * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n   */\n  minDateTime: PropTypes.object,\n  /**\n   * Minimal selectable time.\n   * The date part of the object will be ignored unless `props.disableIgnoringDatePartForTimeValidation === true`.\n   */\n  minTime: PropTypes.object,\n  /**\n   * Step over minutes.\n   * @default 1\n   */\n  minutesStep: PropTypes.number,\n  /**\n   * Months rendered per row.\n   * @default 3\n   */\n  monthsPerRow: PropTypes.oneOf([3, 4]),\n  /**\n   * Name attribute used by the `input` element in the Field.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is accepted.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The value that was just accepted.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this acceptance:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the acceptance. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the value was accepted via a shortcut selection\n   */\n  onAccept: PropTypes.func,\n  /**\n   * Callback fired when the value changes.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TValue} value The new value.\n   * @param {FieldChangeHandlerContext<TError>} context Context about this change:\n   * - `validationError`: validation result of the current value\n   * - `source`: source of the change. One of 'field' | 'view' | 'unknown'\n   * - `shortcut` (optional): the shortcut metadata if the change was triggered by a shortcut selection\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see `open`).\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the error associated with the current value changes.\n   * When a validation error is detected, the `error` parameter contains a non-null value.\n   * This can be used to render an appropriate form error.\n   * @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.\n   * @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.\n   * @param {TError} error The reason why the current value is not valid.\n   * @param {TValue} value The value associated with the error.\n   */\n  onError: PropTypes.func,\n  /**\n   * Callback fired on month change.\n   * @param {PickerValidDate} month The new month.\n   */\n  onMonthChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see `open`).\n   */\n  onOpen: PropTypes.func,\n  /**\n   * Callback fired when the selected sections change.\n   * @param {FieldSelectedSections} newValue The new selected sections.\n   */\n  onSelectedSectionsChange: PropTypes.func,\n  /**\n   * Callback fired on view change.\n   * @template TView Type of the view. It will vary based on the Picker type and the `views` it uses.\n   * @param {TView} view The new view.\n   */\n  onViewChange: PropTypes.func,\n  /**\n   * Callback fired on year change.\n   * @param {PickerValidDate} year The new year.\n   */\n  onYearChange: PropTypes.func,\n  /**\n   * Control the popup or dialog open state.\n   * @default false\n   */\n  open: PropTypes.bool,\n  /**\n   * The default visible view.\n   * Used when the component view is not controlled.\n   * Must be a valid option from `views` list.\n   */\n  openTo: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),\n  /**\n   * Force rendering in particular orientation.\n   */\n  orientation: PropTypes.oneOf(['landscape', 'portrait']),\n  /**\n   * If `true`, the component is read-only.\n   * When read-only, the value cannot be changed but the user can interact with the interface.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, disable heavy animations.\n   * @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13\n   */\n  reduceAnimations: PropTypes.bool,\n  /**\n   * The date used to generate the new value when both `value` and `defaultValue` are empty.\n   * @default The closest valid date-time using the validation props, except callbacks like `shouldDisable<...>`.\n   */\n  referenceDate: PropTypes.object,\n  /**\n   * Component displaying when passed `loading` true.\n   * @returns {React.ReactNode} The node to render when loading.\n   * @default () => <span>...</span>\n   */\n  renderLoading: PropTypes.func,\n  /**\n   * The currently selected sections.\n   * This prop accepts four formats:\n   * 1. If a number is provided, the section at this index will be selected.\n   * 2. If a string of type `FieldSectionType` is provided, the first section with that name will be selected.\n   * 3. If `\"all\"` is provided, all the sections will be selected.\n   * 4. If `null` is provided, no section will be selected.\n   * If not provided, the selected sections will be handled internally.\n   */\n  selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number]),\n  /**\n   * Disable specific date.\n   *\n   * Warning: This function can be called multiple times (for example when rendering date calendar, checking if focus can be moved to a certain date, etc.). Expensive computations can impact performance.\n   *\n   * @param {PickerValidDate} day The date to test.\n   * @returns {boolean} If `true` the date will be disabled.\n   */\n  shouldDisableDate: PropTypes.func,\n  /**\n   * Disable specific month.\n   * @param {PickerValidDate} month The month to test.\n   * @returns {boolean} If `true`, the month will be disabled.\n   */\n  shouldDisableMonth: PropTypes.func,\n  /**\n   * Disable specific time.\n   * @param {PickerValidDate} value The value to check.\n   * @param {TimeView} view The clock type of the timeValue.\n   * @returns {boolean} If `true` the time will be disabled.\n   */\n  shouldDisableTime: PropTypes.func,\n  /**\n   * Disable specific year.\n   * @param {PickerValidDate} year The year to test.\n   * @returns {boolean} If `true`, the year will be disabled.\n   */\n  shouldDisableYear: PropTypes.func,\n  /**\n   * If `true`, days outside the current month are rendered:\n   *\n   * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.\n   *\n   * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.\n   *\n   * - ignored if `calendars` equals more than `1` on range pickers.\n   * @default false\n   */\n  showDaysOutsideCurrentMonth: PropTypes.bool,\n  /**\n   * If `true`, disabled digital clock items will not be rendered.\n   * @default false\n   */\n  skipDisabled: PropTypes.bool,\n  /**\n   * The props used for each component slot.\n   * @default {}\n   */\n  slotProps: PropTypes.object,\n  /**\n   * Overridable component slots.\n   * @default {}\n   */\n  slots: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Amount of time options below or at which the single column time renderer is used.\n   * @default 24\n   */\n  thresholdToRenderTimeInASingleColumn: PropTypes.number,\n  /**\n   * The time steps between two time unit options.\n   * For example, if `timeSteps.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.\n   * When single column time renderer is used, only `timeSteps.minutes` will be used.\n   * @default{ hours: 1, minutes: 5, seconds: 5 }\n   */\n  timeSteps: PropTypes.shape({\n    hours: PropTypes.number,\n    minutes: PropTypes.number,\n    seconds: PropTypes.number\n  }),\n  /**\n   * Choose which timezone to use for the value.\n   * Example: \"default\", \"system\", \"UTC\", \"America/New_York\".\n   * If you pass values from other timezones to some props, they will be converted to this timezone before being used.\n   * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documentation} for more details.\n   * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.\n   */\n  timezone: PropTypes.string,\n  /**\n   * The selected value.\n   * Used when the component is controlled.\n   */\n  value: PropTypes.object,\n  /**\n   * The visible view.\n   * Used when the component view is controlled.\n   * Must be a valid option from `views` list.\n   */\n  view: PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']),\n  /**\n   * Define custom view renderers for each section.\n   * If `null`, the section will only have field editing.\n   * If `undefined`, internally defined view will be used.\n   */\n  viewRenderers: PropTypes.shape({\n    day: PropTypes.func,\n    hours: PropTypes.func,\n    meridiem: PropTypes.func,\n    minutes: PropTypes.func,\n    month: PropTypes.func,\n    seconds: PropTypes.func,\n    year: PropTypes.func\n  }),\n  /**\n   * Available views.\n   */\n  views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),\n  /**\n   * Years are displayed in ascending (chronological) order by default.\n   * If `desc`, years are displayed in descending order.\n   * @default 'asc'\n   */\n  yearsOrder: PropTypes.oneOf(['asc', 'desc']),\n  /**\n   * Years rendered per row.\n   * @default 4 on desktop, 3 on mobile\n   */\n  yearsPerRow: PropTypes.oneOf([3, 4])\n} : void 0;\nexport { DateTimePicker };","import React from \"react\";\nimport {\n  DateTimePicker as MuiDateTimePicker,\n  DateTimePickerProps as MUIDateTimePickerProps,\n} from \"@mui/x-date-pickers/DateTimePicker\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\nimport { TextFieldProps } from \"@mui/material\";\nimport { Dayjs } from \"dayjs\";\n\n/**\n * ⚠️ DIVERGENCE:\n * We’re intentionally breaking the “no API changes” guideline here.\n *\n * Background:\n * This control isn’t a native MUI component, even though it comes from the @mui scope.\n * Out of the box, the `x-date-pickers` API requires devs to wire validation through `slotProps.textField`,\n * which is inconsistent with the rest of our MUI-like inputs.\n *\n * What:\n * Exposed `error`, `helperText`, and related props directly on the component.\n *\n * Why:\n * - Aligns this component’s API with other inputs in our DS (TextField, Select, Checkbox, etc.).\n * - Matches MUI’s common pattern of accepting `error` and `helperText` at the top level, making it more intuitive.\n * - Simplifies validation wiring, avoiding the need to engage with `slotProps.textField`.\n * - Reduces cognitive overhead and onboarding time for developers familiar with MUI conventions.\n *\n * Approved by Ash & Vee.\n */\n\nexport type DateTimePickerProps = MUIDateTimePickerProps & {\n  textFieldProps?: TextFieldProps;\n  helperText?: string;\n  fullWidth?: boolean;\n  minDateTime?: Dayjs;\n  maxDateTime?: Dayjs;\n  errorMsg?: string;\n  error?: boolean;\n};\n\nconst DateTimePicker: React.FC<DateTimePickerProps> = ({\n  label = \"Select date & time\",\n  helperText,\n  fullWidth = false,\n  textFieldProps = {},\n  errorMsg,\n  error = Boolean(errorMsg),\n  ...rest\n}) => {\n  return (\n    <LocalizationProvider dateAdapter={AdapterDayjs}>\n      <MuiDateTimePicker\n        label={label}\n        slotProps={{\n          textField: {\n            fullWidth,\n            error,\n            helperText: error ? errorMsg : helperText,\n            ...textFieldProps,\n          },\n        }}\n        {...rest}\n        sx={{\n          \"& .MuiYearCalendar-root, & .MuiMonthCalendar-root\": {\n            \"&::-webkit-scrollbar\": {\n              width: 8,\n            },\n            \"&::-webkit-scrollbar-thumb\": {\n              backgroundColor: \"#1976d2\",\n              borderRadius: 4,\n            },\n            \"&::-webkit-scrollbar-track\": {\n              backgroundColor: \"#f0f0f0\",\n            },\n          },\n        }}\n      />\n    </LocalizationProvider>\n  );\n};\n\nexport default DateTimePicker;\n","import React from \"react\";\nimport { Checkbox as MuiCheckbox, CheckboxProps, FormControlLabel } from \"@mui/material\";\nimport { useExtendedTheme } from \"../../../export\";\n\ninterface CustomCheckboxProps extends CheckboxProps {\n  label?: string;\n  required?: boolean;\n}\n\nconst Checkbox: React.FC<CustomCheckboxProps> = ({\n  checked,\n  id,\n  name,\n  label,\n  required = false,\n\n  ...rest\n}) => {\n  const theme = useExtendedTheme();\n\n  return label ? (\n    <FormControlLabel\n      required={required}\n      control={<MuiCheckbox checked={checked} id={id} name={name} {...rest} color=\"primary\" />}\n      label={label}\n    />\n  ) : (\n    <MuiCheckbox checked={checked} id={id} name={name} {...rest} color=\"primary\" />\n  );\n};\n\nexport default Checkbox;\n","import React, { useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport { faCopy } from \"@fortawesome/free-regular-svg-icons\";\nimport Button, { ButtonProps } from \"../Button/Button\";\nimport { useExtendedTheme } from \"../../../export\";\nimport { Tooltip, tooltipClasses } from \"@mui/material\";\n\nexport type CopyToClipboardProps = ButtonProps & {\n  text: string;\n  successMsg?: string;\n  ariaLabel?: string;\n  testFailure?: boolean;\n  style?: String;\n};\n\nconst CopyToClipboard: React.FC<CopyToClipboardProps> = ({\n  text,\n  successMsg = \"Copied!\",\n  ariaLabel = \"copy to clipboard\",\n  testFailure = false,\n  sx,\n}) => {\n  const [icon, setIcon] = useState(faCopy);\n  const [message, setMessage] = useState<string | null>(successMsg);\n  const [open, setOpen] = useState<boolean>(false);\n\n  const theme = useExtendedTheme();\n\n  const handleTooltipClose = () => {\n    setOpen(false);\n  };\n\n  const handleClick = async () => {\n    try {\n      if (testFailure) {\n        throw new Error(\"Simulated clipboard failure\");\n      }\n      await navigator.clipboard.writeText(text);\n      setOpen(true);\n      setIcon(faCheck);\n      setMessage(successMsg);\n\n      setTimeout(() => {\n        setIcon(faCopy);\n        setOpen(false);\n      }, 1500);\n    } catch (error) {\n      const errorMessage = error instanceof Error ? error.message : \"Clipboard write failed\";\n      setMessage(errorMessage);\n      setOpen(true);\n    }\n  };\n\n  return (\n    <Tooltip\n      title={message}\n      onClose={handleTooltipClose}\n      open={open}\n      leaveDelay={1400}\n      arrow\n      placement=\"right\"\n      componentsProps={{\n        tooltip: {\n          sx: {\n            bgcolor: message !== successMsg ? theme.palette.error.main : undefined,\n            [`& .${tooltipClasses.arrow}`]: {\n              color: message !== successMsg ? theme.palette.error.main : undefined,\n            },\n            fontSize: \"0.75rem\",\n          },\n        },\n      }}\n    >\n      <Button\n        variant=\"base\"\n        onClick={handleClick}\n        aria-label={ariaLabel}\n        sx={{ color: theme.palette.primary.main, padding: 0.5, borderRadius: 1, ...sx }}\n      >\n        <FontAwesomeIcon icon={icon} />\n      </Button>\n    </Tooltip>\n  );\n};\n\nexport default CopyToClipboard;\n","import React, { useState } from \"react\";\nimport MUICircularProgress, { CircularProgressProps as MUICircularProgressProps } from \"@mui/material/CircularProgress\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\n\nimport { DownArrowIcon, SearchIcon } from \"../../data-display\";\nimport { FlexBox } from \"../../layout\";\nimport IconButton from \"../../buttons/Button/IconButton\";\n\nexport interface ProgressProps\n  extends Omit<MUICircularProgressProps, \"classes\" | \"color\" | \"size\" | \"sx\" | \"thickness\"> {}\n\nexport interface SearchInputBaseProps\n  extends Omit<\n    React.HTMLAttributes<HTMLDivElement>,\n    \"children\" | \"color\" | \"defaultValue\" | \"onBlur\" | \"onChange\" | \"onFocus\" | \"onInvalid\" | \"onKeyDown\" | \"onKeyUp\"\n  > {\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus?: boolean;\n  /**\n   * If `true`, the `input` will indicate an error.\n   */\n  error?: boolean;\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth?: boolean;\n  /**\n   * Can be used to give context. If ' ' is provided, the component reserves one\n   * line height for displaying a future message.\n   */\n  helperText?: string;\n  /**\n   * The id of the `input` element.\n   */\n  id?: string;\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef?: React.Ref<any>;\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows?: string | number;\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows?: string | number;\n  /**\n   * If true, a text area auto size element will be rendered\n   * @default false;\n   */\n  multiline?: boolean;\n  /**\n   * Name attribute of the `input` element.\n   */\n  name?: string;\n  /**\n   * Callback fired when the `input` is blurred.\n   *\n   * `(event: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement>) => void;`\n   * Note: The first argument (event) might be undefined.\n   */\n  onBlur?: React.FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n  /**\n   * Callback fired when the value is changed\n   *\n   * `(event: React.ChangeEvent) => void`\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange?: React.ChangeEventHandler<HTMLTextAreaElement | HTMLInputElement>;\n  /**\n   * `(event: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement>) => void;`\n   */\n  onFocus?: React.FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n  /**\n   * `(event: React.KeyboardEvent<HTMLTextAreaElement | HTMLInputElement>) => void;`\n   */\n  onKeyDown?: React.KeyboardEventHandler<HTMLTextAreaElement | HTMLInputElement>;\n  /**\n   * `(event: React.KeyboardEvent<HTMLTextAreaElement | HTMLInputElement>) => void;`\n   */\n  onKeyUp?: React.KeyboardEventHandler<HTMLTextAreaElement | HTMLInputElement>;\n  /**\n   * Callback fired when the `input` doesn't satisfy its constraints.\n   *\n   * `(event: React.FormEvent<HTMLTextAreaElement | HTMLInputElement>) => void;`\n   */\n  onInvalid?: React.FormEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n  /**\n   * The short hint displayed in the input before the user enters a value.\n   */\n  placeholder?: string;\n  /**\n   * Props which will be applied to the circular progress indicator when loading\n   * is set to true\n   */\n  progressProps?: ProgressProps;\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows?: string | number;\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value?: unknown;\n  /**\n   * If `true`, disables the entire control (input and action button).\n   */\n  disabled?: boolean;\n}\n\nexport interface MiniSearchBoxProps extends SearchInputBaseProps {\n  /**\n   * If true, a loading indicator will be visible\n   */\n  loading?: boolean;\n  /**\n   * Element placed after the search icon\n   */\n  endIcon?: React.ReactNode;\n  /**\n   * Callback fired when the search button is clicked\n   *\n   * `(event: React.MouseEvent<HTMLButtonElement>) => void;`\n   */\n  onSearch?: React.MouseEventHandler<HTMLButtonElement>;\n  /**\n   * Callback fired when the down arrow button is clicked\n   *\n   * `(event: React.MouseEvent<HTMLButtonElement>) => void;`\n   */\n  onTogglePopOver?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\n// NOTE: Not being exported, use MiniSearchAutocomplete instead\nconst MiniSearchBox = (props: MiniSearchBoxProps) => {\n  const { loading = false, endIcon, onSearch, onTogglePopOver, onFocus, onBlur, progressProps, disabled, ...inputProps } =\n    props;\n\n  const [isFocused, setIsFocused] = useState(false);\n\n  const handleOnFocus = (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n    setIsFocused(true);\n\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n\n  const handleOnBlur = (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n    setIsFocused(false);\n\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n\n  return (\n    <OutlinedInput\n      size=\"small\"\n      type=\"search\"\n      disabled={disabled}\n      endAdornment={\n        <>\n          <FlexBox direction=\"row\" spacing={0.5}>\n            {loading ? (\n              <MUICircularProgress color={isFocused ? \"primary\" : \"inherit\"} size=\"20px\" {...progressProps} />\n            ) : (\n              <IconButton\n                size=\"small\"\n                onClick={onSearch}\n                color={isFocused ? \"primary\" : undefined}\n                aria-label=\"search\"\n                disabled={disabled}\n              >\n                <SearchIcon fontSize=\"inherit\" />\n              </IconButton>\n            )}\n            {endIcon}\n          </FlexBox>\n        </>\n      }\n      onFocus={handleOnFocus}\n      onBlur={handleOnBlur}\n      {...inputProps}\n    />\n  );\n};\n\nexport default MiniSearchBox;","import React, { forwardRef } from \"react\";\nimport { styled } from \"@mui/system\";\nimport useAutocomplete, { UseAutocompleteProps } from \"@mui/material/useAutocomplete\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport MUICircularProgress from \"@mui/material/CircularProgress\";\nimport MUIPopper from \"@mui/material/Popper\";\nimport MUIPaper from \"@mui/material/Paper\";\nimport MUIList from \"@mui/material/List\";\nimport MUIListItem from \"@mui/material/ListItem\";\nimport MUIListItemText from \"@mui/material/ListItemText\";\nimport MUIListItemButton from \"@mui/material/ListItemButton\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faClockRotateLeft } from \"@fortawesome/free-solid-svg-icons\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { useForkRef } from \"@mui/material/utils\";\n\nimport FlexBox from \"../../layout/FlexBox\";\nimport IconButton from \"../../buttons/Button/IconButton\";\nimport SearchIcon from \"../../data-display/FontAwesomeIcons/SearchIcon\";\nimport { ProgressProps } from \"./MiniSearchBox\";\n\nconst StyledPopper = styled(\"div\")({\n  position: \"relative\",\n  width: 360,\n});\n\ntype AutocompleteOption = { label: string; isRecentSearch: boolean };\n\nexport interface MiniSearchAutocompleteProps<\n  Value extends AutocompleteOption = AutocompleteOption,\n  Multiple extends boolean = false,\n  DisableClearable extends boolean = false,\n  FreeSolo extends boolean = false\n> extends UseAutocompleteProps<Value, Multiple, DisableClearable, FreeSolo> {\n  /**\n   * Element placed after the search icon\n   */\n  endIcon?: React.ReactNode;\n  /**\n   * If `true`, the `input` will indicate an error.\n   */\n  error?: boolean;\n  /**\n   * The id of the `input` element.\n   */\n  id?: string;\n  /**\n   * If true, a loading indicator will be visible.\n   */\n  loading?: boolean;\n  /**\n   * If `true`, disables the entire control (input, popper trigger, and action).\n   */\n  disabled?: boolean;\n  /**\n   * Name attribute of the input element.\n   */\n  name?: string;\n  /**\n   * \tThe short hint displayed in the input before the user enters a value.\n   */\n  placeholder?: string;\n  /**\n   * Props which will be applied to the circular progress indicator when loading\n   * is set to true\n   */\n  progressProps?: ProgressProps;\n  /**\n   * Render the option\n   * @param props The props to apply on the li element.\n   * @param option The option to render.\n   * @returns\n   */\n  renderOption?: (\n    props: React.HTMLAttributes<HTMLLIElement> & {\n      key: any;\n    },\n    option: Value\n  ) => React.ReactNode;\n  /**\n   * Callback fired when the search button is clicked\n   *\n   * `(event: React.MouseEvent<HTMLButtonElement>) => void;`\n   */\n  onSearch?: React.MouseEventHandler<HTMLElement>;\n  /**\n   * Callback fired when the a key is pressed\n   *\n   * `(event: React.KeyboardEvent<HTMLButtonElement>) => void;`\n   */\n  onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n}\n\nconst MiniSearchAutocomplete = forwardRef(function Autocomplete<\n  Value extends AutocompleteOption = AutocompleteOption,\n  Multiple extends boolean = false,\n  DisableClearable extends boolean = false,\n  FreeSolo extends boolean = false\n>(\n  props: MiniSearchAutocompleteProps<Value, Multiple, DisableClearable, FreeSolo>,\n  ref: React.ForwardedRef<HTMLDivElement>\n) {\n  const {\n    endIcon,\n    error,\n    id,\n    loading,\n    disabled,\n    name,\n    placeholder,\n    progressProps,\n    renderOption,\n    onSearch,\n    onKeyDown,\n    freeSolo = true as FreeSolo,\n    ...autocompleteProps\n  } = props;\n\n  const theme = useTheme();\n\n  const {\n    getRootProps,\n    getInputProps,\n    getListboxProps,\n    getOptionProps,\n    popupOpen,\n    anchorEl,\n    setAnchorEl,\n    groupedOptions,\n  } = useAutocomplete<Value, Multiple, DisableClearable, FreeSolo>({\n    freeSolo,\n    ...autocompleteProps,\n  });\n\n  const cancelIcon = `url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='${encodeURIComponent(\n    theme.palette.primary.main\n  )}'><path d='M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z'/></svg>\") no-repeat center`;\n\n  const rootRef = useForkRef(ref, setAnchorEl);\n\n  return (\n    <div>\n      <OutlinedInput\n        ref={rootRef}\n        slotProps={{ root: { ...getRootProps() } }}\n        // ensure the native input has the disabled attribute (for .toBeDisabled())\n        inputProps={{ ...getInputProps(), disabled }}\n        size=\"small\"\n        type=\"search\"\n        disabled={disabled}\n        sx={{\n          width: 360, // Style the native clear (\"X\") icon\n          '& input[type=\"search\"]::-webkit-search-cancel-button': {\n            WebkitAppearance: \"none\",\n            height: \"1em\",\n            width: \"1em\",\n            cursor: \"pointer\",\n            background: cancelIcon,\n          },\n        }}\n        id={id}\n        onKeyDown={onKeyDown}\n        name={name}\n        error={error}\n        endAdornment={\n          <>\n            <FlexBox direction=\"row\" spacing={0.5}>\n              {loading ? (\n                <MUICircularProgress id=\"loading\" size=\"20px\" {...progressProps} />\n              ) : (\n                <IconButton size=\"small\" onClick={onSearch} aria-label=\"search\" disabled={disabled}>\n                  <SearchIcon fontSize=\"inherit\" />\n                </IconButton>\n              )}\n              {endIcon}\n            </FlexBox>\n          </>\n        }\n        placeholder={placeholder || \"Search\"}\n      />\n      {anchorEl && (\n        <MUIPopper open={popupOpen && !disabled} anchorEl={anchorEl} slots={{ root: StyledPopper }}>\n          {(groupedOptions as Value[]).length > 0 ? (\n            <MUIPaper\n              elevation={3}\n              sx={{\n                backgroundColor: theme.palette.mode === \"dark\" ? \"#2A2A2A\" : \"#eee\",\n                backgroundImage: \"none\",\n                width: 360,\n                padding: 2,\n                marginTop: 1,\n              }}\n            >\n              <FlexBox rowGap={1}>\n                <MUIList sx={{ maxHeight: 400, overflow: \"auto\" }} {...getListboxProps()}>\n                  {(groupedOptions as Value[]).map((option, index) => {\n                    const optionProps = getOptionProps({\n                      option,\n                      index,\n                    });\n\n                    if (renderOption) {\n                      return renderOption(optionProps, option);\n                    }\n\n                    const { key, ...props } = optionProps;\n                    return (\n                      <MUIListItem key={`${key}-${index}`} disablePadding {...props}>\n                        <MUIListItemButton\n                          disabled={disabled}\n                          onClick={(event) => {\n                            if (disabled) return;\n                            if (onSearch) {\n                              onSearch(event);\n                            }\n                          }}\n                        >\n                          <FlexBox direction=\"row\" columnGap={1} alignItems=\"center\">\n                            {option.isRecentSearch ? <FontAwesomeIcon icon={faClockRotateLeft} /> : null}\n                            <MUIListItemText primary={option.label} />\n                          </FlexBox>\n                        </MUIListItemButton>\n                      </MUIListItem>\n                    );\n                  })}\n                </MUIList>\n              </FlexBox>\n            </MUIPaper>\n          ) : null}\n        </MUIPopper>\n      )}\n    </div>\n  );\n});\n\n// preserve generic component signature so stories can still use `<MiniSearchAutocomplete<...>>`\nexport default MiniSearchAutocomplete as <\n  Value extends AutocompleteOption = AutocompleteOption,\n  Multiple extends boolean = false,\n  DisableClearable extends boolean = false,\n  FreeSolo extends boolean = false\n>(\n  props: MiniSearchAutocompleteProps<Value, Multiple, DisableClearable, FreeSolo> & {\n    ref?: React.Ref<HTMLDivElement>;\n  }\n) => React.ReactElement | null;","import React from \"react\";\nimport Box from \"@mui/material/Box\";\nimport InputBase, { InputBaseProps } from \"@mui/material/InputBase\";\nimport PrimaryButton from \"../../buttons/Button/PrimaryButton\";\nimport { SearchIcon } from \"../../data-display\";\nimport { SxProps } from \"@mui/material\";\n\nexport interface SearchBoxProps<Value = string> extends React.ComponentProps<typeof InputBase> {\n  /**\n   * If true, the input element is focused during the first mount.\n   */\n  autoFocus?: boolean;\n  /**\n   * \tPass a ref to the input element.\n   */\n  inputRef?: React.ForwardedRef<HTMLInputElement> | React.RefObject<HTMLInputElement>;\n  /**\n   * Callback fired when the input looses focus (i.e. blurred).\n   * Notice that the first argument (event) might be undefined.\n   * @param event\n   * @returns void\n   */\n  onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n  /**\n   * Callback fired when the value is changed.\n   * @param event The event source of the callback. You can pull out the new value by accessing event.target.value (string).\n   * @returns void\n   */\n  onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n  /**\n   * Callback fired when the search button is clicked.\n   * @param event\n   * @returns\n   */\n  onSearch?: (event: React.SubmitEvent<HTMLFormElement>) => void;\n  /**\n   * Name attribute of the input element.\n   */\n  name?: InputBaseProps[\"name\"];\n  /**\n   * The short hint displayed in the input before the user enters a value.\n   */\n  placeholder?: InputBaseProps[\"placeholder\"];\n  /**\n   * The value of the input element, required for a controlled component.\n   */\n  value?: Value;\n  width?: number;\n  sx?: SxProps;\n}\n\nexport const SearchBox: React.FC<SearchBoxProps> = ({\n  autoFocus = false,\n  placeholder = \"Search\",\n  inputRef,\n  name,\n  value,\n  onBlur,\n  onChange,\n  onSearch,\n  disabled,\n  width = 600,\n  sx,\n  ...rest\n}) => (\n  <Box height={44} width={width} display=\"flex\" alignItems=\"center\" component=\"form\" onSubmit={onSearch}>\n    <InputBase\n      data-test-handle=\"search-box-input\"\n      type=\"search\"\n      sx={{\n        height: \"100%\",\n        width: \"100%\",\n        borderWidth: 1,\n        borderRightWidth: 0,\n        borderColor: \"#6D6D6D\",\n        borderStyle: \"solid\",\n        borderTopLeftRadius: 4,\n        borderBottomLeftRadius: 4,\n        ...sx,\n      }}\n      inputProps={{ sx: { paddingInline: 1.5 } }}\n      ref={inputRef}\n      autoFocus={autoFocus}\n      placeholder={placeholder}\n      onBlur={onBlur}\n      onChange={onChange}\n      value={value}\n      name={name}\n      disabled={disabled}\n      {...rest}\n    />\n    <PrimaryButton\n      data-test-handle=\"search-box-button\"\n      aria-label=\"search\"\n      type=\"submit\"\n      disabled={disabled}\n      sx={{\n        borderTopLeftRadius: 0,\n        borderBottomLeftRadius: 0,\n        borderTopRightRadius: 4,\n        borderBottomRightRadius: 4,\n        height: \"100%\",\n      }}\n      disableElevation\n    >\n      <SearchIcon size=\"xl\" />\n    </PrimaryButton>\n  </Box>\n);\n\nexport default SearchBox;\n","import React from \"react\";\nimport MUICard, { CardProps as MUICardProps } from \"@mui/material/Card\";\nimport MUICardHeader, { CardHeaderProps as MUICardHeaderProps } from \"@mui/material/CardHeader\";\n\ntype CardProps = Omit<MUICardProps, \"classes\" | \"raised\"> &\n  Partial<{\n    maxWidth: React.CSSProperties[\"maxWidth\"];\n  }>;\n\nconst Card: React.FC<CardProps> = ({ maxWidth, ...cardProps }) => (\n  <MUICard className=\"Panel\" sx={{ maxWidth }} {...cardProps} />\n);\n\nconst CardHeader: React.FC<MUICardHeaderProps> = (cardHeaderProps) => <MUICardHeader {...cardHeaderProps} />;\n\nexport default Card;\nexport { Card };\nexport { CardHeader };\n","import React, { PropsWithChildren } from \"react\";\nimport MUICardContent from \"@mui/material/CardContent\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\n\ninterface CardContentProps extends PropsWithChildren {\n  sx?: SxProps<Theme>;\n}\n\nconst CardContent: React.FC<CardContentProps> = ({ children, sx }) => (\n  <MUICardContent sx={sx}>{children}</MUICardContent>\n);\n\nexport default CardContent;\n","import React, { PropsWithChildren } from \"react\";\nimport MUICardAction from \"@mui/material/CardActions\";\n\nconst CardActions: React.FC<PropsWithChildren> = ({ children }) => (\n  <MUICardAction>{children}</MUICardAction>\n);\n\nexport default CardActions;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array<any> | TouchList*/, callback /*: Function*/) /*: any*/{\n  for (let i = 0, length = array.length; i < length; i++) {\n    if (callback.apply(callback, [array[i], i, array])) return array[i];\n  }\n}\nfunction isFunction(func /*: any*/) /*: boolean %checks*/{\n  // $FlowIgnore[method-unbinding]\n  return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nfunction isNum(num /*: any*/) /*: boolean %checks*/{\n  return typeof num === 'number' && !isNaN(num);\n}\nfunction int(a /*: string*/) /*: number*/{\n  return parseInt(a, 10);\n}\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{\n  if (props[propName]) {\n    return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/{\n  var _window$document;\n  let prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n  // Ensure we're running in an environment where there is actually a global\n  // `window` obj\n  if (typeof window === 'undefined') return '';\n\n  // If we're in a pseudo-browser server-side environment, this access\n  // path may not exist, so bail out if it doesn't.\n  const style = (_window$document = window.document) === null || _window$document === void 0 || (_window$document = _window$document.documentElement) === null || _window$document === void 0 ? void 0 : _window$document.style;\n  if (!style) return '';\n  if (prop in style) return '';\n  for (let i = 0; i < prefixes.length; i++) {\n    if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n  }\n  return '';\n}\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{\n  return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{\n  return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\nfunction kebabToTitleCase(str /*: string*/) /*: string*/{\n  let out = '';\n  let shouldCapitalize = true;\n  for (let i = 0; i < str.length; i++) {\n    if (shouldCapitalize) {\n      out += str[i].toUpperCase();\n      shouldCapitalize = false;\n    } else if (str[i] === '-') {\n      shouldCapitalize = true;\n    } else {\n      out += str[i];\n    }\n  }\n  return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nvar _default = exports.default = (getPrefix() /*: string*/);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nvar _shims = require(\"./shims\");\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\nlet matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{\n  if (!matchesSelectorFunc) {\n    matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n      // $FlowIgnore: Doesn't think elements are indexable\n      return (0, _shims.isFunction)(el[method]);\n    });\n  }\n\n  // Might not be found entirely (not an Element?) - in that case, bail\n  // $FlowIgnore: Doesn't think elements are indexable\n  if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n  // $FlowIgnore: Doesn't think elements are indexable\n  return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{\n  let node = el;\n  do {\n    if (matchesSelector(node, selector)) return true;\n    if (node === baseNode) return false;\n    // $FlowIgnore[incompatible-type]\n    node = node.parentNode;\n  } while (node);\n  return false;\n}\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n  if (!el) return;\n  const options = {\n    capture: true,\n    ...inputOptions\n  };\n  // $FlowIgnore[method-unbinding]\n  if (el.addEventListener) {\n    el.addEventListener(event, handler, options);\n  } else if (el.attachEvent) {\n    el.attachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = handler;\n  }\n}\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n  if (!el) return;\n  const options = {\n    capture: true,\n    ...inputOptions\n  };\n  // $FlowIgnore[method-unbinding]\n  if (el.removeEventListener) {\n    el.removeEventListener(event, handler, options);\n  } else if (el.detachEvent) {\n    el.detachEvent('on' + event, handler);\n  } else {\n    // $FlowIgnore: Doesn't think elements are indexable\n    el['on' + event] = null;\n  }\n}\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetTop which is including margin. See getBoundPosition\n  let height = node.clientHeight;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height += (0, _shims.int)(computedStyle.borderTopWidth);\n  height += (0, _shims.int)(computedStyle.borderBottomWidth);\n  return height;\n}\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/{\n  // This is deliberately excluding margin for our calculations, since we are using\n  // offsetLeft which is including margin. See getBoundPosition\n  let width = node.clientWidth;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width += (0, _shims.int)(computedStyle.borderLeftWidth);\n  width += (0, _shims.int)(computedStyle.borderRightWidth);\n  return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/{\n  let height = node.clientHeight;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  height -= (0, _shims.int)(computedStyle.paddingTop);\n  height -= (0, _shims.int)(computedStyle.paddingBottom);\n  return height;\n}\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/{\n  let width = node.clientWidth;\n  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n  width -= (0, _shims.int)(computedStyle.paddingLeft);\n  width -= (0, _shims.int)(computedStyle.paddingRight);\n  return width;\n}\n/*:: interface EventWithOffset {\n  clientX: number, clientY: number\n}*/\n// Get from offsetParent\nfunction offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{\n  const isBody = offsetParent === offsetParent.ownerDocument.body;\n  const offsetParentRect = isBody ? {\n    left: 0,\n    top: 0\n  } : offsetParent.getBoundingClientRect();\n  const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n  const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n  return {\n    x,\n    y\n  };\n}\nfunction createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{\n  const translation = getTranslation(controlPos, positionOffset, 'px');\n  return {\n    [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n  };\n}\nfunction createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{\n  const translation = getTranslation(controlPos, positionOffset, '');\n  return translation;\n}\nfunction getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{\n  let {\n    x,\n    y\n  } /*: ControlPosition*/ = _ref /*: ControlPosition*/;\n  let translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n  if (positionOffset) {\n    const defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n    const defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n    translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n  }\n  return translation;\n}\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{\n  return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{\n  if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n  if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n  if (!doc) return;\n  let styleEl = doc.getElementById('react-draggable-style-el');\n  if (!styleEl) {\n    styleEl = doc.createElement('style');\n    styleEl.type = 'text/css';\n    styleEl.id = 'react-draggable-style-el';\n    styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n    styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n    doc.getElementsByTagName('head')[0].appendChild(styleEl);\n  }\n  if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n  if (!doc) return;\n  try {\n    if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n    // $FlowIgnore: IE\n    if (doc.selection) {\n      // $FlowIgnore: IE\n      doc.selection.empty();\n    } else {\n      // Remove selection caused by scroll, unless it's a focused input\n      // (we use doc.defaultView in case we're in an iframe)\n      const selection = (doc.defaultView || window).getSelection();\n      if (selection && selection.type !== 'Caret') {\n        selection.removeAllRanges();\n      }\n    }\n  } catch (e) {\n    // probably IE\n  }\n}\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\n  if (el.classList) {\n    el.classList.add(className);\n  } else {\n    if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n      el.className += \" \".concat(className);\n    }\n  }\n}\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\n  if (el.classList) {\n    el.classList.remove(className);\n  } else {\n    el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\nvar _shims = require(\"./shims\");\nvar _domFns = require(\"./domFns\");\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{\n  // If no bounds, short-circuit and move on\n  if (!draggable.props.bounds) return [x, y];\n\n  // Clone new bounds\n  let {\n    bounds\n  } = draggable.props;\n  bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n  const node = findDOMNode(draggable);\n  if (typeof bounds === 'string') {\n    const {\n      ownerDocument\n    } = node;\n    const ownerWindow = ownerDocument.defaultView;\n    let boundNode;\n    if (bounds === 'parent') {\n      boundNode = node.parentNode;\n    } else {\n      boundNode = ownerDocument.querySelector(bounds);\n    }\n    if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n      throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n    }\n    const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly\n    const nodeStyle = ownerWindow.getComputedStyle(node);\n    const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);\n    // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n    bounds = {\n      left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n      top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n      right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n      bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n    };\n  }\n\n  // Keep x and y below right and bottom limits...\n  if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n  if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n  // But above left and top limits.\n  if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n  if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n  return [x, y];\n}\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{\n  const x = Math.round(pendingX / grid[0]) * grid[0];\n  const y = Math.round(pendingY / grid[1]) * grid[1];\n  return [x, y];\n}\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/{\n  return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{\n  const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n  if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n  const node = findDOMNode(draggableCore);\n  // User can provide an offsetParent if desired.\n  const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n  return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n}\n\n// Create an data object exposed by <DraggableCore>'s events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{\n  const isStart = !(0, _shims.isNum)(draggable.lastX);\n  const node = findDOMNode(draggable);\n  if (isStart) {\n    // If this is our first move, use the x and y as last coords.\n    return {\n      node,\n      deltaX: 0,\n      deltaY: 0,\n      lastX: x,\n      lastY: y,\n      x,\n      y\n    };\n  } else {\n    // Otherwise calculate proper values.\n    return {\n      node,\n      deltaX: x - draggable.lastX,\n      deltaY: y - draggable.lastY,\n      lastX: draggable.lastX,\n      lastY: draggable.lastY,\n      x,\n      y\n    };\n  }\n}\n\n// Create an data exposed by <Draggable>'s events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{\n  const scale = draggable.props.scale;\n  return {\n    node: coreData.node,\n    x: draggable.state.x + coreData.deltaX / scale,\n    y: draggable.state.y + coreData.deltaY / scale,\n    deltaX: coreData.deltaX / scale,\n    deltaY: coreData.deltaY / scale,\n    lastX: draggable.state.x,\n    lastY: draggable.state.y\n  };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{\n  return {\n    left: bounds.left,\n    top: bounds.top,\n    right: bounds.right,\n    bottom: bounds.bottom\n  };\n}\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{\n  const node = draggable.findDOMNode();\n  if (!node) {\n    throw new Error('<DraggableCore>: Unmounted during event!');\n  }\n  // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n  return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = log;\n/*eslint no-console:0*/\nfunction log() {\n  if (undefined) console.log(...arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n  touch: {\n    start: 'touchstart',\n    move: 'touchmove',\n    stop: 'touchend'\n  },\n  mouse: {\n    start: 'mousedown',\n    move: 'mousemove',\n    stop: 'mouseup'\n  }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n/*:: export type DraggableData = {\n  node: HTMLElement,\n  x: number, y: number,\n  deltaX: number, deltaY: number,\n  lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n/*:: export type DraggableCoreDefaultProps = {\n  allowAnyClick: boolean,\n  disabled: boolean,\n  enableUserSelectHack: boolean,\n  onStart: DraggableEventHandler,\n  onDrag: DraggableEventHandler,\n  onStop: DraggableEventHandler,\n  onMouseDown: (e: MouseEvent) => void,\n  scale: number,\n};*/\n/*:: export type DraggableCoreProps = {\n  ...DraggableCoreDefaultProps,\n  cancel: string,\n  children: ReactElement<any>,\n  offsetParent: HTMLElement,\n  grid: [number, number],\n  handle: string,\n  nodeRef?: ?React.ElementRef<any>,\n};*/\n//\n// Define <DraggableCore>.\n//\n// <DraggableCore> is for advanced usage of <Draggable>. It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nclass DraggableCore extends React.Component /*:: <DraggableCoreProps>*/{\n  constructor() {\n    super(...arguments);\n    _defineProperty(this, \"dragging\", false);\n    // Used while dragging to determine deltas.\n    _defineProperty(this, \"lastX\", NaN);\n    _defineProperty(this, \"lastY\", NaN);\n    _defineProperty(this, \"touchIdentifier\", null);\n    _defineProperty(this, \"mounted\", false);\n    _defineProperty(this, \"handleDragStart\", e => {\n      // Make it possible to attach event handlers on top of this one.\n      this.props.onMouseDown(e);\n\n      // Only accept left-clicks.\n      if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n      // Get nodes. Be sure to grab relative document (could be iframed)\n      const thisNode = this.findDOMNode();\n      if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n        throw new Error('<DraggableCore> not mounted on DragStart!');\n      }\n      const {\n        ownerDocument\n      } = thisNode;\n\n      // Short circuit if handle or cancel prop was provided and selector doesn't match.\n      if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n        return;\n      }\n\n      // Prevent scrolling on mobile devices, like ipad/iphone.\n      // Important that this is after handle/cancel.\n      if (e.type === 'touchstart') e.preventDefault();\n\n      // Set touch identifier in component state if this is a touch event. This allows us to\n      // distinguish between individual touches on multitouch screens by identifying which\n      // touchpoint was set to this element.\n      const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n      this.touchIdentifier = touchIdentifier;\n\n      // Get the current drag point from the event. This is used as the offset.\n      const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n      if (position == null) return; // not possible but satisfies flow\n      const {\n        x,\n        y\n      } = position;\n\n      // Create an event object with all the data parents need to make a decision here.\n      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n      (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n      // Call event handler. If it returns explicit false, cancel.\n      (0, _log.default)('calling', this.props.onStart);\n      const shouldUpdate = this.props.onStart(e, coreEvent);\n      if (shouldUpdate === false || this.mounted === false) return;\n\n      // Add a style to the body to disable user-select. This prevents text from\n      // being selected all over the page.\n      if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n      // Initiate dragging. Set the current x and y as offsets\n      // so we know how much we've moved during the drag. This allows us\n      // to drag elements around even if they have been moved, without issue.\n      this.dragging = true;\n      this.lastX = x;\n      this.lastY = y;\n\n      // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n      // this element. We use different events depending on whether or not we have detected that this\n      // is a touch-capable device.\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n      (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n    });\n    _defineProperty(this, \"handleDrag\", e => {\n      // Get the current drag point from the event. This is used as the offset.\n      const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n      if (position == null) return;\n      let {\n        x,\n        y\n      } = position;\n\n      // Snap to grid if prop has been provided\n      if (Array.isArray(this.props.grid)) {\n        let deltaX = x - this.lastX,\n          deltaY = y - this.lastY;\n        [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n        if (!deltaX && !deltaY) return; // skip useless drag\n        x = this.lastX + deltaX, y = this.lastY + deltaY;\n      }\n      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n      (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n      // Call event handler. If it returns explicit false, trigger end.\n      const shouldUpdate = this.props.onDrag(e, coreEvent);\n      if (shouldUpdate === false || this.mounted === false) {\n        try {\n          // $FlowIgnore\n          this.handleDragStop(new MouseEvent('mouseup'));\n        } catch (err) {\n          // Old browsers\n          const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n          // I see why this insanity was deprecated\n          // $FlowIgnore\n          event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n          this.handleDragStop(event);\n        }\n        return;\n      }\n      this.lastX = x;\n      this.lastY = y;\n    });\n    _defineProperty(this, \"handleDragStop\", e => {\n      if (!this.dragging) return;\n      const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n      if (position == null) return;\n      let {\n        x,\n        y\n      } = position;\n\n      // Snap to grid if prop has been provided\n      if (Array.isArray(this.props.grid)) {\n        let deltaX = x - this.lastX || 0;\n        let deltaY = y - this.lastY || 0;\n        [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n        x = this.lastX + deltaX, y = this.lastY + deltaY;\n      }\n      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n      // Call event handler\n      const shouldContinue = this.props.onStop(e, coreEvent);\n      if (shouldContinue === false || this.mounted === false) return false;\n      const thisNode = this.findDOMNode();\n      if (thisNode) {\n        // Remove user-select hack\n        if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n      }\n      (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n      // Reset the el.\n      this.dragging = false;\n      this.lastX = NaN;\n      this.lastY = NaN;\n      if (thisNode) {\n        // Remove event handlers\n        (0, _log.default)('DraggableCore: Removing handlers');\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n      }\n    });\n    _defineProperty(this, \"onMouseDown\", e => {\n      dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n      return this.handleDragStart(e);\n    });\n    _defineProperty(this, \"onMouseUp\", e => {\n      dragEventFor = eventsFor.mouse;\n      return this.handleDragStop(e);\n    });\n    // Same as onMouseDown (start drag), but now consider this a touch device.\n    _defineProperty(this, \"onTouchStart\", e => {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return this.handleDragStart(e);\n    });\n    _defineProperty(this, \"onTouchEnd\", e => {\n      // We're on a touch device now, so change the event handlers\n      dragEventFor = eventsFor.touch;\n      return this.handleDragStop(e);\n    });\n  }\n  componentDidMount() {\n    this.mounted = true;\n    // Touch handlers must be added with {passive: false} to be cancelable.\n    // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n    const thisNode = this.findDOMNode();\n    if (thisNode) {\n      (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n        passive: false\n      });\n    }\n  }\n  componentWillUnmount() {\n    this.mounted = false;\n    // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n    // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n    const thisNode = this.findDOMNode();\n    if (thisNode) {\n      const {\n        ownerDocument\n      } = thisNode;\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n      (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n      (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n        passive: false\n      });\n      if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n    }\n  }\n\n  // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n  // the underlying DOM node ourselves. See the README for more information.\n  findDOMNode() /*: ?HTMLElement*/{\n    var _this$props, _this$props2;\n    return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 || (_this$props2 = _this$props2.nodeRef) === null || _this$props2 === void 0 ? void 0 : _this$props2.current : _reactDom.default.findDOMNode(this);\n  }\n  render() /*: React.Element<any>*/{\n    // Reuse the child provided\n    // This makes it flexible to use whatever element is wanted (div, ul, etc)\n    return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n      // Note: mouseMove handler is attached to document so it will still function\n      // when the user drags quickly and leaves the bounds of the element.\n      onMouseDown: this.onMouseDown,\n      onMouseUp: this.onMouseUp,\n      // onTouchStart is added on `componentDidMount` so they can be added with\n      // {passive: false}, which allows it to cancel. See\n      // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n      onTouchEnd: this.onTouchEnd\n    });\n  }\n}\nexports.default = DraggableCore;\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n_defineProperty(DraggableCore, \"propTypes\", {\n  /**\n   * `allowAnyClick` allows dragging using any mouse button.\n   * By default, we only accept the left button.\n   *\n   * Defaults to `false`.\n   */\n  allowAnyClick: _propTypes.default.bool,\n  children: _propTypes.default.node.isRequired,\n  /**\n   * `disabled`, if true, stops the <Draggable> from dragging. All handlers,\n   * with the exception of `onMouseDown`, will not fire.\n   */\n  disabled: _propTypes.default.bool,\n  /**\n   * By default, we add 'user-select:none' attributes to the document body\n   * to prevent ugly text selection during drag. If this is causing problems\n   * for your app, set this to `false`.\n   */\n  enableUserSelectHack: _propTypes.default.bool,\n  /**\n   * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n   * instead of using the parent node.\n   */\n  offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys<DraggableCoreProps>*/) {\n    if (props[propName] && props[propName].nodeType !== 1) {\n      throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n    }\n  },\n  /**\n   * `grid` specifies the x and y that dragging should snap to.\n   */\n  grid: _propTypes.default.arrayOf(_propTypes.default.number),\n  /**\n   * `handle` specifies a selector to be used as the handle that initiates drag.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable handle=\".handle\">\n   *              <div>\n   *                  <div className=\"handle\">Click me to drag</div>\n   *                  <div>This is some other content</div>\n   *              </div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  handle: _propTypes.default.string,\n  /**\n   * `cancel` specifies a selector to be used to prevent drag initialization.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *           return(\n   *               <Draggable cancel=\".cancel\">\n   *                   <div>\n   *                     <div className=\"cancel\">You can't drag from here</div>\n   *                     <div>Dragging here works fine</div>\n   *                   </div>\n   *               </Draggable>\n   *           );\n   *       }\n   *   });\n   * ```\n   */\n  cancel: _propTypes.default.string,\n  /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n   * Unfortunately, in order for <Draggable> to work properly, we need raw access\n   * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n   * as in this example:\n   *\n   * function MyComponent() {\n   *   const nodeRef = React.useRef(null);\n   *   return (\n   *     <Draggable nodeRef={nodeRef}>\n   *       <div ref={nodeRef}>Example Target</div>\n   *     </Draggable>\n   *   );\n   * }\n   *\n   * This can be used for arbitrarily nested components, so long as the ref ends up\n   * pointing to the actual child DOM node and not a custom component.\n   */\n  nodeRef: _propTypes.default.object,\n  /**\n   * Called when dragging starts.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onStart: _propTypes.default.func,\n  /**\n   * Called while dragging.\n   * If this function returns the boolean false, dragging will be canceled.\n   */\n  onDrag: _propTypes.default.func,\n  /**\n   * Called when dragging stops.\n   * If this function returns the boolean false, the drag will remain active.\n   */\n  onStop: _propTypes.default.func,\n  /**\n   * A workaround option which can be passed if onMouseDown needs to be accessed,\n   * since it'll always be blocked (as there is internal use of onMouseDown)\n   */\n  onMouseDown: _propTypes.default.func,\n  /**\n   * `scale`, if set, applies scaling while dragging an element\n   */\n  scale: _propTypes.default.number,\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n});\n_defineProperty(DraggableCore, \"defaultProps\", {\n  allowAnyClick: false,\n  // by default only accept left click\n  disabled: false,\n  enableUserSelectHack: true,\n  onStart: function () {},\n  onDrag: function () {},\n  onStop: function () {},\n  onMouseDown: function () {},\n  scale: 1\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n  enumerable: true,\n  get: function () {\n    return _DraggableCore.default;\n  }\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\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); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); } /*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableCoreProps, DraggableCoreDefaultProps} from './DraggableCore';*/\n/*:: import type {Bounds, DraggableEventHandler} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n/*:: type DraggableState = {\n  dragging: boolean,\n  dragged: boolean,\n  x: number, y: number,\n  slackX: number, slackY: number,\n  isElementSVG: boolean,\n  prevPropsPosition: ?ControlPosition,\n};*/\n/*:: export type DraggableDefaultProps = {\n  ...DraggableCoreDefaultProps,\n  axis: 'both' | 'x' | 'y' | 'none',\n  bounds: Bounds | string | false,\n  defaultClassName: string,\n  defaultClassNameDragging: string,\n  defaultClassNameDragged: string,\n  defaultPosition: ControlPosition,\n  scale: number,\n};*/\n/*:: export type DraggableProps = {\n  ...DraggableCoreProps,\n  ...DraggableDefaultProps,\n  positionOffset: PositionOffsetControlPosition,\n  position: ControlPosition,\n};*/\n//\n// Define <Draggable>\n//\nclass Draggable extends React.Component /*:: <DraggableProps, DraggableState>*/{\n  // React 16.3+\n  // Arity (props, state)\n  static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial<DraggableState>*/{\n    let {\n      position\n    } /*: DraggableProps*/ = _ref /*: DraggableProps*/;\n    let {\n      prevPropsPosition\n    } /*: DraggableState*/ = _ref2 /*: DraggableState*/;\n    // Set x/y if a new position is provided in props that is different than the previous.\n    if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n      (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n        position,\n        prevPropsPosition\n      });\n      return {\n        x: position.x,\n        y: position.y,\n        prevPropsPosition: {\n          ...position\n        }\n      };\n    }\n    return null;\n  }\n  constructor(props /*: DraggableProps*/) {\n    super(props);\n    _defineProperty(this, \"onDragStart\", (e, coreData) => {\n      (0, _log.default)('Draggable: onDragStart: %j', coreData);\n\n      // Short-circuit if user's callback killed it.\n      const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));\n      // Kills start event on core as well, so move handlers are never bound.\n      if (shouldStart === false) return false;\n      this.setState({\n        dragging: true,\n        dragged: true\n      });\n    });\n    _defineProperty(this, \"onDrag\", (e, coreData) => {\n      if (!this.state.dragging) return false;\n      (0, _log.default)('Draggable: onDrag: %j', coreData);\n      const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n      const newState = {\n        x: uiData.x,\n        y: uiData.y,\n        slackX: 0,\n        slackY: 0\n      };\n\n      // Keep within bounds.\n      if (this.props.bounds) {\n        // Save original x and y.\n        const {\n          x,\n          y\n        } = newState;\n\n        // Add slack to the values used to calculate bound position. This will ensure that if\n        // we start removing slack, the element won't react to it right away until it's been\n        // completely removed.\n        newState.x += this.state.slackX;\n        newState.y += this.state.slackY;\n\n        // Get bound position. This will ceil/floor the x and y within the boundaries.\n        const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n        newState.x = newStateX;\n        newState.y = newStateY;\n\n        // Recalculate slack by noting how much was shaved by the boundPosition handler.\n        newState.slackX = this.state.slackX + (x - newState.x);\n        newState.slackY = this.state.slackY + (y - newState.y);\n\n        // Update the event we fire to reflect what really happened after bounds took effect.\n        uiData.x = newState.x;\n        uiData.y = newState.y;\n        uiData.deltaX = newState.x - this.state.x;\n        uiData.deltaY = newState.y - this.state.y;\n      }\n\n      // Short-circuit if user's callback killed it.\n      const shouldUpdate = this.props.onDrag(e, uiData);\n      if (shouldUpdate === false) return false;\n      this.setState(newState);\n    });\n    _defineProperty(this, \"onDragStop\", (e, coreData) => {\n      if (!this.state.dragging) return false;\n\n      // Short-circuit if user's callback killed it.\n      const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n      if (shouldContinue === false) return false;\n      (0, _log.default)('Draggable: onDragStop: %j', coreData);\n      const newState /*: Partial<DraggableState>*/ = {\n        dragging: false,\n        slackX: 0,\n        slackY: 0\n      };\n\n      // If this is a controlled component, the result of this operation will be to\n      // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n      const controlled = Boolean(this.props.position);\n      if (controlled) {\n        const {\n          x,\n          y\n        } = this.props.position;\n        newState.x = x;\n        newState.y = y;\n      }\n      this.setState(newState);\n    });\n    this.state = {\n      // Whether or not we are currently dragging.\n      dragging: false,\n      // Whether or not we have been dragged before.\n      dragged: false,\n      // Current transform x and y.\n      x: props.position ? props.position.x : props.defaultPosition.x,\n      y: props.position ? props.position.y : props.defaultPosition.y,\n      prevPropsPosition: {\n        ...props.position\n      },\n      // Used for compensating for out-of-bounds drags\n      slackX: 0,\n      slackY: 0,\n      // Can only determine if SVG after mounting\n      isElementSVG: false\n    };\n    if (props.position && !(props.onDrag || props.onStop)) {\n      // eslint-disable-next-line no-console\n      console.warn('A `position` was applied to this <Draggable>, without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n    }\n  }\n  componentDidMount() {\n    // Check to see if the element passed is an instanceof SVGElement\n    if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n      this.setState({\n        isElementSVG: true\n      });\n    }\n  }\n  componentWillUnmount() {\n    this.setState({\n      dragging: false\n    }); // prevents invariant if unmounted while dragging\n  }\n\n  // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n  // the underlying DOM node ourselves. See the README for more information.\n  findDOMNode() /*: ?HTMLElement*/{\n    var _this$props$nodeRef$c, _this$props;\n    return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 || (_this$props = _this$props.nodeRef) === null || _this$props === void 0 ? void 0 : _this$props.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n  }\n  render() /*: ReactElement<any>*/{\n    const {\n      axis,\n      bounds,\n      children,\n      defaultPosition,\n      defaultClassName,\n      defaultClassNameDragging,\n      defaultClassNameDragged,\n      position,\n      positionOffset,\n      scale,\n      ...draggableCoreProps\n    } = this.props;\n    let style = {};\n    let svgTransform = null;\n\n    // If this is controlled, we don't want to move it - unless it's dragging.\n    const controlled = Boolean(position);\n    const draggable = !controlled || this.state.dragging;\n    const validPosition = position || defaultPosition;\n    const transformOpts = {\n      // Set left if horizontal drag is enabled\n      x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n      // Set top if vertical drag is enabled\n      y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n    };\n\n    // If this element was SVG, we use the `transform` attribute.\n    if (this.state.isElementSVG) {\n      svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n    } else {\n      // Add a CSS transform to move the element around. This allows us to move the element around\n      // without worrying about whether or not it is relatively or absolutely positioned.\n      // If the item you are dragging already has a transform set, wrap it in a <span> so <Draggable>\n      // has a clean slate.\n      style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n    }\n\n    // Mark with class while dragging\n    const className = (0, _clsx.default)(children.props.className || '', defaultClassName, {\n      [defaultClassNameDragging]: this.state.dragging,\n      [defaultClassNameDragged]: this.state.dragged\n    });\n\n    // Reuse the child provided\n    // This makes it flexible to use whatever element is wanted (div, ul, etc)\n    return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n      onStart: this.onDragStart,\n      onDrag: this.onDrag,\n      onStop: this.onDragStop\n    }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n      className: className,\n      style: {\n        ...children.props.style,\n        ...style\n      },\n      transform: svgTransform\n    }));\n  }\n}\nexports.default = Draggable;\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n_defineProperty(Draggable, \"propTypes\", {\n  // Accepts all props <DraggableCore> accepts.\n  ..._DraggableCore.default.propTypes,\n  /**\n   * `axis` determines which axis the draggable can move.\n   *\n   *  Note that all callbacks will still return data as normal. This only\n   *  controls flushing to the DOM.\n   *\n   * 'both' allows movement horizontally and vertically.\n   * 'x' limits movement to horizontal axis.\n   * 'y' limits movement to vertical axis.\n   * 'none' limits all movement.\n   *\n   * Defaults to 'both'.\n   */\n  axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n  /**\n   * `bounds` determines the range of movement available to the element.\n   * Available values are:\n   *\n   * 'parent' restricts movement within the Draggable's parent node.\n   *\n   * Alternatively, pass an object with the following properties, all of which are optional:\n   *\n   * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n   *\n   * All values are in px.\n   *\n   * Example:\n   *\n   * ```jsx\n   *   let App = React.createClass({\n   *       render: function () {\n   *         return (\n   *            <Draggable bounds={{right: 300, bottom: 300}}>\n   *              <div>Content</div>\n   *           </Draggable>\n   *         );\n   *       }\n   *   });\n   * ```\n   */\n  bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n    left: _propTypes.default.number,\n    right: _propTypes.default.number,\n    top: _propTypes.default.number,\n    bottom: _propTypes.default.number\n  }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n  defaultClassName: _propTypes.default.string,\n  defaultClassNameDragging: _propTypes.default.string,\n  defaultClassNameDragged: _propTypes.default.string,\n  /**\n   * `defaultPosition` specifies the x and y that the dragged item should start at\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable defaultPosition={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  defaultPosition: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n  positionOffset: _propTypes.default.shape({\n    x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n    y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n  }),\n  /**\n   * `position`, if present, defines the current position of the element.\n   *\n   *  This is similar to how form elements in React work - if no `position` is supplied, the component\n   *  is uncontrolled.\n   *\n   * Example:\n   *\n   * ```jsx\n   *      let App = React.createClass({\n   *          render: function () {\n   *              return (\n   *                  <Draggable position={{x: 25, y: 25}}>\n   *                      <div>I start with transformX: 25px and transformY: 25px;</div>\n   *                  </Draggable>\n   *              );\n   *          }\n   *      });\n   * ```\n   */\n  position: _propTypes.default.shape({\n    x: _propTypes.default.number,\n    y: _propTypes.default.number\n  }),\n  /**\n   * These properties should be defined on the child, not here.\n   */\n  className: _shims.dontSetMe,\n  style: _shims.dontSetMe,\n  transform: _shims.dontSetMe\n});\n_defineProperty(Draggable, \"defaultProps\", {\n  ..._DraggableCore.default.defaultProps,\n  axis: 'both',\n  bounds: false,\n  defaultClassName: 'react-draggable',\n  defaultClassNameDragging: 'react-draggable-dragging',\n  defaultClassNameDragged: 'react-draggable-dragged',\n  defaultPosition: {\n    x: 0,\n    y: 0\n  },\n  scale: 1\n});","\"use strict\";\n\nconst {\n  default: Draggable,\n  DraggableCore\n} = require('./Draggable');\n\n// Previous versions of this lib exported <Draggable> as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { memo, useCallback, useMemo } from 'react';\nvar rowSizeBase = {\n    width: '100%',\n    height: '10px',\n    top: '0px',\n    left: '0px',\n    cursor: 'row-resize',\n};\nvar colSizeBase = {\n    width: '10px',\n    height: '100%',\n    top: '0px',\n    left: '0px',\n    cursor: 'col-resize',\n};\nvar edgeBase = {\n    width: '20px',\n    height: '20px',\n    position: 'absolute',\n    zIndex: 1,\n};\nvar styles = {\n    top: __assign(__assign({}, rowSizeBase), { top: '-5px' }),\n    right: __assign(__assign({}, colSizeBase), { left: undefined, right: '-5px' }),\n    bottom: __assign(__assign({}, rowSizeBase), { top: undefined, bottom: '-5px' }),\n    left: __assign(__assign({}, colSizeBase), { left: '-5px' }),\n    topRight: __assign(__assign({}, edgeBase), { right: '-10px', top: '-10px', cursor: 'ne-resize' }),\n    bottomRight: __assign(__assign({}, edgeBase), { right: '-10px', bottom: '-10px', cursor: 'se-resize' }),\n    bottomLeft: __assign(__assign({}, edgeBase), { left: '-10px', bottom: '-10px', cursor: 'sw-resize' }),\n    topLeft: __assign(__assign({}, edgeBase), { left: '-10px', top: '-10px', cursor: 'nw-resize' }),\n};\nexport var Resizer = memo(function (props) {\n    var onResizeStart = props.onResizeStart, direction = props.direction, children = props.children, replaceStyles = props.replaceStyles, className = props.className;\n    var onMouseDown = useCallback(function (e) {\n        onResizeStart(e, direction);\n    }, [onResizeStart, direction]);\n    var onTouchStart = useCallback(function (e) {\n        onResizeStart(e, direction);\n    }, [onResizeStart, direction]);\n    var style = useMemo(function () {\n        return __assign(__assign({ position: 'absolute', userSelect: 'none' }, styles[direction]), (replaceStyles !== null && replaceStyles !== void 0 ? replaceStyles : {}));\n    }, [replaceStyles, direction]);\n    return (_jsx(\"div\", { className: className || undefined, style: style, onMouseDown: onMouseDown, onTouchStart: onTouchStart, children: children }));\n});\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { PureComponent } from 'react';\nimport { flushSync } from 'react-dom';\nimport { Resizer } from './resizer';\nvar DEFAULT_SIZE = {\n    width: 'auto',\n    height: 'auto',\n};\nvar clamp = function (n, min, max) { return Math.max(Math.min(n, max), min); };\nvar snap = function (n, size, gridGap) {\n    var v = Math.round(n / size);\n    return v * size + gridGap * (v - 1);\n};\nvar hasDirection = function (dir, target) {\n    return new RegExp(dir, 'i').test(target);\n};\n// INFO: In case of window is a Proxy and does not porxy Events correctly, use isTouchEvent & isMouseEvent to distinguish event type instead of `instanceof`.\nvar isTouchEvent = function (event) {\n    return Boolean(event.touches && event.touches.length);\n};\nvar isMouseEvent = function (event) {\n    return Boolean((event.clientX || event.clientX === 0) &&\n        (event.clientY || event.clientY === 0));\n};\nvar findClosestSnap = function (n, snapArray, snapGap) {\n    if (snapGap === void 0) { snapGap = 0; }\n    var closestGapIndex = snapArray.reduce(function (prev, curr, index) { return (Math.abs(curr - n) < Math.abs(snapArray[prev] - n) ? index : prev); }, 0);\n    var gap = Math.abs(snapArray[closestGapIndex] - n);\n    return snapGap === 0 || gap < snapGap ? snapArray[closestGapIndex] : n;\n};\nvar getStringSize = function (n) {\n    n = n.toString();\n    if (n === 'auto') {\n        return n;\n    }\n    if (n.endsWith('px')) {\n        return n;\n    }\n    if (n.endsWith('%')) {\n        return n;\n    }\n    if (n.endsWith('vh')) {\n        return n;\n    }\n    if (n.endsWith('vw')) {\n        return n;\n    }\n    if (n.endsWith('vmax')) {\n        return n;\n    }\n    if (n.endsWith('vmin')) {\n        return n;\n    }\n    return \"\".concat(n, \"px\");\n};\nvar getPixelSize = function (size, parentSize, innerWidth, innerHeight) {\n    if (size && typeof size === 'string') {\n        if (size.endsWith('px')) {\n            return Number(size.replace('px', ''));\n        }\n        if (size.endsWith('%')) {\n            var ratio = Number(size.replace('%', '')) / 100;\n            return parentSize * ratio;\n        }\n        if (size.endsWith('vw')) {\n            var ratio = Number(size.replace('vw', '')) / 100;\n            return innerWidth * ratio;\n        }\n        if (size.endsWith('vh')) {\n            var ratio = Number(size.replace('vh', '')) / 100;\n            return innerHeight * ratio;\n        }\n    }\n    return size;\n};\nvar calculateNewMax = function (parentSize, innerWidth, innerHeight, maxWidth, maxHeight, minWidth, minHeight) {\n    maxWidth = getPixelSize(maxWidth, parentSize.width, innerWidth, innerHeight);\n    maxHeight = getPixelSize(maxHeight, parentSize.height, innerWidth, innerHeight);\n    minWidth = getPixelSize(minWidth, parentSize.width, innerWidth, innerHeight);\n    minHeight = getPixelSize(minHeight, parentSize.height, innerWidth, innerHeight);\n    return {\n        maxWidth: typeof maxWidth === 'undefined' ? undefined : Number(maxWidth),\n        maxHeight: typeof maxHeight === 'undefined' ? undefined : Number(maxHeight),\n        minWidth: typeof minWidth === 'undefined' ? undefined : Number(minWidth),\n        minHeight: typeof minHeight === 'undefined' ? undefined : Number(minHeight),\n    };\n};\n/**\n * transform T | [T, T] to [T, T]\n * @param val\n * @returns\n */\n// tslint:disable-next-line\nvar normalizeToPair = function (val) { return (Array.isArray(val) ? val : [val, val]); };\nvar definedProps = [\n    'as',\n    'ref',\n    'style',\n    'className',\n    'grid',\n    'gridGap',\n    'snap',\n    'bounds',\n    'boundsByDirection',\n    'size',\n    'defaultSize',\n    'minWidth',\n    'minHeight',\n    'maxWidth',\n    'maxHeight',\n    'lockAspectRatio',\n    'lockAspectRatioExtraWidth',\n    'lockAspectRatioExtraHeight',\n    'enable',\n    'handleStyles',\n    'handleClasses',\n    'handleWrapperStyle',\n    'handleWrapperClass',\n    'children',\n    'onResizeStart',\n    'onResize',\n    'onResizeStop',\n    'handleComponent',\n    'scale',\n    'resizeRatio',\n    'snapGap',\n];\n// HACK: This class is used to calculate % size.\nvar baseClassName = '__resizable_base__';\nvar Resizable = /** @class */ (function (_super) {\n    __extends(Resizable, _super);\n    function Resizable(props) {\n        var _a, _b, _c, _d;\n        var _this = _super.call(this, props) || this;\n        _this.ratio = 1;\n        _this.resizable = null;\n        // For parent boundary\n        _this.parentLeft = 0;\n        _this.parentTop = 0;\n        // For boundary\n        _this.resizableLeft = 0;\n        _this.resizableRight = 0;\n        _this.resizableTop = 0;\n        _this.resizableBottom = 0;\n        // For target boundary\n        _this.targetLeft = 0;\n        _this.targetTop = 0;\n        _this.delta = {\n            width: 0,\n            height: 0,\n        };\n        _this.appendBase = function () {\n            if (!_this.resizable || !_this.window) {\n                return null;\n            }\n            var parent = _this.parentNode;\n            if (!parent) {\n                return null;\n            }\n            var element = _this.window.document.createElement('div');\n            element.style.width = '100%';\n            element.style.height = '100%';\n            element.style.position = 'absolute';\n            element.style.transform = 'scale(0, 0)';\n            element.style.left = '0';\n            element.style.flex = '0 0 100%';\n            if (element.classList) {\n                element.classList.add(baseClassName);\n            }\n            else {\n                element.className += baseClassName;\n            }\n            parent.appendChild(element);\n            return element;\n        };\n        _this.removeBase = function (base) {\n            var parent = _this.parentNode;\n            if (!parent) {\n                return;\n            }\n            parent.removeChild(base);\n        };\n        _this.state = {\n            isResizing: false,\n            width: (_b = (_a = _this.propsSize) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 'auto',\n            height: (_d = (_c = _this.propsSize) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 'auto',\n            direction: 'right',\n            original: {\n                x: 0,\n                y: 0,\n                width: 0,\n                height: 0,\n            },\n            backgroundStyle: {\n                height: '100%',\n                width: '100%',\n                backgroundColor: 'rgba(0,0,0,0)',\n                cursor: 'auto',\n                opacity: 0,\n                position: 'fixed',\n                zIndex: 9999,\n                top: '0',\n                left: '0',\n                bottom: '0',\n                right: '0',\n            },\n            flexBasis: undefined,\n        };\n        _this.onResizeStart = _this.onResizeStart.bind(_this);\n        _this.onMouseMove = _this.onMouseMove.bind(_this);\n        _this.onMouseUp = _this.onMouseUp.bind(_this);\n        return _this;\n    }\n    Object.defineProperty(Resizable.prototype, \"parentNode\", {\n        get: function () {\n            if (!this.resizable) {\n                return null;\n            }\n            return this.resizable.parentNode;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Resizable.prototype, \"window\", {\n        get: function () {\n            if (!this.resizable) {\n                return null;\n            }\n            if (!this.resizable.ownerDocument) {\n                return null;\n            }\n            return this.resizable.ownerDocument.defaultView;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Resizable.prototype, \"propsSize\", {\n        get: function () {\n            return this.props.size || this.props.defaultSize || DEFAULT_SIZE;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Resizable.prototype, \"size\", {\n        get: function () {\n            var width = 0;\n            var height = 0;\n            if (this.resizable && this.window) {\n                var orgWidth = this.resizable.offsetWidth;\n                var orgHeight = this.resizable.offsetHeight;\n                // HACK: Set position `relative` to get parent size.\n                //       This is because when re-resizable set `absolute`, I can not get base width correctly.\n                var orgPosition = this.resizable.style.position;\n                if (orgPosition !== 'relative') {\n                    this.resizable.style.position = 'relative';\n                }\n                // INFO: Use original width or height if set auto.\n                width = this.resizable.style.width !== 'auto' ? this.resizable.offsetWidth : orgWidth;\n                height = this.resizable.style.height !== 'auto' ? this.resizable.offsetHeight : orgHeight;\n                // Restore original position\n                this.resizable.style.position = orgPosition;\n            }\n            return { width: width, height: height };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Resizable.prototype, \"sizeStyle\", {\n        get: function () {\n            var _this = this;\n            var size = this.props.size;\n            var getSize = function (key) {\n                var _a;\n                if (typeof _this.state[key] === 'undefined' || _this.state[key] === 'auto') {\n                    return 'auto';\n                }\n                if (_this.propsSize && _this.propsSize[key] && ((_a = _this.propsSize[key]) === null || _a === void 0 ? void 0 : _a.toString().endsWith('%'))) {\n                    if (_this.state[key].toString().endsWith('%')) {\n                        return _this.state[key].toString();\n                    }\n                    var parentSize = _this.getParentSize();\n                    var value = Number(_this.state[key].toString().replace('px', ''));\n                    var percent = (value / parentSize[key]) * 100;\n                    return \"\".concat(percent, \"%\");\n                }\n                return getStringSize(_this.state[key]);\n            };\n            var width = size && typeof size.width !== 'undefined' && !this.state.isResizing\n                ? getStringSize(size.width)\n                : getSize('width');\n            var height = size && typeof size.height !== 'undefined' && !this.state.isResizing\n                ? getStringSize(size.height)\n                : getSize('height');\n            return { width: width, height: height };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Resizable.prototype.getParentSize = function () {\n        if (!this.parentNode) {\n            if (!this.window) {\n                return { width: 0, height: 0 };\n            }\n            return { width: this.window.innerWidth, height: this.window.innerHeight };\n        }\n        var base = this.appendBase();\n        if (!base) {\n            return { width: 0, height: 0 };\n        }\n        // INFO: To calculate parent width with flex layout\n        var wrapChanged = false;\n        var wrap = this.parentNode.style.flexWrap;\n        if (wrap !== 'wrap') {\n            wrapChanged = true;\n            this.parentNode.style.flexWrap = 'wrap';\n            // HACK: Use relative to get parent padding size\n        }\n        base.style.position = 'relative';\n        base.style.minWidth = '100%';\n        base.style.minHeight = '100%';\n        var size = {\n            width: base.offsetWidth,\n            height: base.offsetHeight,\n        };\n        if (wrapChanged) {\n            this.parentNode.style.flexWrap = wrap;\n        }\n        this.removeBase(base);\n        return size;\n    };\n    Resizable.prototype.bindEvents = function () {\n        if (this.window) {\n            this.window.addEventListener('mouseup', this.onMouseUp);\n            this.window.addEventListener('mousemove', this.onMouseMove);\n            this.window.addEventListener('mouseleave', this.onMouseUp);\n            this.window.addEventListener('touchmove', this.onMouseMove, {\n                capture: true,\n                passive: false,\n            });\n            this.window.addEventListener('touchend', this.onMouseUp);\n        }\n    };\n    Resizable.prototype.unbindEvents = function () {\n        if (this.window) {\n            this.window.removeEventListener('mouseup', this.onMouseUp);\n            this.window.removeEventListener('mousemove', this.onMouseMove);\n            this.window.removeEventListener('mouseleave', this.onMouseUp);\n            this.window.removeEventListener('touchmove', this.onMouseMove, true);\n            this.window.removeEventListener('touchend', this.onMouseUp);\n        }\n    };\n    Resizable.prototype.componentDidMount = function () {\n        if (!this.resizable || !this.window) {\n            return;\n        }\n        var computedStyle = this.window.getComputedStyle(this.resizable);\n        this.setState({\n            width: this.state.width || this.size.width,\n            height: this.state.height || this.size.height,\n            flexBasis: computedStyle.flexBasis !== 'auto' ? computedStyle.flexBasis : undefined,\n        });\n    };\n    Resizable.prototype.componentWillUnmount = function () {\n        if (this.window) {\n            this.unbindEvents();\n        }\n    };\n    Resizable.prototype.createSizeForCssProperty = function (newSize, kind) {\n        var propsSize = this.propsSize && this.propsSize[kind];\n        return this.state[kind] === 'auto' &&\n            this.state.original[kind] === newSize &&\n            (typeof propsSize === 'undefined' || propsSize === 'auto')\n            ? 'auto'\n            : newSize;\n    };\n    Resizable.prototype.calculateNewMaxFromBoundary = function (maxWidth, maxHeight) {\n        var boundsByDirection = this.props.boundsByDirection;\n        var direction = this.state.direction;\n        var widthByDirection = boundsByDirection && hasDirection('left', direction);\n        var heightByDirection = boundsByDirection && hasDirection('top', direction);\n        var boundWidth;\n        var boundHeight;\n        if (this.props.bounds === 'parent') {\n            var parent_1 = this.parentNode;\n            if (parent_1) {\n                boundWidth = widthByDirection\n                    ? this.resizableRight - this.parentLeft\n                    : parent_1.offsetWidth + (this.parentLeft - this.resizableLeft);\n                boundHeight = heightByDirection\n                    ? this.resizableBottom - this.parentTop\n                    : parent_1.offsetHeight + (this.parentTop - this.resizableTop);\n            }\n        }\n        else if (this.props.bounds === 'window') {\n            if (this.window) {\n                boundWidth = widthByDirection ? this.resizableRight : this.window.innerWidth - this.resizableLeft;\n                boundHeight = heightByDirection ? this.resizableBottom : this.window.innerHeight - this.resizableTop;\n            }\n        }\n        else if (this.props.bounds) {\n            boundWidth = widthByDirection\n                ? this.resizableRight - this.targetLeft\n                : this.props.bounds.offsetWidth + (this.targetLeft - this.resizableLeft);\n            boundHeight = heightByDirection\n                ? this.resizableBottom - this.targetTop\n                : this.props.bounds.offsetHeight + (this.targetTop - this.resizableTop);\n        }\n        if (boundWidth && Number.isFinite(boundWidth)) {\n            maxWidth = maxWidth && maxWidth < boundWidth ? maxWidth : boundWidth;\n        }\n        if (boundHeight && Number.isFinite(boundHeight)) {\n            maxHeight = maxHeight && maxHeight < boundHeight ? maxHeight : boundHeight;\n        }\n        return { maxWidth: maxWidth, maxHeight: maxHeight };\n    };\n    Resizable.prototype.calculateNewSizeFromDirection = function (clientX, clientY) {\n        var scale = this.props.scale || 1;\n        var _a = normalizeToPair(this.props.resizeRatio || 1), resizeRatioX = _a[0], resizeRatioY = _a[1];\n        var _b = this.state, direction = _b.direction, original = _b.original;\n        var _c = this.props, lockAspectRatio = _c.lockAspectRatio, lockAspectRatioExtraHeight = _c.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _c.lockAspectRatioExtraWidth;\n        var newWidth = original.width;\n        var newHeight = original.height;\n        var extraHeight = lockAspectRatioExtraHeight || 0;\n        var extraWidth = lockAspectRatioExtraWidth || 0;\n        if (hasDirection('right', direction)) {\n            newWidth = original.width + ((clientX - original.x) * resizeRatioX) / scale;\n            if (lockAspectRatio) {\n                newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n            }\n        }\n        if (hasDirection('left', direction)) {\n            newWidth = original.width - ((clientX - original.x) * resizeRatioX) / scale;\n            if (lockAspectRatio) {\n                newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n            }\n        }\n        if (hasDirection('bottom', direction)) {\n            newHeight = original.height + ((clientY - original.y) * resizeRatioY) / scale;\n            if (lockAspectRatio) {\n                newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n            }\n        }\n        if (hasDirection('top', direction)) {\n            newHeight = original.height - ((clientY - original.y) * resizeRatioY) / scale;\n            if (lockAspectRatio) {\n                newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n            }\n        }\n        return { newWidth: newWidth, newHeight: newHeight };\n    };\n    Resizable.prototype.calculateNewSizeFromAspectRatio = function (newWidth, newHeight, max, min) {\n        var _a = this.props, lockAspectRatio = _a.lockAspectRatio, lockAspectRatioExtraHeight = _a.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _a.lockAspectRatioExtraWidth;\n        var computedMinWidth = typeof min.width === 'undefined' ? 10 : min.width;\n        var computedMaxWidth = typeof max.width === 'undefined' || max.width < 0 ? newWidth : max.width;\n        var computedMinHeight = typeof min.height === 'undefined' ? 10 : min.height;\n        var computedMaxHeight = typeof max.height === 'undefined' || max.height < 0 ? newHeight : max.height;\n        var extraHeight = lockAspectRatioExtraHeight || 0;\n        var extraWidth = lockAspectRatioExtraWidth || 0;\n        if (lockAspectRatio) {\n            var extraMinWidth = (computedMinHeight - extraHeight) * this.ratio + extraWidth;\n            var extraMaxWidth = (computedMaxHeight - extraHeight) * this.ratio + extraWidth;\n            var extraMinHeight = (computedMinWidth - extraWidth) / this.ratio + extraHeight;\n            var extraMaxHeight = (computedMaxWidth - extraWidth) / this.ratio + extraHeight;\n            var lockedMinWidth = Math.max(computedMinWidth, extraMinWidth);\n            var lockedMaxWidth = Math.min(computedMaxWidth, extraMaxWidth);\n            var lockedMinHeight = Math.max(computedMinHeight, extraMinHeight);\n            var lockedMaxHeight = Math.min(computedMaxHeight, extraMaxHeight);\n            newWidth = clamp(newWidth, lockedMinWidth, lockedMaxWidth);\n            newHeight = clamp(newHeight, lockedMinHeight, lockedMaxHeight);\n        }\n        else {\n            newWidth = clamp(newWidth, computedMinWidth, computedMaxWidth);\n            newHeight = clamp(newHeight, computedMinHeight, computedMaxHeight);\n        }\n        return { newWidth: newWidth, newHeight: newHeight };\n    };\n    Resizable.prototype.setBoundingClientRect = function () {\n        var adjustedScale = 1 / (this.props.scale || 1);\n        // For parent boundary\n        if (this.props.bounds === 'parent') {\n            var parent_2 = this.parentNode;\n            if (parent_2) {\n                var parentRect = parent_2.getBoundingClientRect();\n                this.parentLeft = parentRect.left * adjustedScale;\n                this.parentTop = parentRect.top * adjustedScale;\n            }\n        }\n        // For target(html element) boundary\n        if (this.props.bounds && typeof this.props.bounds !== 'string') {\n            var targetRect = this.props.bounds.getBoundingClientRect();\n            this.targetLeft = targetRect.left * adjustedScale;\n            this.targetTop = targetRect.top * adjustedScale;\n        }\n        // For boundary\n        if (this.resizable) {\n            var _a = this.resizable.getBoundingClientRect(), left = _a.left, top_1 = _a.top, right = _a.right, bottom = _a.bottom;\n            this.resizableLeft = left * adjustedScale;\n            this.resizableRight = right * adjustedScale;\n            this.resizableTop = top_1 * adjustedScale;\n            this.resizableBottom = bottom * adjustedScale;\n        }\n    };\n    Resizable.prototype.onResizeStart = function (event, direction) {\n        if (!this.resizable || !this.window) {\n            return;\n        }\n        var clientX = 0;\n        var clientY = 0;\n        if (event.nativeEvent && isMouseEvent(event.nativeEvent)) {\n            clientX = event.nativeEvent.clientX;\n            clientY = event.nativeEvent.clientY;\n        }\n        else if (event.nativeEvent && isTouchEvent(event.nativeEvent)) {\n            clientX = event.nativeEvent.touches[0].clientX;\n            clientY = event.nativeEvent.touches[0].clientY;\n        }\n        if (this.props.onResizeStart) {\n            if (this.resizable) {\n                var startResize = this.props.onResizeStart(event, direction, this.resizable);\n                if (startResize === false) {\n                    return;\n                }\n            }\n        }\n        // Fix #168\n        if (this.props.size) {\n            if (typeof this.props.size.height !== 'undefined' && this.props.size.height !== this.state.height) {\n                this.setState({ height: this.props.size.height });\n            }\n            if (typeof this.props.size.width !== 'undefined' && this.props.size.width !== this.state.width) {\n                this.setState({ width: this.props.size.width });\n            }\n        }\n        // For lockAspectRatio case\n        this.ratio =\n            typeof this.props.lockAspectRatio === 'number' ? this.props.lockAspectRatio : this.size.width / this.size.height;\n        var flexBasis;\n        var computedStyle = this.window.getComputedStyle(this.resizable);\n        if (computedStyle.flexBasis !== 'auto') {\n            var parent_3 = this.parentNode;\n            if (parent_3) {\n                var dir = this.window.getComputedStyle(parent_3).flexDirection;\n                this.flexDir = dir.startsWith('row') ? 'row' : 'column';\n                flexBasis = computedStyle.flexBasis;\n            }\n        }\n        // For boundary\n        this.setBoundingClientRect();\n        this.bindEvents();\n        var state = {\n            original: {\n                x: clientX,\n                y: clientY,\n                width: this.size.width,\n                height: this.size.height,\n            },\n            isResizing: true,\n            backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: this.window.getComputedStyle(event.target).cursor || 'auto' }),\n            direction: direction,\n            flexBasis: flexBasis,\n        };\n        this.setState(state);\n    };\n    Resizable.prototype.onMouseMove = function (event) {\n        var _this = this;\n        if (!this.state.isResizing || !this.resizable || !this.window) {\n            return;\n        }\n        if (this.window.TouchEvent && isTouchEvent(event)) {\n            try {\n                event.preventDefault();\n                event.stopPropagation();\n            }\n            catch (e) {\n                // Ignore on fail\n            }\n        }\n        var _a = this.props, maxWidth = _a.maxWidth, maxHeight = _a.maxHeight, minWidth = _a.minWidth, minHeight = _a.minHeight;\n        var clientX = isTouchEvent(event) ? event.touches[0].clientX : event.clientX;\n        var clientY = isTouchEvent(event) ? event.touches[0].clientY : event.clientY;\n        var _b = this.state, direction = _b.direction, original = _b.original, width = _b.width, height = _b.height;\n        var parentSize = this.getParentSize();\n        var max = calculateNewMax(parentSize, this.window.innerWidth, this.window.innerHeight, maxWidth, maxHeight, minWidth, minHeight);\n        maxWidth = max.maxWidth;\n        maxHeight = max.maxHeight;\n        minWidth = max.minWidth;\n        minHeight = max.minHeight;\n        // Calculate new size\n        var _c = this.calculateNewSizeFromDirection(clientX, clientY), newHeight = _c.newHeight, newWidth = _c.newWidth;\n        // Calculate max size from boundary settings\n        var boundaryMax = this.calculateNewMaxFromBoundary(maxWidth, maxHeight);\n        if (this.props.snap && this.props.snap.x) {\n            newWidth = findClosestSnap(newWidth, this.props.snap.x, this.props.snapGap);\n        }\n        if (this.props.snap && this.props.snap.y) {\n            newHeight = findClosestSnap(newHeight, this.props.snap.y, this.props.snapGap);\n        }\n        // Calculate new size from aspect ratio\n        var newSize = this.calculateNewSizeFromAspectRatio(newWidth, newHeight, { width: boundaryMax.maxWidth, height: boundaryMax.maxHeight }, { width: minWidth, height: minHeight });\n        newWidth = newSize.newWidth;\n        newHeight = newSize.newHeight;\n        if (this.props.grid) {\n            var newGridWidth = snap(newWidth, this.props.grid[0], this.props.gridGap ? this.props.gridGap[0] : 0);\n            var newGridHeight = snap(newHeight, this.props.grid[1], this.props.gridGap ? this.props.gridGap[1] : 0);\n            var gap = this.props.snapGap || 0;\n            var w = gap === 0 || Math.abs(newGridWidth - newWidth) <= gap ? newGridWidth : newWidth;\n            var h = gap === 0 || Math.abs(newGridHeight - newHeight) <= gap ? newGridHeight : newHeight;\n            newWidth = w;\n            newHeight = h;\n        }\n        var delta = {\n            width: newWidth - original.width,\n            height: newHeight - original.height,\n        };\n        this.delta = delta;\n        if (width && typeof width === 'string') {\n            if (width.endsWith('%')) {\n                var percent = (newWidth / parentSize.width) * 100;\n                newWidth = \"\".concat(percent, \"%\");\n            }\n            else if (width.endsWith('vw')) {\n                var vw = (newWidth / this.window.innerWidth) * 100;\n                newWidth = \"\".concat(vw, \"vw\");\n            }\n            else if (width.endsWith('vh')) {\n                var vh = (newWidth / this.window.innerHeight) * 100;\n                newWidth = \"\".concat(vh, \"vh\");\n            }\n        }\n        if (height && typeof height === 'string') {\n            if (height.endsWith('%')) {\n                var percent = (newHeight / parentSize.height) * 100;\n                newHeight = \"\".concat(percent, \"%\");\n            }\n            else if (height.endsWith('vw')) {\n                var vw = (newHeight / this.window.innerWidth) * 100;\n                newHeight = \"\".concat(vw, \"vw\");\n            }\n            else if (height.endsWith('vh')) {\n                var vh = (newHeight / this.window.innerHeight) * 100;\n                newHeight = \"\".concat(vh, \"vh\");\n            }\n        }\n        var newState = {\n            width: this.createSizeForCssProperty(newWidth, 'width'),\n            height: this.createSizeForCssProperty(newHeight, 'height'),\n        };\n        if (this.flexDir === 'row') {\n            newState.flexBasis = newState.width;\n        }\n        else if (this.flexDir === 'column') {\n            newState.flexBasis = newState.height;\n        }\n        var widthChanged = this.state.width !== newState.width;\n        var heightChanged = this.state.height !== newState.height;\n        var flexBaseChanged = this.state.flexBasis !== newState.flexBasis;\n        var changed = widthChanged || heightChanged || flexBaseChanged;\n        if (changed) {\n            // For v18, update state sync\n            flushSync(function () {\n                _this.setState(newState);\n            });\n        }\n        if (this.props.onResize) {\n            if (changed) {\n                this.props.onResize(event, direction, this.resizable, delta);\n            }\n        }\n    };\n    Resizable.prototype.onMouseUp = function (event) {\n        var _a, _b;\n        var _c = this.state, isResizing = _c.isResizing, direction = _c.direction, original = _c.original;\n        if (!isResizing || !this.resizable) {\n            return;\n        }\n        if (this.props.onResizeStop) {\n            this.props.onResizeStop(event, direction, this.resizable, this.delta);\n        }\n        if (this.props.size) {\n            this.setState({ width: (_a = this.props.size.width) !== null && _a !== void 0 ? _a : 'auto', height: (_b = this.props.size.height) !== null && _b !== void 0 ? _b : 'auto' });\n        }\n        this.unbindEvents();\n        this.setState({\n            isResizing: false,\n            backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: 'auto' }),\n        });\n    };\n    Resizable.prototype.updateSize = function (size) {\n        var _a, _b;\n        this.setState({ width: (_a = size.width) !== null && _a !== void 0 ? _a : 'auto', height: (_b = size.height) !== null && _b !== void 0 ? _b : 'auto' });\n    };\n    Resizable.prototype.renderResizer = function () {\n        var _this = this;\n        var _a = this.props, enable = _a.enable, handleStyles = _a.handleStyles, handleClasses = _a.handleClasses, handleWrapperStyle = _a.handleWrapperStyle, handleWrapperClass = _a.handleWrapperClass, handleComponent = _a.handleComponent;\n        if (!enable) {\n            return null;\n        }\n        var resizers = Object.keys(enable).map(function (dir) {\n            if (enable[dir] !== false) {\n                return (_jsx(Resizer, { direction: dir, onResizeStart: _this.onResizeStart, replaceStyles: handleStyles && handleStyles[dir], className: handleClasses && handleClasses[dir], children: handleComponent && handleComponent[dir] ? handleComponent[dir] : null }, dir));\n            }\n            return null;\n        });\n        // #93 Wrap the resize box in span (will not break 100% width/height)\n        return (_jsx(\"div\", { className: handleWrapperClass, style: handleWrapperStyle, children: resizers }));\n    };\n    Resizable.prototype.render = function () {\n        var _this = this;\n        var extendsProps = Object.keys(this.props).reduce(function (acc, key) {\n            if (definedProps.indexOf(key) !== -1) {\n                return acc;\n            }\n            acc[key] = _this.props[key];\n            return acc;\n        }, {});\n        var style = __assign(__assign(__assign({ position: 'relative', userSelect: this.state.isResizing ? 'none' : 'auto' }, this.props.style), this.sizeStyle), { maxWidth: this.props.maxWidth, maxHeight: this.props.maxHeight, minWidth: this.props.minWidth, minHeight: this.props.minHeight, boxSizing: 'border-box', flexShrink: 0 });\n        if (this.state.flexBasis) {\n            style.flexBasis = this.state.flexBasis;\n        }\n        var Wrapper = this.props.as || 'div';\n        return (_jsxs(Wrapper, __assign({ style: style, className: this.props.className }, extendsProps, { \n            // `ref` is after `extendsProps` to ensure this one wins over a version\n            // passed in\n            ref: function (c) {\n                if (c) {\n                    _this.resizable = c;\n                }\n            }, children: [this.state.isResizing && _jsx(\"div\", { style: this.state.backgroundStyle }), this.props.children, this.renderResizer()] })));\n    };\n    Resizable.defaultProps = {\n        as: 'div',\n        onResizeStart: function () { },\n        onResize: function () { },\n        onResizeStop: function () { },\n        enable: {\n            top: true,\n            right: true,\n            bottom: true,\n            left: true,\n            topRight: true,\n            bottomRight: true,\n            bottomLeft: true,\n            topLeft: true,\n        },\n        style: {},\n        grid: [1, 1],\n        gridGap: [0, 0],\n        lockAspectRatio: false,\n        lockAspectRatioExtraWidth: 0,\n        lockAspectRatioExtraHeight: 0,\n        scale: 1,\n        resizeRatio: 1,\n        snapGap: 0,\n    };\n    return Resizable;\n}(PureComponent));\nexport { Resizable };\n","import { createElement, PureComponent } from 'react';\nimport Draggable from 'react-draggable';\nimport { Resizable } from 're-resizable';\nimport { flushSync } from 'react-dom';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\n\nvar resizableStyle = {\n    width: \"auto\",\n    height: \"auto\",\n    display: \"inline-block\",\n    position: \"absolute\",\n    top: 0,\n    left: 0,\n};\nvar getEnableResizingByFlag = function (flag) { return ({\n    bottom: flag,\n    bottomLeft: flag,\n    bottomRight: flag,\n    left: flag,\n    right: flag,\n    top: flag,\n    topLeft: flag,\n    topRight: flag,\n}); };\nvar Rnd = /** @class */ (function (_super) {\n    __extends(Rnd, _super);\n    function Rnd(props) {\n        var _this = _super.call(this, props) || this;\n        _this.resizingPosition = { x: 0, y: 0 };\n        _this.offsetFromParent = { left: 0, top: 0 };\n        _this.resizableElement = { current: null };\n        _this.originalPosition = { x: 0, y: 0 };\n        _this.state = {\n            resizing: false,\n            bounds: {\n                top: 0,\n                right: 0,\n                bottom: 0,\n                left: 0,\n            },\n            maxWidth: props.maxWidth,\n            maxHeight: props.maxHeight,\n        };\n        _this.onResizeStart = _this.onResizeStart.bind(_this);\n        _this.onResize = _this.onResize.bind(_this);\n        _this.onResizeStop = _this.onResizeStop.bind(_this);\n        _this.onDragStart = _this.onDragStart.bind(_this);\n        _this.onDrag = _this.onDrag.bind(_this);\n        _this.onDragStop = _this.onDragStop.bind(_this);\n        _this.getMaxSizesFromProps = _this.getMaxSizesFromProps.bind(_this);\n        return _this;\n    }\n    Rnd.prototype.componentDidMount = function () {\n        this.updateOffsetFromParent();\n        var _a = this.offsetFromParent, left = _a.left, top = _a.top;\n        var _b = this.getDraggablePosition(), x = _b.x, y = _b.y;\n        this.draggable.setState({\n            x: x - left,\n            y: y - top,\n        });\n        // HACK: Apply position adjustment\n        this.forceUpdate();\n    };\n    // HACK: To get `react-draggable` state x and y.\n    Rnd.prototype.getDraggablePosition = function () {\n        var _a = this.draggable.state, x = _a.x, y = _a.y;\n        return { x: x, y: y };\n    };\n    Rnd.prototype.getParent = function () {\n        return this.resizable && this.resizable.parentNode;\n    };\n    Rnd.prototype.getParentSize = function () {\n        return this.resizable.getParentSize();\n    };\n    Rnd.prototype.getMaxSizesFromProps = function () {\n        var maxWidth = typeof this.props.maxWidth === \"undefined\" ? Number.MAX_SAFE_INTEGER : this.props.maxWidth;\n        var maxHeight = typeof this.props.maxHeight === \"undefined\" ? Number.MAX_SAFE_INTEGER : this.props.maxHeight;\n        return { maxWidth: maxWidth, maxHeight: maxHeight };\n    };\n    Rnd.prototype.getSelfElement = function () {\n        return this.resizable && this.resizable.resizable;\n    };\n    Rnd.prototype.getOffsetHeight = function (boundary) {\n        var scale = this.props.scale;\n        switch (this.props.bounds) {\n            case \"window\":\n                return window.innerHeight / scale;\n            case \"body\":\n                return document.body.offsetHeight / scale;\n            default:\n                return boundary.offsetHeight;\n        }\n    };\n    Rnd.prototype.getOffsetWidth = function (boundary) {\n        var scale = this.props.scale;\n        switch (this.props.bounds) {\n            case \"window\":\n                return window.innerWidth / scale;\n            case \"body\":\n                return document.body.offsetWidth / scale;\n            default:\n                return boundary.offsetWidth;\n        }\n    };\n    Rnd.prototype.onDragStart = function (e, data) {\n        if (this.props.onDragStart) {\n            this.props.onDragStart(e, data);\n        }\n        var pos = this.getDraggablePosition();\n        this.originalPosition = pos;\n        if (!this.props.bounds)\n            return;\n        var parent = this.getParent();\n        var scale = this.props.scale;\n        var boundary;\n        if (this.props.bounds === \"parent\") {\n            boundary = parent;\n        }\n        else if (this.props.bounds === \"body\") {\n            var parentRect_1 = parent.getBoundingClientRect();\n            var parentLeft_1 = parentRect_1.left;\n            var parentTop_1 = parentRect_1.top;\n            var bodyRect = document.body.getBoundingClientRect();\n            var left_1 = -(parentLeft_1 - parent.offsetLeft * scale - bodyRect.left) / scale;\n            var top_1 = -(parentTop_1 - parent.offsetTop * scale - bodyRect.top) / scale;\n            var right = (document.body.offsetWidth - this.resizable.size.width * scale) / scale + left_1;\n            var bottom = (document.body.offsetHeight - this.resizable.size.height * scale) / scale + top_1;\n            return this.setState({ bounds: { top: top_1, right: right, bottom: bottom, left: left_1 } });\n        }\n        else if (this.props.bounds === \"window\") {\n            if (!this.resizable)\n                return;\n            var parentRect_2 = parent.getBoundingClientRect();\n            var parentLeft_2 = parentRect_2.left;\n            var parentTop_2 = parentRect_2.top;\n            var left_2 = -(parentLeft_2 - parent.offsetLeft * scale) / scale;\n            var top_2 = -(parentTop_2 - parent.offsetTop * scale) / scale;\n            var right = (window.innerWidth - this.resizable.size.width * scale) / scale + left_2;\n            var bottom = (window.innerHeight - this.resizable.size.height * scale) / scale + top_2;\n            return this.setState({ bounds: { top: top_2, right: right, bottom: bottom, left: left_2 } });\n        }\n        else if (typeof this.props.bounds === \"string\") {\n            boundary = document.querySelector(this.props.bounds);\n        }\n        else if (this.props.bounds instanceof HTMLElement) {\n            boundary = this.props.bounds;\n        }\n        if (!(boundary instanceof HTMLElement) || !(parent instanceof HTMLElement)) {\n            return;\n        }\n        var boundaryRect = boundary.getBoundingClientRect();\n        var boundaryLeft = boundaryRect.left;\n        var boundaryTop = boundaryRect.top;\n        var parentRect = parent.getBoundingClientRect();\n        var parentLeft = parentRect.left;\n        var parentTop = parentRect.top;\n        var left = (boundaryLeft - parentLeft) / scale;\n        var top = boundaryTop - parentTop;\n        if (!this.resizable)\n            return;\n        this.updateOffsetFromParent();\n        var offset = this.offsetFromParent;\n        this.setState({\n            bounds: {\n                top: top - offset.top,\n                right: left + (boundary.offsetWidth - this.resizable.size.width) - offset.left / scale,\n                bottom: top + (boundary.offsetHeight - this.resizable.size.height) - offset.top,\n                left: left - offset.left / scale,\n            },\n        });\n    };\n    Rnd.prototype.onDrag = function (e, data) {\n        if (!this.props.onDrag)\n            return;\n        var _a = this.offsetFromParent, left = _a.left, top = _a.top;\n        if (!this.props.dragAxis || this.props.dragAxis === \"both\") {\n            return this.props.onDrag(e, __assign(__assign({}, data), { x: data.x + left, y: data.y + top }));\n        }\n        else if (this.props.dragAxis === \"x\") {\n            return this.props.onDrag(e, __assign(__assign({}, data), { x: data.x + left, y: this.originalPosition.y + top, deltaY: 0 }));\n        }\n        else if (this.props.dragAxis === \"y\") {\n            return this.props.onDrag(e, __assign(__assign({}, data), { x: this.originalPosition.x + left, y: data.y + top, deltaX: 0 }));\n        }\n    };\n    Rnd.prototype.onDragStop = function (e, data) {\n        if (!this.props.onDragStop)\n            return;\n        var _a = this.offsetFromParent, left = _a.left, top = _a.top;\n        if (!this.props.dragAxis || this.props.dragAxis === \"both\") {\n            return this.props.onDragStop(e, __assign(__assign({}, data), { x: data.x + left, y: data.y + top }));\n        }\n        else if (this.props.dragAxis === \"x\") {\n            return this.props.onDragStop(e, __assign(__assign({}, data), { x: data.x + left, y: this.originalPosition.y + top, deltaY: 0 }));\n        }\n        else if (this.props.dragAxis === \"y\") {\n            return this.props.onDragStop(e, __assign(__assign({}, data), { x: this.originalPosition.x + left, y: data.y + top, deltaX: 0 }));\n        }\n    };\n    Rnd.prototype.onResizeStart = function (e, dir, elementRef) {\n        e.stopPropagation();\n        this.setState({\n            resizing: true,\n        });\n        var scale = this.props.scale;\n        var offset = this.offsetFromParent;\n        var pos = this.getDraggablePosition();\n        this.resizingPosition = { x: pos.x + offset.left, y: pos.y + offset.top };\n        this.originalPosition = pos;\n        if (this.props.bounds) {\n            var parent_1 = this.getParent();\n            var boundary = void 0;\n            if (this.props.bounds === \"parent\") {\n                boundary = parent_1;\n            }\n            else if (this.props.bounds === \"body\") {\n                boundary = document.body;\n            }\n            else if (this.props.bounds === \"window\") {\n                boundary = window;\n            }\n            else if (typeof this.props.bounds === \"string\") {\n                boundary = document.querySelector(this.props.bounds);\n            }\n            else if (this.props.bounds instanceof HTMLElement) {\n                boundary = this.props.bounds;\n            }\n            var self_1 = this.getSelfElement();\n            if (self_1 instanceof Element &&\n                (boundary instanceof HTMLElement || boundary === window) &&\n                parent_1 instanceof HTMLElement) {\n                var _a = this.getMaxSizesFromProps(), maxWidth = _a.maxWidth, maxHeight = _a.maxHeight;\n                var parentSize = this.getParentSize();\n                if (maxWidth && typeof maxWidth === \"string\") {\n                    if (maxWidth.endsWith(\"%\")) {\n                        var ratio = Number(maxWidth.replace(\"%\", \"\")) / 100;\n                        maxWidth = parentSize.width * ratio;\n                    }\n                    else if (maxWidth.endsWith(\"px\")) {\n                        maxWidth = Number(maxWidth.replace(\"px\", \"\"));\n                    }\n                }\n                if (maxHeight && typeof maxHeight === \"string\") {\n                    if (maxHeight.endsWith(\"%\")) {\n                        var ratio = Number(maxHeight.replace(\"%\", \"\")) / 100;\n                        maxHeight = parentSize.height * ratio;\n                    }\n                    else if (maxHeight.endsWith(\"px\")) {\n                        maxHeight = Number(maxHeight.replace(\"px\", \"\"));\n                    }\n                }\n                var selfRect = self_1.getBoundingClientRect();\n                var selfLeft = selfRect.left;\n                var selfTop = selfRect.top;\n                var boundaryRect = this.props.bounds === \"window\" ? { left: 0, top: 0 } : boundary.getBoundingClientRect();\n                var boundaryLeft = boundaryRect.left;\n                var boundaryTop = boundaryRect.top;\n                var offsetWidth = this.getOffsetWidth(boundary);\n                var offsetHeight = this.getOffsetHeight(boundary);\n                var hasLeft = dir.toLowerCase().endsWith(\"left\");\n                var hasRight = dir.toLowerCase().endsWith(\"right\");\n                var hasTop = dir.startsWith(\"top\");\n                var hasBottom = dir.startsWith(\"bottom\");\n                if ((hasLeft || hasTop) && this.resizable) {\n                    var max = (selfLeft - boundaryLeft) / scale + this.resizable.size.width;\n                    this.setState({ maxWidth: max > Number(maxWidth) ? maxWidth : max });\n                }\n                // INFO: To set bounds in `lock aspect ratio with bounds` case. See also that story.\n                if (hasRight || (this.props.lockAspectRatio && !hasLeft && !hasTop)) {\n                    var max = offsetWidth + (boundaryLeft - selfLeft) / scale;\n                    this.setState({ maxWidth: max > Number(maxWidth) ? maxWidth : max });\n                }\n                if ((hasTop || hasLeft) && this.resizable) {\n                    var max = (selfTop - boundaryTop) / scale + this.resizable.size.height;\n                    this.setState({\n                        maxHeight: max > Number(maxHeight) ? maxHeight : max,\n                    });\n                }\n                // INFO: To set bounds in `lock aspect ratio with bounds` case. See also that story.\n                if (hasBottom || (this.props.lockAspectRatio && !hasTop && !hasLeft)) {\n                    var max = offsetHeight + (boundaryTop - selfTop) / scale;\n                    this.setState({\n                        maxHeight: max > Number(maxHeight) ? maxHeight : max,\n                    });\n                }\n            }\n        }\n        else {\n            this.setState({\n                maxWidth: this.props.maxWidth,\n                maxHeight: this.props.maxHeight,\n            });\n        }\n        if (this.props.onResizeStart) {\n            this.props.onResizeStart(e, dir, elementRef);\n        }\n    };\n    Rnd.prototype.onResize = function (e, direction, elementRef, delta) {\n        var _this = this;\n        // INFO: Apply x and y position adjustments caused by resizing to draggable\n        var newPos = { x: this.originalPosition.x, y: this.originalPosition.y };\n        var left = -delta.width;\n        var top = -delta.height;\n        var directions = [\"top\", \"left\", \"topLeft\", \"bottomLeft\", \"topRight\"];\n        if (directions.includes(direction)) {\n            if (direction === \"bottomLeft\") {\n                newPos.x += left;\n            }\n            else if (direction === \"topRight\") {\n                newPos.y += top;\n            }\n            else {\n                newPos.x += left;\n                newPos.y += top;\n            }\n        }\n        var draggableState = this.draggable.state;\n        if (newPos.x !== draggableState.x || newPos.y !== draggableState.y) {\n            flushSync(function () {\n                _this.draggable.setState(newPos);\n            });\n        }\n        this.updateOffsetFromParent();\n        var offset = this.offsetFromParent;\n        var x = this.getDraggablePosition().x + offset.left;\n        var y = this.getDraggablePosition().y + offset.top;\n        this.resizingPosition = { x: x, y: y };\n        if (!this.props.onResize)\n            return;\n        this.props.onResize(e, direction, elementRef, delta, {\n            x: x,\n            y: y,\n        });\n    };\n    Rnd.prototype.onResizeStop = function (e, direction, elementRef, delta) {\n        this.setState({\n            resizing: false,\n        });\n        var _a = this.getMaxSizesFromProps(), maxWidth = _a.maxWidth, maxHeight = _a.maxHeight;\n        this.setState({ maxWidth: maxWidth, maxHeight: maxHeight });\n        if (this.props.onResizeStop) {\n            this.props.onResizeStop(e, direction, elementRef, delta, this.resizingPosition);\n        }\n    };\n    Rnd.prototype.updateSize = function (size) {\n        if (!this.resizable)\n            return;\n        this.resizable.updateSize({ width: size.width, height: size.height });\n    };\n    Rnd.prototype.updatePosition = function (position) {\n        this.draggable.setState(position);\n    };\n    Rnd.prototype.updateOffsetFromParent = function () {\n        var scale = this.props.scale;\n        var parent = this.getParent();\n        var self = this.getSelfElement();\n        if (!parent || self === null) {\n            return {\n                top: 0,\n                left: 0,\n            };\n        }\n        var parentRect = parent.getBoundingClientRect();\n        var parentLeft = parentRect.left;\n        var parentTop = parentRect.top;\n        var selfRect = self.getBoundingClientRect();\n        var position = this.getDraggablePosition();\n        var scrollLeft = parent.scrollLeft;\n        var scrollTop = parent.scrollTop;\n        this.offsetFromParent = {\n            left: selfRect.left - parentLeft + scrollLeft - position.x * scale,\n            top: selfRect.top - parentTop + scrollTop - position.y * scale,\n        };\n    };\n    Rnd.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, disableDragging = _a.disableDragging, style = _a.style, dragHandleClassName = _a.dragHandleClassName, position = _a.position, onMouseDown = _a.onMouseDown, onMouseUp = _a.onMouseUp, dragAxis = _a.dragAxis, dragGrid = _a.dragGrid, bounds = _a.bounds, enableUserSelectHack = _a.enableUserSelectHack, cancel = _a.cancel, children = _a.children, onResizeStart = _a.onResizeStart, onResize = _a.onResize, onResizeStop = _a.onResizeStop, onDragStart = _a.onDragStart, onDrag = _a.onDrag, onDragStop = _a.onDragStop, resizeHandleStyles = _a.resizeHandleStyles, resizeHandleClasses = _a.resizeHandleClasses, resizeHandleComponent = _a.resizeHandleComponent, enableResizing = _a.enableResizing, resizeGrid = _a.resizeGrid, resizeHandleWrapperClass = _a.resizeHandleWrapperClass, resizeHandleWrapperStyle = _a.resizeHandleWrapperStyle, scale = _a.scale, allowAnyClick = _a.allowAnyClick, dragPositionOffset = _a.dragPositionOffset, resizableProps = __rest(_a, [\"disableDragging\", \"style\", \"dragHandleClassName\", \"position\", \"onMouseDown\", \"onMouseUp\", \"dragAxis\", \"dragGrid\", \"bounds\", \"enableUserSelectHack\", \"cancel\", \"children\", \"onResizeStart\", \"onResize\", \"onResizeStop\", \"onDragStart\", \"onDrag\", \"onDragStop\", \"resizeHandleStyles\", \"resizeHandleClasses\", \"resizeHandleComponent\", \"enableResizing\", \"resizeGrid\", \"resizeHandleWrapperClass\", \"resizeHandleWrapperStyle\", \"scale\", \"allowAnyClick\", \"dragPositionOffset\"]);\n        var defaultValue = this.props.default ? __assign({}, this.props.default) : undefined;\n        // Remove unknown props, see also https://reactjs.org/warnings/unknown-prop.html\n        delete resizableProps.default;\n        var cursorStyle = disableDragging || dragHandleClassName ? { cursor: \"auto\" } : { cursor: \"move\" };\n        var innerStyle = __assign(__assign(__assign({}, resizableStyle), cursorStyle), style);\n        var _b = this.offsetFromParent, left = _b.left, top = _b.top;\n        var draggablePosition;\n        if (position) {\n            draggablePosition = {\n                x: position.x - left,\n                y: position.y - top,\n            };\n        }\n        // INFO: Make uncontorolled component when resizing to control position by setPostion.\n        var pos = this.state.resizing ? undefined : draggablePosition;\n        var dragAxisOrUndefined = this.state.resizing ? \"both\" : dragAxis;\n        return (createElement(Draggable, { ref: function (c) {\n                if (!c)\n                    return;\n                _this.draggable = c;\n            }, handle: dragHandleClassName ? \".\".concat(dragHandleClassName) : undefined, defaultPosition: defaultValue, onMouseDown: onMouseDown, \n            // @ts-expect-error\n            onMouseUp: onMouseUp, onStart: this.onDragStart, onDrag: this.onDrag, onStop: this.onDragStop, axis: dragAxisOrUndefined, disabled: disableDragging, grid: dragGrid, bounds: bounds ? this.state.bounds : undefined, position: pos, enableUserSelectHack: enableUserSelectHack, cancel: cancel, scale: scale, allowAnyClick: allowAnyClick, nodeRef: this.resizableElement, positionOffset: dragPositionOffset },\n            createElement(Resizable, __assign({}, resizableProps, { ref: function (c) {\n                    if (!c)\n                        return;\n                    _this.resizable = c;\n                    _this.resizableElement.current = c.resizable;\n                }, defaultSize: defaultValue, size: this.props.size, enable: typeof enableResizing === \"boolean\" ? getEnableResizingByFlag(enableResizing) : enableResizing, onResizeStart: this.onResizeStart, onResize: this.onResize, onResizeStop: this.onResizeStop, style: innerStyle, minWidth: this.props.minWidth, minHeight: this.props.minHeight, maxWidth: this.state.resizing ? this.state.maxWidth : this.props.maxWidth, maxHeight: this.state.resizing ? this.state.maxHeight : this.props.maxHeight, grid: resizeGrid, handleWrapperClass: resizeHandleWrapperClass, handleWrapperStyle: resizeHandleWrapperStyle, lockAspectRatio: this.props.lockAspectRatio, lockAspectRatioExtraWidth: this.props.lockAspectRatioExtraWidth, lockAspectRatioExtraHeight: this.props.lockAspectRatioExtraHeight, handleStyles: resizeHandleStyles, handleClasses: resizeHandleClasses, handleComponent: resizeHandleComponent, scale: this.props.scale }), children)));\n    };\n    Rnd.defaultProps = {\n        maxWidth: Number.MAX_SAFE_INTEGER,\n        maxHeight: Number.MAX_SAFE_INTEGER,\n        scale: 1,\n        onResizeStart: function () { },\n        onResize: function () { },\n        onResizeStop: function () { },\n        onDragStart: function () { },\n        onDrag: function () { },\n        onDragStop: function () { },\n    };\n    return Rnd;\n}(PureComponent));\n\nexport { Rnd };\n","import React, { createContext, useState } from \"react\";\n\ninterface PanelState {\n  visible: boolean;\n  minimised: boolean;\n}\n\ninterface PanelsType extends Record<string, PanelState> {}\n\ntype ToggleFn = (id: string) => void;\ntype GetFn = (id: string, state: \"visible\" | \"minimised\") => boolean;\n\ninterface FloatingPanelContextType {\n  toggleVisibility: ToggleFn;\n  get: GetFn;\n  panels: PanelsType;\n}\n\nexport const FloatingPanelContext = createContext<FloatingPanelContextType | undefined>(undefined);\n\ninterface FloatingPanelProviderProps {\n  children: React.ReactNode;\n}\n\nexport const FloatingPanelProvider: React.FC<FloatingPanelProviderProps> = ({ children }) => {\n  const [panels, setPanels] = useState<PanelsType>({});\n\n  const toggleVisibility: ToggleFn = (id) => {\n    setPanels((prevStates) => {\n      return {\n        ...prevStates,\n        [id]: {\n          ...prevStates[id],\n          minimised: prevStates[id]?.minimised ?? false,\n          visible: !prevStates[id]?.visible,\n        },\n      };\n    });\n  };\n\n  const get: GetFn = (id, state) => !!panels[id]?.[state];\n\n  return (\n    <FloatingPanelContext.Provider value={{ panels, get, toggleVisibility }}>{children}</FloatingPanelContext.Provider>\n  );\n};\n\nexport type { FloatingPanelContextType, FloatingPanelProviderProps, PanelsType, PanelState, ToggleFn };\n","import { useContext } from \"react\";\nimport { FloatingPanelContext } from \"./FloatingPanelProvider\";\n\n/**\n * Should be used to internal components only\n */\nconst useFloatingPanelContext = () => {\n  const context = useContext(FloatingPanelContext);\n\n  if (!context) {\n    throw new Error(\n      \"FloatingPanel.ToggleButton must be used within a FloatingPanel.Provider\"\n    );\n  }\n\n  return context;\n}\n\nexport { useFloatingPanelContext };","import React, { HTMLAttributes } from \"react\";\nimport MUIStack from \"@mui/material/Stack\";\nimport MUIBox from \"@mui/material/Box\";\nimport { useTheme } from \"@mui/material/styles\";\n\nimport { Text, XIcon } from \"../../data-display\";\nimport { IconButton } from \"../../buttons\";\nimport { useFloatingPanelContext } from \"./useFloatingPanelContext\";\nimport { FlexBox } from \"../../layout\";\n\ninterface PanelProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * For linking to associated ToggleButtonState\n   */\n  targetId: string;\n  /**\n   * \tPanel title.\n   */\n  title: string;\n  width?: string;\n  /**\n   * Total number of items\n   */\n  count?: number;\n  /**\n   * Component content\n   */\n  children?: React.ReactNode;\n  /**\n   *\n   */\n  dragHandle?: React.ReactNode;\n  /**\n   * Specifies a selector to be used as the handle that initiates drag. Example:\n   * drag-handle.\n   */\n  dragHandleClassName?: string;\n  /**\n   * The icon to be displayed before the title\n   */\n  iconBeforeTitle?: React.ReactNode;\n  /**\n   * The x and y property is used to set the default position of the component.\n   */\n  defaultPosition?: { x: number; y: number };\n  menu?: any;\n}\n\nconst Panel: React.FC<PanelProps> = ({\n  count = 0,\n  iconBeforeTitle,\n  targetId,\n  title,\n  children,\n  width,\n  dragHandle = null,\n  menu,\n  ...props\n}) => {\n  const theme = useTheme();\n  const context = useFloatingPanelContext();\n\n  const visible = context.panels[targetId]?.visible;\n\n  // const backgroundColor = theme.palette.mode === \"dark\" ? theme.palette.grey[900] : theme.palette.grey[300];\n\n  const backgroundColor = \"#2C2C2C\";\n\n  return (\n    <MUIBox\n      sx={{\n        width: \"100%\",\n        height: \"100%\",\n        visibility: visible ? \"visible\" : \"hidden\",\n        backgroundColor,\n        display: \"flex\",\n        flexDirection: \"column\",\n        minHeight: 0,\n      }}\n      {...props}\n    >\n      <MUIStack\n        direction=\"row\"\n        spacing={1}\n        padding={1}\n        sx={{\n          justifyContent: \"space-between\",\n          alignItems: \"center\",\n          backgroundColor,\n          width: \"100%\",\n          borderTopLeftRadius: 4,\n          borderTopRightRadius: 4,\n          flex: \"0 0 auto\",\n        }}\n      >\n        <FlexBox direction=\"row\" gap={1} alignItems=\"center\" className=\"drag-handle\" sx={{ cursor: \"move\" }}>\n          {dragHandle}\n          {iconBeforeTitle}\n          <Text sx={{ paddingRight: 4 }}>\n            {title}\n            {count > 0 ? <span css={{ marginLeft: 4, color: theme.palette.primary.main }}>({count})</span> : null}\n          </Text>\n        </FlexBox>\n        <FlexBox direction=\"row\" gap={1} alignItems=\"center\">\n          {menu}\n          <IconButton\n            size=\"small\"\n            onClick={() => context?.toggleVisibility(targetId)}\n            color=\"primary\"\n            aria-label=\"close\"\n          >\n            <XIcon fontSize=\"small\" />\n          </IconButton>\n        </FlexBox>\n      </MUIStack>\n      <MUIBox\n        sx={{\n          backgroundColor,\n          width: \"100%\",\n          flex: 1,\n          minHeight: 0,\n          borderBottomLeftRadius: 4,\n          borderBottomRightRadius: 4,\n          borderTopRightRadius: 4,\n          pl: 1,\n          pr: 1,\n          pb: 1,\n        }}\n      >\n        {children}\n        <div\n          style={{\n            position: \"absolute\",\n            bottom: 0,\n            right: 0,\n            width: \"1rem\", // w-8\n            height: \"1rem\", // h-8\n            borderRight: \"2px solid #9CA3AF\",\n            borderBottom: \"2px solid #9CA3AF\",\n            zIndex: 100,\n          }}\n        />\n      </MUIBox>\n    </MUIBox>\n  );\n};\n\nexport default Panel;\nexport type { PanelProps };\n","import React, { HTMLAttributes } from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { Rnd } from \"react-rnd\";\n\nimport Panel from \"./Panel\";\nimport { useFloatingPanelContext } from \"./useFloatingPanelContext\";\nimport { DragHandleIcon } from \"../../data-display\";\n\ninterface DraggableFloatingPanelProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * For linking to associated ToggleButtonState\n   */\n  targetId: string;\n  /**\n   * \tPanel title.\n   */\n  title: string;\n  /**\n   * Specifies movement boundaries. Accepted values:\n   *\n   * parent restricts movement\n   * within the node's offsetParent (nearest node with position relative or\n   * absolute), window, body, Selector like .fooClassName or Element.\n   */\n  bounds?: \"parent\" | \"window\" | \"body\" | string | Element;\n  /**\n   * Total number of items\n   */\n  count?: number;\n  /**\n   * Component content\n   */\n  children?: React.ReactNode;\n  /**\n   * Specifies a selector to be used as the handle that initiates drag. Example:\n   * drag-handle.\n   */\n  dragHandleClassName?: string;\n  /**\n   * The icon to be displayed before the title\n   */\n  iconBeforeTitle?: React.ReactNode;\n  /**\n   * The x and y property is used to set the default position of the component.\n   */\n  defaultPosition?: { x: number; y: number };\n  menu?: any;\n}\n\nconst DraggableFloatingPanel: React.FC<DraggableFloatingPanelProps> = ({\n  bounds,\n  defaultPosition = { x: 50, y: 150 },\n  dragHandleClassName = \"drag-handle\",\n  targetId,\n  menu,\n  children,\n  ...props\n}) => {\n  const context = useFloatingPanelContext();\n  const theme = useTheme();\n\n  const visible = !context.panels[targetId]?.minimised && context.panels[targetId]?.visible;\n\n  const MIN_SIZE = 256;\n\n  const dragHandle = (\n    <DragHandleIcon\n      className={dragHandleClassName}\n      sx={{\n        fontSize: 14,\n        color: theme.palette.grey[400],\n        cursor: \"move\",\n      }}\n    />\n  );\n\n  return (\n    <Rnd\n      bounds={bounds}\n      enableResizing={{\n        bottomRight: true,\n      }}\n      minWidth={MIN_SIZE}\n      minHeight={MIN_SIZE}\n      dragHandleClassName={dragHandleClassName}\n      default={{\n        x: defaultPosition.x,\n        y: defaultPosition.y,\n        width: 500,\n        height: 500,\n      }}\n      cancel=\".map\"\n      css={{\n        visibility: visible ? \"visible\" : \"hidden\",\n      }}\n    >\n      <Panel targetId={targetId} dragHandle={dragHandle} {...props} menu={menu}>\n        {children}\n      </Panel>\n    </Rnd>\n  );\n};\n\nexport default DraggableFloatingPanel;\nexport type { DraggableFloatingPanelProps };\n","import React from \"react\";\nimport MUIToggleButton, {\n  ToggleButtonProps as MUIToggleButtonProps,\n} from \"@mui/material/ToggleButton\";\nimport { styled } from \"@mui/material/styles\";\nimport MUITooltip from \"@mui/material/Tooltip\";\n\n/**\n * TODO reuse ToolbarToggleButton in FloatingPanelToggleButton\n * WHEN https://telicent.atlassian.net/browse/TELFE-1249\n */\nimport { useFloatingPanelContext } from \"./useFloatingPanelContext\";\n\nconst StyledToggleButton = styled(MUIToggleButton)(() => ({\n  border: 0,\n}));\n\ninterface FloatingPanelToggleButtonProps\n  extends Omit<\n    MUIToggleButtonProps,\n    \"sx\" | \"classes\" | \"color\" | \"onClick\" | \"selected\"\n  > {\n  /**\n   * The unique identifier\n   */\n  id: string;\n  /**\n   * Tooltip title\n   */\n  tooltip?: string;\n}\n\nconst FloatingPanelToggleButton: React.FC<FloatingPanelToggleButtonProps> = ({\n  tooltip,\n  ...props\n}) => {\n  const context = useFloatingPanelContext();\n\n  return (\n    <MUITooltip\n      title={tooltip}\n      placement=\"bottom\"\n      slotProps={{\n        popper: {\n          modifiers: [\n            {\n              name: \"offset\",\n              options: {\n                offset: [0, -10],\n              },\n            },\n          ],\n        },\n      }}\n    >\n      <StyledToggleButton\n        onClick={() => context.toggleVisibility(props.id)}\n        selected={context.get(props.id, \"visible\")}\n        color=\"primary\"\n        {...props}\n      />\n    </MUITooltip>\n  );\n};\n\nexport default FloatingPanelToggleButton;\nexport type { FloatingPanelToggleButtonProps };\n","import { useFloatingPanelContext } from \"./useFloatingPanelContext\";\n\nconst useFloatingPanels = () => {\n  const context = useFloatingPanelContext();\n\n  const getPanels = () => {\n    return Object.keys(context.panels);\n  };\n\n  return { panels: getPanels() };\n};\n\nexport default useFloatingPanels;\n","import DraggableFloatingPanel from \"./DraggableFloatingPanel\";\nimport { FloatingPanelProvider } from \"./FloatingPanelProvider\";\nimport FloatingPanelToggleButton from \"./FloatingPanelToggleButton\";\n\nexport const FloatingPanel = {\n  DraggablePanel: DraggableFloatingPanel,\n  Provider: FloatingPanelProvider,\n  ToggleButton: FloatingPanelToggleButton,\n};\n\nexport { default as useFloatingPanels } from \"./useFloatingPanels\";\n\nexport * from \"./DraggableFloatingPanel\";\n\nexport * from \"./FloatingPanelProvider\";\nexport * from \"./FloatingPanelToggleButton\";\n","import React, { HTMLAttributes } from \"react\";\nimport MUIStack from \"@mui/material/Stack\";\nimport MUIBox from \"@mui/material/Box\";\nimport { useTheme } from \"@mui/material/styles\";\n\nimport { Text, XIcon } from \"../../data-display\";\nimport { IconButton } from \"../../buttons\";\nimport { useFloatingPanelContext } from \"../FloatingPanel/useFloatingPanelContext\";\n\ninterface PanelProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * For linking to associated ToggleButtonState\n   */\n  targetId: string;\n  /**\n   * \tPanel title.\n   */\n  title: string;\n  /**\n   * Total number of items\n   */\n  count?: number;\n  /**\n   * Component content\n   */\n  children?: React.ReactNode;\n  /**\n   *\n   */\n  dragHandle?: React.ReactNode;\n  /**\n   * Specifies a selector to be used as the handle that initiates drag. Example:\n   * drag-handle.\n   */\n  dragHandleClassName?: string;\n  /**\n   * The icon to be displayed before the title\n   */\n  iconBeforeTitle?: React.ReactNode;\n  /**\n   * The x and y property is used to set the default position of the component.\n   */\n  defaultPosition?: { x: number; y: number };\n}\n\nconst Panel: React.FC<PanelProps> = ({\n  count = 0,\n  iconBeforeTitle,\n  targetId,\n  title,\n  children,\n  dragHandle = null,\n  ...props\n}) => {\n  const theme = useTheme();\n  const context = useFloatingPanelContext();\n\n  const visible = !context.panels[targetId]?.minimised && context.panels[targetId]?.visible;\n\n  const backgroundColor = theme.palette.mode === \"dark\" ? theme.palette.grey[900] : theme.palette.grey[300];\n\n  return (\n    <MUIBox\n      sx={{\n        width: \"fit-content\",\n        height: \"fit-content\",\n        visibility: visible ? \"visible\" : \"hidden\",\n      }}\n      {...props}\n    >\n      <MUIStack\n        direction=\"row\"\n        spacing={1}\n        alignItems=\"center\"\n        padding={1}\n        sx={{\n          backgroundColor,\n          width: \"fit-content\",\n          borderTopLeftRadius: 4,\n          borderTopRightRadius: 4,\n        }}\n      >\n        {dragHandle}\n        {iconBeforeTitle}\n        <Text sx={{ paddingRight: 4 }}>\n          {title}\n          {count > 0 ? <span css={{ marginLeft: 4, color: theme.palette.primary.main }}>({count})</span> : null}\n        </Text>\n        <IconButton\n          size=\"small\"\n          onClick={() => context?.toggleVisibility(targetId)}\n          color=\"primary\"\n          aria-label=\"minimise\"\n        >\n          <XIcon fontSize=\"small\" />\n        </IconButton>\n      </MUIStack>\n      <MUIBox\n        sx={{\n          backgroundColor,\n          width: \"fit-content\",\n          height: \"fit-content\",\n          borderBottomLeftRadius: 4,\n          borderBottomRightRadius: 4,\n          borderTopRightRadius: 4,\n          padding: 0.4,\n        }}\n      >\n        {!context?.get(targetId, \"minimised\") && children}\n      </MUIBox>\n    </MUIBox>\n  );\n};\n\nexport default Panel;\nexport type { PanelProps };\n","import React from \"react\";\nimport { useTheme } from \"@mui/material\";\nimport MUIPopOver, {\n  PopoverProps as MUIPopOverProps,\n  PopoverOrigin,\n  PopoverPosition,\n  PopoverReference,\n} from \"@mui/material/Popover\";\nimport { ModalProps } from \"../../utils\";\nexport interface PopOverProps extends Omit<ModalProps, \"children\"> {\n  /**\n   * Used to set the position of the pop over\n   */\n  anchorEl?: MUIPopOverProps[\"anchorEl\"];\n  /**\n   * Anchor element anchor. This is the point on the anchor where the pop over's\n   * `anchorEl` will attach to. Should not e used when anchorReference is\n   * 'anchorPosition'.\n   *\n   * Options:\n   * vertical: [top, center, bottom];\n   * horizontal: [left, center, right].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  anchorOrigin?: PopoverOrigin;\n  /**\n   * This is the position that may be used to set the position of the pop over.\n   * The coordinates are relative to the application's client area.\n   */\n  anchorPosition?: PopoverPosition;\n  /**\n   * This determines which anchor prop to refer to when setting\n   * the position of the pop over.\n   * @default 'anchorEl'\n   */\n  anchorReference?: PopoverReference;\n  /**\n   * The content of the component.\n   */\n  children?: React.ReactNode;\n  // onClose?: MUIModalProps[\"onClose\"];\n  /**\n   * If `true`, the component is shown.\n   */\n  open: boolean;\n  /**\n   * This is the point on the pop over which\n   * will attach to the anchor's origin.\n   *\n   * Options:\n   * vertical: [top, center, bottom, x(px)];\n   * horizontal: [left, center, right, x(px)].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  transformOrigin?: PopoverOrigin;\n  width?: number;\n}\n\n/**\n * A PopOver can be used to display some content on top of another.\n *\n * Things to know when using the PopOver component:\n * - The component is built on top of the Modal component.\n */\nconst PopOver = (props: PopOverProps) => {\n  const theme = useTheme();\n\n  return (\n    <MUIPopOver\n      elevation={3}\n      slotProps={{\n        paper: {\n          sx: {\n            backgroundColor: theme.palette.mode === \"dark\" ? \"#2A2A2A\" : \"#eee\",\n            backgroundImage: \"none\",\n            width: props.width,\n            padding: 2,\n          },\n        },\n      }}\n      {...props}\n    />\n  );\n};\n\nexport default PopOver;\n","import React from \"react\";\nimport { ToolbarProps, useTheme } from \"@mui/material\";\nimport { Toolbar as MuiToolbar } from \"@mui/material\";\n\nconst Toolbar: React.FC<ToolbarProps> = ({ children, sx, ...rest }) => {\n  const theme = useTheme();\n  return (\n    <MuiToolbar\n      disableGutters={true}\n      variant=\"dense\"\n      sx={{ backgroundColor: theme.palette.mode === \"dark\" ? \"#2e2e2e\" : \"#FFFFFF\", paddingX: 2, paddingY: 1, ...sx }}\n      {...rest}\n    >\n      {children}\n    </MuiToolbar>\n  );\n};\n\nexport default Toolbar;\n","import React, { forwardRef } from 'react';\nimport MuiPaper, { PaperProps as MuiPaperProps } from '@mui/material/Paper';\n\nexport const Paper = forwardRef<HTMLDivElement, MuiPaperProps>(function Paper(\n  props,\n  ref\n) {\n  return <MuiPaper ref={ref} {...props} />;\n});\n\nexport default Paper;","import { alpha } from \"@mui/material/styles\";\n\nconst main = \"#2F44CA\";\n\nconst DataNavy = {\n  light: {\n    primary: {\n      main,\n      dark: alpha(main, 0.7),\n      light: alpha(main, 0.5),\n      contrastText: \"#FFFFFF\",\n    },\n  },\n};\n\nexport default DataNavy;\n","import { common } from \"@mui/material/colors\";\nimport { alpha } from \"@mui/material/styles\";\n\nconst main = \"#F56AAA\";\n\nconst DocumentPink = {\n  dark: {\n    primary: {\n      main,\n      dark: alpha(main, 0.7),\n      light: alpha(main, 0.5),\n      contrastText: common.black,\n    },\n  },\n};\n\nexport default DocumentPink;\n","import { common } from \"@mui/material/colors\";\nimport { alpha } from \"@mui/material/styles\";\n\nconst main = \"#F2A64B\";\n\nconst GraphOrange = {\n  dark: {\n    primary: {\n      main,\n      dark: alpha(main, 0.7),\n      light: alpha(main, 0.5),\n      contrastText: common.black,\n    },\n  },\n};\n\nexport default GraphOrange;\n","import { alpha } from \"@mui/material/styles\";\nimport { common } from \"@mui/material/colors\";\n\nconst darkMain = \"#20BCFA\";\nconst lightMain = \"#2F44CA\";\n\nconst AdminBlue = {\n  dark: {\n    primary: {\n      main: darkMain,\n      dark: alpha(darkMain, 0.7),\n      light: alpha(darkMain, 0.5),\n      contrastText: common.black,\n    },\n  },\n  light: {\n    primary: {\n      main: lightMain,\n      dark: alpha(lightMain, 0.7),\n      light: alpha(lightMain, 0.5),\n      contrastText: \"#FFFFFF\",\n    },\n  },\n};\n\nexport default AdminBlue;\n","import { common } from \"@mui/material/colors\";\nimport { alpha } from \"@mui/material/styles\";\n\nconst main = \"#000000\";\n\nconst Blank = {\n  light: {\n    primary: {\n      main,\n      dark: alpha(main, 0.7),\n      light: alpha(main, 0.5),\n      contrastText: common.white,\n    },\n  },\n};\n\nexport default Blank;\n","import zod from \"zod\";\nimport DataNavy from \"./DataNavy\";\nimport DocumentPink from \"./DocumentPink\";\nimport GraphOrange from \"./GraphOrange\";\nimport AdminBlue from \"./AdminBlue\";\nimport Blank from \"./BlankTheme\";\n\nexport const UIThemeSchema = zod.enum([\"DataNavy\", \"DocumentPink\", \"GraphOrange\", \"AdminBlue\", \"Blank\"]);\nexport type UITheme = zod.infer<typeof UIThemeSchema>;\n\nexport type PaletteColor = {\n  main: string;\n  dark: string;\n  light: string;\n  contrastText: string;\n};\n\nexport type TextPalette = {\n  primary: string;\n  secondary: string;\n  disabled: string;\n};\n\nexport type BackgroundPalette = {\n  default: string;\n  paper?: string;\n};\n\n// A single mode (light or dark) of a theme. `primary` is the only required\n// token; every other token is an optional override of the shared base palette\n// (see ./palette/basePalette). Supply a partial object to tweak individual\n// fields, or a full object to replace a base token entirely.\nexport type ThemeModePalette = {\n  primary: PaletteColor;\n  tertiary?: PaletteColor;\n  text?: Partial<TextPalette>;\n  background?: Partial<BackgroundPalette>;\n};\n\nexport type ThemeColor = {\n  dark?: ThemeModePalette;\n  light?: ThemeModePalette;\n};\n\nconst THEME_COLORS: Record<UITheme, ThemeColor> = {\n  DataNavy,\n  DocumentPink,\n  GraphOrange,\n  AdminBlue,\n  Blank,\n};\n\nexport default THEME_COLORS;\n","import { ThemeOptions } from \"@mui/material\";\nimport { common } from \"@mui/material/colors\";\n\ndeclare module \"@mui/material/Avatar\" {\n  interface AvatarPropsVariantOverrides {\n    \"circular-outlined\": true;\n  }\n}\n\nconst AVATAR_OVERRIDES: ThemeOptions[\"components\"] = {\n  MuiAvatar: {\n    variants: [\n      {\n        props: { variant: \"circular-outlined\" },\n        style: ({ theme }) => {\n          const color =\n            theme.palette.primary.main === common.white\n              ? theme.palette.primary.contrastText\n              : theme.palette.primary.main;\n\n          return {\n            backgroundColor: \"transparent\",\n            border: `2px solid ${color}`,\n            color,\n          };\n        },\n      },\n    ],\n  },\n};\n\nexport default AVATAR_OVERRIDES;\n","import { ThemeOptions } from \"@mui/material\";\nimport THEME_COLORS, { UITheme } from \"../../colors/theme-colors\";\n\nconst generateButtonOverrides = (uiTheme: UITheme) =>\n  ({\n    MuiButton: {\n      styleOverrides: {\n        root: ({ theme }) => ({\n          paddingInline: theme.spacing(2),\n        }),\n        outlinedInherit: ({ theme }) => ({\n          border: `1px solid #CFD8DC`,\n          boxShadow: theme.shadows[2],\n        }),\n        outlinedPrimary: ({ theme }) => ({\n          border: `1px solid ${theme.palette.primary.main}`,\n        }),\n        startIcon: {\n          \">*:nth-last-of-type(1)\": {\n            fontSize: \"inherit\",\n          },\n        },\n        endIcon: {\n          \">*:nth-last-of-type(1)\": {\n            fontSize: \"inherit\",\n          },\n        },\n      },\n    },\n    MuiIconButton: {\n      styleOverrides: {\n        root: {\n          borderRadius: 4,\n        },\n      },\n    },\n  } satisfies ThemeOptions[\"components\"]);\n\nexport default generateButtonOverrides;\n","import { alpha, ThemeOptions } from \"@mui/material\";\nimport { UITheme } from \"../../colors/theme-colors\";\n\nconst generateCardOverrides = (_uiTheme: UITheme) =>\n  ({\n    MuiCard: {\n      variants: [\n        {\n          props: { variant: \"outlined\" },\n          style: ({ theme }) => ({\n            borderWidth: 1,\n            borderStyle: \"solid\",\n            borderColor: alpha(theme.palette.primary.main, 0.4),\n          }),\n        },\n      ],\n      styleOverrides: {\n        root: ({ theme }) => ({\n          borderRadius: theme.spacing(1),\n        }),\n      },\n    },\n    MuiCardContent: {\n      styleOverrides: {\n        root: ({ theme }) => ({\n          padding: theme.spacing(3),\n          \":last-child\": {\n            padding: theme.spacing(3),\n          },\n        }),\n      },\n    },\n    MuiCardActions: {\n      styleOverrides: {\n        root: {\n          padding: 0,\n          flexDirection: \"row-reverse\",\n          width: \"100%\",\n        },\n      },\n    },\n  } satisfies ThemeOptions[\"components\"]);\n\nexport default generateCardOverrides;\n","/**\n * Typography tokens - framework agnostic design tokens\n * These define our typography contract, independent of MUI or any framework\n */\n\nimport { TypographyOptions } from \"@mui/material/styles/createTypography\";\n\nexport const TYPOGRAPHY_TOKENS = {\n  h1: {\n    fontFamily: '\"Space Grotesk\"',\n    fontSize: \"32px\",\n    fontStyle: \"normal\" as const,\n    fontWeight: 500,\n    lineHeight: \"110%\",\n    letterSpacing: \"0.1px\",\n  },\n  h2: {\n    fontFamily: '\"Space Grotesk\"',\n    fontSize: \"24px\",\n    fontStyle: \"normal\" as const,\n    fontWeight: 500,\n    lineHeight: \"120%\",\n    letterSpacing: 0,\n  },\n  h3: {\n    fontFamily: '\"Space Grotesk\"',\n    fontSize: \"20px\",\n    fontStyle: \"normal\" as const,\n    fontWeight: 500,\n    lineHeight: \"116%\",\n    letterSpacing: 0,\n  },\n  body1: {\n    fontFamily: \"Figtree\",\n    fontSize: \"16px\",\n    fontStyle: \"normal\" as const,\n    fontWeight: 400,\n    lineHeight: \"150%\",\n    letterSpacing: \"0.16px\",\n  },\n  body2: {\n    fontFamily: \"Figtree\",\n    fontSize: \"14px\",\n    fontStyle: \"normal\" as const,\n    fontWeight: 400,\n    lineHeight: \"143%\",\n    letterSpacing: \"0.17px\",\n  },\n  subtitle1: {\n    fontFamily: \"Figtree\",\n    fontSize: \"16px\",\n    fontStyle: \"normal\" as const,\n    fontWeight: 700,\n    lineHeight: \"130%\",\n    letterSpacing: \"0.15px\",\n  },\n} as const;\n\nexport type TypographyVariant = keyof typeof TYPOGRAPHY_TOKENS;\n\n/**\n * MUI Typography overrides derived from design tokens\n * Use this in your theme configuration\n */\nexport const MUI_TYPOGRAPHY_OVERRIDES: TypographyOptions = {\n  fontFamily: '\"Figtree\", sans-serif',\n  h1: TYPOGRAPHY_TOKENS.h1,\n  h2: TYPOGRAPHY_TOKENS.h2,\n  h3: TYPOGRAPHY_TOKENS.h3,\n  body1: TYPOGRAPHY_TOKENS.body1,\n  body2: TYPOGRAPHY_TOKENS.body2,\n  subtitle1: TYPOGRAPHY_TOKENS.subtitle1,\n};\n","import { BreakpointsOptions } from \"@mui/material\";\n\nexport const BREAKPOINT_VALUES = {\n  xs: 0,\n  sm: 800,\n  md: 960,\n  lg: 1280,\n  xl: 1536,\n} as const;\n\nexport const MUI_BREAKPOINTS: BreakpointsOptions = {\n  values: BREAKPOINT_VALUES,\n};\n","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","import { ThemeOptions } from \"@mui/material\";\nimport { TYPOGRAPHY_TOKENS } from \"../../tokens\";\nimport SpaceGroteskRegularWoff2 from \"../../assets/fonts/space-grotesk/space-grotesk-regular.woff2\";\nimport SpaceGroteskMediumWoff2 from \"../../assets/fonts/space-grotesk/space-grotesk-medium.woff2\";\nimport FigtreeRegularWoff2 from \"../../assets/fonts/figtree/figtree-regular.woff2\";\nimport FigtreeMediumWoff2 from \"../../assets/fonts/figtree/figtree-medium.woff2\";\nimport FigtreeBoldWoff2 from \"../../assets/fonts/figtree/figtree-bold.woff2\";\n\nconst fonts = {\n  heading: \"Space Grotesk, Helvetica, Arial, sans-serif\",\n  body: \"Figtree, Helvetica, Arial, sans-serif\",\n};\n\nconst TYPOGRAPHY_STYLE_OVERRIDES = {\n  fontFamily: fonts.body,\n  h1: TYPOGRAPHY_TOKENS.h1,\n  h2: TYPOGRAPHY_TOKENS.h2,\n  h3: TYPOGRAPHY_TOKENS.h3,\n  h4: {\n    fontFamily: fonts.heading,\n    fontWeight: 500,\n    fontSize: \"2rem\",\n  },\n  h5: {\n    fontFamily: fonts.heading,\n  },\n  h6: {\n    fontFamily: fonts.heading,\n  },\n  button: {\n    textTransform: \"none\",\n  },\n  body1: TYPOGRAPHY_TOKENS.body1,\n  body2: TYPOGRAPHY_TOKENS.body2,\n  subtitle1: TYPOGRAPHY_TOKENS.subtitle1,\n} satisfies ThemeOptions[\"typography\"];\n\nexport const FONT_FACES_CSS = `\n    @font-face {\n      font-family: 'Space Grotesk';\n      font-style: normal;\n      font-variant: normal;\n      font-weight: 400;\n      src: url(${SpaceGroteskRegularWoff2}) format('woff2');\n    }\n\n    @font-face {\n      font-family: 'Space Grotesk';\n      font-style: normal;\n      font-variant: normal;\n      font-weight: 500;\n      src:  url(${SpaceGroteskMediumWoff2}) format('woff2');\n    }\n\n    @font-face {\n      font-family: 'Figtree';\n      font-style: normal;\n      font-variant: normal;\n      font-weight: 400;\n      src: url(${FigtreeRegularWoff2}) format('woff2');\n    }\n\n    @font-face {\n      font-family: 'Figtree';\n      font-style: normal;\n      font-variant: normal;\n      font-weight: 500;\n      src: url(${FigtreeMediumWoff2}) format('woff2');\n    }\n\n    @font-face {\n      font-family: 'Figtree';\n      font-style: normal;\n      font-variant: normal;\n      font-weight: 700;\n      src: url(${FigtreeBoldWoff2}) format('woff2');\n    }\n    `;\n\nexport default TYPOGRAPHY_STYLE_OVERRIDES;\n","import { alpha, ThemeOptions } from \"@mui/material\";\nimport { UITheme } from \"../colors/theme-colors\";\nimport * as componentOverrides from \"./component-overrides\";\nimport { FONT_FACES_CSS } from \"./typography\";\nconst generateComponentOverrides = (uiTheme: UITheme) =>\n  ({\n    ...componentOverrides.AVATAR_OVERRIDES,\n    ...componentOverrides.generateButtonOverrides(uiTheme),\n    ...componentOverrides.generateCardOverrides(uiTheme),\n    MuiPaper: {\n      styleOverrides: {\n        root: {\n          backgroundImage: \"none\",\n        },\n      },\n    },\n    MuiMenuItem: {\n      styleOverrides: {\n        root: ({ theme }) => ({\n          display: \"flex\",\n          alignItems: \"center\",\n          margin: theme.spacing(0, 1),\n          borderRadius: theme.shape.borderRadius,\n          border: \"1px solid transparent\",\n          \"&.Mui-selected\": {\n            backgroundColor: theme.palette.background.default,\n            color: theme.palette.primary.main,\n          },\n          \"&.Mui-selected.Mui-selected\": {\n            backgroundColor: theme.palette.background.default,\n            color: theme.palette.primary.main,\n          },\n          \"&.Mui-selected.Mui-selected:hover\": {\n            backgroundColor: theme.palette.background.default,\n          },\n          \"&.Mui-selected:hover\": {\n            backgroundColor: theme.palette.background.default,\n            color: theme.palette.primary.main,\n            backgroundImage: \"none\",\n          },\n          \"& .MuiPaper-root\": {\n            backgroundColor: theme.palette.mode === \"dark\" ? \"#2A2A2A\" : \"#ffffff\",\n          },\n          \"&:hover\": {\n            backgroundColor: theme.palette.background.default,\n            border: `1px solid ${theme.palette.primary.main}`,\n          },\n        }),\n      },\n    },\n    MuiAutocomplete: {\n      styleOverrides: {\n        tag: {\n          marginTop: 0,\n          marginBottom: 0,\n        },\n        paper: ({ theme }) => ({\n          borderRadius: theme.shape.borderRadius,\n        }),\n        listbox: ({ theme }) => ({\n          padding: theme.spacing(0.5, 0),\n        }),\n        option: ({ theme }) => ({\n          display: \"flex\",\n          alignItems: \"center\",\n          margin: theme.spacing(0, 1),\n          borderRadius: theme.shape.borderRadius,\n          border: \"1px solid transparent\",\n          padding: theme.spacing(1, 2),\n          \"&.Mui-selected, &[aria-selected='true']\": {\n            backgroundColor: theme.palette.background.default,\n            color: theme.palette.primary.main,\n          },\n          \"&.Mui-selected:hover, &[aria-selected='true']:hover\": {\n            backgroundColor: theme.palette.primary.main,\n            color: theme.palette.primary.main,\n            backgroundImage: \"none\",\n          },\n\n          \"&:hover, &.Mui-focused\": {\n            backgroundColor: `${theme.palette.background.default} !important`,\n            border: `1px solid ${theme.palette.primary.main} !important`,\n          },\n\n          \"&[aria-selected='true']\": {\n            backgroundColor: `${theme.palette.background.default} !important`,\n            color: theme.palette.primary.main,\n            border: `1px solid ${theme.palette.background.default}`,\n          },\n          \"&[aria-selected='true']:hover, &.Mui-focused[aria-selected='true']\": {\n            backgroundColor: `${theme.palette.background.default} !important`,\n            color: theme.palette.primary.main,\n          },\n        }),\n      },\n    },\n\n    MuiAppBar: {\n      styleOverrides: {\n        root: {\n          height: 64,\n        },\n      },\n    },\n    MuiCssBaseline: {\n      styleOverrides: (theme) => `\n     ${FONT_FACES_CSS}\n\n     /* ✅ Universal scrollbar styling */\n    * {\n      scrollbar-width: thin;\n      scrollbar-color: ${theme.palette.divider} transparent;\n    }\n    *::-webkit-scrollbar {\n      width: 8px;\n      height: 8px;\n    }\n    *::-webkit-scrollbar-thumb {\n      background-color: ${theme.palette.divider};\n      border-radius: 8px;\n      border: 2px solid transparent;\n      background-clip: content-box;\n    }\n    *::-webkit-scrollbar-track {\n      background: transparent;\n    }\n  `,\n    },\n  } satisfies ThemeOptions[\"components\"]);\n\nexport default generateComponentOverrides;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    undefinedTag = '[object Undefined]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeMax = Math.max,\n    nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = merge;\n","import { grey } from \"@mui/material/colors\";\nimport { alpha } from \"@mui/material/styles\";\n\n// Shared palette tokens inherited by every theme unless the theme overrides\n// them. A theme file may override any of these per mode (see ThemeModePalette);\n// tokens not overridden fall back to the values defined here.\n\nexport const baseLightPalette = {\n  tertiary: {\n    main: \"#8094A3\",\n    dark: alpha(\"#8094A3\", 0.7),\n    light: alpha(\"#8094A3\", 0.5),\n    contrastText: \"#252525\",\n  },\n  text: {\n    primary: \"#000000\",\n    secondary: \"#000000\",\n    disabled: \"#999999\",\n  },\n  background: {\n    default: \"#F9F9F9\",\n  },\n};\n\nexport const baseDarkPalette = {\n  tertiary: {\n    main: \"#6B6B6B\",\n    dark: alpha(\"#6B6B6B\", 0.7),\n    light: alpha(\"#6B6B6B\", 0.5),\n    contrastText: \"#FFFFFF\",\n  },\n  text: {\n    primary: \"#ececec\",\n    secondary: \"rgba(255, 255, 255, 0.7)\",\n    disabled: \"#999999\",\n  },\n  background: {\n    default: \"#1D1D1D\",\n    paper: \"#252525\",\n  },\n  grey,\n};\n","import { ThemeOptions } from \"@mui/material/styles\";\nimport merge from \"lodash.merge\";\nimport THEME_COLORS, { UITheme } from \"../theme-colors\";\nimport { baseLightPalette } from \"./basePalette\";\n\nconst createLightPalette = (uiTheme: UITheme): ThemeOptions[\"palette\"] => {\n  const themePalette = THEME_COLORS[uiTheme].light ?? THEME_COLORS[uiTheme].dark;\n  // Order matters: seed establishes mode + primary, the shared base fills the\n  // remaining tokens, then the theme's own palette merges last so any per-theme\n  // overrides (tertiary, text, background) win over the base defaults.\n  return merge({ mode: \"light\" as const, primary: themePalette?.primary }, baseLightPalette, themePalette);\n};\n\nexport default createLightPalette;\n","import { ThemeOptions } from \"@mui/material/styles\";\nimport merge from \"lodash.merge\";\nimport THEME_COLORS, { UITheme } from \"../theme-colors\";\nimport { baseDarkPalette } from \"./basePalette\";\n\nconst createDarkPalette = (uiTheme: UITheme): ThemeOptions[\"palette\"] => {\n  const themePalette = THEME_COLORS[uiTheme].dark ?? THEME_COLORS[uiTheme].light;\n  // Order matters: seed establishes mode + primary, the shared base fills the\n  // remaining tokens, then the theme's own palette merges last so any per-theme\n  // overrides (tertiary, text, background) win over the base defaults.\n  return merge({ mode: \"dark\" as const, primary: themePalette?.primary }, baseDarkPalette, themePalette);\n};\n\nexport default createDarkPalette;\n","import { createTheme as createMUITheme, ThemeOptions } from \"@mui/material/styles\";\nimport { UITheme, UIThemeSchema } from \"./colors/theme-colors\";\nimport generateComponentOverrides from \"./style-overrides/components\";\nimport TYPOGRAPHY_STYLE_OVERRIDES from \"./style-overrides/typography\";\nimport createLightPalette from \"./colors/palette/createLightPalette\";\nimport createDarkPalette from \"./colors/palette/createDarkPalette\";\nimport { MUI_BREAKPOINTS } from \"../tokens\";\n\nexport type ComponentOverrides = ReturnType<typeof generateComponentOverrides>;\n\nexport const createThemePure = (uiTheme: UITheme, palette: ThemeOptions[\"palette\"]) => {\n  return createMUITheme({\n    breakpoints: MUI_BREAKPOINTS,\n    components: generateComponentOverrides(uiTheme),\n    palette,\n    typography: TYPOGRAPHY_STYLE_OVERRIDES,\n  });\n};\n\n// Cache\ntype ReturnedTheme = ReturnType<typeof createThemePure>;\ntype ThemeCache = Record<UITheme, Record<\"light\" | \"dark\", ReturnedTheme>>;\n\nconst cache: ThemeCache = Object.fromEntries(\n  UIThemeSchema.options.map((uiTheme) => [\n    uiTheme,\n    {\n      light: createThemePure(uiTheme, createLightPalette(uiTheme)),\n      dark: createThemePure(uiTheme, createDarkPalette(uiTheme)),\n    },\n  ]),\n) as ThemeCache;\n\nexport const createTheme = (uiTheme: UITheme, dark: boolean, skipCache = false) =>\n  (!skipCache && cache?.[uiTheme]?.[dark ? \"dark\" : \"light\"]) ||\n  createThemePure(uiTheme, dark ? createDarkPalette(uiTheme) : createLightPalette(uiTheme));\n\nexport default createTheme;\n","import React from \"react\";\nimport { ThemeProvider as MUIThemeProvider } from \"@mui/material\";\nimport MUICssBaseline from \"@mui/material/CssBaseline\";\nimport { UITheme, UIThemeSchema } from \"./colors/theme-colors\";\nimport createTheme from \"./createTheme\";\n\ntype UIThemeProviderProps = React.PropsWithChildren & {\n  theme: UITheme;\n  dark?: boolean;\n};\n\nconst UIThemeProvider: React.FC<UIThemeProviderProps> = ({\n  theme,\n  dark = false,\n  children,\n}) => (\n  <MUIThemeProvider\n    theme={createTheme(theme, dark)}\n  >\n    <MUICssBaseline />\n    {children}\n  </MUIThemeProvider>\n);\n\nexport default UIThemeProvider;","import { z } from \"zod\";\n\n// Simulating React.ReactElement validation\nexport const reactElementSchema = z.object({\n  type: z.union([z.string(), z.function(), z.symbol(), z.object({}).passthrough()]), // Type can be a string or a function (JSXElementConstructor)\n  props: z.record(z.any()), // Props is an object with any keys\n  key: z.union([z.string(), z.number(), z.null()]).optional(), // Key is either string, number, or null\n});\n\n// z.object({}).passthrough() ← allow component types that are objects (e.g. styled, memo, forwardRef\n","import { z } from \"zod\";\nimport { reactElementSchema } from \"../../../schema/reactElementsSchema\";\n\nconst allModalPropsSchema = z.object({\n  open: z.boolean(),\n  children: reactElementSchema,\n  className: z.string().optional(),\n  id: z.string().optional(),\n  role: z.string().optional(),\n  closeAfterTransition: z.boolean().optional(),\n  components: z.any().optional(),\n  componentsProps: z.any().optional(),\n  container: z.any().optional(),\n  disableAutoFocus: z.boolean().optional(),\n  disableEnforceFocus: z.boolean().optional(),\n  disableEscapeKeyDown: z.boolean().optional(),\n  disablePortal: z.boolean().optional(),\n  disableRestoreFocus: z.boolean().optional(),\n  disableScrollLock: z.boolean().optional(),\n  hideBackdrop: z.boolean().optional(),\n  keepMounted: z.boolean().optional(),\n  manager: z.any().optional(),\n  onBackdropClick: z.function().optional(),\n  onClose: z.function().optional(),\n  onTransitionEnter: z.function().optional(),\n  onTransitionExit: z.function().optional(),\n  sx: z.any().optional(),\n  BackdropComponent: z.any().optional(),\n  BackdropProps: z.any().optional(),\n  slots: z.any().optional(),\n  slotProps: z.any().optional(),\n});\n\nexport const modalPropsSchema = allModalPropsSchema\n  .omit({\n    slots: true,\n    slotProps: true,\n    BackdropComponent: true,\n    BackdropProps: true,\n    closeAfterTransition: true,\n    components: true,\n    componentsProps: true,\n    container: true,\n    disableAutoFocus: true,\n    disableEnforceFocus: true,\n    disableEscapeKeyDown: true,\n    disableRestoreFocus: true,\n    hideBackdrop: true,\n    keepMounted: true,\n    onBackdropClick: true,\n    onTransitionEnter: true,\n    onTransitionExit: true,\n  })\n  .passthrough(); // Allow additional properties like 'aria-*' and 'data-*'\n\n// TODO lock this schema to the MUI type\n// WHY this is just an approximate\n// HOW\n//  1. improve schema to be exactly the same as `MUIModalProps`\n//  2. compare infered type and  MUIModalProps\n// WHEN we have lots of spare time\n// WHO anyone\n","import React from \"react\";\nimport MUIModal, { ModalProps as MUIModalProps } from \"@mui/material/Modal\";\nimport { Box, Button } from \"@mui/material\";\nimport CloseIcon from \"../../data-display/Icons/CloseIcon\";\nimport { modalPropsSchema } from \"./schema\";\n\nexport type ModalProps = Omit<\n  MUIModalProps,\n  // Do not allow change of look and feel\n  | \"slots\"\n  | \"slotProps\"\n  | \"BackdropComponent\" // deprecated\n  | \"BackdropProps\" // deprecated\n  | \"closeAfterTransition\"\n  | \"components\"\n  | \"componentsProps\"\n  | \"container\"\n  | \"disableAutoFocus\" // Non-accessible\n  | \"disableEnforceFocus\" // Non-accessible\n  | \"disableEscapeKeyDown\"\n  | \"disableRestoreFocus\"\n  | \"hideBackdrop\"\n  | \"keepMounted\"\n  | \"onBackdropClick\" // deprecated\n  | \"onTransitionEnter\"\n  | \"onTransitionExit\"\n> & {\n  onClose:\n    | ((\n        event: {},\n        reason:\n          | \"backdropClick\" // MUI in-built\n          | \"escapeKeyDown\" // MUI in-built\n          | \"closeButtonClick\" // custom event. Maybe delete and _misuse_ \"backdropClick\"\n      ) => void)\n    | undefined;\n  hideCloseButton?: boolean;\n};\n\nexport const Modal: React.FC<ModalProps> = ({ children, hideCloseButton, ...props }) => {\n  modalPropsSchema.parse({ children, ...props }); // This has perf cost\n  return (\n    <MUIModal {...props}>\n      <Box\n        sx={{\n          position: \"absolute\",\n          top: \"50%\",\n          left: \"50%\",\n          transform: \"translate(-50%, -50%)\",\n          bgcolor: \"background.paper\",\n          p: 2,\n          borderRadius: 1,\n          boxShadow: 24,\n          minWidth: 300,\n          maxWidth: \"90vw\", // Maximum width to leave margin\n          maxHeight: \"90vh\", // Maximum height for the modal\n          display: \"flex\",\n          flexDirection: \"column\",\n        }}\n      >\n        {/* Close Button */}\n        <Box\n          sx={{\n            display: \"flex\",\n            justifyContent: \"flex-end\",\n          }}\n        >\n          {!hideCloseButton && (\n            <Button\n              onClick={(event) => props.onClose?.(event, \"closeButtonClick\")}\n              color=\"inherit\"\n              sx={{\n                fontSize: 18,\n              }}\n            >\n              Close&nbsp;\n              <CloseIcon sx={{ fontSize: 14 }} />\n            </Button>\n          )}\n        </Box>\n\n        {/* Content Section */}\n        {children}\n      </Box>\n    </MUIModal>\n  );\n};\n\nexport default Modal;\n","import React from 'react'\nimport { Typography } from '@mui/material'\n\nexport type ErrorFallbackTextProps = {\n  name?: string\n  message?: string\n}\n\nexport const ErrorFallbackText: React.FC<ErrorFallbackTextProps> = ({\n  name,\n  message,\n}) => (\n  <Typography textAlign=\"center\" color=\"textSecondary\">\n    {message ?? `⚠️ ${name || 'Component'} failed to load`}\n  </Typography>\n)\n","import React from 'react'\nimport { Box, SxProps, Theme } from '@mui/material'\n\nexport type ErrorFallbackWrapperProps = {\n  children: React.ReactNode\n  height?: number | string\n  sx?: SxProps<Theme>\n}\n\nexport const ErrorFallbackWrapper: React.FC<ErrorFallbackWrapperProps> = ({\n  children,\n  height = 256,\n  sx,\n}) => (\n  <Box\n    display=\"flex\"\n    justifyContent=\"center\"\n    alignItems=\"center\"\n    height={height}\n    sx={sx}\n  >\n    {children}\n  </Box>\n)\n","import React from 'react'\nimport { ErrorFallbackText, ErrorFallbackTextProps } from './ErrorFallbackText';\nimport { ErrorFallbackWrapper, ErrorFallbackWrapperProps } from './ErrorFallbackWrapper';\n\nexport type ErrorFallbackProps = Omit<ErrorFallbackWrapperProps, \"children\"> & ErrorFallbackTextProps;\n\nexport const ErrorFallback: React.FC<ErrorFallbackProps> = ({\n  name,\n  message,\n  height = 256,\n  sx,\n}) => (\n  <ErrorFallbackWrapper height={height} sx={sx}>\n    <ErrorFallbackText name={name} message={message} />\n  </ErrorFallbackWrapper>\n)\n","import React from \"react\";\nimport { Box, Typography } from \"@mui/material\";\n\nexport interface BrandProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n  appName?: string;\n  beta?: boolean;\n  size?: \"base\" | \"jumbo\";\n}\n\nconst Brand: React.FC<BrandProps> = ({ appName, beta, size = \"base\", href, target, ...rest }) => {\n  const isBase = size === \"base\";\n  const isJumbo = size === \"jumbo\";\n\n  return (\n    <Box\n      component=\"a\"\n      href={href}\n      target={target}\n      sx={{\n        display: \"inline-flex\",\n        alignItems: \"flex-end\",\n        gap: 1,\n        textDecoration: \"none\",\n        cursor: href ? \"pointer\" : \"default\",\n      }}\n      {...rest}\n    >\n      <Typography\n        component=\"h1\"\n        sx={{\n          display: \"flex\",\n          gap: 1.25,\n          fontFamily: \"Figtree\",\n          fontSize: isJumbo ? \"clamp(1.802rem, 5vw, 4.11rem)\" : \"1.802rem\",\n          lineHeight: isJumbo ? 1 : \"2rem\",\n          margin: 0,\n        }}\n      >\n        <Box\n          component=\"span\"\n          sx={{\n            display: { xs: \"none\", sm: \"inline\" },\n          }}\n        >\n          telicent\n        </Box>\n\n        {appName && (\n          <Box\n            component=\"span\"\n            sx={{\n              color: \"primary.main\",\n              textAlign: \"center\",\n              textTransform: \"uppercase\",\n            }}\n          >\n            {appName}\n          </Box>\n        )}\n      </Typography>\n\n      {beta && (\n        <Box\n          sx={{\n            fontFamily: \"var(--font-body, Figtree)\",\n            backgroundColor: \"whiteSmoke.100\",\n            borderRadius: 1,\n            border: \"1px solid\",\n            borderColor: \"black.300\",\n            color: \"black.100\",\n            fontWeight: 500,\n            fontSize: \"clamp(0.624rem, 0.6vw, 0.889rem)\",\n            px: \"clamp(0.125rem, 1vw, 0.5rem)\",\n            mb: isJumbo ? \"clamp(0.25rem, 1vw, 0.5rem)\" : 0.25,\n          }}\n        >\n          BETA\n        </Box>\n      )}\n    </Box>\n  );\n};\n\nexport default Brand;\n","import React from \"react\";\n\ntype RecentSearchesWrapperProps = {\n  children: React.ReactNode;\n};\nconst RecentSearchesWrapper: React.FC<RecentSearchesWrapperProps> = ({ children }) => (\n  <div>\n    <h2 className=\"uppercase text-sm\">recent searches</h2>\n    {children}\n  </div>\n);\n\ntype RecentSearchProps = Partial<{\n  nothingFoundText: string;\n  children: React.ReactNode;\n}>;\n\nconst RecentSearches: React.FC<RecentSearchProps> = ({ nothingFoundText = \"Nothing found\", children = null }) => {\n  if (!children) {\n    return (\n      <RecentSearchesWrapper>\n        <p className=\"grid place-content-center mt-24 text-whiteSmoke-300\">{nothingFoundText}</p>\n      </RecentSearchesWrapper>\n    );\n  }\n\n  return <RecentSearchesWrapper>{children}</RecentSearchesWrapper>;\n};\n\nexport default RecentSearches;\n","import React from \"react\";\nimport { Autocomplete, AutocompleteProps, FormControl, FormHelperText, TextField } from \"@mui/material\";\n\nimport Spinner from \"../feedback/Spinner/Spinner\";\nimport { SearchIcon, CloseIcon } from \"../data-display\";\nimport \"./TeliAutoComplete.css\";\n\ntype DefaultOption = { label: string };\ntype MUIAutocompleteProps<Option> = AutocompleteProps<Option, false, false, true>;\n\nexport type SearchAutocompleteProps<Option = DefaultOption> = {\n  /**\n   * Array of options.\n   */\n  options: MUIAutocompleteProps<Option>[\"options\"];\n} & Partial<{\n  autoHighlight: MUIAutocompleteProps<Option>[\"autoHighlight\"];\n  /**\n   * If true, the input element is focused during the first mount.\n   */\n  autoFocus: boolean;\n  /**\n   * \tIf true, the component will indicate an error.\n   */\n  error: boolean;\n  /**\n   * If true, the component will take up the full width of its container.\n   */\n  fullWidth: boolean;\n  /**\n   * Can be used to give context. If ' ' is provided, the component reserves one\n   * line height for displaying a future message.\n   */\n  helperText: string;\n  id: MUIAutocompleteProps<Option>[\"id\"];\n  inputValue: MUIAutocompleteProps<Option>[\"inputValue\"];\n  /**\n   * The label content\n   */\n  label: string;\n  /**\n   * The maximum height of the autocomplete list box\n   */\n  listboxMaxHeight: number;\n  loading: MUIAutocompleteProps<Option>[\"loading\"];\n  loadingText: MUIAutocompleteProps<Option>[\"loadingText\"];\n  openOnFocus: MUIAutocompleteProps<Option>[\"openOnFocus\"];\n  name: string;\n  /**\n   * \tThe short hint displayed in the input before the user enters a value.\n   */\n  placeholder: string;\n  /**\n   * The width of the component\n   */\n  width: number;\n  getOptionLabel: MUIAutocompleteProps<Option>[\"getOptionLabel\"];\n  getOptionKey: MUIAutocompleteProps<Option>[\"getOptionKey\"];\n  isOptionEqualToValue: MUIAutocompleteProps<Option>[\"isOptionEqualToValue\"];\n  onChange: MUIAutocompleteProps<Option>[\"onChange\"];\n  onInputChange: MUIAutocompleteProps<Option>[\"onInputChange\"];\n}>;\n\nconst SearchAutocomplete = <Option,>({\n  autoFocus = false,\n  autoHighlight,\n  error = false,\n  fullWidth = false,\n  getOptionKey,\n  getOptionLabel,\n  helperText,\n  id,\n  inputValue,\n  isOptionEqualToValue,\n  label,\n  listboxMaxHeight,\n  loading,\n  loadingText,\n  name,\n  onChange,\n  onInputChange,\n  openOnFocus = false,\n  options = [],\n  placeholder = \"Search ...\",\n  width,\n}: SearchAutocompleteProps<Option>) => {\n  return (\n    <FormControl error={error} sx={{ width }} fullWidth={fullWidth}>\n      <Autocomplete\n        disablePortal\n        autoComplete\n        autoSelect\n        freeSolo\n        id={id}\n        autoHighlight={autoHighlight}\n        openOnFocus={openOnFocus}\n        loadingText={loadingText}\n        clearIcon={<CloseIcon />}\n        className=\"error\"\n        size=\"small\"\n        loading={loading}\n        options={options}\n        inputValue={inputValue}\n        getOptionLabel={getOptionLabel}\n        getOptionKey={getOptionKey}\n        onInputChange={onInputChange}\n        onChange={onChange}\n        isOptionEqualToValue={isOptionEqualToValue}\n        renderInput={(params) => (\n          <TextField\n            {...params}\n            autoFocus={autoFocus}\n            variant=\"outlined\"\n            label={label}\n            placeholder={placeholder}\n            name={name}\n            InputProps={{\n              ...params.InputProps,\n              startAdornment: <SearchIcon size=\"sm\" className=\"pl-2\" />,\n              endAdornment: (\n                <>\n                  {loading ? <Spinner color=\"inherit\" size={14} /> : null}\n                  {params.InputProps.endAdornment}\n                </>\n              ),\n            }}\n          />\n        )}\n        slotProps={{\n          popper: {\n            modifiers: [\n              {\n                name: \"offset\",\n                options: {\n                  offset: [0, 8],\n                },\n              },\n            ],\n          },\n        }}\n        ListboxProps={{ sx: { maxHeight: listboxMaxHeight } }}\n      />\n      {helperText ? <FormHelperText>{helperText}</FormHelperText> : null}\n    </FormControl>\n  );\n};\n\nexport default SearchAutocomplete;\n","import React from \"react\";\nimport { Dialog, DialogProps } from \"@mui/material\";\n\nimport SearchAutocomplete, { SearchAutocompleteProps } from \"../SearchAutocomplete/SearchAutocomplete\";\n\ntype SearchAutocompleteDialogProps<SearchOption = { label: string }> = Omit<\n  SearchAutocompleteProps<SearchOption>,\n  \"listboxMaxHeight\" | \"fullWidth\"\n> & {\n  open: DialogProps[\"open\"];\n  children: React.ReactNode;\n} & Partial<{\n    onClose: DialogProps[\"onClose\"];\n  }>;\n\nconst SearchAutocompleteDialog: React.FC<SearchAutocompleteDialogProps> = ({\n  open,\n  onClose,\n  children,\n  ...searchAutocompleteProps\n}) => (\n  <Dialog\n    open={open}\n    onClose={onClose}\n    PaperProps={{\n      sx: {\n        maxHeight: \"100% - 64px\",\n        minHeight: 340,\n        padding: \"12px\",\n        minWidth: \"540px\",\n      },\n      className: \"space-y-5\",\n    }}\n  >\n    <SearchAutocomplete fullWidth listboxMaxHeight={220} {...searchAutocompleteProps} />\n    {children}\n  </Dialog>\n);\n\nexport default SearchAutocompleteDialog;\n","import React from \"react\";\n\ntype SearchResultsProps = Partial<{\n  totalResults: number;\n  nothingFoundText: string;\n  children: React.ReactNode;\n}>;\n\nconst SearchResults: React.FC<SearchResultsProps> = ({\n  totalResults,\n  nothingFoundText = \"Nothing found\",\n  children = null,\n}) => {\n  if (!children) {\n    return (\n      <div>\n        <p className=\"grid place-content-center mt-28 text-whiteSmoke-300\">{nothingFoundText}</p>\n      </div>\n    );\n  }\n\n  return (\n    <div>\n      <h2 className=\"uppercase text-sm\">{totalResults} search results</h2>\n      {children}\n    </div>\n  );\n};\n\nexport default SearchResults;\n","export type TeliTypeIconSizeProp = \"xs\" | \"sm\" | \"base\" | \"lg\";\n\nexport const getSizeProps = (size: TeliTypeIconSizeProp) => {\n  const base = {\n    width: 48,\n    height: 48,\n  };\n\n  switch (size) {\n    case \"xs\":\n      return {\n        width: 24,\n        height: 24,\n        fontSize: 8,\n      };\n    case \"sm\":\n      return {\n        width: 36,\n        height: 36,\n        fontSize: 10,\n      };\n    case \"lg\":\n      return {\n        width: 62,\n        height: 62,\n        fontSize: 22,\n      };\n    default:\n      return base;\n  }\n};\n\nexport const getDisabledStyles = (isDisabled: boolean) => {\n  const disabledStyles = {\n    filter: \"grayscale(0.7)\",\n    opacity: \"80%\",\n  };\n\n  return isDisabled ? disabledStyles : {};\n};\n","import React from \"react\";\nimport { Avatar } from \"@mui/material\";\n\nimport { getDisabledStyles, getSizeProps, TeliTypeIconSizeProp } from \"./type-icon-utils\";\nimport { FlattenedStyleType, FlattenedStyleTypeForFindIcon } from \"@telicent-oss/ontologyservice\";\n\nexport type TypeIconProps = {\n  icon: FlattenedStyleTypeForFindIcon | FlattenedStyleType;\n} & Partial<{\n  /**\n   * Can be used to override the border color defined in the ontology\n   */\n  borderColor: string;\n  /**\n   * If true, the component will be rendered in a disabled state\n   */\n  disabled: boolean;\n  /**\n   * Used to control the size of the component\n   */\n  size: TeliTypeIconSizeProp;\n}>;\n\nconst TypeIcon: React.FC<TypeIconProps> = ({ icon, borderColor, disabled = false, size = \"base\" }) => {\n  const hasIcon = \"faIcon\" in icon && Boolean(icon.faIcon);\n\n  return (\n    <Avatar\n      alt={icon.alt}\n      aria-label={icon.alt}\n      sx={{\n        borderWidth: 2,\n        bordericon: \"solid\",\n        borderColor: borderColor ?? icon.color,\n        color: icon.color,\n        backgroundColor: icon.backgroundColor,\n        ...getDisabledStyles(disabled),\n        ...getSizeProps(size),\n      }}\n    >\n      {hasIcon ? <i className={icon.faIcon} title={`${icon.alt}-icon`} /> : <p>{icon.iconFallbackText}</p>}\n    </Avatar>\n  );\n};\n\nexport default TypeIcon;\n","'use client';\nimport { createContext, Component, createElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n  didCatch: false,\n  error: null\n};\nclass ErrorBoundary extends Component {\n  constructor(props) {\n    super(props);\n    this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n    this.state = initialState;\n  }\n  static getDerivedStateFromError(error) {\n    return {\n      didCatch: true,\n      error\n    };\n  }\n  resetErrorBoundary() {\n    const {\n      error\n    } = this.state;\n    if (error !== null) {\n      var _this$props$onReset, _this$props;\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n        args,\n        reason: \"imperative-api\"\n      });\n      this.setState(initialState);\n    }\n  }\n  componentDidCatch(error, info) {\n    var _this$props$onError, _this$props2;\n    (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n  }\n  componentDidUpdate(prevProps, prevState) {\n    const {\n      didCatch\n    } = this.state;\n    const {\n      resetKeys\n    } = this.props;\n\n    // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n    // we'd end up resetting the error boundary immediately.\n    // This would likely trigger a second error to be thrown.\n    // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n    if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n      var _this$props$onReset2, _this$props3;\n      (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n        next: resetKeys,\n        prev: prevProps.resetKeys,\n        reason: \"keys\"\n      });\n      this.setState(initialState);\n    }\n  }\n  render() {\n    const {\n      children,\n      fallbackRender,\n      FallbackComponent,\n      fallback\n    } = this.props;\n    const {\n      didCatch,\n      error\n    } = this.state;\n    let childToRender = children;\n    if (didCatch) {\n      const props = {\n        error,\n        resetErrorBoundary: this.resetErrorBoundary\n      };\n      if (typeof fallbackRender === \"function\") {\n        childToRender = fallbackRender(props);\n      } else if (FallbackComponent) {\n        childToRender = createElement(FallbackComponent, props);\n      } else if (fallback !== undefined) {\n        childToRender = fallback;\n      } else {\n        throw error;\n      }\n    }\n    return createElement(ErrorBoundaryContext.Provider, {\n      value: {\n        didCatch,\n        error,\n        resetErrorBoundary: this.resetErrorBoundary\n      }\n    }, childToRender);\n  }\n}\nfunction hasArrayChanged() {\n  let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n  if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n    throw new Error(\"ErrorBoundaryContext not found\");\n  }\n}\n\nfunction useErrorBoundary() {\n  const context = useContext(ErrorBoundaryContext);\n  assertErrorBoundaryContext(context);\n  const [state, setState] = useState({\n    error: null,\n    hasError: false\n  });\n  const memoized = useMemo(() => ({\n    resetBoundary: () => {\n      context.resetErrorBoundary();\n      setState({\n        error: null,\n        hasError: false\n      });\n    },\n    showBoundary: error => setState({\n      error,\n      hasError: true\n    })\n  }), [context.resetErrorBoundary]);\n  if (state.hasError) {\n    throw state.error;\n  }\n  return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n  const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n    ...props,\n    ref\n  })));\n\n  // Format for display in DevTools\n  const name = component.displayName || component.name || \"Unknown\";\n  Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n  return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","/* MapLibre GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v3.6.2/LICENSE.txt */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.maplibregl = factory());\n})(this, (function () { 'use strict';\n\n/* eslint-disable */\n\nvar shared, worker, maplibregl;\n// define gets called three times: one for each chunk. we rely on the order\n// they're imported to know which is which\nfunction define(_, chunk) {\n    if (!shared) {\n        shared = chunk;\n    } else if (!worker) {\n        worker = chunk;\n    } else {\n        var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);'\n\n        var sharedChunk = {};\n        shared(sharedChunk);\n        maplibregl = chunk(sharedChunk);\n        if (typeof window !== 'undefined') {\n            maplibregl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));\n        }\n    }\n}\n\n\ndefine([\"exports\"],(function(t){\"use strict\";function e(t,e,r,n){return new(r||(r=Promise))((function(i,a){function s(t){try{l(n.next(t));}catch(t){a(t);}}function o(t){try{l(n.throw(t));}catch(t){a(t);}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e);}))).then(s,o);}l((n=n.apply(t,e||[])).next());}))}function r(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}\"function\"==typeof SuppressedError&&SuppressedError;var n=i;function i(t,e){this.x=t,this.y=e;}i.prototype={clone:function(){return new i(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=n,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-n*(this.y-e.y),this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},i.convert=function(t){return t instanceof i?t:Array.isArray(t)?new i(t[0],t[1]):t};var a=r(n),s=o;function o(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=e,this.p2x=r,this.p2y=n;}o.prototype={sampleCurveX:function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return ((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(void 0===e&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var r=t,n=0;n<8;n++){var i=this.sampleCurveX(r)-t;if(Math.abs(i)<e)return r;var a=this.sampleCurveDerivativeX(r);if(Math.abs(a)<1e-6)break;r-=i/a;}var s=0,o=1;for(r=t,n=0;n<20&&(i=this.sampleCurveX(r),!(Math.abs(i-t)<e));n++)t>i?s=r:o=r,r=.5*(o-s)+s;return r},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}};var l=r(s);let u,c;function h(){return null==u&&(u=\"undefined\"!=typeof OffscreenCanvas&&new OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof createImageBitmap),u}function p(){if(null==c&&(c=!1,h())){const t=5,e=new OffscreenCanvas(t,t).getContext(\"2d\",{willReadFrequently:!0});if(e){for(let r=0;r<t*t;r++){const n=4*r;e.fillStyle=`rgb(${n},${n+1},${n+2})`,e.fillRect(r%t,Math.floor(r/t),1,1);}const r=e.getImageData(0,0,t,t).data;for(let e=0;e<t*t*4;e++)if(e%4!=3&&r[e]!==e){c=!0;break}}}return c||!1}function f(t,e,r,n){const i=new l(t,e,r,n);return function(t){return i.solve(t)}}const d=f(.25,.1,.25,1);function y(t,e,r){return Math.min(r,Math.max(e,t))}function m(t,e,r){const n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function g(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}let x=1;function v(t,e,r){const n={};for(const i in t)n[i]=e.call(r||this,t[i],i,t);return n}function b(t,e,r){const n={};for(const i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function w(t){return Array.isArray(t)?t.map(w):\"object\"==typeof t&&t?v(t,w):t}const _={};function A(t){_[t]||(\"undefined\"!=typeof console&&console.warn(t),_[t]=!0);}function S(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function k(t){let e=0;for(let r,n,i=0,a=t.length,s=a-1;i<a;s=i++)r=t[i],n=t[s],e+=(n.x-r.x)*(r.y+n.y);return e}function I(){return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope}let z=null;function M(t){return \"undefined\"!=typeof ImageBitmap&&t instanceof ImageBitmap}const C=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";function B(t,r,n,i,a){return e(this,void 0,void 0,(function*(){if(\"undefined\"==typeof VideoFrame)throw new Error(\"VideoFrame not supported\");const e=new VideoFrame(t,{timestamp:0});try{const s=null==e?void 0:e.format;if(!s||!s.startsWith(\"BGR\")&&!s.startsWith(\"RGB\"))throw new Error(`Unrecognized format ${s}`);const o=s.startsWith(\"BGR\"),l=new Uint8ClampedArray(i*a*4);if(yield e.copyTo(l,function(t,e,r,n,i){const a=4*Math.max(-e,0),s=(Math.max(0,r)-r)*n*4+a,o=4*n,l=Math.max(0,e),u=Math.max(0,r);return {rect:{x:l,y:u,width:Math.min(t.width,e+n)-l,height:Math.min(t.height,r+i)-u},layout:[{offset:s,stride:o}]}}(t,r,n,i,a)),o)for(let t=0;t<l.length;t+=4){const e=l[t];l[t]=l[t+2],l[t+2]=e;}return l}finally{e.close();}}))}let P,V,E,F;const T={now:\"undefined\"!=typeof performance&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frame(t){const e=requestAnimationFrame(t);return {cancel:()=>cancelAnimationFrame(e)}},getImageData(t,e=0){return this.getImageCanvasContext(t).getImageData(-e,-e,t.width+2*e,t.height+2*e)},getImageCanvasContext(t){const e=window.document.createElement(\"canvas\"),r=e.getContext(\"2d\",{willReadFrequently:!0});if(!r)throw new Error(\"failed to create canvas 2d context\");return e.width=t.width,e.height=t.height,r.drawImage(t,0,0,t.width,t.height),r},resolveURL:t=>(E||(E=document.createElement(\"a\")),E.href=t,E.href),hardwareConcurrency:\"undefined\"!=typeof navigator&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return !!matchMedia&&(null==F&&(F=matchMedia(\"(prefers-reduced-motion: reduce)\")),F.matches)}},$={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:\"\"};class L extends Error{constructor(t,e,r,n){super(`AJAXError: ${e} (${t}): ${r}`),this.status=t,this.statusText=e,this.url=r,this.body=n;}}const D=I()?()=>self.worker&&self.worker.referrer:()=>(\"blob:\"===window.location.protocol?window.parent:window).location.href,O=t=>$.REGISTERED_PROTOCOLS[t.substring(0,t.indexOf(\"://\"))];function U(t,e){const r=new AbortController,n=new Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,cache:t.cache,referrer:D(),signal:r.signal});let i=!1,a=!1;\"json\"===t.type&&n.headers.set(\"Accept\",\"application/json\");return a||fetch(n).then((r=>r.ok?(r=>{(\"arrayBuffer\"===t.type||\"image\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((t=>{a||(i=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")));})).catch((t=>{a||e(new Error(t.message));}));})(r):r.blob().then((n=>e(new L(r.status,r.statusText,t.url,n)))))).catch((t=>{20!==t.code&&e(new Error(t.message));})),{cancel:()=>{a=!0,i||r.abort();}}}const R=function(t,e){if(/:\\/\\//.test(t.url)&&!/^https?:|^file:/.test(t.url)){if(I()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",t,e);if(!I())return (O(t.url)||U)(t,e)}if(!(/^file:/.test(r=t.url)||/^file:/.test(D())&&!/^\\w+:/.test(r))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,\"signal\"))return U(t,e);if(I()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}var r;return function(t,e){const r=new XMLHttpRequest;r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"!==t.type&&\"image\"!==t.type||(r.responseType=\"arraybuffer\");for(const e in t.headers)r.setRequestHeader(e,t.headers[e]);return \"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=()=>{e(new Error(r.statusText));},r.onload=()=>{if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){let n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response);}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"));}else {const n=new Blob([r.response],{type:r.getResponseHeader(\"Content-Type\")});e(new L(r.status,r.statusText,t.url,n));}},r.send(t.body),{cancel:()=>r.abort()}}(t,e)},q=function(t,e){return R(g(t,{type:\"arrayBuffer\"}),e)};function j(t){if(!t||t.indexOf(\"://\")<=0||0===t.indexOf(\"data:image/\")||0===t.indexOf(\"blob:\"))return !0;const e=new URL(t),r=window.location;return e.protocol===r.protocol&&e.host===r.host}function N(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function Z(t,e,r){if(r&&r[t]){const n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}class K{constructor(t,e={}){g(this,e),this.type=t;}}class G extends K{constructor(t,e={}){super(\"error\",g({error:t},e));}}class J{on(t,e){return this._listeners=this._listeners||{},N(t,e,this._listeners),this}off(t,e){return Z(t,e,this._listeners),Z(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners=this._oneTimeListeners||{},N(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){\"string\"==typeof t&&(t=new K(t,e||{}));const r=t.type;if(this.listens(r)){t.target=this;const e=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];for(const r of e)r.call(this,t);const n=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];for(const e of n)Z(r,e,this._oneTimeListeners),e.call(this,t);const i=this._eventedParent;i&&(g(t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),i.fire(t));}else t instanceof G&&console.error(t.error);return this}listens(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}var X={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},terrain:{type:\"terrain\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"sprite\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{},custom:{}},default:\"mapbox\"},redFactor:{type:\"number\",default:1},blueFactor:{type:\"number\",default:1},greenFactor:{type:\"number\",default:1},baseShift:{type:\"number\",default:0},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{required:!0,type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},filter:{type:\"*\"},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterMinPoints:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"!\":\"icon-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"padding\",default:[2],units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},\"viewport-glyph\":{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-variable-anchor-offset\":{type:\"variableAnchorOffsetCollection\",requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\",{\"!\":\"text-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},terrain:{source:{type:\"string\",required:!0},exaggeration:{type:\"number\",minimum:0,default:1}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}};const Y=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"];function H(t,e){const r={};for(const e in t)\"ref\"!==e&&(r[e]=t[e]);return Y.forEach((t=>{t in e&&(r[t]=e[t]);})),r}function W(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return !1;for(let r=0;r<t.length;r++)if(!W(t[r],e[r]))return !1;return !0}if(\"object\"==typeof t&&null!==t&&null!==e){if(\"object\"!=typeof e)return !1;if(Object.keys(t).length!==Object.keys(e).length)return !1;for(const r in t)if(!W(t[r],e[r]))return !1;return !0}return t===e}const Q={setStyle:\"setStyle\",addLayer:\"addLayer\",removeLayer:\"removeLayer\",setPaintProperty:\"setPaintProperty\",setLayoutProperty:\"setLayoutProperty\",setFilter:\"setFilter\",addSource:\"addSource\",removeSource:\"removeSource\",setGeoJSONSourceData:\"setGeoJSONSourceData\",setLayerZoomRange:\"setLayerZoomRange\",setLayerProperty:\"setLayerProperty\",setCenter:\"setCenter\",setZoom:\"setZoom\",setBearing:\"setBearing\",setPitch:\"setPitch\",setSprite:\"setSprite\",setGlyphs:\"setGlyphs\",setTransition:\"setTransition\",setLight:\"setLight\"};function tt(t,e,r){r.push({command:Q.addSource,args:[t,e[t]]});}function et(t,e,r){e.push({command:Q.removeSource,args:[t]}),r[t]=!0;}function rt(t,e,r,n){et(t,r,n),tt(t,e,r);}function nt(t,e,r){let n;for(n in t[r])if(Object.prototype.hasOwnProperty.call(t[r],n)&&\"data\"!==n&&!W(t[r][n],e[r][n]))return !1;for(n in e[r])if(Object.prototype.hasOwnProperty.call(e[r],n)&&\"data\"!==n&&!W(t[r][n],e[r][n]))return !1;return !0}function it(t,e,r,n,i,a){let s;for(s in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,s)&&(W(t[s],e[s])||r.push({command:a,args:[n,s,e[s],i]}));for(s in e)Object.prototype.hasOwnProperty.call(e,s)&&!Object.prototype.hasOwnProperty.call(t,s)&&(W(t[s],e[s])||r.push({command:a,args:[n,s,e[s],i]}));}function at(t){return t.id}function st(t,e){return t[e.id]=e,t}class ot{constructor(t,e,r,n){this.message=(t?`${t}: `:\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);}}function lt(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}class ut extends Error{constructor(t,e){super(e),this.message=e,this.key=t;}}class ct{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r;}concat(t){return new ct(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(`${t} not found in scope.`)}has(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)}}const ht={kind:\"null\"},pt={kind:\"number\"},ft={kind:\"string\"},dt={kind:\"boolean\"},yt={kind:\"color\"},mt={kind:\"object\"},gt={kind:\"value\"},xt={kind:\"collator\"},vt={kind:\"formatted\"},bt={kind:\"padding\"},wt={kind:\"resolvedImage\"},_t={kind:\"variableAnchorOffsetCollection\"};function At(t,e){return {kind:\"array\",itemType:t,N:e}}function St(t){if(\"array\"===t.kind){const e=St(t.itemType);return \"number\"==typeof t.N?`array<${e}, ${t.N}>`:\"value\"===t.itemType.kind?\"array\":`array<${e}>`}return t.kind}const kt=[ht,pt,ft,dt,yt,vt,mt,At(gt),bt,wt,_t];function It(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!It(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else {if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(const t of kt)if(!It(t,e))return null}return `Expected ${St(t)} but found ${St(e)} instead.`}function zt(t,e){return e.some((e=>e.kind===t.kind))}function Mt(t,e){return e.some((e=>\"null\"===e?null===t:\"array\"===e?Array.isArray(t):\"object\"===e?t&&!Array.isArray(t)&&\"object\"==typeof t:e===typeof t))}function Ct(t,e){return \"array\"===t.kind&&\"array\"===e.kind?t.itemType.kind===e.itemType.kind&&\"number\"==typeof t.N:t.kind===e.kind}const Bt=.96422,Pt=.82521,Vt=4/29,Et=6/29,Ft=3*Et*Et,Tt=Et*Et*Et,$t=Math.PI/180,Lt=180/Math.PI;function Dt(t){return (t%=360)<0&&(t+=360),t}function Ot([t,e,r,n]){let i,a;const s=Rt((.2225045*(t=Ut(t))+.7168786*(e=Ut(e))+.0606169*(r=Ut(r)))/1);t===e&&e===r?i=a=s:(i=Rt((.4360747*t+.3850649*e+.1430804*r)/Bt),a=Rt((.0139322*t+.0971045*e+.7141733*r)/Pt));const o=116*s-16;return [o<0?0:o,500*(i-s),200*(s-a),n]}function Ut(t){return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Rt(t){return t>Tt?Math.pow(t,1/3):t/Ft+Vt}function qt([t,e,r,n]){let i=(t+16)/116,a=isNaN(e)?i:i+e/500,s=isNaN(r)?i:i-r/200;return i=1*Nt(i),a=Bt*Nt(a),s=Pt*Nt(s),[jt(3.1338561*a-1.6168667*i-.4906146*s),jt(-.9787684*a+1.9161415*i+.033454*s),jt(.0719453*a-.2289914*i+1.4052427*s),n]}function jt(t){return (t=t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055)<0?0:t>1?1:t}function Nt(t){return t>Et?t*t*t:Ft*(t-Vt)}function Zt(t){return parseInt(t.padEnd(2,t),16)/255}function Kt(t,e){return Gt(e?t/100:t,0,1)}function Gt(t,e,r){return Math.min(Math.max(e,t),r)}function Jt(t){return !t.some(Number.isNaN)}const Xt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Yt{constructor(t,e,r,n=1,i=!0){this.r=t,this.g=e,this.b=r,this.a=n,i||(this.r*=n,this.g*=n,this.b*=n,n||this.overwriteGetter(\"rgb\",[t,e,r,n]));}static parse(t){if(t instanceof Yt)return t;if(\"string\"!=typeof t)return;const e=function(t){if(\"transparent\"===(t=t.toLowerCase().trim()))return [0,0,0,0];const e=Xt[t];if(e){const[t,r,n]=e;return [t/255,r/255,n/255,1]}if(t.startsWith(\"#\")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(t)){const e=t.length<6?1:2;let r=1;return [Zt(t.slice(r,r+=e)),Zt(t.slice(r,r+=e)),Zt(t.slice(r,r+=e)),Zt(t.slice(r,r+e)||\"ff\")]}if(t.startsWith(\"rgb\")){const e=t.match(/^rgba?\\(\\s*([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/);if(e){const[t,r,n,i,a,s,o,l,u,c,h,p]=e,f=[i||\" \",o||\" \",c].join(\"\");if(\"  \"===f||\"  /\"===f||\",,\"===f||\",,,\"===f){const t=[n,s,u].join(\"\"),e=\"%%%\"===t?100:\"\"===t?255:0;if(e){const t=[Gt(+r/e,0,1),Gt(+a/e,0,1),Gt(+l/e,0,1),h?Kt(+h,p):1];if(Jt(t))return t}}return}}const r=t.match(/^hsla?\\(\\s*([\\de.+-]+)(?:deg)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/);if(r){const[t,e,n,i,a,s,o,l,u]=r,c=[n||\" \",a||\" \",o].join(\"\");if(\"  \"===c||\"  /\"===c||\",,\"===c||\",,,\"===c){const t=[+e,Gt(+i,0,100),Gt(+s,0,100),l?Kt(+l,u):1];if(Jt(t))return function([t,e,r,n]){function i(n){const i=(n+t/30)%12,a=e*Math.min(r,1-r);return r-a*Math.max(-1,Math.min(i-3,9-i,1))}return t=Dt(t),e/=100,r/=100,[i(0),i(8),i(4),n]}(t)}}}(t);return e?new Yt(...e,!1):void 0}get rgb(){const{r:t,g:e,b:r,a:n}=this,i=n||1/0;return this.overwriteGetter(\"rgb\",[t/i,e/i,r/i,n])}get hcl(){return this.overwriteGetter(\"hcl\",function(t){const[e,r,n,i]=Ot(t),a=Math.sqrt(r*r+n*n);return [Math.round(1e4*a)?Dt(Math.atan2(n,r)*Lt):NaN,a,e,i]}(this.rgb))}get lab(){return this.overwriteGetter(\"lab\",Ot(this.rgb))}overwriteGetter(t,e){return Object.defineProperty(this,t,{value:e}),e}toString(){const[t,e,r,n]=this.rgb;return `rgba(${[t,e,r].map((t=>Math.round(255*t))).join(\",\")},${n})`}}Yt.black=new Yt(0,0,0,1),Yt.white=new Yt(1,1,1,1),Yt.transparent=new Yt(0,0,0,0),Yt.red=new Yt(1,0,0,1);class Ht{constructor(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"});}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Wt{constructor(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i;}}class Qt{constructor(t){this.sections=t;}static fromString(t){return new Qt([new Wt(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof Qt?t:Qt.fromString(t)}toString(){return 0===this.sections.length?\"\":this.sections.map((t=>t.text)).join(\"\")}}class te{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof te)return t;if(\"number\"==typeof t)return new te([t,t,t,t]);if(Array.isArray(t)&&!(t.length<1||t.length>4)){for(const e of t)if(\"number\"!=typeof e)return;switch(t.length){case 1:t=[t[0],t[0],t[0],t[0]];break;case 2:t=[t[0],t[1],t[0],t[1]];break;case 3:t=[t[0],t[1],t[2],t[1]];}return new te(t)}}toString(){return JSON.stringify(this.values)}}const ee=new Set([\"center\",\"left\",\"right\",\"top\",\"bottom\",\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"]);class re{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof re)return t;if(Array.isArray(t)&&!(t.length<1)&&t.length%2==0){for(let e=0;e<t.length;e+=2){const r=t[e],n=t[e+1];if(\"string\"!=typeof r||!ee.has(r))return;if(!Array.isArray(n)||2!==n.length||\"number\"!=typeof n[0]||\"number\"!=typeof n[1])return}return new re(t)}}toString(){return JSON.stringify(this.values)}}class ne{constructor(t){this.name=t.name,this.available=t.available;}toString(){return this.name}static fromString(t){return t?new ne({name:t,available:!1}):null}}function ie(t,e,r,n){return \"number\"==typeof t&&t>=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:`Invalid rgba value [${[t,e,r,n].join(\", \")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function ae(t){if(null===t||\"string\"==typeof t||\"boolean\"==typeof t||\"number\"==typeof t||t instanceof Yt||t instanceof Ht||t instanceof Qt||t instanceof te||t instanceof re||t instanceof ne)return !0;if(Array.isArray(t)){for(const e of t)if(!ae(e))return !1;return !0}if(\"object\"==typeof t){for(const e in t)if(!ae(t[e]))return !1;return !0}return !1}function se(t){if(null===t)return ht;if(\"string\"==typeof t)return ft;if(\"boolean\"==typeof t)return dt;if(\"number\"==typeof t)return pt;if(t instanceof Yt)return yt;if(t instanceof Ht)return xt;if(t instanceof Qt)return vt;if(t instanceof te)return bt;if(t instanceof re)return _t;if(t instanceof ne)return wt;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=se(e);if(r){if(r===t)continue;r=gt;break}r=t;}return At(r||gt,e)}return mt}function oe(t){const e=typeof t;return null===t?\"\":\"string\"===e||\"number\"===e||\"boolean\"===e?String(t):t instanceof Yt||t instanceof Qt||t instanceof te||t instanceof re||t instanceof ne?t.toString():JSON.stringify(t)}class le{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!ae(t[1]))return e.error(\"invalid value\");const r=t[1];let n=se(r);const i=e.expectedType;return \"array\"!==n.kind||0!==n.N||!i||\"array\"!==i.kind||\"number\"==typeof i.N&&0!==i.N||(n=i),new le(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}}class ue{constructor(t){this.name=\"ExpressionEvaluationError\",this.message=t;}toJSON(){return this.message}}const ce={string:ft,number:pt,boolean:dt,object:mt};class he{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");let r,n=1;const i=t[0];if(\"array\"===i){let i,a;if(t.length>2){const r=t[1];if(\"string\"!=typeof r||!(r in ce)||\"object\"===r)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);i=ce[r],n++;}else i=gt;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);a=t[2],n++;}r=At(i,a);}else {if(!ce[i])throw new Error(`Types doesn't contain name = ${i}`);r=ce[i];}const a=[];for(;n<t.length;n++){const r=e.parse(t[n],n,gt);if(!r)return null;a.push(r);}return new he(r,a)}evaluate(t){for(let e=0;e<this.args.length;e++){const r=this.args[e].evaluate(t);if(!It(this.type,se(r)))return r;if(e===this.args.length-1)throw new ue(`Expected value to be of type ${St(this.type)}, but found ${St(se(r))} instead.`)}throw new Error}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}const pe={\"to-boolean\":dt,\"to-color\":yt,\"to-number\":pt,\"to-string\":ft};class fe{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");const r=t[0];if(!pe[r])throw new Error(`Can't parse ${r} as it is not part of the known types`);if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");const n=pe[r],i=[];for(let r=1;r<t.length;r++){const n=e.parse(t[r],r,gt);if(!n)return null;i.push(n);}return new fe(n,i)}evaluate(t){switch(this.type.kind){case\"boolean\":return Boolean(this.args[0].evaluate(t));case\"color\":{let e,r;for(const n of this.args){if(e=n.evaluate(t),r=null,e instanceof Yt)return e;if(\"string\"==typeof e){const r=t.parseColor(e);if(r)return r}else if(Array.isArray(e)&&(r=e.length<3||e.length>4?`Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:ie(e[0],e[1],e[2],e[3]),!r))return new Yt(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ue(r||`Could not parse color from value '${\"string\"==typeof e?e:JSON.stringify(e)}'`)}case\"padding\":{let e;for(const r of this.args){e=r.evaluate(t);const n=te.parse(e);if(n)return n}throw new ue(`Could not parse padding from value '${\"string\"==typeof e?e:JSON.stringify(e)}'`)}case\"variableAnchorOffsetCollection\":{let e;for(const r of this.args){e=r.evaluate(t);const n=re.parse(e);if(n)return n}throw new ue(`Could not parse variableAnchorOffsetCollection from value '${\"string\"==typeof e?e:JSON.stringify(e)}'`)}case\"number\":{let e=null;for(const r of this.args){if(e=r.evaluate(t),null===e)return 0;const n=Number(e);if(!isNaN(n))return n}throw new ue(`Could not convert ${JSON.stringify(e)} to number.`)}case\"formatted\":return Qt.fromString(oe(this.args[0].evaluate(t)));case\"resolvedImage\":return ne.fromString(oe(this.args[0].evaluate(t)));default:return oe(this.args[0].evaluate(t))}}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}const de=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];class ye{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null;}id(){return this.feature&&\"id\"in this.feature?this.feature.id:null}geometryType(){return this.feature?\"number\"==typeof this.feature.type?de[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&\"geometry\"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=Yt.parse(t)),e}}class me{constructor(t,e,r=[],n,i=new ct,a=[]){this.registry=t,this.path=r,this.key=r.map((t=>`[${t}]`)).join(\"\"),this.scope=i,this.errors=a,this.expectedType=n,this._isConstant=e;}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return \"assert\"===r?new he(e,[t]):\"coerce\"===r?new fe(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');const n=t[0];if(\"string\"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use [\"literal\", [...]].`,0),null;const i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){const t=this.expectedType,i=n.type;if(\"string\"!==t.kind&&\"number\"!==t.kind&&\"boolean\"!==t.kind&&\"object\"!==t.kind&&\"array\"!==t.kind||\"value\"!==i.kind)if(\"color\"!==t.kind&&\"formatted\"!==t.kind&&\"resolvedImage\"!==t.kind||\"value\"!==i.kind&&\"string\"!==i.kind)if(\"padding\"!==t.kind||\"value\"!==i.kind&&\"number\"!==i.kind&&\"array\"!==i.kind)if(\"variableAnchorOffsetCollection\"!==t.kind||\"value\"!==i.kind&&\"array\"!==i.kind){if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||\"coerce\");else n=r(n,t,e.typeAnnotation||\"coerce\");else n=r(n,t,e.typeAnnotation||\"coerce\");else n=r(n,t,e.typeAnnotation||\"assert\");}if(!(n instanceof le)&&\"resolvedImage\"!==n.type.kind&&this._isConstant(n)){const t=new ye;try{n=new le(n.type,n.evaluate(t));}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression \"${n}\". If you wanted a literal array, use [\"literal\", [...]].`,0)}return this.error(void 0===t?\"'undefined' value invalid. Use null instead.\":\"object\"==typeof t?'Bare objects invalid. Use [\"literal\", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){const n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new me(this.registry,this._isConstant,n,e||null,i,this.errors)}error(t,...e){const r=`${this.key}${e.map((t=>`[${t}]`)).join(\"\")}`;this.errors.push(new ut(r,t));}checkSubtype(t,e){const r=It(t,e);return r&&this.error(r),r}}class ge{constructor(t,e,r){this.type=xt,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e;}static parse(t,e){if(2!==t.length)return e.error(\"Expected one argument.\");const r=t[1];if(\"object\"!=typeof r||Array.isArray(r))return e.error(\"Collator options argument must be an object.\");const n=e.parse(void 0!==r[\"case-sensitive\"]&&r[\"case-sensitive\"],1,dt);if(!n)return null;const i=e.parse(void 0!==r[\"diacritic-sensitive\"]&&r[\"diacritic-sensitive\"],1,dt);if(!i)return null;let a=null;return r.locale&&(a=e.parse(r.locale,1,ft),!a)?null:new ge(n,i,a)}evaluate(t){return new Ht(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);}outputDefined(){return !1}}const xe=8192;function ve(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1]);}function be(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function we(t,e){const r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(r*i*xe),Math.round(n*i*xe)]}function _e(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],a=t[0]-r[0],s=t[1]-r[1];return n*s-a*i==0&&n*a<=0&&i*s<=0}function Ae(t,e){let r=!1;for(let s=0,o=e.length;s<o;s++){const o=e[s];for(let e=0,s=o.length;e<s-1;e++){if(_e(t,o[e],o[e+1]))return !1;(i=o[e])[1]>(n=t)[1]!=(a=o[e+1])[1]>n[1]&&n[0]<(a[0]-i[0])*(n[1]-i[1])/(a[1]-i[1])+i[0]&&(r=!r);}}var n,i,a;return r}function Se(t,e){for(let r=0;r<e.length;r++)if(Ae(t,e[r]))return !0;return !1}function ke(t,e,r,n){const i=n[0]-r[0],a=n[1]-r[1],s=(t[0]-r[0])*a-i*(t[1]-r[1]),o=(e[0]-r[0])*a-i*(e[1]-r[1]);return s>0&&o<0||s<0&&o>0}function Ie(t,e,r){for(const u of r)for(let r=0;r<u.length-1;++r)if(0!=(o=[(s=u[r+1])[0]-(a=u[r])[0],s[1]-a[1]])[0]*(l=[(i=e)[0]-(n=t)[0],i[1]-n[1]])[1]-o[1]*l[0]&&ke(n,i,a,s)&&ke(a,s,n,i))return !0;var n,i,a,s,o,l;return !1}function ze(t,e){for(let r=0;r<t.length;++r)if(!Ae(t[r],e))return !1;for(let r=0;r<t.length-1;++r)if(Ie(t[r],t[r+1],e))return !1;return !0}function Me(t,e){for(let r=0;r<e.length;r++)if(ze(t,e[r]))return !0;return !1}function Ce(t,e,r){const n=[];for(let i=0;i<t.length;i++){const a=[];for(let n=0;n<t[i].length;n++){const s=we(t[i][n],r);ve(e,s),a.push(s);}n.push(a);}return n}function Be(t,e,r){const n=[];for(let i=0;i<t.length;i++){const a=Ce(t[i],e,r);n.push(a);}return n}function Pe(t,e,r,n){if(t[0]<r[0]||t[0]>r[2]){const e=.5*n;let i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i;}ve(e,t);}function Ve(t,e,r,n){const i=Math.pow(2,n.z)*xe,a=[n.x*xe,n.y*xe],s=[];for(const n of t)for(const t of n){const n=[t.x+a[0],t.y+a[1]];Pe(n,e,r,i),s.push(n);}return s}function Ee(t,e,r,n){const i=Math.pow(2,n.z)*xe,a=[n.x*xe,n.y*xe],s=[];for(const r of t){const t=[];for(const n of r){const r=[n.x+a[0],n.y+a[1]];ve(e,r),t.push(r);}s.push(t);}if(e[2]-e[0]<=i/2){(o=e)[0]=o[1]=1/0,o[2]=o[3]=-1/0;for(const t of s)for(const n of t)Pe(n,e,r,i);}var o;return s}class Fe{constructor(t,e){this.type=dt,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(ae(t[1])){const e=t[1];if(\"FeatureCollection\"===e.type)for(let t=0;t<e.features.length;++t){const r=e.features[t].geometry.type;if(\"Polygon\"===r||\"MultiPolygon\"===r)return new Fe(e,e.features[t].geometry)}else if(\"Feature\"===e.type){const t=e.geometry.type;if(\"Polygon\"===t||\"MultiPolygon\"===t)return new Fe(e,e.geometry)}else if(\"Polygon\"===e.type||\"MultiPolygon\"===e.type)return new Fe(e,e)}return e.error(\"'within' expression requires valid geojson object that contains polygon geometry type.\")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if(\"Point\"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(\"Polygon\"===e.type){const a=Ce(e.coordinates,n,i),s=Ve(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!Ae(t,a))return !1}if(\"MultiPolygon\"===e.type){const a=Be(e.coordinates,n,i),s=Ve(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!Se(t,a))return !1}return !0}(t,this.geometries);if(\"LineString\"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(\"Polygon\"===e.type){const a=Ce(e.coordinates,n,i),s=Ee(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!ze(t,a))return !1}if(\"MultiPolygon\"===e.type){const a=Be(e.coordinates,n,i),s=Ee(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!Me(t,a))return !1}return !0}(t,this.geometries)}return !1}eachChild(){}outputDefined(){return !0}}class Te{constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e;}static parse(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");const r=t[1];return e.scope.has(r)?new Te(r,e.scope.get(r)):e.error(`Unknown variable \"${r}\". Make sure \"${r}\" has been bound in an enclosing \"let\" expression before using it.`,1)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return !1}}class $e{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n;}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t);}outputDefined(){return !1}static parse(t,e){const r=t[0],n=$e.definitions[r];if(!n)return e.error(`Unknown expression \"${r}\". If you wanted a literal array, use [\"literal\", [...]].`,0);const i=Array.isArray(n)?n[0]:n.type,a=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,s=a.filter((([e])=>!Array.isArray(e)||e.length===t.length-1));let o=null;for(const[n,a]of s){o=new me(e.registry,Le,e.path,null,e.scope);const s=[];let l=!1;for(let e=1;e<t.length;e++){const r=t[e],i=Array.isArray(n)?n[e-1]:n.type,a=o.parse(r,1+s.length,i);if(!a){l=!0;break}s.push(a);}if(!l)if(Array.isArray(n)&&n.length!==s.length)o.error(`Expected ${n.length} arguments, but found ${s.length} instead.`);else {for(let t=0;t<s.length;t++){const e=Array.isArray(n)?n[t]:n.type,r=s[t];o.concat(t+1).checkSubtype(e,r.type);}if(0===o.errors.length)return new $e(r,i,a,s)}}if(1===s.length)e.errors.push(...o.errors);else {const r=(s.length?s:a).map((([t])=>{return e=t,Array.isArray(e)?`(${e.map(St).join(\", \")})`:`(${St(e.type)}...)`;var e;})).join(\" | \"),n=[];for(let r=1;r<t.length;r++){const i=e.parse(t[r],1+n.length);if(!i)return null;n.push(St(i.type));}e.error(`Expected arguments of type ${r}, but found (${n.join(\", \")}) instead.`);}return null}static register(t,e){$e.definitions=e;for(const r in e)t[r]=$e;}}function Le(t){if(t instanceof Te)return Le(t.boundExpression);if(t instanceof $e&&\"error\"===t.name)return !1;if(t instanceof ge)return !1;if(t instanceof Fe)return !1;const e=t instanceof fe||t instanceof he;let r=!0;return t.eachChild((t=>{r=e?r&&Le(t):r&&t instanceof le;})),!!r&&De(t)&&Ue(t,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}function De(t){if(t instanceof $e){if(\"get\"===t.name&&1===t.args.length)return !1;if(\"feature-state\"===t.name)return !1;if(\"has\"===t.name&&1===t.args.length)return !1;if(\"properties\"===t.name||\"geometry-type\"===t.name||\"id\"===t.name)return !1;if(/^filter-/.test(t.name))return !1}if(t instanceof Fe)return !1;let e=!0;return t.eachChild((t=>{e&&!De(t)&&(e=!1);})),e}function Oe(t){if(t instanceof $e&&\"feature-state\"===t.name)return !1;let e=!0;return t.eachChild((t=>{e&&!Oe(t)&&(e=!1);})),e}function Ue(t,e){if(t instanceof $e&&e.indexOf(t.name)>=0)return !1;let r=!0;return t.eachChild((t=>{r&&!Ue(t,e)&&(r=!1);})),r}function Re(t,e){const r=t.length-1;let n,i,a=0,s=r,o=0;for(;a<=s;)if(o=Math.floor((a+s)/2),n=t[o],i=t[o+1],n<=e){if(o===r||e<i)return o;a=o+1;}else {if(!(n>e))throw new ue(\"Input is not a number.\");s=o-1;}return 0}class qe{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of r)this.labels.push(t),this.outputs.push(e);}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");const r=e.parse(t[1],1,pt);if(!r)return null;const n=[];let i=null;e.expectedType&&\"value\"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r<t.length;r+=2){const a=1===r?-1/0:t[r],s=t[r+1],o=r,l=r+1;if(\"number\"!=typeof a)return e.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',o);if(n.length&&n[n.length-1][0]>=a)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',o);const u=e.parse(s,l,i);if(!u)return null;i=i||u.type,n.push([a,u]);}return new qe(i,r,n)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Re(e,n)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function je(t,e,r){return t+r*(e-t)}function Ne(t,e,r){return t.map(((t,n)=>je(t,e[n],r)))}const Ze={number:je,color:function(t,e,r,n=\"rgb\"){switch(n){case\"rgb\":{const[n,i,a,s]=Ne(t.rgb,e.rgb,r);return new Yt(n,i,a,s,!1)}case\"hcl\":{const[n,i,a,s]=t.hcl,[o,l,u,c]=e.hcl;let h,p;if(isNaN(n)||isNaN(o))isNaN(n)?isNaN(o)?h=NaN:(h=o,1!==a&&0!==a||(p=l)):(h=n,1!==u&&0!==u||(p=i));else {let t=o-n;o>n&&t>180?t-=360:o<n&&n-o>180&&(t+=360),h=n+r*t;}const[f,d,y,m]=function([t,e,r,n]){return t=isNaN(t)?0:t*$t,qt([r,Math.cos(t)*e,Math.sin(t)*e,n])}([h,null!=p?p:je(i,l,r),je(a,u,r),je(s,c,r)]);return new Yt(f,d,y,m,!1)}case\"lab\":{const[n,i,a,s]=qt(Ne(t.lab,e.lab,r));return new Yt(n,i,a,s,!1)}}},array:Ne,padding:function(t,e,r){return new te(Ne(t.values,e.values,r))},variableAnchorOffsetCollection:function(t,e,r){const n=t.values,i=e.values;if(n.length!==i.length)throw new ue(`Cannot interpolate values of different length. from: ${t.toString()}, to: ${e.toString()}`);const a=[];for(let t=0;t<n.length;t+=2){if(n[t]!==i[t])throw new ue(`Cannot interpolate values containing mismatched anchors. from[${t}]: ${n[t]}, to[${t}]: ${i[t]}`);a.push(n[t]);const[e,s]=n[t+1],[o,l]=i[t+1];a.push([je(e,o,r),je(s,l,r)]);}return new re(a)}};class Ke{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e);}static interpolationFactor(t,e,r,n){let i=0;if(\"exponential\"===t.name)i=Ge(e,t.base,r,n);else if(\"linear\"===t.name)i=Ge(e,1,r,n);else if(\"cubic-bezier\"===t.name){const a=t.controlPoints;i=new l(a[0],a[1],a[2],a[3]).solve(Ge(e,1,r,n));}return i}static parse(t,e){let[r,n,i,...a]=t;if(!Array.isArray(n)||0===n.length)return e.error(\"Expected an interpolation type expression.\",1);if(\"linear\"===n[0])n={name:\"linear\"};else if(\"exponential\"===n[0]){const t=n[1];if(\"number\"!=typeof t)return e.error(\"Exponential interpolation requires a numeric base.\",1,1);n={name:\"exponential\",base:t};}else {if(\"cubic-bezier\"!==n[0])return e.error(`Unknown interpolation type ${String(n[0])}`,1,0);{const t=n.slice(1);if(4!==t.length||t.some((t=>\"number\"!=typeof t||t<0||t>1)))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:t};}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(i=e.parse(i,2,pt),!i)return null;const s=[];let o=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?o=yt:e.expectedType&&\"value\"!==e.expectedType.kind&&(o=e.expectedType);for(let t=0;t<a.length;t+=2){const r=a[t],n=a[t+1],i=t+3,l=t+4;if(\"number\"!=typeof r)return e.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',i);if(s.length&&s[s.length-1][0]>=r)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(n,l,o);if(!u)return null;o=o||u.type,s.push([r,u]);}return Ct(o,pt)||Ct(o,yt)||Ct(o,bt)||Ct(o,_t)||Ct(o,At(pt))?new Ke(o,r,n,i,s):e.error(`Type ${St(o)} is not interpolatable.`)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);const a=Re(e,n),s=Ke.interpolationFactor(this.interpolation,n,e[a],e[a+1]),o=r[a].evaluate(t),l=r[a+1].evaluate(t);switch(this.operator){case\"interpolate\":return Ze[this.type.kind](o,l,s);case\"interpolate-hcl\":return Ze.color(o,l,s,\"hcl\");case\"interpolate-lab\":return Ze.color(o,l,s,\"lab\")}}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function Ge(t,e,r,n){const i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}class Je{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expectected at least one argument.\");let r=null;const n=e.expectedType;n&&\"value\"!==n.kind&&(r=n);const i=[];for(const n of t.slice(1)){const t=e.parse(n,1+i.length,r,void 0,{typeAnnotation:\"omit\"});if(!t)return null;r=r||t.type,i.push(t);}if(!r)throw new Error(\"No output type\");const a=n&&i.some((t=>It(n,t.type)));return new Je(a?gt:r,i)}evaluate(t){let e,r=null,n=0;for(const i of this.args)if(n++,r=i.evaluate(t),r&&r instanceof ne&&!r.available&&(e||(e=r.name),r=null,n===this.args.length&&(r=e)),null!==r)break;return r}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}class Xe{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const r=[];for(let n=1;n<t.length-1;n+=2){const i=t[n];if(\"string\"!=typeof i)return e.error(`Expected string, but found ${typeof i} instead.`,n);if(/[^a-zA-Z0-9_]/.test(i))return e.error(\"Variable names must contain only alphanumeric characters or '_'.\",n);const a=e.parse(t[n+1],n+1);if(!a)return null;r.push([i,a]);}const n=e.parse(t[t.length-1],t.length-1,e.expectedType,r);return n?new Xe(r,n):null}outputDefined(){return this.result.outputDefined()}}class Ye{constructor(t,e,r){this.type=t,this.index=e,this.input=r;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,pt),n=e.parse(t[2],2,At(e.expectedType||gt));return r&&n?new Ye(n.type.itemType,r,n):null}evaluate(t){const e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new ue(`Array index out of bounds: ${e} < 0.`);if(e>=r.length)throw new ue(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new ue(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input);}outputDefined(){return !1}}class He{constructor(t,e){this.type=dt,this.needle=t,this.haystack=e;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,gt);return r&&n?zt(r.type,[dt,ft,pt,ht,gt])?new He(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${St(r.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return !1;if(!Mt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(`Expected first argument to be of type boolean, string, number or null, but found ${St(se(e))} instead.`);if(!Mt(r,[\"string\",\"array\"]))throw new ue(`Expected second argument to be of type array or string, but found ${St(se(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack);}outputDefined(){return !0}}class We{constructor(t,e,r){this.type=pt,this.needle=t,this.haystack=e,this.fromIndex=r;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,gt);if(!r||!n)return null;if(!zt(r.type,[dt,ft,pt,ht,gt]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${St(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,pt);return i?new We(r,n,i):null}return new We(r,n)}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Mt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new ue(`Expected first argument to be of type boolean, string, number or null, but found ${St(se(e))} instead.`);if(!Mt(r,[\"string\",\"array\"]))throw new ue(`Expected second argument to be of type array or string, but found ${St(se(r))} instead.`);if(this.fromIndex){const n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);}outputDefined(){return !1}}class Qe{constructor(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a;}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");let r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);const i={},a=[];for(let s=2;s<t.length-1;s+=2){let o=t[s];const l=t[s+1];Array.isArray(o)||(o=[o]);const u=e.concat(s);if(0===o.length)return u.error(\"Expected at least one branch label.\");for(const t of o){if(\"number\"!=typeof t&&\"string\"!=typeof t)return u.error(\"Branch labels must be numbers or strings.\");if(\"number\"==typeof t&&Math.abs(t)>Number.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(\"number\"==typeof t&&Math.floor(t)!==t)return u.error(\"Numeric branch labels must be integer values.\");if(r){if(u.checkSubtype(r,se(t)))return null}else r=se(t);if(void 0!==i[String(t)])return u.error(\"Branch labels must be unique.\");i[String(t)]=a.length;}const c=e.parse(l,s,n);if(!c)return null;n=n||c.type,a.push(c);}const s=e.parse(t[1],1,gt);if(!s)return null;const o=e.parse(t[t.length-1],t.length-1,n);return o?\"value\"!==s.type.kind&&e.concat(1).checkSubtype(r,s.type)?null:new Qe(r,n,s,i,a,o):null}evaluate(t){const e=this.input.evaluate(t);return (se(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}}class tr{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r;}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error(\"Expected an odd number of arguments.\");let r;e.expectedType&&\"value\"!==e.expectedType.kind&&(r=e.expectedType);const n=[];for(let i=1;i<t.length-1;i+=2){const a=e.parse(t[i],i,dt);if(!a)return null;const s=e.parse(t[i+1],i+1,r);if(!s)return null;n.push([a,s]),r=r||s.type;}const i=e.parse(t[t.length-1],t.length-1,r);if(!i)return null;if(!r)throw new Error(\"Can't infer output type\");return new tr(r,n,i)}evaluate(t){for(const[e,r]of this.branches)if(e.evaluate(t))return r.evaluate(t);return this.otherwise.evaluate(t)}eachChild(t){for(const[e,r]of this.branches)t(e),t(r);t(this.otherwise);}outputDefined(){return this.branches.every((([t,e])=>e.outputDefined()))&&this.otherwise.outputDefined()}}class er{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,pt);if(!r||!n)return null;if(!zt(r.type,[At(gt),ft,gt]))return e.error(`Expected first argument to be of type array or string, but found ${St(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,pt);return i?new er(r.type,r,n,i):null}return new er(r.type,r,n)}evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Mt(e,[\"string\",\"array\"]))throw new ue(`Expected first argument to be of type array or string, but found ${St(se(e))} instead.`);if(this.endIndex){const n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);}outputDefined(){return !1}}function rr(t,e){return \"==\"===t||\"!=\"===t?\"boolean\"===e.kind||\"string\"===e.kind||\"number\"===e.kind||\"null\"===e.kind||\"value\"===e.kind:\"string\"===e.kind||\"number\"===e.kind||\"value\"===e.kind}function nr(t,e,r,n){return 0===n.compare(e,r)}function ir(t,e,r){const n=\"==\"!==t&&\"!=\"!==t;return class i{constructor(t,e,r){this.type=dt,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument=\"value\"===t.type.kind||\"value\"===e.type.kind;}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error(\"Expected two or three arguments.\");const r=t[0];let a=e.parse(t[1],1,gt);if(!a)return null;if(!rr(r,a.type))return e.concat(1).error(`\"${r}\" comparisons are not supported for type '${St(a.type)}'.`);let s=e.parse(t[2],2,gt);if(!s)return null;if(!rr(r,s.type))return e.concat(2).error(`\"${r}\" comparisons are not supported for type '${St(s.type)}'.`);if(a.type.kind!==s.type.kind&&\"value\"!==a.type.kind&&\"value\"!==s.type.kind)return e.error(`Cannot compare types '${St(a.type)}' and '${St(s.type)}'.`);n&&(\"value\"===a.type.kind&&\"value\"!==s.type.kind?a=new he(s.type,[a]):\"value\"!==a.type.kind&&\"value\"===s.type.kind&&(s=new he(a.type,[s])));let o=null;if(4===t.length){if(\"string\"!==a.type.kind&&\"string\"!==s.type.kind&&\"value\"!==a.type.kind&&\"value\"!==s.type.kind)return e.error(\"Cannot use collator to compare non-string types.\");if(o=e.parse(t[3],3,xt),!o)return null}return new i(a,s,o)}evaluate(i){const a=this.lhs.evaluate(i),s=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){const e=se(a),r=se(s);if(e.kind!==r.kind||\"string\"!==e.kind&&\"number\"!==e.kind)throw new ue(`Expected arguments for \"${t}\" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){const t=se(a),r=se(s);if(\"string\"!==t.kind||\"string\"!==r.kind)return e(i,a,s)}return this.collator?r(i,a,s,this.collator.evaluate(i)):e(i,a,s)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);}outputDefined(){return !0}}}const ar=ir(\"==\",(function(t,e,r){return e===r}),nr),sr=ir(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return !nr(0,e,r,n)})),or=ir(\"<\",(function(t,e,r){return e<r}),(function(t,e,r,n){return n.compare(e,r)<0})),lr=ir(\">\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),ur=ir(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),cr=ir(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class hr{constructor(t,e,r,n,i){this.type=ft,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;}static parse(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,pt);if(!r)return null;const n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");let i=null;if(n.locale&&(i=e.parse(n.locale,1,ft),!i))return null;let a=null;if(n.currency&&(a=e.parse(n.currency,1,ft),!a))return null;let s=null;if(n[\"min-fraction-digits\"]&&(s=e.parse(n[\"min-fraction-digits\"],1,pt),!s))return null;let o=null;return n[\"max-fraction-digits\"]&&(o=e.parse(n[\"max-fraction-digits\"],1,pt),!o)?null:new hr(r,i,a,s,o)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);}outputDefined(){return !1}}class pr{constructor(t){this.type=vt,this.sections=t;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");const r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");const n=[];let i=!1;for(let r=1;r<=t.length-1;++r){const a=t[r];if(i&&\"object\"==typeof a&&!Array.isArray(a)){i=!1;let t=null;if(a[\"font-scale\"]&&(t=e.parse(a[\"font-scale\"],1,pt),!t))return null;let r=null;if(a[\"text-font\"]&&(r=e.parse(a[\"text-font\"],1,At(ft)),!r))return null;let s=null;if(a[\"text-color\"]&&(s=e.parse(a[\"text-color\"],1,yt),!s))return null;const o=n[n.length-1];o.scale=t,o.font=r,o.textColor=s;}else {const a=e.parse(t[r],1,gt);if(!a)return null;const s=a.type.kind;if(\"string\"!==s&&\"value\"!==s&&\"null\"!==s&&\"resolvedImage\"!==s)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:a,scale:null,font:null,textColor:null});}}return new pr(n)}evaluate(t){return new Qt(this.sections.map((e=>{const r=e.content.evaluate(t);return se(r)===wt?new Wt(\"\",r,null,null,null):new Wt(oe(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor);}outputDefined(){return !1}}class fr{constructor(t){this.type=wt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,ft);return r?new fr(r):e.error(\"No image name provided.\")}evaluate(t){const e=this.input.evaluate(t),r=ne.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input);}outputDefined(){return !1}}class dr{constructor(t){this.type=pt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(`Expected argument of type string or array, but found ${St(r.type)} instead.`):new dr(r):null}evaluate(t){const e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ue(`Expected value to be of type string or array, but found ${St(se(e))} instead.`)}eachChild(t){t(this.input);}outputDefined(){return !1}}const yr={\"==\":ar,\"!=\":sr,\">\":lr,\"<\":or,\">=\":cr,\"<=\":ur,array:he,at:Ye,boolean:he,case:tr,coalesce:Je,collator:ge,format:pr,image:fr,in:He,\"index-of\":We,interpolate:Ke,\"interpolate-hcl\":Ke,\"interpolate-lab\":Ke,length:dr,let:Xe,literal:le,match:Qe,number:he,\"number-format\":hr,object:he,slice:er,step:qe,string:he,\"to-boolean\":fe,\"to-color\":fe,\"to-number\":fe,\"to-string\":fe,var:Te,within:Fe};function mr(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t);const a=i?i.evaluate(t):1,s=ie(e,r,n,a);if(s)throw new ue(s);return new Yt(e/255,r/255,n/255,a,!1)}function gr(t,e){return t in e}function xr(t,e){const r=e[t];return void 0===r?null:r}function vr(t){return {type:t}}function br(t){return {result:\"success\",value:t}}function wr(t){return {result:\"error\",value:t}}function _r(t){return \"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Ar(t){return !!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function Sr(t){return !!t.expression&&t.expression.interpolated}function kr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Ir(t){return \"object\"==typeof t&&null!==t&&!Array.isArray(t)}function zr(t){return t}function Mr(t,e){const r=\"color\"===e.type,n=t.stops&&\"object\"==typeof t.stops[0][0],i=n||!(n||void 0!==t.property),a=t.type||(Sr(e)?\"exponential\":\"interval\");if(r||\"padding\"===e.type){const n=r?Yt.parse:te.parse;(t=lt({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],n(t[1])]))),t.default=n(t.default?t.default:e.default);}if(t.colorSpace&&\"rgb\"!==(s=t.colorSpace)&&\"hcl\"!==s&&\"lab\"!==s)throw new Error(`Unknown color space: \"${t.colorSpace}\"`);var s;let o,l,u;if(\"exponential\"===a)o=Vr;else if(\"interval\"===a)o=Pr;else if(\"categorical\"===a){o=Br,l=Object.create(null);for(const e of t.stops)l[e[0]]=e[1];u=typeof t.stops[0][0];}else {if(\"identity\"!==a)throw new Error(`Unknown function type \"${a}\"`);o=Er;}if(n){const r={},n=[];for(let e=0;e<t.stops.length;e++){const i=t.stops[e],a=i[0].zoom;void 0===r[a]&&(r[a]={zoom:a,type:t.type,property:t.property,default:t.default,stops:[]},n.push(a)),r[a].stops.push([i[0].value,i[1]]);}const i=[];for(const t of n)i.push([r[t].zoom,Mr(r[t],e)]);const a={name:\"linear\"};return {kind:\"composite\",interpolationType:a,interpolationFactor:Ke.interpolationFactor.bind(void 0,a),zoomStops:i.map((t=>t[0])),evaluate:({zoom:r},n)=>Vr({stops:i,base:t.base},e,r).evaluate(r,n)}}if(i){const r=\"exponential\"===a?{name:\"exponential\",base:void 0!==t.base?t.base:1}:null;return {kind:\"camera\",interpolationType:r,interpolationFactor:Ke.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:r})=>o(t,e,r,l,u)}}return {kind:\"source\",evaluate(r,n){const i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?Cr(t.default,e.default):o(t,e,i,l,u)}}}function Cr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Br(t,e,r,n,i){return Cr(typeof r===i?n[r]:void 0,t.default,e.default)}function Pr(t,e,r){if(\"number\"!==kr(r))return Cr(t.default,e.default);const n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];const i=Re(t.stops.map((t=>t[0])),r);return t.stops[i][1]}function Vr(t,e,r){const n=void 0!==t.base?t.base:1;if(\"number\"!==kr(r))return Cr(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];const a=Re(t.stops.map((t=>t[0])),r),s=function(t,e,r,n){const i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),o=t.stops[a][1],l=t.stops[a+1][1],u=Ze[e.type]||zr;return \"function\"==typeof o.evaluate?{evaluate(...e){const r=o.evaluate.apply(void 0,e),n=l.evaluate.apply(void 0,e);if(void 0!==r&&void 0!==n)return u(r,n,s,t.colorSpace)}}:u(o,l,s,t.colorSpace)}function Er(t,e,r){switch(e.type){case\"color\":r=Yt.parse(r);break;case\"formatted\":r=Qt.fromString(r.toString());break;case\"resolvedImage\":r=ne.fromString(r.toString());break;case\"padding\":r=te.parse(r);break;default:kr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0);}return Cr(r,t.default,e.default)}$e.register(yr,{error:[{kind:\"error\"},[ft],(t,[e])=>{throw new ue(e.evaluate(t))}],typeof:[ft,[gt],(t,[e])=>St(se(e.evaluate(t)))],\"to-rgba\":[At(pt,4),[yt],(t,[e])=>{const[r,n,i,a]=e.evaluate(t).rgb;return [255*r,255*n,255*i,a]}],rgb:[yt,[pt,pt,pt],mr],rgba:[yt,[pt,pt,pt,pt],mr],has:{type:dt,overloads:[[[ft],(t,[e])=>gr(e.evaluate(t),t.properties())],[[ft,mt],(t,[e,r])=>gr(e.evaluate(t),r.evaluate(t))]]},get:{type:gt,overloads:[[[ft],(t,[e])=>xr(e.evaluate(t),t.properties())],[[ft,mt],(t,[e,r])=>xr(e.evaluate(t),r.evaluate(t))]]},\"feature-state\":[gt,[ft],(t,[e])=>xr(e.evaluate(t),t.featureState||{})],properties:[mt,[],t=>t.properties()],\"geometry-type\":[ft,[],t=>t.geometryType()],id:[gt,[],t=>t.id()],zoom:[pt,[],t=>t.globals.zoom],\"heatmap-density\":[pt,[],t=>t.globals.heatmapDensity||0],\"line-progress\":[pt,[],t=>t.globals.lineProgress||0],accumulated:[gt,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],\"+\":[pt,vr(pt),(t,e)=>{let r=0;for(const n of e)r+=n.evaluate(t);return r}],\"*\":[pt,vr(pt),(t,e)=>{let r=1;for(const n of e)r*=n.evaluate(t);return r}],\"-\":{type:pt,overloads:[[[pt,pt],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[pt],(t,[e])=>-e.evaluate(t)]]},\"/\":[pt,[pt,pt],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],\"%\":[pt,[pt,pt],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[pt,[],()=>Math.LN2],pi:[pt,[],()=>Math.PI],e:[pt,[],()=>Math.E],\"^\":[pt,[pt,pt],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[pt,[pt],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))],log2:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[pt,[pt],(t,[e])=>Math.sin(e.evaluate(t))],cos:[pt,[pt],(t,[e])=>Math.cos(e.evaluate(t))],tan:[pt,[pt],(t,[e])=>Math.tan(e.evaluate(t))],asin:[pt,[pt],(t,[e])=>Math.asin(e.evaluate(t))],acos:[pt,[pt],(t,[e])=>Math.acos(e.evaluate(t))],atan:[pt,[pt],(t,[e])=>Math.atan(e.evaluate(t))],min:[pt,vr(pt),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[pt,vr(pt),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[pt,[pt],(t,[e])=>Math.abs(e.evaluate(t))],round:[pt,[pt],(t,[e])=>{const r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[pt,[pt],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[pt,[pt],(t,[e])=>Math.ceil(e.evaluate(t))],\"filter-==\":[dt,[ft,gt],(t,[e,r])=>t.properties()[e.value]===r.value],\"filter-id-==\":[dt,[gt],(t,[e])=>t.id()===e.value],\"filter-type-==\":[dt,[ft],(t,[e])=>t.geometryType()===e.value],\"filter-<\":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<i}],\"filter-id-<\":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<n}],\"filter->\":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],\"filter-id->\":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],\"filter-<=\":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],\"filter-id-<=\":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],\"filter->=\":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],\"filter-id->=\":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],\"filter-has\":[dt,[gt],(t,[e])=>e.value in t.properties()],\"filter-has-id\":[dt,[],t=>null!==t.id()&&void 0!==t.id()],\"filter-type-in\":[dt,[At(ft)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],\"filter-id-in\":[dt,[At(gt)],(t,[e])=>e.value.indexOf(t.id())>=0],\"filter-in-small\":[dt,[ft,At(gt)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],\"filter-in-large\":[dt,[ft,At(gt)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){const i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:dt,overloads:[[[dt,dt],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[vr(dt),(t,e)=>{for(const r of e)if(!r.evaluate(t))return !1;return !0}]]},any:{type:dt,overloads:[[[dt,dt],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[vr(dt),(t,e)=>{for(const r of e)if(r.evaluate(t))return !0;return !1}]]},\"!\":[dt,[dt],(t,[e])=>!e.evaluate(t)],\"is-supported-script\":[dt,[ft],(t,[e])=>{const r=t.globals&&t.globals.isSupportedScript;return !r||r(e.evaluate(t))}],upcase:[ft,[ft],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[ft,[ft],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[ft,vr(gt),(t,e)=>e.map((e=>oe(e.evaluate(t)))).join(\"\")],\"resolved-locale\":[ft,[xt],(t,[e])=>e.evaluate(t).resolvedLocale()]});class Fr{constructor(t,e){var r;this.expression=t,this._warningHistory={},this._evaluator=new ye,this._defaultValue=e?\"color\"===(r=e).type&&Ir(r.default)?new Yt(0,0,0,0):\"color\"===r.type?Yt.parse(r.default)||null:\"padding\"===r.type?te.parse(r.default)||null:\"variableAnchorOffsetCollection\"===r.type?re.parse(r.default)||null:void 0===r.default?null:r.default:null,this._enumValues=e&&\"enum\"===e.type?e.values:null;}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||\"number\"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new ue(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(\", \")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function Tr(t){return Array.isArray(t)&&t.length>0&&\"string\"==typeof t[0]&&t[0]in yr}function $r(t,e){const r=new me(yr,Le,[],e?function(t){const e={color:yt,string:ft,number:pt,enum:ft,boolean:dt,formatted:vt,padding:bt,resolvedImage:wt,variableAnchorOffsetCollection:_t};return \"array\"===t.type?At(e[t.value]||gt,t.length):e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?br(new Fr(n,e)):wr(r.errors)}class Lr{constructor(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!Oe(e.expression);}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)}evaluate(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)}}class Dr{constructor(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!Oe(e.expression),this.interpolationType=n;}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)}evaluate(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)}interpolationFactor(t,e,r){return this.interpolationType?Ke.interpolationFactor(this.interpolationType,t,e,r):0}}function Or(t,e){const r=$r(t,e);if(\"error\"===r.result)return r;const n=r.value.expression,i=De(n);if(!i&&!_r(e))return wr([new ut(\"\",\"data expressions not supported\")]);const a=Ue(n,[\"zoom\"]);if(!a&&!Ar(e))return wr([new ut(\"\",\"zoom expressions not supported\")]);const s=Rr(n);return s||a?s instanceof ut?wr([s]):s instanceof Ke&&!Sr(e)?wr([new ut(\"\",'\"interpolate\" expressions cannot be used with this property')]):br(s?new Dr(i?\"camera\":\"composite\",r.value,s.labels,s instanceof Ke?s.interpolation:void 0):new Lr(i?\"constant\":\"source\",r.value)):wr([new ut(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}class Ur{constructor(t,e){this._parameters=t,this._specification=e,lt(this,Mr(this._parameters,this._specification));}static deserialize(t){return new Ur(t._parameters,t._specification)}static serialize(t){return {_parameters:t._parameters,_specification:t._specification}}}function Rr(t){let e=null;if(t instanceof Xe)e=Rr(t.result);else if(t instanceof Je){for(const r of t.args)if(e=Rr(r),e)break}else (t instanceof qe||t instanceof Ke)&&t.input instanceof $e&&\"zoom\"===t.input.name&&(e=t);return e instanceof ut||t.eachChild((t=>{const r=Rr(t);r instanceof ut?e=r:!e&&r?e=new ut(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):e&&r&&e!==r&&(e=new ut(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'));})),e}function qr(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case\"has\":return t.length>=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return !1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(const e of t.slice(1))if(!qr(e)&&\"boolean\"!=typeof e)return !1;return !0;default:return !0}}const jr={type:\"boolean\",default:!1,transition:!1,\"property-type\":\"data-driven\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]}};function Nr(t){if(null==t)return {filter:()=>!0,needGeometry:!1};qr(t)||(t=Gr(t));const e=$r(t,jr);if(\"error\"===e.result)throw new Error(e.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));return {filter:(t,r,n)=>e.value.evaluate(t,r,{},n),needGeometry:Kr(t)}}function Zr(t,e){return t<e?-1:t>e?1:0}function Kr(t){if(!Array.isArray(t))return !1;if(\"within\"===t[0])return !0;for(let e=1;e<t.length;e++)if(Kr(t[e]))return !0;return !1}function Gr(t){if(!t)return !0;const e=t[0];return t.length<=1?\"any\"!==e:\"==\"===e?Jr(t[1],t[2],\"==\"):\"!=\"===e?Hr(Jr(t[1],t[2],\"==\")):\"<\"===e||\">\"===e||\"<=\"===e||\">=\"===e?Jr(t[1],t[2],e):\"any\"===e?(r=t.slice(1),[\"any\"].concat(r.map(Gr))):\"all\"===e?[\"all\"].concat(t.slice(1).map(Gr)):\"none\"===e?[\"all\"].concat(t.slice(1).map(Gr).map(Hr)):\"in\"===e?Xr(t[1],t.slice(2)):\"!in\"===e?Hr(Xr(t[1],t.slice(2))):\"has\"===e?Yr(t[1]):\"!has\"===e?Hr(Yr(t[1])):\"within\"!==e||t;var r;}function Jr(t,e,r){switch(t){case\"$type\":return [`filter-type-${r}`,e];case\"$id\":return [`filter-id-${r}`,e];default:return [`filter-${r}`,t,e]}}function Xr(t,e){if(0===e.length)return !1;switch(t){case\"$type\":return [\"filter-type-in\",[\"literal\",e]];case\"$id\":return [\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((t=>typeof t!=typeof e[0]))?[\"filter-in-large\",t,[\"literal\",e.sort(Zr)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function Yr(t){switch(t){case\"$type\":return !0;case\"$id\":return [\"filter-has-id\"];default:return [\"filter-has\",t]}}function Hr(t){return [\"!\",t]}function Wr(t){const e=typeof t;if(\"number\"===e||\"boolean\"===e||\"string\"===e||null==t)return JSON.stringify(t);if(Array.isArray(t)){let e=\"[\";for(const r of t)e+=`${Wr(r)},`;return `${e}]`}const r=Object.keys(t).sort();let n=\"{\";for(let e=0;e<r.length;e++)n+=`${JSON.stringify(r[e])}:${Wr(t[r[e]])},`;return `${n}}`}function Qr(t){let e=\"\";for(const r of Y)e+=`/${Wr(t[r])}`;return e}function tn(t){const e=t.value;return e?[new ot(t.key,e,\"constants have been deprecated as of v8\")]:[]}function en(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function rn(t){if(Array.isArray(t))return t.map(rn);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){const e={};for(const r in t)e[r]=rn(t[r]);return e}return en(t)}function nn(t){const e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},a=t.style,s=t.styleSpec,o=t.validateSpec;let l=[];const u=kr(r);if(\"object\"!==u)return [new ot(e,r,`object expected, ${u} found`)];for(const t in r){const u=t.split(\".\")[0],c=n[u]||n[\"*\"];let h;if(i[u])h=i[u];else if(n[u])h=o;else if(i[\"*\"])h=i[\"*\"];else {if(!n[\"*\"]){l.push(new ot(e,r[t],`unknown property \"${t}\"`));continue}h=o;}l=l.concat(h({key:(e?`${e}.`:e)+t,value:r[t],valueSpec:c,style:a,styleSpec:s,object:r,objectKey:t,validateSpec:o},r));}for(const t in n)i[t]||n[t].required&&void 0===n[t].default&&void 0===r[t]&&l.push(new ot(e,r,`missing required property \"${t}\"`));return l}function an(t){const e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,a=t.key,s=t.arrayElementValidator||t.validateSpec;if(\"array\"!==kr(e))return [new ot(a,e,`array expected, ${kr(e)} found`)];if(r.length&&e.length!==r.length)return [new ot(a,e,`array length ${r.length} expected, length ${e.length} found`)];if(r[\"min-length\"]&&e.length<r[\"min-length\"])return [new ot(a,e,`array length at least ${r[\"min-length\"]} expected, length ${e.length} found`)];let o={type:r.value,values:r.values};i.$version<7&&(o.function=r.function),\"object\"===kr(r.value)&&(o=r.value);let l=[];for(let r=0;r<e.length;r++)l=l.concat(s({array:e,arrayIndex:r,value:e[r],valueSpec:o,validateSpec:t.validateSpec,style:n,styleSpec:i,key:`${a}[${r}]`}));return l}function sn(t){const e=t.key,r=t.value,n=t.valueSpec;let i=kr(r);return \"number\"===i&&r!=r&&(i=\"NaN\"),\"number\"!==i?[new ot(e,r,`number expected, ${i} found`)]:\"minimum\"in n&&r<n.minimum?[new ot(e,r,`${r} is less than the minimum value ${n.minimum}`)]:\"maximum\"in n&&r>n.maximum?[new ot(e,r,`${r} is greater than the maximum value ${n.maximum}`)]:[]}function on(t){const e=t.valueSpec,r=en(t.value.type);let n,i,a,s={};const o=\"categorical\"!==r&&void 0===t.value.property,l=!o,u=\"array\"===kr(t.value.stops)&&\"array\"===kr(t.value.stops[0])&&\"object\"===kr(t.value.stops[0][0]),c=nn({key:t.key,value:t.value,valueSpec:t.styleSpec.function,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===r)return [new ot(t.key,t.value,'identity function may not have a \"stops\" property')];let e=[];const n=t.value;return e=e.concat(an({key:t.key,value:n,valueSpec:t.valueSpec,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),\"array\"===kr(n)&&0===n.length&&e.push(new ot(t.key,n,\"array must have at least one stop\")),e},default:function(t){return t.validateSpec({key:t.key,value:t.value,valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec})}}});return \"identity\"===r&&o&&c.push(new ot(t.key,t.value,'missing required property \"property\"')),\"identity\"===r||t.value.stops||c.push(new ot(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===r&&t.valueSpec.expression&&!Sr(t.valueSpec)&&c.push(new ot(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!_r(t.valueSpec)?c.push(new ot(t.key,t.value,\"property functions not supported\")):o&&!Ar(t.valueSpec)&&c.push(new ot(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==r&&!u||void 0!==t.value.property||c.push(new ot(t.key,t.value,'\"property\" property is required')),c;function h(t){let r=[];const n=t.value,o=t.key;if(\"array\"!==kr(n))return [new ot(o,n,`array expected, ${kr(n)} found`)];if(2!==n.length)return [new ot(o,n,`array length 2 expected, length ${n.length} found`)];if(u){if(\"object\"!==kr(n[0]))return [new ot(o,n,`object expected, ${kr(n[0])} found`)];if(void 0===n[0].zoom)return [new ot(o,n,\"object stop key must have zoom\")];if(void 0===n[0].value)return [new ot(o,n,\"object stop key must have value\")];if(a&&a>en(n[0].zoom))return [new ot(o,n[0].zoom,\"stop zoom values must appear in ascending order\")];en(n[0].zoom)!==a&&(a=en(n[0].zoom),i=void 0,s={}),r=r.concat(nn({key:`${o}[0]`,value:n[0],valueSpec:{zoom:{}},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:sn,value:p}}));}else r=r.concat(p({key:`${o}[0]`,value:n[0],valueSpec:{},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec},n));return Tr(rn(n[1]))?r.concat([new ot(`${o}[1]`,n[1],\"expressions are not allowed in function stops.\")]):r.concat(t.validateSpec({key:`${o}[1]`,value:n[1],valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec}))}function p(t,a){const o=kr(t.value),l=en(t.value),u=null!==t.value?t.value:a;if(n){if(o!==n)return [new ot(t.key,u,`${o} stop domain type must match previous stop domain type ${n}`)]}else n=o;if(\"number\"!==o&&\"string\"!==o&&\"boolean\"!==o)return [new ot(t.key,u,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==o&&\"categorical\"!==r){let n=`number expected, ${o} found`;return _r(e)&&void 0===r&&(n+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new ot(t.key,u,n)]}return \"categorical\"!==r||\"number\"!==o||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==r&&\"number\"===o&&void 0!==i&&l<i?[new ot(t.key,u,\"stop domain values must appear in ascending order\")]:(i=l,\"categorical\"===r&&l in s?[new ot(t.key,u,\"stop domain values must be unique\")]:(s[l]=!0,[])):[new ot(t.key,u,`integer expected, found ${l}`)]}}function ln(t){const e=(\"property\"===t.expressionContext?Or:$r)(rn(t.value),t.valueSpec);if(\"error\"===e.result)return e.value.map((e=>new ot(`${t.key}${e.key}`,t.value,e.message)));const r=e.value.expression||e.value._styleExpression.expression;if(\"property\"===t.expressionContext&&\"text-font\"===t.propertyKey&&!r.outputDefined())return [new ot(t.key,t.value,`Invalid data expression for \"${t.propertyKey}\". Output values must be contained as literals within the expression.`)];if(\"property\"===t.expressionContext&&\"layout\"===t.propertyType&&!Oe(r))return [new ot(t.key,t.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(\"filter\"===t.expressionContext&&!Oe(r))return [new ot(t.key,t.value,'\"feature-state\" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf(\"cluster\")){if(!Ue(r,[\"zoom\",\"feature-state\"]))return [new ot(t.key,t.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(\"cluster-initial\"===t.expressionContext&&!De(r))return [new ot(t.key,t.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return []}function un(t){const e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(en(r))&&i.push(new ot(e,r,`expected one of [${n.values.join(\", \")}], ${JSON.stringify(r)} found`)):-1===Object.keys(n.values).indexOf(en(r))&&i.push(new ot(e,r,`expected one of [${Object.keys(n.values).join(\", \")}], ${JSON.stringify(r)} found`)),i}function cn(t){return qr(rn(t.value))?ln(lt({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):hn(t)}function hn(t){const e=t.value,r=t.key;if(\"array\"!==kr(e))return [new ot(r,e,`array expected, ${kr(e)} found`)];const n=t.styleSpec;let i,a=[];if(e.length<1)return [new ot(r,e,\"filter array must have at least 1 element\")];switch(a=a.concat(un({key:`${r}[0]`,value:e[0],valueSpec:n.filter_operator,style:t.style,styleSpec:t.styleSpec})),en(e[0])){case\"<\":case\"<=\":case\">\":case\">=\":e.length>=2&&\"$type\"===en(e[1])&&a.push(new ot(r,e,`\"$type\" cannot be use with operator \"${e[0]}\"`));case\"==\":case\"!=\":3!==e.length&&a.push(new ot(r,e,`filter array for operator \"${e[0]}\" must have 3 elements`));case\"in\":case\"!in\":e.length>=2&&(i=kr(e[1]),\"string\"!==i&&a.push(new ot(`${r}[1]`,e[1],`string expected, ${i} found`)));for(let s=2;s<e.length;s++)i=kr(e[s]),\"$type\"===en(e[1])?a=a.concat(un({key:`${r}[${s}]`,value:e[s],valueSpec:n.geometry_type,style:t.style,styleSpec:t.styleSpec})):\"string\"!==i&&\"number\"!==i&&\"boolean\"!==i&&a.push(new ot(`${r}[${s}]`,e[s],`string, number, or boolean expected, ${i} found`));break;case\"any\":case\"all\":case\"none\":for(let n=1;n<e.length;n++)a=a.concat(hn({key:`${r}[${n}]`,value:e[n],style:t.style,styleSpec:t.styleSpec}));break;case\"has\":case\"!has\":i=kr(e[1]),2!==e.length?a.push(new ot(r,e,`filter array for \"${e[0]}\" operator must have 2 elements`)):\"string\"!==i&&a.push(new ot(`${r}[1]`,e[1],`string expected, ${i} found`));break;case\"within\":i=kr(e[1]),2!==e.length?a.push(new ot(r,e,`filter array for \"${e[0]}\" operator must have 2 elements`)):\"object\"!==i&&a.push(new ot(`${r}[1]`,e[1],`object expected, ${i} found`));}return a}function pn(t,e){const r=t.key,n=t.validateSpec,i=t.style,a=t.styleSpec,s=t.value,o=t.objectKey,l=a[`${e}_${t.layerType}`];if(!l)return [];const u=o.match(/^(.*)-transition$/);if(\"paint\"===e&&u&&l[u[1]]&&l[u[1]].transition)return n({key:r,value:s,valueSpec:a.transition,style:i,styleSpec:a});const c=t.valueSpec||l[o];if(!c)return [new ot(r,s,`unknown property \"${o}\"`)];let h;if(\"string\"===kr(s)&&_r(c)&&!c.tokens&&(h=/^{([^}]+)}$/.exec(s)))return [new ot(r,s,`\"${o}\" does not support interpolation syntax\\nUse an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(h[1])} }\\`.`)];const p=[];return \"symbol\"===t.layerType&&(\"text-field\"===o&&i&&!i.glyphs&&p.push(new ot(r,s,'use of \"text-field\" requires a style \"glyphs\" property')),\"text-font\"===o&&Ir(rn(s))&&\"identity\"===en(s.type)&&p.push(new ot(r,s,'\"text-font\" does not support identity functions'))),p.concat(n({key:t.key,value:s,valueSpec:c,style:i,styleSpec:a,expressionContext:\"property\",propertyType:e,propertyKey:o}))}function fn(t){return pn(t,\"paint\")}function dn(t){return pn(t,\"layout\")}function yn(t){let e=[];const r=t.value,n=t.key,i=t.style,a=t.styleSpec;r.type||r.ref||e.push(new ot(n,r,'either \"type\" or \"ref\" is required'));let s=en(r.type);const o=en(r.ref);if(r.id){const a=en(r.id);for(let s=0;s<t.arrayIndex;s++){const t=i.layers[s];en(t.id)===a&&e.push(new ot(n,r.id,`duplicate layer id \"${r.id}\", previously used at line ${t.id.__line__}`));}}if(\"ref\"in r){let t;[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach((t=>{t in r&&e.push(new ot(n,r[t],`\"${t}\" is prohibited for ref layers`));})),i.layers.forEach((e=>{en(e.id)===o&&(t=e);})),t?t.ref?e.push(new ot(n,r.ref,\"ref cannot reference another ref layer\")):s=en(t.type):e.push(new ot(n,r.ref,`ref layer \"${o}\" not found`));}else if(\"background\"!==s)if(r.source){const t=i.sources&&i.sources[r.source],a=t&&en(t.type);t?\"vector\"===a&&\"raster\"===s?e.push(new ot(n,r.source,`layer \"${r.id}\" requires a raster source`)):\"raster-dem\"!==a&&\"hillshade\"===s?e.push(new ot(n,r.source,`layer \"${r.id}\" requires a raster-dem source`)):\"raster\"===a&&\"raster\"!==s?e.push(new ot(n,r.source,`layer \"${r.id}\" requires a vector source`)):\"vector\"!==a||r[\"source-layer\"]?\"raster-dem\"===a&&\"hillshade\"!==s?e.push(new ot(n,r.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):\"line\"!==s||!r.paint||!r.paint[\"line-gradient\"]||\"geojson\"===a&&t.lineMetrics||e.push(new ot(n,r,`layer \"${r.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`)):e.push(new ot(n,r,`layer \"${r.id}\" must specify a \"source-layer\"`)):e.push(new ot(n,r.source,`source \"${r.source}\" not found`));}else e.push(new ot(n,r,'missing required property \"source\"'));return e=e.concat(nn({key:n,value:r,valueSpec:a.layer,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{\"*\":()=>[],type:()=>t.validateSpec({key:`${n}.type`,value:r.type,valueSpec:a.layer.type,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,object:r,objectKey:\"type\"}),filter:cn,layout:t=>nn({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{\"*\":t=>dn(lt({layerType:s},t))}}),paint:t=>nn({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{\"*\":t=>fn(lt({layerType:s},t))}})}})),e}function mn(t){const e=t.value,r=t.key,n=kr(e);return \"string\"!==n?[new ot(r,e,`string expected, ${n} found`)]:[]}const gn={promoteId:function({key:t,value:e}){if(\"string\"===kr(e))return mn({key:t,value:e});{const r=[];for(const n in e)r.push(...mn({key:`${t}.${n}`,value:e[n]}));return r}}};function xn(t){const e=t.value,r=t.key,n=t.styleSpec,i=t.style,a=t.validateSpec;if(!e.type)return [new ot(r,e,'\"type\" is required')];const s=en(e.type);let o;switch(s){case\"vector\":case\"raster\":return o=nn({key:r,value:e,valueSpec:n[`source_${s.replace(\"-\",\"_\")}`],style:t.style,styleSpec:n,objectElementValidators:gn,validateSpec:a}),o;case\"raster-dem\":return o=function(t){var e;const r=null!==(e=t.sourceName)&&void 0!==e?e:\"\",n=t.value,i=t.styleSpec,a=i.source_raster_dem,s=t.style;let o=[];const l=kr(n);if(void 0===n)return o;if(\"object\"!==l)return o.push(new ot(\"source_raster_dem\",n,`object expected, ${l} found`)),o;const u=\"custom\"===en(n.encoding),c=[\"redFactor\",\"greenFactor\",\"blueFactor\",\"baseShift\"],h=t.value.encoding?`\"${t.value.encoding}\"`:\"Default\";for(const e in n)!u&&c.includes(e)?o.push(new ot(e,n[e],`In \"${r}\": \"${e}\" is only valid when \"encoding\" is set to \"custom\". ${h} encoding found`)):a[e]?o=o.concat(t.validateSpec({key:e,value:n[e],valueSpec:a[e],validateSpec:t.validateSpec,style:s,styleSpec:i})):o.push(new ot(e,n[e],`unknown property \"${e}\"`));return o}({sourceName:r,value:e,style:t.style,styleSpec:n,validateSpec:a}),o;case\"geojson\":if(o=nn({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,validateSpec:a,objectElementValidators:gn}),e.cluster)for(const t in e.clusterProperties){const[n,i]=e.clusterProperties[t],s=\"string\"==typeof n?[n,[\"accumulated\"],[\"get\",t]]:n;o.push(...ln({key:`${r}.${t}.map`,value:i,validateSpec:a,expressionContext:\"cluster-map\"})),o.push(...ln({key:`${r}.${t}.reduce`,value:s,validateSpec:a,expressionContext:\"cluster-reduce\"}));}return o;case\"video\":return nn({key:r,value:e,valueSpec:n.source_video,style:i,validateSpec:a,styleSpec:n});case\"image\":return nn({key:r,value:e,valueSpec:n.source_image,style:i,validateSpec:a,styleSpec:n});case\"canvas\":return [new ot(r,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return un({key:`${r}.type`,value:e.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:i,validateSpec:a,styleSpec:n})}}function vn(t){const e=t.value,r=t.styleSpec,n=r.light,i=t.style;let a=[];const s=kr(e);if(void 0===e)return a;if(\"object\"!==s)return a=a.concat([new ot(\"light\",e,`object expected, ${s} found`)]),a;for(const s in e){const o=s.match(/^(.*)-transition$/);a=a.concat(o&&n[o[1]]&&n[o[1]].transition?t.validateSpec({key:s,value:e[s],valueSpec:r.transition,validateSpec:t.validateSpec,style:i,styleSpec:r}):n[s]?t.validateSpec({key:s,value:e[s],valueSpec:n[s],validateSpec:t.validateSpec,style:i,styleSpec:r}):[new ot(s,e[s],`unknown property \"${s}\"`)]);}return a}function bn(t){const e=t.value,r=t.styleSpec,n=r.terrain,i=t.style;let a=[];const s=kr(e);if(void 0===e)return a;if(\"object\"!==s)return a=a.concat([new ot(\"terrain\",e,`object expected, ${s} found`)]),a;for(const s in e)a=a.concat(n[s]?t.validateSpec({key:s,value:e[s],valueSpec:n[s],validateSpec:t.validateSpec,style:i,styleSpec:r}):[new ot(s,e[s],`unknown property \"${s}\"`)]);return a}function wn(t){let e=[];const r=t.value,n=t.key;if(Array.isArray(r)){const i=[],a=[];for(const s in r)r[s].id&&i.includes(r[s].id)&&e.push(new ot(n,r,`all the sprites' ids must be unique, but ${r[s].id} is duplicated`)),i.push(r[s].id),r[s].url&&a.includes(r[s].url)&&e.push(new ot(n,r,`all the sprites' URLs must be unique, but ${r[s].url} is duplicated`)),a.push(r[s].url),e=e.concat(nn({key:`${n}[${s}]`,value:r[s],valueSpec:{id:{type:\"string\",required:!0},url:{type:\"string\",required:!0}},validateSpec:t.validateSpec}));return e}return mn({key:n,value:r})}const _n={\"*\":()=>[],array:an,boolean:function(t){const e=t.value,r=t.key,n=kr(e);return \"boolean\"!==n?[new ot(r,e,`boolean expected, ${n} found`)]:[]},number:sn,color:function(t){const e=t.key,r=t.value,n=kr(r);return \"string\"!==n?[new ot(e,r,`color expected, ${n} found`)]:Yt.parse(String(r))?[]:[new ot(e,r,`color expected, \"${r}\" found`)]},constants:tn,enum:un,filter:cn,function:on,layer:yn,object:nn,source:xn,light:vn,terrain:bn,string:mn,formatted:function(t){return 0===mn(t).length?[]:ln(t)},resolvedImage:function(t){return 0===mn(t).length?[]:ln(t)},padding:function(t){const e=t.key,r=t.value;if(\"array\"===kr(r)){if(r.length<1||r.length>4)return [new ot(e,r,`padding requires 1 to 4 values; ${r.length} values found`)];const n={type:\"number\"};let i=[];for(let a=0;a<r.length;a++)i=i.concat(t.validateSpec({key:`${e}[${a}]`,value:r[a],validateSpec:t.validateSpec,valueSpec:n}));return i}return sn({key:e,value:r,valueSpec:{}})},variableAnchorOffsetCollection:function(t){const e=t.key,r=t.value,n=kr(r),i=t.styleSpec;if(\"array\"!==n||r.length<1||r.length%2!=0)return [new ot(e,r,\"variableAnchorOffsetCollection requires a non-empty array of even length\")];let a=[];for(let n=0;n<r.length;n+=2)a=a.concat(un({key:`${e}[${n}]`,value:r[n],valueSpec:i.layout_symbol[\"text-anchor\"]})),a=a.concat(an({key:`${e}[${n+1}]`,value:r[n+1],valueSpec:{length:2,value:\"number\"},validateSpec:t.validateSpec,style:t.style,styleSpec:i}));return a},sprite:wn};function An(t){const e=t.value,r=t.valueSpec,n=t.styleSpec;return t.validateSpec=An,r.expression&&Ir(en(e))?on(t):r.expression&&Tr(rn(e))?ln(t):r.type&&_n[r.type]?_n[r.type](t):nn(lt({},t,{valueSpec:r.type?n[r.type]:r}))}function Sn(t){const e=t.value,r=t.key,n=mn(t);return n.length||(-1===e.indexOf(\"{fontstack}\")&&n.push(new ot(r,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&n.push(new ot(r,e,'\"glyphs\" url must include a \"{range}\" token'))),n}function kn(t,e=X){let r=[];return r=r.concat(An({key:\"\",value:t,valueSpec:e.$root,styleSpec:e,style:t,validateSpec:An,objectElementValidators:{glyphs:Sn,\"*\":()=>[]}})),t.constants&&(r=r.concat(tn({key:\"constants\",value:t.constants,style:t,styleSpec:e,validateSpec:An}))),zn(r)}function In(t){return function(e){return t({...e,validateSpec:An})}}function zn(t){return [].concat(t).sort(((t,e)=>t.line-e.line))}function Mn(t){return function(...e){return zn(t.apply(this,e))}}kn.source=Mn(In(xn)),kn.sprite=Mn(In(wn)),kn.glyphs=Mn(In(Sn)),kn.light=Mn(In(vn)),kn.terrain=Mn(In(bn)),kn.layer=Mn(In(yn)),kn.filter=Mn(In(cn)),kn.paintProperty=Mn(In(fn)),kn.layoutProperty=Mn(In(dn));const Cn=kn,Bn=Cn.light,Pn=Cn.paintProperty,Vn=Cn.layoutProperty;function En(t,e){let r=!1;if(e&&e.length)for(const n of e)t.fire(new G(new Error(n.message))),r=!0;return r}class Fn{constructor(t,e,r){const n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;const i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(r=i[2]);for(let t=0;t<this.d*this.d;t++){const e=i[3+t],r=i[3+t+1];n.push(e===r?null:i.subarray(e,r));}const a=i[3+n.length+1];this.keys=i.subarray(i[3+n.length],a),this.bboxes=i.subarray(a),this.insert=this._insertReadonly;}else {this.d=e+2*r;for(let t=0;t<this.d*this.d;t++)n.push([]);this.keys=[],this.bboxes=[];}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;const i=r/e*t;this.min=-i,this.max=t+i;}insert(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertCell,this.uid++,void 0,void 0),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i);}_insertReadonly(){throw new Error(\"Cannot insert into a GridIndex created from an ArrayBuffer.\")}_insertCell(t,e,r,n,i,a){this.cells[i].push(a);}query(t,e,r,n,i){const a=this.min,s=this.max;if(t<=a&&e<=a&&s<=r&&s<=n&&!i)return Array.prototype.slice.call(this.keys);{const a=[];return this._forEachCell(t,e,r,n,this._queryCell,a,{},i),a}}_queryCell(t,e,r,n,i,a,s,o){const l=this.cells[i];if(null!==l){const i=this.keys,u=this.bboxes;for(let c=0;c<l.length;c++){const h=l[c];if(void 0===s[h]){const l=4*h;(o?o(u[l+0],u[l+1],u[l+2],u[l+3]):t<=u[l+2]&&e<=u[l+3]&&r>=u[l+0]&&n>=u[l+1])?(s[h]=!0,a.push(i[h])):s[h]=!1;}}}}_forEachCell(t,e,r,n,i,a,s,o){const l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),h=this._convertToCellCoord(n);for(let p=l;p<=c;p++)for(let l=u;l<=h;l++){const u=this.d*l+p;if((!o||o(this._convertFromCellCoord(p),this._convertFromCellCoord(l),this._convertFromCellCoord(p+1),this._convertFromCellCoord(l+1)))&&i.call(this,t,e,r,n,u,a,s,o))return}}_convertFromCellCoord(t){return (t-this.padding)/this.scale}_convertToCellCoord(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const t=this.cells,e=3+this.cells.length+1+1;let r=0;for(let t=0;t<this.cells.length;t++)r+=this.cells[t].length;const n=new Int32Array(e+r+this.keys.length+this.bboxes.length);n[0]=this.extent,n[1]=this.n,n[2]=this.padding;let i=e;for(let e=0;e<t.length;e++){const r=t[e];n[3+e]=i,n.set(r,i),i+=r.length;}return n[3+t.length]=i,n.set(this.keys,i),i+=this.keys.length,n[3+t.length+1]=i,n.set(this.bboxes,i),i+=this.bboxes.length,n.buffer}static serialize(t,e){const r=t.toArrayBuffer();return e&&e.push(r),{buffer:r}}static deserialize(t){return new Fn(t.buffer)}}const Tn={};function $n(t,e,r={}){if(Tn[t])throw new Error(`${t} is already registered.`);Object.defineProperty(e,\"_classRegistryKey\",{value:t,writeable:!1}),Tn[t]={klass:e,omit:r.omit||[],shallow:r.shallow||[]};}$n(\"Object\",Object),$n(\"TransferableGridIndex\",Fn),$n(\"Color\",Yt),$n(\"Error\",Error),$n(\"AJAXError\",L),$n(\"ResolvedImage\",ne),$n(\"StylePropertyFunction\",Ur),$n(\"StyleExpression\",Fr,{omit:[\"_evaluator\"]}),$n(\"ZoomDependentExpression\",Dr),$n(\"ZoomConstantExpression\",Lr),$n(\"CompoundExpression\",$e,{omit:[\"_evaluate\"]});for(const t in yr)yr[t]._classRegistryKey||$n(`Expression_${t}`,yr[t]);function Ln(t){return t&&\"undefined\"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&\"ArrayBuffer\"===t.constructor.name)}function Dn(t,e){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||t instanceof Blob)return t;if(Ln(t))return e&&e.push(t),t;if(M(t))return e&&e.push(t),t;if(ArrayBuffer.isView(t)){const r=t;return e&&e.push(r.buffer),r}if(t instanceof ImageData)return e&&e.push(t.data.buffer),t;if(Array.isArray(t)){const r=[];for(const n of t)r.push(Dn(n,e));return r}if(\"object\"==typeof t){const r=t.constructor,n=r._classRegistryKey;if(!n)throw new Error(\"can't serialize object of unregistered class\");if(!Tn[n])throw new Error(`${n} is not registered.`);const i=r.serialize?r.serialize(t,e):{};if(r.serialize){if(e&&i===e[e.length-1])throw new Error(\"statically serialized object won't survive transfer of $name property\")}else {for(const r in t){if(!t.hasOwnProperty(r))continue;if(Tn[n].omit.indexOf(r)>=0)continue;const a=t[r];i[r]=Tn[n].shallow.indexOf(r)>=0?a:Dn(a,e);}t instanceof Error&&(i.message=t.message);}if(i.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return \"Object\"!==n&&(i.$name=n),i}throw new Error(\"can't serialize object of type \"+typeof t)}function On(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||t instanceof Blob||Ln(t)||M(t)||ArrayBuffer.isView(t)||t instanceof ImageData)return t;if(Array.isArray(t))return t.map(On);if(\"object\"==typeof t){const e=t.$name||\"Object\";if(!Tn[e])throw new Error(`can't deserialize unregistered class ${e}`);const{klass:r}=Tn[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(t);const n=Object.create(r.prototype);for(const r of Object.keys(t)){if(\"$name\"===r)continue;const i=t[r];n[r]=Tn[e].shallow.indexOf(r)>=0?i:On(i);}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}class Un{constructor(){this.first=!0;}update(t,e){const r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))}}const Rn={\"Latin-1 Supplement\":t=>t>=128&&t<=255,Arabic:t=>t>=1536&&t<=1791,\"Arabic Supplement\":t=>t>=1872&&t<=1919,\"Arabic Extended-A\":t=>t>=2208&&t<=2303,\"Hangul Jamo\":t=>t>=4352&&t<=4607,\"Unified Canadian Aboriginal Syllabics\":t=>t>=5120&&t<=5759,Khmer:t=>t>=6016&&t<=6143,\"Unified Canadian Aboriginal Syllabics Extended\":t=>t>=6320&&t<=6399,\"General Punctuation\":t=>t>=8192&&t<=8303,\"Letterlike Symbols\":t=>t>=8448&&t<=8527,\"Number Forms\":t=>t>=8528&&t<=8591,\"Miscellaneous Technical\":t=>t>=8960&&t<=9215,\"Control Pictures\":t=>t>=9216&&t<=9279,\"Optical Character Recognition\":t=>t>=9280&&t<=9311,\"Enclosed Alphanumerics\":t=>t>=9312&&t<=9471,\"Geometric Shapes\":t=>t>=9632&&t<=9727,\"Miscellaneous Symbols\":t=>t>=9728&&t<=9983,\"Miscellaneous Symbols and Arrows\":t=>t>=11008&&t<=11263,\"CJK Radicals Supplement\":t=>t>=11904&&t<=12031,\"Kangxi Radicals\":t=>t>=12032&&t<=12255,\"Ideographic Description Characters\":t=>t>=12272&&t<=12287,\"CJK Symbols and Punctuation\":t=>t>=12288&&t<=12351,Hiragana:t=>t>=12352&&t<=12447,Katakana:t=>t>=12448&&t<=12543,Bopomofo:t=>t>=12544&&t<=12591,\"Hangul Compatibility Jamo\":t=>t>=12592&&t<=12687,Kanbun:t=>t>=12688&&t<=12703,\"Bopomofo Extended\":t=>t>=12704&&t<=12735,\"CJK Strokes\":t=>t>=12736&&t<=12783,\"Katakana Phonetic Extensions\":t=>t>=12784&&t<=12799,\"Enclosed CJK Letters and Months\":t=>t>=12800&&t<=13055,\"CJK Compatibility\":t=>t>=13056&&t<=13311,\"CJK Unified Ideographs Extension A\":t=>t>=13312&&t<=19903,\"Yijing Hexagram Symbols\":t=>t>=19904&&t<=19967,\"CJK Unified Ideographs\":t=>t>=19968&&t<=40959,\"Yi Syllables\":t=>t>=40960&&t<=42127,\"Yi Radicals\":t=>t>=42128&&t<=42191,\"Hangul Jamo Extended-A\":t=>t>=43360&&t<=43391,\"Hangul Syllables\":t=>t>=44032&&t<=55215,\"Hangul Jamo Extended-B\":t=>t>=55216&&t<=55295,\"Private Use Area\":t=>t>=57344&&t<=63743,\"CJK Compatibility Ideographs\":t=>t>=63744&&t<=64255,\"Arabic Presentation Forms-A\":t=>t>=64336&&t<=65023,\"Vertical Forms\":t=>t>=65040&&t<=65055,\"CJK Compatibility Forms\":t=>t>=65072&&t<=65103,\"Small Form Variants\":t=>t>=65104&&t<=65135,\"Arabic Presentation Forms-B\":t=>t>=65136&&t<=65279,\"Halfwidth and Fullwidth Forms\":t=>t>=65280&&t<=65519};function qn(t){for(const e of t)if(Zn(e.charCodeAt(0)))return !0;return !1}function jn(t){for(const e of t)if(!Nn(e.charCodeAt(0)))return !1;return !0}function Nn(t){return !(Rn.Arabic(t)||Rn[\"Arabic Supplement\"](t)||Rn[\"Arabic Extended-A\"](t)||Rn[\"Arabic Presentation Forms-A\"](t)||Rn[\"Arabic Presentation Forms-B\"](t))}function Zn(t){return !(746!==t&&747!==t&&(t<4352||!(Rn[\"Bopomofo Extended\"](t)||Rn.Bopomofo(t)||Rn[\"CJK Compatibility Forms\"](t)&&!(t>=65097&&t<=65103)||Rn[\"CJK Compatibility Ideographs\"](t)||Rn[\"CJK Compatibility\"](t)||Rn[\"CJK Radicals Supplement\"](t)||Rn[\"CJK Strokes\"](t)||!(!Rn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||Rn[\"CJK Unified Ideographs Extension A\"](t)||Rn[\"CJK Unified Ideographs\"](t)||Rn[\"Enclosed CJK Letters and Months\"](t)||Rn[\"Hangul Compatibility Jamo\"](t)||Rn[\"Hangul Jamo Extended-A\"](t)||Rn[\"Hangul Jamo Extended-B\"](t)||Rn[\"Hangul Jamo\"](t)||Rn[\"Hangul Syllables\"](t)||Rn.Hiragana(t)||Rn[\"Ideographic Description Characters\"](t)||Rn.Kanbun(t)||Rn[\"Kangxi Radicals\"](t)||Rn[\"Katakana Phonetic Extensions\"](t)||Rn.Katakana(t)&&12540!==t||!(!Rn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!Rn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||Rn[\"Unified Canadian Aboriginal Syllabics\"](t)||Rn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||Rn[\"Vertical Forms\"](t)||Rn[\"Yijing Hexagram Symbols\"](t)||Rn[\"Yi Syllables\"](t)||Rn[\"Yi Radicals\"](t))))}function Kn(t){return !(Zn(t)||function(t){return !!(Rn[\"Latin-1 Supplement\"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||Rn[\"General Punctuation\"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||Rn[\"Letterlike Symbols\"](t)||Rn[\"Number Forms\"](t)||Rn[\"Miscellaneous Technical\"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||Rn[\"Control Pictures\"](t)&&9251!==t||Rn[\"Optical Character Recognition\"](t)||Rn[\"Enclosed Alphanumerics\"](t)||Rn[\"Geometric Shapes\"](t)||Rn[\"Miscellaneous Symbols\"](t)&&!(t>=9754&&t<=9759)||Rn[\"Miscellaneous Symbols and Arrows\"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||Rn[\"CJK Symbols and Punctuation\"](t)||Rn.Katakana(t)||Rn[\"Private Use Area\"](t)||Rn[\"CJK Compatibility Forms\"](t)||Rn[\"Small Form Variants\"](t)||Rn[\"Halfwidth and Fullwidth Forms\"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function Gn(t){return t>=1424&&t<=2303||Rn[\"Arabic Presentation Forms-A\"](t)||Rn[\"Arabic Presentation Forms-B\"](t)}function Jn(t,e){return !(!e&&Gn(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||Rn.Khmer(t))}function Xn(t){for(const e of t)if(Gn(e.charCodeAt(0)))return !0;return !1}const Yn=\"deferred\",Hn=\"loading\",Wn=\"loaded\";let Qn=null,ti=\"unavailable\",ei=null;const ri=function(t){t&&\"string\"==typeof t&&t.indexOf(\"NetworkError\")>-1&&(ti=\"error\"),Qn&&Qn(t);};function ni(){ii.fire(new K(\"pluginStateChange\",{pluginStatus:ti,pluginURL:ei}));}const ii=new J,ai=function(){return ti},si=function(){if(ti!==Yn||!ei)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");ti=Hn,ni(),ei&&q({url:ei},(t=>{t?ri(t):(ti=Wn,ni());}));},oi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>ti===Wn||null!=oi.applyArabicShaping,isLoading:()=>ti===Hn,setState(t){if(!I())throw new Error(\"Cannot set the state of the rtl-text-plugin when not in the web-worker context\");ti=t.pluginStatus,ei=t.pluginURL;},isParsed(){if(!I())throw new Error(\"rtl-text-plugin is only parsed on the worker-threads\");return null!=oi.applyArabicShaping&&null!=oi.processBidirectionalText&&null!=oi.processStyledBidirectionalText},getPluginURL(){if(!I())throw new Error(\"rtl-text-plugin url can only be queried from the worker threads\");return ei}};class li{constructor(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Un,this.transition={});}isSupportedScript(t){return function(t,e){for(const r of t)if(!Jn(r.charCodeAt(0),e))return !1;return !0}(t,oi.isLoaded())}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}}}class ui{constructor(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Ir(t))return new Ur(t,e);if(Tr(t)){const r=Or(t,e);if(\"error\"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));return r.value}{let r=t;return \"color\"===e.type&&\"string\"==typeof t?r=Yt.parse(t):\"padding\"!==e.type||\"number\"!=typeof t&&!Array.isArray(t)?\"variableAnchorOffsetCollection\"===e.type&&Array.isArray(t)&&(r=re.parse(t)):r=te.parse(t),{kind:\"constant\",evaluate:()=>r}}}(void 0===e?t.specification.default:e,t.specification);}isDataDriven(){return \"source\"===this.expression.kind||\"composite\"===this.expression.kind}possiblyEvaluate(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)}}class ci{constructor(t){this.property=t,this.value=new ui(t,void 0);}transitioned(t,e){return new pi(this.property,this.value,e,g({},t.transition,this.transition),t.now)}untransitioned(){return new pi(this.property,this.value,null,{},0)}}class hi{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);}getValue(t){return w(this._values[t].value.value)}setValue(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new ci(this._values[t].property)),this._values[t].value=new ui(this._values[t].property,null===e?void 0:w(e));}getTransition(t){return w(this._values[t].transition)}setTransition(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new ci(this._values[t].property)),this._values[t].transition=w(e)||void 0;}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);const n=this.getTransition(e);void 0!==n&&(t[`${e}-transition`]=n);}return t}transitioned(t,e){const r=new fi(this._properties);for(const n of Object.keys(this._values))r._values[n]=this._values[n].transitioned(t,e._values[n]);return r}untransitioned(){const t=new fi(this._properties);for(const e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class pi{constructor(t,e,r,n,i){this.property=t,this.value=e,this.begin=i+n.delay||0,this.end=this.begin+n.duration||0,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r);}possiblyEvaluate(t,e,r){const n=t.now||0,i=this.value.possiblyEvaluate(t,e,r),a=this.prior;if(a){if(n>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n<this.begin)return a.possiblyEvaluate(t,e,r);{const s=(n-this.begin)/(this.end-this.begin);return this.property.interpolate(a.possiblyEvaluate(t,e,r),i,function(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(s))}}return i}}class fi{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);}possiblyEvaluate(t,e,r){const n=new mi(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}hasTransition(){for(const t of Object.keys(this._values))if(this._values[t].prior)return !0;return !1}}class di{constructor(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues);}hasValue(t){return void 0!==this._values[t].value}getValue(t){return w(this._values[t].value)}setValue(t,e){this._values[t]=new ui(this._values[t].property,null===e?void 0:w(e));}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);}return t}possiblyEvaluate(t,e,r){const n=new mi(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}}class yi{constructor(t,e,r){this.property=t,this.value=e,this.parameters=r;}isConstant(){return \"constant\"===this.value.kind}constantOr(t){return \"constant\"===this.value.kind?this.value.value:t}evaluate(t,e,r,n){return this.property.evaluate(this.value,this.parameters,t,e,r,n)}}class mi{constructor(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues);}get(t){return this._values[t]}}class gi{constructor(t){this.specification=t;}possiblyEvaluate(t,e){if(t.isDataDriven())throw new Error(\"Value should not be data driven\");return t.expression.evaluate(e)}interpolate(t,e,r){const n=Ze[this.specification.type];return n?n(t,e,r):t}}class xi{constructor(t,e){this.specification=t,this.overrides=e;}possiblyEvaluate(t,e,r,n){return new yi(this,\"constant\"===t.expression.kind||\"camera\"===t.expression.kind?{kind:\"constant\",value:t.expression.evaluate(e,null,{},r,n)}:t.expression,e)}interpolate(t,e,r){if(\"constant\"!==t.value.kind||\"constant\"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new yi(this,{kind:\"constant\",value:void 0},t.parameters);const n=Ze[this.specification.type];if(n){const i=n(t.value.value,e.value.value,r);return new yi(this,{kind:\"constant\",value:i},t.parameters)}return t}evaluate(t,e,r,n,i,a){return \"constant\"===t.kind?t.value:t.evaluate(e,r,n,i,a)}}class vi extends xi{possiblyEvaluate(t,e,r,n){if(void 0===t.value)return new yi(this,{kind:\"constant\",value:void 0},e);if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n),a=\"resolvedImage\"===t.property.specification.type&&\"string\"!=typeof i?i.name:i,s=this._calculate(a,a,a,e);return new yi(this,{kind:\"constant\",value:s},e)}if(\"camera\"===t.expression.kind){const r=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new yi(this,{kind:\"constant\",value:r},e)}return new yi(this,t.expression,e)}evaluate(t,e,r,n,i,a){if(\"source\"===t.kind){const s=t.evaluate(e,r,n,i,a);return this._calculate(s,s,s,e)}return \"composite\"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class bi{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new li(Math.floor(e.zoom-1),e)),t.expression.evaluate(new li(Math.floor(e.zoom),e)),t.expression.evaluate(new li(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class wi{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){return !!t.expression.evaluate(e,null,{},r,n)}interpolate(){return !1}}class _i{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const e in t){const r=t[e];r.specification.overridable&&this.overridableProperties.push(e);const n=this.defaultPropertyValues[e]=new ui(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new ci(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}}}$n(\"DataDrivenProperty\",xi),$n(\"DataConstantProperty\",gi),$n(\"CrossFadedDataDrivenProperty\",vi),$n(\"CrossFadedProperty\",bi),$n(\"ColorRampProperty\",wi);const Ai=\"-transition\";class Si extends J{constructor(t,e){if(super(),this.id=t.id,this.type=t.type,this._featureFilter={filter:()=>!0,needGeometry:!1},\"custom\"!==t.type&&(this.metadata=t.metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,\"background\"!==t.type&&(this.source=t.source,this.sourceLayer=t[\"source-layer\"],this.filter=t.filter),e.layout&&(this._unevaluatedLayout=new di(e.layout)),e.paint)){this._transitionablePaint=new hi(e.paint);for(const e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(const e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new mi(e.paint);}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){return \"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)}setLayoutProperty(t,e,r={}){null!=e&&this._validate(Vn,`layers.${this.id}.layout.${t}`,t,e,r)||(\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e);}getPaintProperty(t){return t.endsWith(Ai)?this._transitionablePaint.getTransition(t.slice(0,-11)):this._transitionablePaint.getValue(t)}setPaintProperty(t,e,r={}){if(null!=e&&this._validate(Pn,`layers.${this.id}.paint.${t}`,t,e,r))return !1;if(t.endsWith(Ai))return this._transitionablePaint.setTransition(t.slice(0,-11),e||void 0),!1;{const r=this._transitionablePaint._values[t],n=\"cross-faded-data-driven\"===r.property.specification[\"property-type\"],i=r.value.isDataDriven(),a=r.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);const s=this._transitionablePaint._values[t].value;return s.isDataDriven()||i||n||this._handleOverridablePaintPropertyUpdate(t,a,s)}}_handleSpecialPaintPropertyUpdate(t){}_handleOverridablePaintPropertyUpdate(t,e,r){return !1}isHidden(t){return !!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.visibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);}serialize(){const t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),b(t,((t,e)=>!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)))}_validate(t,e,r,n,i={}){return (!i||!1!==i.validate)&&En(this,t.call(Cn,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:X,style:{glyphs:!0,sprite:!0}}))}is3D(){return !1}isTileClipped(){return !1}hasOffscreenPass(){return !1}resize(){}isStateDependent(){for(const t in this.paint._values){const e=this.paint.get(t);if(e instanceof yi&&_r(e.property.specification)&&(\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent)return !0}return !1}}const ki={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Ii{constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;}}class zi{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());}clear(){this.length=0;}resize(t){this.reserve(t),this.length=t;}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}}_refreshViews(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")}}function Mi(t,e=1){let r=0,n=0;return {members:t.map((t=>{const i=ki[t.type].BYTES_PER_ELEMENT,a=r=Ci(r,Math.max(e,i)),s=t.components||1;return n=Math.max(n,i),r+=i*s,{name:t.name,type:t.type,components:s,offset:a}})),size:Ci(r,Math.max(n,e)),alignment:e}}function Ci(t,e){return Math.ceil(t/e)*e}class Bi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t}}Bi.prototype.bytesPerElement=4,$n(\"StructArrayLayout2i4\",Bi);class Pi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t}}Pi.prototype.bytesPerElement=6,$n(\"StructArrayLayout3i6\",Pi);class Vi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t}}Vi.prototype.bytesPerElement=8,$n(\"StructArrayLayout4i8\",Vi);class Ei extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,s){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=a,this.int16[o+5]=s,t}}Ei.prototype.bytesPerElement=12,$n(\"StructArrayLayout2i4i12\",Ei);class Fi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,s){const o=4*t,l=8*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=s,t}}Fi.prototype.bytesPerElement=8,$n(\"StructArrayLayout2i4ub8\",Fi);class Ti extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t}}Ti.prototype.bytesPerElement=8,$n(\"StructArrayLayout2f8\",Ti);class $i extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l,u){const c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,s,o,l,u)}emplace(t,e,r,n,i,a,s,o,l,u,c){const h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=r,this.uint16[h+2]=n,this.uint16[h+3]=i,this.uint16[h+4]=a,this.uint16[h+5]=s,this.uint16[h+6]=o,this.uint16[h+7]=l,this.uint16[h+8]=u,this.uint16[h+9]=c,t}}$i.prototype.bytesPerElement=20,$n(\"StructArrayLayout10ui20\",$i);class Li extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l,u,c,h){const p=this.length;return this.resize(p+1),this.emplace(p,t,e,r,n,i,a,s,o,l,u,c,h)}emplace(t,e,r,n,i,a,s,o,l,u,c,h,p){const f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=s,this.uint16[f+6]=o,this.uint16[f+7]=l,this.int16[f+8]=u,this.int16[f+9]=c,this.int16[f+10]=h,this.int16[f+11]=p,t}}Li.prototype.bytesPerElement=24,$n(\"StructArrayLayout4i4ui4i24\",Li);class Di extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}Di.prototype.bytesPerElement=12,$n(\"StructArrayLayout3f12\",Di);class Oi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}Oi.prototype.bytesPerElement=4,$n(\"StructArrayLayout1ul4\",Oi);class Ui extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l){const u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,s,o,l)}emplace(t,e,r,n,i,a,s,o,l,u){const c=10*t,h=5*t;return this.int16[c+0]=e,this.int16[c+1]=r,this.int16[c+2]=n,this.int16[c+3]=i,this.int16[c+4]=a,this.int16[c+5]=s,this.uint32[h+3]=o,this.uint16[c+8]=l,this.uint16[c+9]=u,t}}Ui.prototype.bytesPerElement=20,$n(\"StructArrayLayout6i1ul2ui20\",Ui);class Ri extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,s){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=a,this.int16[o+5]=s,t}}Ri.prototype.bytesPerElement=12,$n(\"StructArrayLayout2i2i2i12\",Ri);class qi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)}emplace(t,e,r,n,i,a){const s=4*t,o=8*t;return this.float32[s+0]=e,this.float32[s+1]=r,this.float32[s+2]=n,this.int16[o+6]=i,this.int16[o+7]=a,t}}qi.prototype.bytesPerElement=16,$n(\"StructArrayLayout2f1f2i16\",qi);class ji extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const a=12*t,s=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[s+1]=n,this.float32[s+2]=i,t}}ji.prototype.bytesPerElement=12,$n(\"StructArrayLayout2ub2f12\",ji);class Ni extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t}}Ni.prototype.bytesPerElement=6,$n(\"StructArrayLayout3ui6\",Ni);class Zi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m){const g=this.length;return this.resize(g+1),this.emplace(g,t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m)}emplace(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g){const x=24*t,v=12*t,b=48*t;return this.int16[x+0]=e,this.int16[x+1]=r,this.uint16[x+2]=n,this.uint16[x+3]=i,this.uint32[v+2]=a,this.uint32[v+3]=s,this.uint32[v+4]=o,this.uint16[x+10]=l,this.uint16[x+11]=u,this.uint16[x+12]=c,this.float32[v+7]=h,this.float32[v+8]=p,this.uint8[b+36]=f,this.uint8[b+37]=d,this.uint8[b+38]=y,this.uint32[v+10]=m,this.int16[x+22]=g,t}}Zi.prototype.bytesPerElement=48,$n(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",Zi);class Ki extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,S,k,I,z){const M=this.length;return this.resize(M+1),this.emplace(M,t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,S,k,I,z)}emplace(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,S,k,I,z,M){const C=32*t,B=16*t;return this.int16[C+0]=e,this.int16[C+1]=r,this.int16[C+2]=n,this.int16[C+3]=i,this.int16[C+4]=a,this.int16[C+5]=s,this.int16[C+6]=o,this.int16[C+7]=l,this.uint16[C+8]=u,this.uint16[C+9]=c,this.uint16[C+10]=h,this.uint16[C+11]=p,this.uint16[C+12]=f,this.uint16[C+13]=d,this.uint16[C+14]=y,this.uint16[C+15]=m,this.uint16[C+16]=g,this.uint16[C+17]=x,this.uint16[C+18]=v,this.uint16[C+19]=b,this.uint16[C+20]=w,this.uint16[C+21]=_,this.uint16[C+22]=A,this.uint32[B+12]=S,this.float32[B+13]=k,this.float32[B+14]=I,this.uint16[C+30]=z,this.uint16[C+31]=M,t}}Ki.prototype.bytesPerElement=64,$n(\"StructArrayLayout8i15ui1ul2f2ui64\",Ki);class Gi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}Gi.prototype.bytesPerElement=4,$n(\"StructArrayLayout1f4\",Gi);class Ji extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[6*t+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}Ji.prototype.bytesPerElement=12,$n(\"StructArrayLayout1ui2f12\",Ji);class Xi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=4*t;return this.uint32[2*t+0]=e,this.uint16[i+2]=r,this.uint16[i+3]=n,t}}Xi.prototype.bytesPerElement=8,$n(\"StructArrayLayout1ul2ui8\",Xi);class Yi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t}}Yi.prototype.bytesPerElement=4,$n(\"StructArrayLayout2ui4\",Yi);class Hi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}Hi.prototype.bytesPerElement=2,$n(\"StructArrayLayout1ui2\",Hi);class Wi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t}}Wi.prototype.bytesPerElement=16,$n(\"StructArrayLayout4f16\",Wi);class Qi extends Ii{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new a(this.anchorPointX,this.anchorPointY)}}Qi.prototype.size=20;class ta extends Ui{get(t){return new Qi(this,t)}}$n(\"CollisionBoxArray\",ta);class ea extends Ii{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(t){this._structArray.uint8[this._pos1+37]=t;}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(t){this._structArray.uint8[this._pos1+38]=t;}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(t){this._structArray.uint32[this._pos4+10]=t;}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}ea.prototype.size=48;class ra extends Zi{get(t){return new ea(this,t)}}$n(\"PlacedSymbolArray\",ra);class na extends Ii{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(t){this._structArray.uint32[this._pos4+12]=t;}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}na.prototype.size=64;class ia extends Ki{get(t){return new na(this,t)}}$n(\"SymbolInstanceArray\",ia);class aa extends Gi{getoffsetX(t){return this.float32[1*t+0]}}$n(\"GlyphOffsetArray\",aa);class sa extends Pi{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}$n(\"SymbolLineVertexArray\",sa);class oa extends Ii{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}oa.prototype.size=12;class la extends Ji{get(t){return new oa(this,t)}}$n(\"TextAnchorOffsetArray\",la);class ua extends Ii{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}ua.prototype.size=8;class ca extends Xi{get(t){return new ua(this,t)}}$n(\"FeatureIndexArray\",ca);class ha extends Bi{}class pa extends Bi{}class fa extends Bi{}class da extends Ei{}class ya extends Fi{}class ma extends Ti{}class ga extends $i{}class xa extends Li{}class va extends Di{}class ba extends Oi{}class wa extends Ri{}class _a extends ji{}class Aa extends Ni{}class Sa extends Yi{}const ka=Mi([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:Ia}=ka;class za{constructor(t=[]){this.segments=t;}prepareSegment(t,e,r,n){let i=this.segments[this.segments.length-1];return t>za.MAX_VERTEX_ARRAY_LENGTH&&A(`Max vertices per segment is ${za.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}`),(!i||i.vertexLength+t>za.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i}get(){return this.segments}destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e].destroy();}static simpleSegment(t,e,r,n){return new za([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])}}function Ma(t,e){return 256*(t=y(Math.floor(t),0,255))+y(Math.floor(e),0,255)}za.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,$n(\"SegmentVector\",za);const Ca=Mi([{name:\"a_pattern_from\",components:4,type:\"Uint16\"},{name:\"a_pattern_to\",components:4,type:\"Uint16\"},{name:\"a_pixel_ratio_from\",components:1,type:\"Uint16\"},{name:\"a_pixel_ratio_to\",components:1,type:\"Uint16\"}]);var Ba={exports:{}},Pa={exports:{}};Pa.exports=function(t,e){var r,n,i,a,s,o,l,u;for(n=t.length-(r=3&t.length),i=e,s=3432918353,o=461845907,u=0;u<n;)l=255&t.charCodeAt(u)|(255&t.charCodeAt(++u))<<8|(255&t.charCodeAt(++u))<<16|(255&t.charCodeAt(++u))<<24,++u,i=27492+(65535&(a=5*(65535&(i=(i^=l=(65535&(l=(l=(65535&l)*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0};var Va=Pa.exports,Ea={exports:{}};Ea.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};var Fa=Va,Ta=Ea.exports;Ba.exports=Fa,Ba.exports.murmur3=Fa,Ba.exports.murmur2=Ta;var $a=r(Ba.exports);class La{constructor(){this.ids=[],this.positions=[],this.indexed=!1;}add(t,e,r,n){this.ids.push(Da(t)),this.positions.push(e,r,n);}getPositions(t){if(!this.indexed)throw new Error(\"Trying to get index, but feature positions are not indexed\");const e=Da(t);let r=0,n=this.ids.length-1;for(;r<n;){const t=r+n>>1;this.ids[t]>=e?n=t:r=t+1;}const i=[];for(;this.ids[r]===e;)i.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return i}static serialize(t,e){const r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return Oa(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}}static deserialize(t){const e=new La;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function Da(t){const e=+t;return !isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:$a(String(t))}function Oa(t,e,r,n){for(;r<n;){const i=t[r+n>>1];let a=r-1,s=n+1;for(;;){do{a++;}while(t[a]<i);do{s--;}while(t[s]>i);if(a>=s)break;Ua(t,a,s),Ua(e,3*a,3*s),Ua(e,3*a+1,3*s+1),Ua(e,3*a+2,3*s+2);}s-r<n-s?(Oa(t,e,r,s),r=s+1):(Oa(t,e,s+1,n),n=s);}}function Ua(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}$n(\"FeaturePositionMap\",La);class Ra{constructor(t,e){this.gl=t.gl,this.location=e;}}class qa extends Ra{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t));}}class ja extends Ra{constructor(t,e){super(t,e),this.current=[0,0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]&&t[3]===this.current[3]||(this.current=t,this.gl.uniform4f(this.location,t[0],t[1],t[2],t[3]));}}class Na extends Ra{constructor(t,e){super(t,e),this.current=Yt.transparent;}set(t){t.r===this.current.r&&t.g===this.current.g&&t.b===this.current.b&&t.a===this.current.a||(this.current=t,this.gl.uniform4f(this.location,t.r,t.g,t.b,t.a));}}const Za=new Float32Array(16);function Ka(t){return [Ma(255*t.r,255*t.g),Ma(255*t.b,255*t.a)]}class Ga{constructor(t,e,r){this.value=t,this.uniformNames=e.map((t=>`u_${t}`)),this.type=r;}setUniform(t,e,r){t.set(r.constantOr(this.value));}getBinding(t,e,r){return \"color\"===this.type?new Na(t,e):new qa(t,e)}}class Ja{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tlbr,this.patternTo=t.tlbr;}setUniform(t,e,r,n){const i=\"u_pattern_to\"===n?this.patternTo:\"u_pattern_from\"===n?this.patternFrom:\"u_pixel_ratio_to\"===n?this.pixelRatioTo:\"u_pixel_ratio_from\"===n?this.pixelRatioFrom:null;i&&t.set(i);}getBinding(t,e,r){return \"u_pattern\"===r.substr(0,9)?new ja(t,e):new qa(t,e)}}class Xa{constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?2:1,offset:0}))),this.paintVertexArray=new n;}populatePaintArray(t,e,r,n,i){const a=this.paintVertexArray.length,s=this.expression.evaluate(new li(0),e,{},n,[],i);this.paintVertexArray.resize(t),this._setPaintValue(a,t,s);}updatePaintArray(t,e,r,n){const i=this.expression.evaluate({zoom:0},r,n);this._setPaintValue(t,e,i);}_setPaintValue(t,e,r){if(\"color\"===this.type){const n=Ka(r);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,n[0],n[1]);}else {for(let n=t;n<e;n++)this.paintVertexArray.emplace(n,r);this.maxValue=Math.max(this.maxValue,Math.abs(r));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}}class Ya{constructor(t,e,r,n,i,a){this.expression=t,this.uniformNames=e.map((t=>`u_${t}_t`)),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?4:2,offset:0}))),this.paintVertexArray=new a;}populatePaintArray(t,e,r,n,i){const a=this.expression.evaluate(new li(this.zoom),e,{},n,[],i),s=this.expression.evaluate(new li(this.zoom+1),e,{},n,[],i),o=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(o,t,a,s);}updatePaintArray(t,e,r,n){const i=this.expression.evaluate({zoom:this.zoom},r,n),a=this.expression.evaluate({zoom:this.zoom+1},r,n);this._setPaintValue(t,e,i,a);}_setPaintValue(t,e,r,n){if(\"color\"===this.type){const i=Ka(r),a=Ka(n);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,i[0],i[1],a[0],a[1]);}else {for(let i=t;i<e;i++)this.paintVertexArray.emplace(i,r,n);this.maxValue=Math.max(this.maxValue,Math.abs(r),Math.abs(n));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}setUniform(t,e){const r=this.useIntegerZoom?Math.floor(e.zoom):e.zoom,n=y(this.expression.interpolationFactor(r,this.zoom,this.zoom+1),0,1);t.set(n);}getBinding(t,e,r){return new qa(t,e)}}class Ha{constructor(t,e,r,n,i,a){this.expression=t,this.type=e,this.useIntegerZoom=r,this.zoom=n,this.layerId=a,this.zoomInPaintVertexArray=new i,this.zoomOutPaintVertexArray=new i;}populatePaintArray(t,e,r){const n=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(t),this.zoomOutPaintVertexArray.resize(t),this._setPaintValues(n,t,e.patterns&&e.patterns[this.layerId],r);}updatePaintArray(t,e,r,n,i){this._setPaintValues(t,e,r.patterns&&r.patterns[this.layerId],i);}_setPaintValues(t,e,r,n){if(!n||!r)return;const{min:i,mid:a,max:s}=r,o=n[i],l=n[a],u=n[s];if(o&&l&&u)for(let r=t;r<e;r++)this.zoomInPaintVertexArray.emplace(r,l.tl[0],l.tl[1],l.br[0],l.br[1],o.tl[0],o.tl[1],o.br[0],o.br[1],l.pixelRatio,o.pixelRatio),this.zoomOutPaintVertexArray.emplace(r,l.tl[0],l.tl[1],l.br[0],l.br[1],u.tl[0],u.tl[1],u.br[0],u.br[1],l.pixelRatio,u.pixelRatio);}upload(t){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=t.createVertexBuffer(this.zoomInPaintVertexArray,Ca.members,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=t.createVertexBuffer(this.zoomOutPaintVertexArray,Ca.members,this.expression.isStateDependent));}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy();}}class Wa{constructor(t,e,r){this.binders={},this._buffers=[];const n=[];for(const i in t.paint._values){if(!r(i))continue;const a=t.paint.get(i);if(!(a instanceof yi&&_r(a.property.specification)))continue;const s=ts(i,t.type),o=a.value,l=a.property.specification.type,u=a.property.useIntegerZoom,c=a.property.specification[\"property-type\"],h=\"cross-faded\"===c||\"cross-faded-data-driven\"===c;if(\"constant\"===o.kind)this.binders[i]=h?new Ja(o.value,s):new Ga(o.value,s,l),n.push(`/u_${i}`);else if(\"source\"===o.kind||h){const r=es(i,l,\"source\");this.binders[i]=h?new Ha(o,l,u,e,r,t.id):new Xa(o,s,l,r),n.push(`/a_${i}`);}else {const t=es(i,l,\"composite\");this.binders[i]=new Ya(o,s,l,u,e,t),n.push(`/z_${i}`);}}this.cacheKey=n.sort().join(\"\");}getMaxValue(t){const e=this.binders[t];return e instanceof Xa||e instanceof Ya?e.maxValue:0}populatePaintArrays(t,e,r,n,i){for(const a in this.binders){const s=this.binders[a];(s instanceof Xa||s instanceof Ya||s instanceof Ha)&&s.populatePaintArray(t,e,r,n,i);}}setConstantPatternPositions(t,e){for(const r in this.binders){const n=this.binders[r];n instanceof Ja&&n.setConstantPatternPositions(t,e);}}updatePaintArrays(t,e,r,n,i){let a=!1;for(const s in t){const o=e.getPositions(s);for(const e of o){const o=r.feature(e.index);for(const r in this.binders){const l=this.binders[r];if((l instanceof Xa||l instanceof Ya||l instanceof Ha)&&!0===l.expression.isStateDependent){const u=n.paint.get(r);l.expression=u.value,l.updatePaintArray(e.start,e.end,o,t[s],i),a=!0;}}}}return a}defines(){const t=[];for(const e in this.binders){const r=this.binders[e];(r instanceof Ga||r instanceof Ja)&&t.push(...r.uniformNames.map((t=>`#define HAS_UNIFORM_${t}`)));}return t}getBinderAttributes(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof Xa||r instanceof Ya)for(let e=0;e<r.paintVertexAttributes.length;e++)t.push(r.paintVertexAttributes[e].name);else if(r instanceof Ha)for(let e=0;e<Ca.members.length;e++)t.push(Ca.members[e].name);}return t}getBinderUniforms(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof Ga||r instanceof Ja||r instanceof Ya)for(const e of r.uniformNames)t.push(e);}return t}getPaintVertexBuffers(){return this._buffers}getUniforms(t,e){const r=[];for(const n in this.binders){const i=this.binders[n];if(i instanceof Ga||i instanceof Ja||i instanceof Ya)for(const a of i.uniformNames)if(e[a]){const s=i.getBinding(t,e[a],a);r.push({name:a,property:n,binding:s});}}return r}setUniforms(t,e,r,n){for(const{name:t,property:i,binding:a}of e)this.binders[i].setUniform(a,n,r.get(i),t);}updatePaintBuffers(t){this._buffers=[];for(const e in this.binders){const r=this.binders[e];if(t&&r instanceof Ha){const e=2===t.fromScale?r.zoomInPaintVertexBuffer:r.zoomOutPaintVertexBuffer;e&&this._buffers.push(e);}else (r instanceof Xa||r instanceof Ya)&&r.paintVertexBuffer&&this._buffers.push(r.paintVertexBuffer);}}upload(t){for(const e in this.binders){const r=this.binders[e];(r instanceof Xa||r instanceof Ya||r instanceof Ha)&&r.upload(t);}this.updatePaintBuffers();}destroy(){for(const t in this.binders){const e=this.binders[t];(e instanceof Xa||e instanceof Ya||e instanceof Ha)&&e.destroy();}}}class Qa{constructor(t,e,r=(()=>!0)){this.programConfigurations={};for(const n of t)this.programConfigurations[n.id]=new Wa(n,e,r);this.needsUpload=!1,this._featureMap=new La,this._bufferOffset=0;}populatePaintArrays(t,e,r,n,i,a){for(const r in this.programConfigurations)this.programConfigurations[r].populatePaintArrays(t,e,n,i,a);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;}updatePaintArrays(t,e,r,n){for(const i of r)this.needsUpload=this.programConfigurations[i.id].updatePaintArrays(t,this._featureMap,e,i,n)||this.needsUpload;}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy();}}function ts(t,e){return {\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"]}[t]||[t.replace(`${e}-`,\"\").replace(/-/g,\"_\")]}function es(t,e,r){const n={color:{source:Ti,composite:Wi},number:{source:Gi,composite:Ti}},i=function(t){return {\"line-pattern\":{source:ga,composite:ga},\"fill-pattern\":{source:ga,composite:ga},\"fill-extrusion-pattern\":{source:ga,composite:ga}}[t]}(t);return i&&i[r]||n[e][r]}$n(\"ConstantBinder\",Ga),$n(\"CrossFadedConstantBinder\",Ja),$n(\"SourceExpressionBinder\",Xa),$n(\"CrossFadedCompositeBinder\",Ha),$n(\"CompositeExpressionBinder\",Ya),$n(\"ProgramConfiguration\",Wa,{omit:[\"_buffers\"]}),$n(\"ProgramConfigurationSet\",Qa);const rs=8192,ns=Math.pow(2,14)-1,is=-ns-1;function as(t){const e=rs/t.extent,r=t.loadGeometry();for(let t=0;t<r.length;t++){const n=r[t];for(let t=0;t<n.length;t++){const r=n[t],i=Math.round(r.x*e),a=Math.round(r.y*e);r.x=y(i,is,ns),r.y=y(a,is,ns),(i<r.x||i>r.x+1||a<r.y||a>r.y+1)&&A(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\");}}return r}function ss(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?as(t):[]}}function os(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}class ls{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new pa,this.indexArray=new Aa,this.segments=new za,this.programConfigurations=new Qa(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){const n=this.layers[0],i=[];let a=null,s=!1;\"circle\"===n.type&&(a=n.layout.get(\"circle-sort-key\"),s=!a.isConstant());for(const{feature:e,id:n,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=ss(e,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),u,r))continue;const c=s?a.evaluate(u,{},r):void 0,h={id:n,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:as(e),patterns:{},sortKey:c};i.push(h);}s&&i.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of i){const{geometry:i,index:a,sourceLayerIndex:s}=n,o=t[a].feature;this.addFeature(n,i,a,r),e.featureIndex.insert(o,i,a,s,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Ia),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,r,n){for(const r of e)for(const e of r){const r=e.x,n=e.y;if(r<0||r>=rs||n<0||n>=rs)continue;const i=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),a=i.vertexLength;os(this.layoutVertexArray,r,n,-1,-1),os(this.layoutVertexArray,r,n,1,-1),os(this.layoutVertexArray,r,n,1,1),os(this.layoutVertexArray,r,n,-1,1),this.indexArray.emplaceBack(a,a+1,a+2),this.indexArray.emplaceBack(a,a+3,a+2),i.vertexLength+=4,i.primitiveLength+=2;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n);}}function us(t,e){for(let r=0;r<t.length;r++)if(xs(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(xs(t,e[r]))return !0;return !!fs(t,e)}function cs(t,e,r){return !!xs(t,e)||!!ys(e,t,r)}function hs(t,e){if(1===t.length)return gs(e,t[0]);for(let r=0;r<e.length;r++){const n=e[r];for(let e=0;e<n.length;e++)if(xs(t,n[e]))return !0}for(let r=0;r<t.length;r++)if(gs(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(fs(t,e[r]))return !0;return !1}function ps(t,e,r){if(t.length>1){if(fs(t,e))return !0;for(let n=0;n<e.length;n++)if(ys(e[n],t,r))return !0}for(let n=0;n<t.length;n++)if(ys(t[n],e,r))return !0;return !1}function fs(t,e){if(0===t.length||0===e.length)return !1;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)if(ds(n,i,e[t],e[t+1]))return !0}return !1}function ds(t,e,r,n){return S(t,r,n)!==S(e,r,n)&&S(t,e,r)!==S(t,e,n)}function ys(t,e,r){const n=r*r;if(1===e.length)return t.distSqr(e[0])<n;for(let r=1;r<e.length;r++)if(ms(t,e[r-1],e[r])<n)return !0;return !1}function ms(t,e,r){const n=e.distSqr(r);if(0===n)return t.distSqr(e);const i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return t.distSqr(i<0?e:i>1?r:r.sub(e)._mult(i)._add(e))}function gs(t,e){let r,n,i,a=!1;for(let s=0;s<t.length;s++){r=t[s];for(let t=0,s=r.length-1;t<r.length;s=t++)n=r[t],i=r[s],n.y>e.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);}return a}function xs(t,e){let r=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){const a=t[n],s=t[i];a.y>e.y!=s.y>e.y&&e.x<(s.x-a.x)*(e.y-a.y)/(s.y-a.y)+a.x&&(r=!r);}return r}function vs(t,e,r){const n=r[0],i=r[2];if(t.x<n.x&&e.x<n.x||t.x>i.x&&e.x>i.x||t.y<n.y&&e.y<n.y||t.y>i.y&&e.y>i.y)return !1;const a=S(t,e,r[0]);return a!==S(t,e,r[1])||a!==S(t,e,r[2])||a!==S(t,e,r[3])}function bs(t,e,r){const n=e.paint.get(t).value;return \"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function ws(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function _s(t,e,r,n,i){if(!e[0]&&!e[1])return t;const s=a.convert(e)._mult(i);\"viewport\"===r&&s._rotate(-n);const o=[];for(let e=0;e<t.length;e++)o.push(t[e].sub(s));return o}let As,Ss;$n(\"CircleBucket\",ls,{omit:[\"layers\"]});var ks={get paint(){return Ss=Ss||new _i({\"circle-radius\":new xi(X.paint_circle[\"circle-radius\"]),\"circle-color\":new xi(X.paint_circle[\"circle-color\"]),\"circle-blur\":new xi(X.paint_circle[\"circle-blur\"]),\"circle-opacity\":new xi(X.paint_circle[\"circle-opacity\"]),\"circle-translate\":new gi(X.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new gi(X.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new gi(X.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new gi(X.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new xi(X.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new xi(X.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new xi(X.paint_circle[\"circle-stroke-opacity\"])})},get layout(){return As=As||new _i({\"circle-sort-key\":new xi(X.layout_circle[\"circle-sort-key\"])})}},Is=1e-6,zs=\"undefined\"!=typeof Float32Array?Float32Array:Array;function Ms(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Cs(t,e,r){var n=e[0],i=e[1],a=e[2],s=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],y=e[12],m=e[13],g=e[14],x=e[15],v=r[0],b=r[1],w=r[2],_=r[3];return t[0]=v*n+b*o+w*h+_*y,t[1]=v*i+b*l+w*p+_*m,t[2]=v*a+b*u+w*f+_*g,t[3]=v*s+b*c+w*d+_*x,t[4]=(v=r[4])*n+(b=r[5])*o+(w=r[6])*h+(_=r[7])*y,t[5]=v*i+b*l+w*p+_*m,t[6]=v*a+b*u+w*f+_*g,t[7]=v*s+b*c+w*d+_*x,t[8]=(v=r[8])*n+(b=r[9])*o+(w=r[10])*h+(_=r[11])*y,t[9]=v*i+b*l+w*p+_*m,t[10]=v*a+b*u+w*f+_*g,t[11]=v*s+b*c+w*d+_*x,t[12]=(v=r[12])*n+(b=r[13])*o+(w=r[14])*h+(_=r[15])*y,t[13]=v*i+b*l+w*p+_*m,t[14]=v*a+b*u+w*f+_*g,t[15]=v*s+b*c+w*d+_*x,t}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});var Bs,Ps=Cs;function Vs(t,e,r){var n=e[0],i=e[1],a=e[2],s=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*s,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*s,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*s,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*s,t}Bs=new zs(4),zs!=Float32Array&&(Bs[0]=0,Bs[1]=0,Bs[2]=0,Bs[3]=0);class Es extends Si{constructor(t){super(t,ks);}createBucket(t){return new ls(t)}queryRadius(t){const e=t;return bs(\"circle-radius\",this,e)+bs(\"circle-stroke-width\",this,e)+ws(this.paint.get(\"circle-translate\"))}queryIntersectsFeature(t,e,r,n,i,a,s,o){const l=_s(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,s),u=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),c=\"map\"===this.paint.get(\"circle-pitch-alignment\"),h=c?l:function(t,e){return t.map((t=>Fs(t,e)))}(l,o),p=c?u*s:u;for(const t of n)for(const e of t){const t=c?e:Fs(e,o);let r=p;const n=Vs([],[e.x,e.y,0,1],o);if(\"viewport\"===this.paint.get(\"circle-pitch-scale\")&&\"map\"===this.paint.get(\"circle-pitch-alignment\")?r*=n[3]/a.cameraToCenterDistance:\"map\"===this.paint.get(\"circle-pitch-scale\")&&\"viewport\"===this.paint.get(\"circle-pitch-alignment\")&&(r*=a.cameraToCenterDistance/n[3]),cs(h,t,r))return !0}return !1}}function Fs(t,e){const r=Vs([],[t.x,t.y,0,1],e);return new a(r[0]/r[3],r[1]/r[3])}class Ts extends ls{}let $s;$n(\"HeatmapBucket\",Ts,{omit:[\"layers\"]});var Ls={get paint(){return $s=$s||new _i({\"heatmap-radius\":new xi(X.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new xi(X.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new gi(X.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new wi(X.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new gi(X.paint_heatmap[\"heatmap-opacity\"])})}};function Ds(t,{width:e,height:r},n,i){if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==e*r*n)throw new RangeError(`mismatched image size. expected: ${i.length} but got: ${e*r*n}`)}else i=new Uint8Array(e*r*n);return t.width=e,t.height=r,t.data=i,t}function Os(t,{width:e,height:r},n){if(e===t.width&&r===t.height)return;const i=Ds({},{width:e,height:r},n);Us(t,i,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,e),height:Math.min(t.height,r)},n),t.width=e,t.height=r,t.data=i.data;}function Us(t,e,r,n,i,a){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");const s=t.data,o=e.data;if(s===o)throw new Error(\"srcData equals dstData, so image is already copied\");for(let l=0;l<i.height;l++){const u=((r.y+l)*t.width+r.x)*a,c=((n.y+l)*e.width+n.x)*a;for(let t=0;t<i.width*a;t++)o[c+t]=s[u+t];}return e}class Rs{constructor(t,e){Ds(this,t,1,e);}resize(t){Os(this,t,1);}clone(){return new Rs({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){Us(t,e,r,n,i,1);}}class qs{constructor(t,e){Ds(this,t,4,e);}resize(t){Os(this,t,4);}replace(t,e){e?this.data.set(t):this.data=t instanceof Uint8ClampedArray?new Uint8Array(t.buffer):t;}clone(){return new qs({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){Us(t,e,r,n,i,4);}}function js(t){const e={},r=t.resolution||256,n=t.clips?t.clips.length:1,i=t.image||new qs({width:r,height:n});if(Math.log(r)/Math.LN2%1!=0)throw new Error(`width is not a power of 2 - ${r}`);const a=(r,n,a)=>{e[t.evaluationKey]=a;const s=t.expression.evaluate(e);i.data[r+n+0]=Math.floor(255*s.r/s.a),i.data[r+n+1]=Math.floor(255*s.g/s.a),i.data[r+n+2]=Math.floor(255*s.b/s.a),i.data[r+n+3]=Math.floor(255*s.a);};if(t.clips)for(let e=0,i=0;e<n;++e,i+=4*r)for(let n=0,s=0;n<r;n++,s+=4){const o=n/(r-1),{start:l,end:u}=t.clips[e];a(i,s,l*(1-o)+u*o);}else for(let t=0,e=0;t<r;t++,e+=4)a(0,e,t/(r-1));return i}$n(\"AlphaImage\",Rs),$n(\"RGBAImage\",qs);class Ns extends Si{createBucket(t){return new Ts(t)}constructor(t){super(t,Ls),this._updateColorRamp();}_handleSpecialPaintPropertyUpdate(t){\"heatmap-color\"===t&&this._updateColorRamp();}_updateColorRamp(){this.colorRamp=js({expression:this._transitionablePaint._values[\"heatmap-color\"].value.expression,evaluationKey:\"heatmapDensity\",image:this.colorRamp}),this.colorRampTexture=null;}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null);}queryRadius(){return 0}queryIntersectsFeature(){return !1}hasOffscreenPass(){return 0!==this.paint.get(\"heatmap-opacity\")&&\"none\"!==this.visibility}}let Zs;var Ks={get paint(){return Zs=Zs||new _i({\"hillshade-illumination-direction\":new gi(X.paint_hillshade[\"hillshade-illumination-direction\"]),\"hillshade-illumination-anchor\":new gi(X.paint_hillshade[\"hillshade-illumination-anchor\"]),\"hillshade-exaggeration\":new gi(X.paint_hillshade[\"hillshade-exaggeration\"]),\"hillshade-shadow-color\":new gi(X.paint_hillshade[\"hillshade-shadow-color\"]),\"hillshade-highlight-color\":new gi(X.paint_hillshade[\"hillshade-highlight-color\"]),\"hillshade-accent-color\":new gi(X.paint_hillshade[\"hillshade-accent-color\"])})}};class Gs extends Si{constructor(t){super(t,Ks);}hasOffscreenPass(){return 0!==this.paint.get(\"hillshade-exaggeration\")&&\"none\"!==this.visibility}}const Js=Mi([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:Xs}=Js;var Ys={exports:{}};function Hs(t,e,r){r=r||2;var n,i,a,s,o,l,u,c=e&&e.length,h=c?e[0]*r:t.length,p=Ws(t,0,h,r,!0),f=[];if(!p||p.next===p.prev)return f;if(c&&(p=function(t,e,r,n){var i,a,s,o=[];for(i=0,a=e.length;i<a;i++)(s=Ws(t,e[i]*n,i<a-1?e[i+1]*n:t.length,n,!1))===s.next&&(s.steiner=!0),o.push(uo(s));for(o.sort(ao),i=0;i<o.length;i++)r=so(o[i],r);return r}(t,e,p,r)),t.length>80*r){n=a=t[0],i=s=t[1];for(var d=r;d<h;d+=r)(o=t[d])<n&&(n=o),(l=t[d+1])<i&&(i=l),o>a&&(a=o),l>s&&(s=l);u=0!==(u=Math.max(a-n,s-i))?32767/u:0;}return to(p,f,r,n,i,u,0),f}function Ws(t,e,r,n,i){var a,s;if(i===Ao(t,e,r,n)>0)for(a=e;a<r;a+=n)s=bo(a,t[a],t[a+1],s);else for(a=r-n;a>=e;a-=n)s=bo(a,t[a],t[a+1],s);return s&&fo(s,s.next)&&(wo(s),s=s.next),s}function Qs(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!fo(n,n.next)&&0!==po(n.prev,n,n.next))n=n.next;else {if(wo(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function to(t,e,r,n,i,a,s){if(t){!s&&a&&function(t,e,r,n){var i=t;do{0===i.z&&(i.z=lo(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,s,o,l,u=1;do{for(r=t,t=null,a=null,s=0;r;){for(s++,n=r,o=0,e=0;e<u&&(o++,n=n.nextZ);e++);for(l=u;o>0||l>0&&n;)0!==o&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,o--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n;}a.nextZ=null,u*=2;}while(s>1)}(i);}(t,n,i,a);for(var o,l,u=t;t.prev!==t.next;)if(o=t.prev,l=t.next,a?ro(t,n,i,a):eo(t))e.push(o.i/r|0),e.push(t.i/r|0),e.push(l.i/r|0),wo(t),t=l.next,u=l.next;else if((t=l)===u){s?1===s?to(t=no(Qs(t),e,r),e,r,n,i,a,2):2===s&&io(t,e,r,n,i,a):to(Qs(t),e,r,n,i,a,1);break}}}function eo(t){var e=t.prev,r=t,n=t.next;if(po(e,r,n)>=0)return !1;for(var i=e.x,a=r.x,s=n.x,o=e.y,l=r.y,u=n.y,c=i<a?i<s?i:s:a<s?a:s,h=o<l?o<u?o:u:l<u?l:u,p=i>a?i>s?i:s:a>s?a:s,f=o>l?o>u?o:u:l>u?l:u,d=n.next;d!==e;){if(d.x>=c&&d.x<=p&&d.y>=h&&d.y<=f&&co(i,o,a,l,s,u,d.x,d.y)&&po(d.prev,d,d.next)>=0)return !1;d=d.next;}return !0}function ro(t,e,r,n){var i=t.prev,a=t,s=t.next;if(po(i,a,s)>=0)return !1;for(var o=i.x,l=a.x,u=s.x,c=i.y,h=a.y,p=s.y,f=o<l?o<u?o:u:l<u?l:u,d=c<h?c<p?c:p:h<p?h:p,y=o>l?o>u?o:u:l>u?l:u,m=c>h?c>p?c:p:h>p?h:p,g=lo(f,d,e,r,n),x=lo(y,m,e,r,n),v=t.prevZ,b=t.nextZ;v&&v.z>=g&&b&&b.z<=x;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==s&&co(o,c,l,h,u,p,v.x,v.y)&&po(v.prev,v,v.next)>=0)return !1;if(v=v.prevZ,b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==s&&co(o,c,l,h,u,p,b.x,b.y)&&po(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}for(;v&&v.z>=g;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==s&&co(o,c,l,h,u,p,v.x,v.y)&&po(v.prev,v,v.next)>=0)return !1;v=v.prevZ;}for(;b&&b.z<=x;){if(b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==s&&co(o,c,l,h,u,p,b.x,b.y)&&po(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}return !0}function no(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!fo(i,a)&&yo(i,n,n.next,a)&&xo(i,a)&&xo(a,i)&&(e.push(i.i/r|0),e.push(n.i/r|0),e.push(a.i/r|0),wo(n),wo(n.next),n=t=a),n=n.next;}while(n!==t);return Qs(n)}function io(t,e,r,n,i,a){var s=t;do{for(var o=s.next.next;o!==s.prev;){if(s.i!==o.i&&ho(s,o)){var l=vo(s,o);return s=Qs(s,s.next),l=Qs(l,l.next),to(s,e,r,n,i,a,0),void to(l,e,r,n,i,a,0)}o=o.next;}s=s.next;}while(s!==t)}function ao(t,e){return t.x-e.x}function so(t,e){var r=function(t,e){var r,n=e,i=t.x,a=t.y,s=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var o=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(o<=i&&o>s&&(s=o,r=n.x<n.next.x?n:n.next,o===i))return r}n=n.next;}while(n!==e);if(!r)return null;var l,u=r,c=r.x,h=r.y,p=1/0;n=r;do{i>=n.x&&n.x>=c&&i!==n.x&&co(a<h?i:s,a,c,h,a<h?s:i,a,n.x,n.y)&&(l=Math.abs(a-n.y)/(i-n.x),xo(n,t)&&(l<p||l===p&&(n.x>r.x||n.x===r.x&&oo(r,n)))&&(r=n,p=l)),n=n.next;}while(n!==u);return r}(t,e);if(!r)return e;var n=vo(r,t);return Qs(n,n.next),Qs(r,r.next)}function oo(t,e){return po(t.prev,t,e.prev)<0&&po(e.next,t,t.next)<0}function lo(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function uo(t){var e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;}while(e!==t);return r}function co(t,e,r,n,i,a,s,o){return (i-s)*(e-o)>=(t-s)*(a-o)&&(t-s)*(n-o)>=(r-s)*(e-o)&&(r-s)*(a-o)>=(i-s)*(n-o)}function ho(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&yo(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&(xo(t,e)&&xo(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)&&(po(t.prev,t,e.prev)||po(t,e.prev,e))||fo(t,e)&&po(t.prev,t,t.next)>0&&po(e.prev,e,e.next)>0)}function po(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function fo(t,e){return t.x===e.x&&t.y===e.y}function yo(t,e,r,n){var i=go(po(t,e,r)),a=go(po(t,e,n)),s=go(po(r,n,t)),o=go(po(r,n,e));return i!==a&&s!==o||!(0!==i||!mo(t,r,e))||!(0!==a||!mo(t,n,e))||!(0!==s||!mo(r,t,n))||!(0!==o||!mo(r,e,n))}function mo(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function go(t){return t>0?1:t<0?-1:0}function xo(t,e){return po(t.prev,t,t.next)<0?po(t,e,t.next)>=0&&po(t,t.prev,e)>=0:po(t,e,t.prev)<0||po(t,t.next,e)<0}function vo(t,e){var r=new _o(t.i,t.x,t.y),n=new _o(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function bo(t,e,r,n){var i=new _o(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function wo(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function _o(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function Ao(t,e,r,n){for(var i=0,a=e,s=r-n;a<r;a+=n)i+=(t[s]-t[a])*(t[a+1]+t[s+1]),s=a;return i}Ys.exports=Hs,Ys.exports.default=Hs,Hs.deviation=function(t,e,r,n){var i=e&&e.length,a=Math.abs(Ao(t,0,i?e[0]*r:t.length,r));if(i)for(var s=0,o=e.length;s<o;s++)a-=Math.abs(Ao(t,e[s]*r,s<o-1?e[s+1]*r:t.length,r));var l=0;for(s=0;s<n.length;s+=3){var u=n[s]*r,c=n[s+1]*r,h=n[s+2]*r;l+=Math.abs((t[u]-t[h])*(t[c+1]-t[u+1])-(t[u]-t[c])*(t[h+1]-t[u+1]));}return 0===a&&0===l?0:Math.abs((l-a)/a)},Hs.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},n=0,i=0;i<t.length;i++){for(var a=0;a<t[i].length;a++)for(var s=0;s<e;s++)r.vertices.push(t[i][a][s]);i>0&&r.holes.push(n+=t[i-1].length);}return r};var So=r(Ys.exports);function ko(t,e,r,n,i){Io(t,e,r||0,n||t.length-1,i||Mo);}function Io(t,e,r,n,i){for(;n>r;){if(n-r>600){var a=n-r+1,s=e-r+1,o=Math.log(a),l=.5*Math.exp(2*o/3),u=.5*Math.sqrt(o*l*(a-l)/a)*(s-a/2<0?-1:1);Io(t,e,Math.max(r,Math.floor(e-s*l/a+u)),Math.min(n,Math.floor(e+(a-s)*l/a+u)),i);}var c=t[e],h=r,p=n;for(zo(t,r,e),i(t[n],c)>0&&zo(t,r,n);h<p;){for(zo(t,h,p),h++,p--;i(t[h],c)<0;)h++;for(;i(t[p],c)>0;)p--;}0===i(t[r],c)?zo(t,r,p):zo(t,++p,n),p<=e&&(r=p+1),e<=p&&(n=p-1);}}function zo(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function Mo(t,e){return t<e?-1:t>e?1:0}function Co(t,e){const r=t.length;if(r<=1)return [t];const n=[];let i,a;for(let e=0;e<r;e++){const r=k(t[e]);0!==r&&(t[e].area=Math.abs(r),void 0===a&&(a=r<0),a===r<0?(i&&n.push(i),i=[t[e]]):i.push(t[e]));}if(i&&n.push(i),e>1)for(let t=0;t<n.length;t++)n[t].length<=e||(ko(n[t],e,1,n[t].length-1,Bo),n[t]=n[t].slice(0,e));return n}function Bo(t,e){return e.area-t.area}function Po(t,e,r){const n=r.patternDependencies;let i=!1;for(const r of e){const e=r.paint.get(`${t}-pattern`);e.isConstant()||(i=!0);const a=e.constantOr(null);a&&(i=!0,n[a.to]=!0,n[a.from]=!0);}return i}function Vo(t,e,r,n,i){const a=i.patternDependencies;for(const s of e){const e=s.paint.get(`${t}-pattern`).value;if(\"constant\"!==e.kind){let t=e.evaluate({zoom:n-1},r,{},i.availableImages),o=e.evaluate({zoom:n},r,{},i.availableImages),l=e.evaluate({zoom:n+1},r,{},i.availableImages);t=t&&t.name?t.name:t,o=o&&o.name?o.name:o,l=l&&l.name?l.name:l,a[t]=!0,a[o]=!0,a[l]=!0,r.patterns[s.id]={min:t,mid:o,max:l};}}return r}class Eo{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new fa,this.indexArray=new Aa,this.indexArray2=new Sa,this.programConfigurations=new Qa(t.layers,t.zoom),this.segments=new za,this.segments2=new za,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.hasPattern=Po(\"fill\",this.layers,e);const n=this.layers[0].layout.get(\"fill-sort-key\"),i=!n.isConstant(),a=[];for(const{feature:s,id:o,index:l,sourceLayerIndex:u}of t){const t=this.layers[0]._featureFilter.needGeometry,c=ss(s,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),c,r))continue;const h=i?n.evaluate(c,{},r,e.availableImages):void 0,p={id:o,properties:s.properties,type:s.type,sourceLayerIndex:u,index:l,geometry:t?c.geometry:as(s),patterns:{},sortKey:h};a.push(p);}i&&a.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of a){const{geometry:i,index:a,sourceLayerIndex:s}=n;if(this.hasPattern){const t=Vo(\"fill\",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,a,r,{});e.featureIndex.insert(t[a].feature,i,a,s,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}addFeatures(t,e,r){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Xs),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());}addFeature(t,e,r,n,i){for(const t of Co(e,500)){let e=0;for(const r of t)e+=r.length;const r=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray),n=r.vertexLength,i=[],a=[];for(const e of t){if(0===e.length)continue;e!==t[0]&&a.push(i.length/2);const r=this.segments2.prepareSegment(e.length,this.layoutVertexArray,this.indexArray2),n=r.vertexLength;this.layoutVertexArray.emplaceBack(e[0].x,e[0].y),this.indexArray2.emplaceBack(n+e.length-1,n),i.push(e[0].x),i.push(e[0].y);for(let t=1;t<e.length;t++)this.layoutVertexArray.emplaceBack(e[t].x,e[t].y),this.indexArray2.emplaceBack(n+t-1,n+t),i.push(e[t].x),i.push(e[t].y);r.vertexLength+=e.length,r.primitiveLength+=e.length;}const s=So(i,a);for(let t=0;t<s.length;t+=3)this.indexArray.emplaceBack(n+s[t],n+s[t+1],n+s[t+2]);r.vertexLength+=e,r.primitiveLength+=s.length/3;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);}}let Fo,To;$n(\"FillBucket\",Eo,{omit:[\"layers\",\"patternFeatures\"]});var $o={get paint(){return To=To||new _i({\"fill-antialias\":new gi(X.paint_fill[\"fill-antialias\"]),\"fill-opacity\":new xi(X.paint_fill[\"fill-opacity\"]),\"fill-color\":new xi(X.paint_fill[\"fill-color\"]),\"fill-outline-color\":new xi(X.paint_fill[\"fill-outline-color\"]),\"fill-translate\":new gi(X.paint_fill[\"fill-translate\"]),\"fill-translate-anchor\":new gi(X.paint_fill[\"fill-translate-anchor\"]),\"fill-pattern\":new vi(X.paint_fill[\"fill-pattern\"])})},get layout(){return Fo=Fo||new _i({\"fill-sort-key\":new xi(X.layout_fill[\"fill-sort-key\"])})}};class Lo extends Si{constructor(t){super(t,$o);}recalculate(t,e){super.recalculate(t,e);const r=this.paint._values[\"fill-outline-color\"];\"constant\"===r.value.kind&&void 0===r.value.value&&(this.paint._values[\"fill-outline-color\"]=this.paint._values[\"fill-color\"]);}createBucket(t){return new Eo(t)}queryRadius(){return ws(this.paint.get(\"fill-translate\"))}queryIntersectsFeature(t,e,r,n,i,a,s){return hs(_s(t,this.paint.get(\"fill-translate\"),this.paint.get(\"fill-translate-anchor\"),a.angle,s),n)}isTileClipped(){return !0}}const Do=Mi([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_normal_ed\",components:4,type:\"Int16\"}],4),Oo=Mi([{name:\"a_centroid\",components:2,type:\"Int16\"}],4),{members:Uo}=Do;var Ro={},qo=n,jo=No;function No(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(Zo,this,e);}function Zo(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){for(var r=t.readVarint()+t.pos;t.pos<r;){var n=e._keys[t.readVarint()],i=e._values[t.readVarint()];e.properties[n]=i;}}(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos);}function Ko(t){for(var e,r,n=0,i=0,a=t.length,s=a-1;i<a;s=i++)n+=((r=t[s]).x-(e=t[i]).x)*(e.y+r.y);return n}No.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],No.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,n=1,i=0,a=0,s=0,o=[];t.pos<r;){if(i<=0){var l=t.readVarint();n=7&l,i=l>>3;}if(i--,1===n||2===n)a+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&o.push(e),e=[]),e.push(new qo(a,s));else {if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone());}}return e&&o.push(e),o},No.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,s=1/0,o=-1/0,l=1/0,u=-1/0;t.pos<e;){if(n<=0){var c=t.readVarint();r=7&c,n=c>>3;}if(n--,1===r||2===r)(i+=t.readSVarint())<s&&(s=i),i>o&&(o=i),(a+=t.readSVarint())<l&&(l=a),a>u&&(u=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return [s,l,o,u]},No.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),s=this.extent*t,o=this.extent*e,l=this.loadGeometry(),u=No.types[this.type];function c(t){for(var e=0;e<t.length;e++){var r=t[e];t[e]=[360*(r.x+s)/a-180,360/Math.PI*Math.atan(Math.exp((180-360*(r.y+o)/a)*Math.PI/180))-90];}}switch(this.type){case 1:var h=[];for(n=0;n<l.length;n++)h[n]=l[n][0];c(l=h);break;case 2:for(n=0;n<l.length;n++)c(l[n]);break;case 3:for(l=function(t){var e=t.length;if(e<=1)return [t];for(var r,n,i=[],a=0;a<e;a++){var s=Ko(t[a]);0!==s&&(void 0===n&&(n=s<0),n===s<0?(r&&i.push(r),r=[t[a]]):r.push(t[a]));}return r&&i.push(r),i}(l),n=0;n<l.length;n++)for(i=0;i<l[n].length;i++)c(l[n][i]);}1===l.length?l=l[0]:u=\"Multi\"+u;var p={type:\"Feature\",geometry:{type:u,coordinates:l},properties:this.properties};return \"id\"in this&&(p.id=this.id),p};var Go=jo,Jo=Xo;function Xo(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(Yo,this,e),this.length=this._features.length;}function Yo(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){for(var e=null,r=t.readVarint()+t.pos;t.pos<r;){var n=t.readVarint()>>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}return e}(r));}Xo.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new Go(this._pbf,e,this.extent,this._keys,this._values)};var Ho=Jo;function Wo(t,e,r){if(3===t){var n=new Ho(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}Ro.VectorTile=function(t,e){this.layers=t.readFields(Wo,{},e);},Ro.VectorTileFeature=jo,Ro.VectorTileLayer=Jo;const Qo=Ro.VectorTileFeature.types,tl=Math.pow(2,13);function el(t,e,r,n,i,a,s,o){t.emplaceBack(e,r,2*Math.floor(n*tl)+s,i*tl*2,a*tl*2,Math.round(o));}class rl{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new da,this.centroidVertexArray=new ha,this.indexArray=new Aa,this.programConfigurations=new Qa(t.layers,t.zoom),this.segments=new za,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.features=[],this.hasPattern=Po(\"fill-extrusion\",this.layers,e);for(const{feature:n,id:i,index:a,sourceLayerIndex:s}of t){const t=this.layers[0]._featureFilter.needGeometry,o=ss(n,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),o,r))continue;const l={id:i,sourceLayerIndex:s,index:a,geometry:t?o.geometry:as(n),properties:n.properties,type:n.type,patterns:{}};this.hasPattern?this.features.push(Vo(\"fill-extrusion\",this.layers,l,this.zoom,e)):this.addFeature(l,l.geometry,a,r,{}),e.featureIndex.insert(n,l.geometry,a,s,this.index,!0);}}addFeatures(t,e,r){for(const t of this.features){const{geometry:n}=t;this.addFeature(t,n,t.index,e,r);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.centroidVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Uo),this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,Oo.members,!0),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy());}addFeature(t,e,r,n,i){const a={x:0,y:0,vertexCount:0};for(const r of Co(e,500)){let e=0;for(const t of r)e+=t.length;let n=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(const t of r){if(0===t.length)continue;if(il(t))continue;let e=0;for(let r=0;r<t.length;r++){const i=t[r];if(r>=1){const s=t[r-1];if(!nl(i,s)){n.vertexLength+4>za.MAX_VERTEX_ARRAY_LENGTH&&(n=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const t=i.sub(s)._perp()._unit(),r=s.dist(i);e+r>32768&&(e=0),el(this.layoutVertexArray,i.x,i.y,t.x,t.y,0,0,e),el(this.layoutVertexArray,i.x,i.y,t.x,t.y,0,1,e),a.x+=2*i.x,a.y+=2*i.y,a.vertexCount+=2,e+=r,el(this.layoutVertexArray,s.x,s.y,t.x,t.y,0,0,e),el(this.layoutVertexArray,s.x,s.y,t.x,t.y,0,1,e),a.x+=2*s.x,a.y+=2*s.y,a.vertexCount+=2;const o=n.vertexLength;this.indexArray.emplaceBack(o,o+2,o+1),this.indexArray.emplaceBack(o+1,o+2,o+3),n.vertexLength+=4,n.primitiveLength+=2;}}}}if(n.vertexLength+e>za.MAX_VERTEX_ARRAY_LENGTH&&(n=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray)),\"Polygon\"!==Qo[t.type])continue;const i=[],s=[],o=n.vertexLength;for(const t of r)if(0!==t.length){t!==r[0]&&s.push(i.length/2);for(let e=0;e<t.length;e++){const r=t[e];el(this.layoutVertexArray,r.x,r.y,0,0,1,1,0),a.x+=r.x,a.y+=r.y,a.vertexCount+=1,i.push(r.x),i.push(r.y);}}const l=So(i,s);for(let t=0;t<l.length;t+=3)this.indexArray.emplaceBack(o+l[t],o+l[t+2],o+l[t+1]);n.primitiveLength+=l.length/3,n.vertexLength+=e;}for(let t=0;t<a.vertexCount;t++)this.centroidVertexArray.emplaceBack(Math.floor(a.x/a.vertexCount),Math.floor(a.y/a.vertexCount));this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);}}function nl(t,e){return t.x===e.x&&(t.x<0||t.x>rs)||t.y===e.y&&(t.y<0||t.y>rs)}function il(t){return t.every((t=>t.x<0))||t.every((t=>t.x>rs))||t.every((t=>t.y<0))||t.every((t=>t.y>rs))}let al;$n(\"FillExtrusionBucket\",rl,{omit:[\"layers\",\"features\"]});var sl={get paint(){return al=al||new _i({\"fill-extrusion-opacity\":new gi(X[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new xi(X[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new gi(X[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new gi(X[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new vi(X[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new xi(X[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new xi(X[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new gi(X[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"])})}};class ol extends Si{constructor(t){super(t,sl);}createBucket(t){return new rl(t)}queryRadius(){return ws(this.paint.get(\"fill-extrusion-translate\"))}is3D(){return !0}queryIntersectsFeature(t,e,r,n,i,s,o,l){const u=_s(t,this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),s.angle,o),c=this.paint.get(\"fill-extrusion-height\").evaluate(e,r),h=this.paint.get(\"fill-extrusion-base\").evaluate(e,r),p=function(t,e,r,n){const i=[];for(const r of t){const t=[r.x,r.y,0,1];Vs(t,t,e),i.push(new a(t[0]/t[3],t[1]/t[3]));}return i}(u,l),f=function(t,e,r,n){const i=[],s=[],o=n[8]*e,l=n[9]*e,u=n[10]*e,c=n[11]*e,h=n[8]*r,p=n[9]*r,f=n[10]*r,d=n[11]*r;for(const e of t){const t=[],r=[];for(const i of e){const e=i.x,s=i.y,y=n[0]*e+n[4]*s+n[12],m=n[1]*e+n[5]*s+n[13],g=n[2]*e+n[6]*s+n[14],x=n[3]*e+n[7]*s+n[15],v=g+u,b=x+c,w=y+h,_=m+p,A=g+f,S=x+d,k=new a((y+o)/b,(m+l)/b);k.z=v/b,t.push(k);const I=new a(w/S,_/S);I.z=A/S,r.push(I);}i.push(t),s.push(r);}return [i,s]}(n,h,c,l);return function(t,e,r){let n=1/0;hs(r,e)&&(n=ul(r,e[0]));for(let i=0;i<e.length;i++){const a=e[i],s=t[i];for(let t=0;t<a.length-1;t++){const e=a[t],i=[e,a[t+1],s[t+1],s[t],e];us(r,i)&&(n=Math.min(n,ul(r,i)));}}return n!==1/0&&n}(f[0],f[1],p)}}function ll(t,e){return t.x*e.x+t.y*e.y}function ul(t,e){if(1===t.length){let r=0;const n=e[r++];let i;for(;!i||n.equals(i);)if(i=e[r++],!i)return 1/0;for(;r<e.length;r++){const a=e[r],s=t[0],o=i.sub(n),l=a.sub(n),u=s.sub(n),c=ll(o,o),h=ll(o,l),p=ll(l,l),f=ll(u,o),d=ll(u,l),y=c*p-h*h,m=(p*f-h*d)/y,g=(c*d-h*f)/y,x=n.z*(1-m-g)+i.z*m+a.z*g;if(isFinite(x))return x}return 1/0}{let t=1/0;for(const r of e)t=Math.min(t,r.z);return t}}const cl=Mi([{name:\"a_pos_normal\",components:2,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"}],4),{members:hl}=cl,pl=Mi([{name:\"a_uv_x\",components:1,type:\"Float32\"},{name:\"a_split_index\",components:1,type:\"Float32\"}]),{members:fl}=pl,dl=Ro.VectorTileFeature.types,yl=Math.cos(Math.PI/180*37.5),ml=Math.pow(2,14)/.5;class gl{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((t=>{this.gradients[t.id]={};})),this.layoutVertexArray=new ya,this.layoutVertexArray2=new ma,this.indexArray=new Aa,this.programConfigurations=new Qa(t.layers,t.zoom),this.segments=new za,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.hasPattern=Po(\"line\",this.layers,e);const n=this.layers[0].layout.get(\"line-sort-key\"),i=!n.isConstant(),a=[];for(const{feature:e,id:s,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=ss(e,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),u,r))continue;const c=i?n.evaluate(u,{},r):void 0,h={id:s,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:as(e),patterns:{},sortKey:c};a.push(h);}i&&a.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of a){const{geometry:i,index:a,sourceLayerIndex:s}=n;if(this.hasPattern){const t=Vo(\"line\",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,a,r,{});e.featureIndex.insert(t[a].feature,i,a,s,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}addFeatures(t,e,r){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,fl)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,hl),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}lineFeatureClips(t){if(t.properties&&Object.prototype.hasOwnProperty.call(t.properties,\"mapbox_clip_start\")&&Object.prototype.hasOwnProperty.call(t.properties,\"mapbox_clip_end\"))return {start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}}addFeature(t,e,r,n,i){const a=this.layers[0].layout,s=a.get(\"line-join\").evaluate(t,{}),o=a.get(\"line-cap\"),l=a.get(\"line-miter-limit\"),u=a.get(\"line-round-limit\");this.lineClips=this.lineFeatureClips(t);for(const r of e)this.addLine(r,t,s,o,l,u);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);}addLine(t,e,r,n,i,a){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e<t.length-1;e++)this.totalDistance+=t[e].dist(t[e+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance);}const s=\"Polygon\"===dl[e.type];let o=t.length;for(;o>=2&&t[o-1].equals(t[o-2]);)o--;let l=0;for(;l<o-1&&t[l].equals(t[l+1]);)l++;if(o<(s?3:2))return;\"bevel\"===r&&(i=1.05);const u=this.overscaling<=16?15*rs/(512*this.overscaling):0,c=this.segments.prepareSegment(10*o,this.layoutVertexArray,this.indexArray);let h,p,f,d,y;this.e1=this.e2=-1,s&&(h=t[o-2],y=t[l].sub(h)._unit()._perp());for(let e=l;e<o;e++){if(f=e===o-1?s?t[l+1]:void 0:t[e+1],f&&t[e].equals(f))continue;y&&(d=y),h&&(p=h),h=t[e],y=f?f.sub(h)._unit()._perp():d,d=d||y;let m=d.add(y);0===m.x&&0===m.y||m._unit();const g=d.x*y.x+d.y*y.y,x=m.x*y.x+m.y*y.y,v=0!==x?1/x:1/0,b=2*Math.sqrt(2-2*x),w=x<yl&&p&&f,_=d.x*y.y-d.y*y.x>0;if(w&&e>l){const t=h.dist(p);if(t>2*u){const e=h.sub(h.sub(p)._mult(u/t)._round());this.updateDistance(p,e),this.addCurrentVertex(e,d,0,0,c),p=e;}}const A=p&&f;let S=A?r:s?\"butt\":n;if(A&&\"round\"===S&&(v<a?S=\"miter\":v<=2&&(S=\"fakeround\")),\"miter\"===S&&v>i&&(S=\"bevel\"),\"bevel\"===S&&(v>2&&(S=\"flipbevel\"),v<i&&(S=\"miter\")),p&&this.updateDistance(p,h),\"miter\"===S)m._mult(v),this.addCurrentVertex(h,m,0,0,c);else if(\"flipbevel\"===S){if(v>100)m=y.mult(-1);else {const t=v*d.add(y).mag()/d.sub(y).mag();m._perp()._mult(t*(_?-1:1));}this.addCurrentVertex(h,m,0,0,c),this.addCurrentVertex(h,m.mult(-1),0,0,c);}else if(\"bevel\"===S||\"fakeround\"===S){const t=-Math.sqrt(v*v-1),e=_?t:0,r=_?0:t;if(p&&this.addCurrentVertex(h,d,e,r,c),\"fakeround\"===S){const t=Math.round(180*b/Math.PI/20);for(let e=1;e<t;e++){let r=e/t;if(.5!==r){const t=r-.5;r+=r*t*(r-1)*((1.0904+g*(g*(3.55645-1.43519*g)-3.2452))*t*t+(.848013+g*(.215638*g-1.06021)));}const n=y.sub(d)._mult(r)._add(d)._unit()._mult(_?-1:1);this.addHalfVertex(h,n.x,n.y,!1,_,0,c);}}f&&this.addCurrentVertex(h,y,-e,-r,c);}else if(\"butt\"===S)this.addCurrentVertex(h,m,0,0,c);else if(\"square\"===S){const t=p?1:-1;this.addCurrentVertex(h,m,t,t,c);}else \"round\"===S&&(p&&(this.addCurrentVertex(h,d,0,0,c),this.addCurrentVertex(h,d,1,1,c,!0)),f&&(this.addCurrentVertex(h,y,-1,-1,c,!0),this.addCurrentVertex(h,y,0,0,c)));if(w&&e<o-1){const t=h.dist(f);if(t>2*u){const e=h.add(f.sub(h)._mult(u/t)._round());this.updateDistance(h,e),this.addCurrentVertex(e,y,0,0,c),h=e;}}}}addCurrentVertex(t,e,r,n,i,a=!1){const s=e.y*n-e.x,o=-e.y-e.x*n;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,a,!1,r,i),this.addHalfVertex(t,s,o,a,!0,-n,i),this.distance>ml/2&&0===this.totalDistance&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(t,e,r,n,i,a));}addHalfVertex({x:t,y:e},r,n,i,a,s,o){const l=.5*(this.lineClips?this.scaledDistance*(ml-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(a?1:0),Math.round(63*r)+128,Math.round(63*n)+128,1+(0===s?0:s<0?-1:1)|(63&l)<<2,l>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),a?this.e2=u:this.e1=u;}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance;}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance();}}let xl,vl;$n(\"LineBucket\",gl,{omit:[\"layers\",\"patternFeatures\"]});var bl={get paint(){return vl=vl||new _i({\"line-opacity\":new xi(X.paint_line[\"line-opacity\"]),\"line-color\":new xi(X.paint_line[\"line-color\"]),\"line-translate\":new gi(X.paint_line[\"line-translate\"]),\"line-translate-anchor\":new gi(X.paint_line[\"line-translate-anchor\"]),\"line-width\":new xi(X.paint_line[\"line-width\"]),\"line-gap-width\":new xi(X.paint_line[\"line-gap-width\"]),\"line-offset\":new xi(X.paint_line[\"line-offset\"]),\"line-blur\":new xi(X.paint_line[\"line-blur\"]),\"line-dasharray\":new bi(X.paint_line[\"line-dasharray\"]),\"line-pattern\":new vi(X.paint_line[\"line-pattern\"]),\"line-gradient\":new wi(X.paint_line[\"line-gradient\"])})},get layout(){return xl=xl||new _i({\"line-cap\":new gi(X.layout_line[\"line-cap\"]),\"line-join\":new xi(X.layout_line[\"line-join\"]),\"line-miter-limit\":new gi(X.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new gi(X.layout_line[\"line-round-limit\"]),\"line-sort-key\":new xi(X.layout_line[\"line-sort-key\"])})}};class wl extends xi{possiblyEvaluate(t,e){return e=new li(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,r,n){return e=g({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,r,n)}}let _l;class Al extends Si{constructor(t){super(t,bl),this.gradientVersion=0,_l||(_l=new wl(bl.paint.properties[\"line-width\"].specification),_l.useIntegerZoom=!0);}_handleSpecialPaintPropertyUpdate(t){if(\"line-gradient\"===t){const t=this.gradientExpression();this.stepInterpolant=!!function(t){return void 0!==t._styleExpression}(t)&&t._styleExpression.expression instanceof qe,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER;}}gradientExpression(){return this._transitionablePaint._values[\"line-gradient\"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values[\"line-floorwidth\"]=_l.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,t);}createBucket(t){return new gl(t)}queryRadius(t){const e=t,r=Sl(bs(\"line-width\",this,e),bs(\"line-gap-width\",this,e)),n=bs(\"line-offset\",this,e);return r/2+Math.abs(n)+ws(this.paint.get(\"line-translate\"))}queryIntersectsFeature(t,e,r,n,i,s,o){const l=_s(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),s.angle,o),u=o/2*Sl(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),c=this.paint.get(\"line-offset\").evaluate(e,r);return c&&(n=function(t,e){const r=[];for(let n=0;n<t.length;n++){const i=t[n],s=[];for(let t=0;t<i.length;t++){const r=i[t-1],n=i[t],o=i[t+1],l=0===t?new a(0,0):n.sub(r)._unit()._perp(),u=t===i.length-1?new a(0,0):o.sub(n)._unit()._perp(),c=l._add(u)._unit(),h=c.x*u.x+c.y*u.y;0!==h&&c._mult(1/h),s.push(c._mult(e)._add(n));}r.push(s);}return r}(n,c*o)),function(t,e,r){for(let n=0;n<e.length;n++){const i=e[n];if(t.length>=3)for(let e=0;e<i.length;e++)if(xs(t,i[e]))return !0;if(ps(t,i,r))return !0}return !1}(l,n,u)}isTileClipped(){return !0}}function Sl(t,e){return e>0?e+2*t:t}const kl=Mi([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),Il=Mi([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4);Mi([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4);const zl=Mi([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}]);Mi([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]);const Ml=Mi([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4),Cl=Mi([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);function Bl(t,e,r){return t.sections.forEach((t=>{t.text=function(t,e,r){const n=e.layout.get(\"text-transform\").evaluate(r,{});return \"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),oi.applyArabicShaping&&(t=oi.applyArabicShaping(t)),t}(t.text,e,r);})),t}Mi([{name:\"triangle\",components:3,type:\"Uint16\"}]),Mi([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),Mi([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",name:\"collisionCircleDiameter\"},{type:\"Uint16\",name:\"textAnchorOffsetStartIndex\"},{type:\"Uint16\",name:\"textAnchorOffsetEndIndex\"}]),Mi([{type:\"Float32\",name:\"offsetX\"}]),Mi([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]),Mi([{type:\"Uint16\",name:\"textAnchor\"},{type:\"Float32\",components:2,name:\"textOffset\"}]);const Pl={\"!\":\"︕\",\"#\":\"＃\",$:\"＄\",\"%\":\"％\",\"&\":\"＆\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"＊\",\"+\":\"＋\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"／\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"＝\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"＠\",\"[\":\"﹇\",\"\\\\\":\"＼\",\"]\":\"﹈\",\"^\":\"＾\",_:\"︳\",\"`\":\"｀\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"～\",\"¢\":\"￠\",\"£\":\"￡\",\"¥\":\"￥\",\"¦\":\"￤\",\"¬\":\"￢\",\"¯\":\"￣\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"￦\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"！\":\"︕\",\"（\":\"︵\",\"）\":\"︶\",\"，\":\"︐\",\"－\":\"︲\",\"．\":\"・\",\"：\":\"︓\",\"；\":\"︔\",\"＜\":\"︿\",\"＞\":\"﹀\",\"？\":\"︖\",\"［\":\"﹇\",\"］\":\"﹈\",\"＿\":\"︳\",\"｛\":\"︷\",\"｜\":\"―\",\"｝\":\"︸\",\"｟\":\"︵\",\"｠\":\"︶\",\"｡\":\"︒\",\"｢\":\"﹁\",\"｣\":\"﹂\"};var Vl=24,El=$l,Fl=function(t,e,r,n,i){var a,s,o=8*i-n-1,l=(1<<o)-1,u=l>>1,c=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,a=f&(1<<-c)-1,f>>=-c,c+=o;c>0;a=256*a+t[e+h],h+=p,c-=8);for(s=a&(1<<-c)-1,a>>=-c,c+=n;c>0;s=256*s+t[e+h],h+=p,c-=8);if(0===a)a=1-u;else {if(a===l)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,n),a-=u;}return (f?-1:1)*s*Math.pow(2,a-n)},Tl=function(t,e,r,n,i,a){var s,o,l,u=8*a-i-1,c=(1<<u)-1,h=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,d=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-s))<1&&(s--,l*=2),(e+=s+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(s++,l/=2),s+h>=c?(o=0,s=c):s+h>=1?(o=(e*l-1)*Math.pow(2,i),s+=h):(o=e*Math.pow(2,h-1)*Math.pow(2,i),s=0));i>=8;t[r+f]=255&o,f+=d,o/=256,i-=8);for(s=s<<i|o,u+=i;u>0;t[r+f]=255&s,f+=d,s/=256,u-=8);t[r+f-d]|=128*y;};function $l(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}$l.Varint=0,$l.Fixed64=1,$l.Bytes=2,$l.Fixed32=5;var Ll=4294967296,Dl=1/Ll,Ol=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function Ul(t){return t.type===$l.Bytes?t.readVarint()+t.pos:t.pos+1}function Rl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function ql(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i];}function jl(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r]);}function Nl(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r]);}function Zl(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r]);}function Kl(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r]);}function Gl(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r]);}function Jl(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r]);}function Xl(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r]);}function Yl(t,e){for(var r=0;r<t.length;r++)e.writeFixed64(t[r]);}function Hl(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r]);}function Wl(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function Ql(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function tu(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}$l.prototype={destroy:function(){this.buf=null;},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var n=this.readVarint(),i=n>>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n);}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=Wl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=tu(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=Wl(this.buf,this.pos)+Wl(this.buf,this.pos+4)*Ll;return this.pos+=8,t},readSFixed64:function(){var t=Wl(this.buf,this.pos)+tu(this.buf,this.pos+4)*Ll;return this.pos+=8,t},readFloat:function(){var t=Fl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=Fl(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(n=(112&(i=a[r.pos++]))>>4,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<3,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<10,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<17,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<24,i<128)return Rl(t,n,e);if(n|=(1&(i=a[r.pos++]))<<31,i<128)return Rl(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&Ol?function(t,e,r){return Ol.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var n=\"\",i=e;i<r;){var a,s,o,l=t[i],u=null,c=l>239?4:l>223?3:l>191?2:1;if(i+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(a=t[i+1]))&&(u=(31&l)<<6|63&a)<=127&&(u=null):3===c?(s=t[i+2],128==(192&(a=t[i+1]))&&128==(192&s)&&((u=(15&l)<<12|(63&a)<<6|63&s)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(s=t[i+2],o=t[i+3],128==(192&(a=t[i+1]))&&128==(192&s)&&128==(192&o)&&((u=(15&l)<<18|(63&a)<<12|(63&s)<<6|63&o)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,n+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),n+=String.fromCharCode(u),i+=c;}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==$l.Bytes)return t.push(this.readVarint(e));var r=Ul(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==$l.Bytes)return t.push(this.readSVarint());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==$l.Bytes)return t.push(this.readBoolean());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==$l.Bytes)return t.push(this.readFloat());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==$l.Bytes)return t.push(this.readDouble());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==$l.Bytes)return t.push(this.readFixed32());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==$l.Bytes)return t.push(this.readSFixed32());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==$l.Bytes)return t.push(this.readFixed64());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){if(this.type!==$l.Bytes)return t.push(this.readSFixed64());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===$l.Varint)for(;this.buf[this.pos++]>127;);else if(e===$l.Bytes)this.pos=this.readVarint()+this.pos;else if(e===$l.Fixed32)this.pos+=4;else {if(e!==$l.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8;}},writeTag:function(t,e){this.writeVarint(t<<3|e);},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e;}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),Ql(this.buf,t,this.pos),this.pos+=4;},writeSFixed32:function(t){this.realloc(4),Ql(this.buf,t,this.pos),this.pos+=4;},writeFixed64:function(t){this.realloc(8),Ql(this.buf,-1&t,this.pos),Ql(this.buf,Math.floor(t*Dl),this.pos+4),this.pos+=8;},writeSFixed64:function(t){this.realloc(8),Ql(this.buf,-1&t,this.pos),Ql(this.buf,Math.floor(t*Dl),this.pos+4),this.pos+=8;},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,e){var r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,r.buf[r.pos]=127&(t>>>=7);}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))));}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t);},writeBoolean:function(t){this.writeVarint(Boolean(t));},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a<e.length;a++){if((n=e.charCodeAt(a))>55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&ql(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),Tl(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),Tl(this.buf,t,this.pos,!0,52,8),this.pos+=8;},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=t[r];},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var n=this.pos-r;n>=128&&ql(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,$l.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,jl,e);},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Nl,e);},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,Gl,e);},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Zl,e);},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Kl,e);},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Jl,e);},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Xl,e);},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Yl,e);},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Hl,e);},writeBytesField:function(t,e){this.writeTag(t,$l.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,$l.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,$l.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,$l.Fixed64),this.writeFixed64(e);},writeSFixed64Field:function(t,e){this.writeTag(t,$l.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,$l.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,$l.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,$l.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,$l.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,$l.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};var eu=r(El);const ru=3;function nu(t,e,r){1===t&&r.readMessage(iu,e);}function iu(t,e,r){if(3===t){const{id:t,bitmap:n,width:i,height:a,left:s,top:o,advance:l}=r.readMessage(au,{});e.push({id:t,bitmap:new Rs({width:i+2*ru,height:a+2*ru},n),metrics:{width:i,height:a,left:s,top:o,advance:l}});}}function au(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}const su=ru;function ou(t){let e=0,r=0;for(const n of t)e+=n.w*n.h,r=Math.max(r,n.w);t.sort(((t,e)=>e.h-t.h));const n=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let i=0,a=0;for(const e of t)for(let t=n.length-1;t>=0;t--){const r=n[t];if(!(e.w>r.w||e.h>r.h)){if(e.x=r.x,e.y=r.y,a=Math.max(a,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===r.w&&e.h===r.h){const e=n.pop();t<n.length&&(n[t]=e);}else e.h===r.h?(r.x+=e.w,r.w-=e.w):e.w===r.w?(r.y+=e.h,r.h-=e.h):(n.push({x:r.x+e.w,y:r.y,w:r.w-e.w,h:e.h}),r.y+=e.h,r.h-=e.h);break}}return {w:i,h:a,fill:e/(i*a)||0}}const lu=1;class uu{constructor(t,{pixelRatio:e,version:r,stretchX:n,stretchY:i,content:a}){this.paddedRect=t,this.pixelRatio=e,this.stretchX=n,this.stretchY=i,this.content=a,this.version=r;}get tl(){return [this.paddedRect.x+lu,this.paddedRect.y+lu]}get br(){return [this.paddedRect.x+this.paddedRect.w-lu,this.paddedRect.y+this.paddedRect.h-lu]}get tlbr(){return this.tl.concat(this.br)}get displaySize(){return [(this.paddedRect.w-2*lu)/this.pixelRatio,(this.paddedRect.h-2*lu)/this.pixelRatio]}}class cu{constructor(t,e){const r={},n={};this.haveRenderCallbacks=[];const i=[];this.addImages(t,r,i),this.addImages(e,n,i);const{w:a,h:s}=ou(i),o=new qs({width:a||1,height:s||1});for(const e in t){const n=t[e],i=r[e].paddedRect;qs.copy(n.data,o,{x:0,y:0},{x:i.x+lu,y:i.y+lu},n.data);}for(const t in e){const r=e[t],i=n[t].paddedRect,a=i.x+lu,s=i.y+lu,l=r.data.width,u=r.data.height;qs.copy(r.data,o,{x:0,y:0},{x:a,y:s},r.data),qs.copy(r.data,o,{x:0,y:u-1},{x:a,y:s-1},{width:l,height:1}),qs.copy(r.data,o,{x:0,y:0},{x:a,y:s+u},{width:l,height:1}),qs.copy(r.data,o,{x:l-1,y:0},{x:a-1,y:s},{width:1,height:u}),qs.copy(r.data,o,{x:0,y:0},{x:a+l,y:s},{width:1,height:u});}this.image=o,this.iconPositions=r,this.patternPositions=n;}addImages(t,e,r){for(const n in t){const i=t[n],a={x:0,y:0,w:i.data.width+2*lu,h:i.data.height+2*lu};r.push(a),e[n]=new uu(a,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n);}}patchUpdatedImages(t,e){t.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const r in t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e);}patchUpdatedImage(t,e,r){if(!t||!e)return;if(t.version===e.version)return;t.version=e.version;const[n,i]=t.tl;r.update(e.data,void 0,{x:n,y:i});}}var hu;$n(\"ImagePosition\",uu),$n(\"ImageAtlas\",cu),t.ai=void 0,(hu=t.ai||(t.ai={}))[hu.none=0]=\"none\",hu[hu.horizontal=1]=\"horizontal\",hu[hu.vertical=2]=\"vertical\",hu[hu.horizontalOnly=3]=\"horizontalOnly\";const pu=-17;class fu{constructor(){this.scale=1,this.fontStack=\"\",this.imageName=null;}static forText(t,e){const r=new fu;return r.scale=t||1,r.fontStack=e,r}static forImage(t){const e=new fu;return e.imageName=t,e}}class du{constructor(){this.text=\"\",this.sectionIndex=[],this.sections=[],this.imageSectionID=null;}static fromFeature(t,e){const r=new du;for(let n=0;n<t.sections.length;n++){const i=t.sections[n];i.image?r.addImageSection(i):r.addTextSection(i,e);}return r}length(){return this.text.length}getSection(t){return this.sections[this.sectionIndex[t]]}getSectionIndex(t){return this.sectionIndex[t]}getCharCode(t){return this.text.charCodeAt(t)}verticalizePunctuation(){this.text=function(t){let e=\"\";for(let r=0;r<t.length;r++){const n=t.charCodeAt(r+1)||null,i=t.charCodeAt(r-1)||null;e+=n&&Kn(n)&&!Pl[t[r+1]]||i&&Kn(i)&&!Pl[t[r-1]]||!Pl[t[r]]?t[r]:Pl[t[r]];}return e}(this.text);}trim(){let t=0;for(let e=0;e<this.text.length&&mu[this.text.charCodeAt(e)];e++)t++;let e=this.text.length;for(let r=this.text.length-1;r>=0&&r>=t&&mu[this.text.charCodeAt(r)];r--)e--;this.text=this.text.substring(t,e),this.sectionIndex=this.sectionIndex.slice(t,e);}substring(t,e){const r=new du;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((t,e)=>Math.max(t,this.sections[e].scale)),0)}addTextSection(t,e){this.text+=t.text,this.sections.push(fu.forText(t.scale,t.fontStack||e));const r=this.sections.length-1;for(let e=0;e<t.text.length;++e)this.sectionIndex.push(r);}addImageSection(t){const e=t.image?t.image.name:\"\";if(0===e.length)return void A(\"Can't add FormattedSection with an empty image.\");const r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(fu.forImage(e)),this.sectionIndex.push(this.sections.length-1)):A(\"Reached maximum number of images 6401\");}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function yu(e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m){const g=du.fromFeature(e,a);let x;p===t.ai.vertical&&g.verticalizePunctuation();const{processBidirectionalText:v,processStyledBidirectionalText:b}=oi;if(v&&1===g.sections.length){x=[];const t=v(g.toString(),Au(g,c,s,r,i,d,y));for(const e of t){const t=new du;t.text=e,t.sections=g.sections;for(let r=0;r<e.length;r++)t.sectionIndex.push(0);x.push(t);}}else if(b){x=[];const t=b(g.text,g.sectionIndex,Au(g,c,s,r,i,d,y));for(const e of t){const t=new du;t.text=e[0],t.sectionIndex=e[1],t.sections=g.sections,x.push(t);}}else x=function(t,e){const r=[],n=t.text;let i=0;for(const n of e)r.push(t.substring(i,n)),i=n;return i<n.length&&r.push(t.substring(i,n.length)),r}(g,Au(g,c,s,r,i,d,y));const w=[],_={positionedLines:w,text:g.toString(),top:h[1],bottom:h[1],left:h[0],right:h[0],writingMode:p,iconsInText:!1,verticalizable:!1};return function(e,r,n,i,a,s,o,l,u,c,h,p){let f=0,d=pu,y=0,m=0;const g=\"right\"===l?1:\"left\"===l?0:.5;let x=0;for(const o of a){o.trim();const a=o.getMaxScale(),l=(a-1)*Vl,b={positionedGlyphs:[],lineOffset:0};e.positionedLines[x]=b;const w=b.positionedGlyphs;let _=0;if(!o.length()){d+=s,++x;continue}for(let s=0;s<o.length();s++){const y=o.getSection(s),m=o.getSectionIndex(s),g=o.getCharCode(s);let x=0,b=null,A=null,S=null,k=Vl;const I=!(u===t.ai.horizontal||!h&&!Zn(g)||h&&(mu[g]||(v=g,Rn.Arabic(v)||Rn[\"Arabic Supplement\"](v)||Rn[\"Arabic Extended-A\"](v)||Rn[\"Arabic Presentation Forms-A\"](v)||Rn[\"Arabic Presentation Forms-B\"](v))));if(y.imageName){const t=i[y.imageName];if(!t)continue;S=y.imageName,e.iconsInText=e.iconsInText||!0,A=t.paddedRect;const r=t.displaySize;y.scale=y.scale*Vl/p,b={width:r[0],height:r[1],left:lu,top:-su,advance:I?r[1]:r[0]},x=l+(Vl-r[1]*y.scale),k=b.advance;const n=I?r[0]*y.scale-Vl*a:r[1]*y.scale-Vl*a;n>0&&n>_&&(_=n);}else {const t=n[y.fontStack],e=t&&t[g];if(e&&e.rect)A=e.rect,b=e.metrics;else {const t=r[y.fontStack],e=t&&t[g];if(!e)continue;b=e.metrics;}x=(a-y.scale)*Vl;}I?(e.verticalizable=!0,w.push({glyph:g,imageName:S,x:f,y:d+x,vertical:I,scale:y.scale,fontStack:y.fontStack,sectionIndex:m,metrics:b,rect:A}),f+=k*y.scale+c):(w.push({glyph:g,imageName:S,x:f,y:d+x,vertical:I,scale:y.scale,fontStack:y.fontStack,sectionIndex:m,metrics:b,rect:A}),f+=b.advance*y.scale+c);}0!==w.length&&(y=Math.max(f-c,y),ku(w,0,w.length-1,g,_)),f=0;const A=s*a+_;b.lineOffset=Math.max(_,l),d+=A,m=Math.max(A,m),++x;}var v;const b=d-pu,{horizontalAlign:w,verticalAlign:_}=Su(o);((function(t,e,r,n,i,a,s,o,l){const u=(e-r)*i;let c=0;c=a!==s?-o*n-pu:(-n*l+.5)*s;for(const e of t)for(const t of e.positionedGlyphs)t.x+=u,t.y+=c;}))(e.positionedLines,g,w,_,y,m,s,b,a.length),e.top+=-_*b,e.bottom=e.top+b,e.left+=-w*y,e.right=e.left+y;}(_,r,n,i,x,o,l,u,p,c,f,m),!function(t){for(const e of t)if(0!==e.positionedGlyphs.length)return !1;return !0}(w)&&_}const mu={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},gu={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function xu(t,e,r,n,i,a){if(e.imageName){const t=n[e.imageName];return t?t.displaySize[0]*e.scale*Vl/a+i:0}{const n=r[e.fontStack],a=n&&n[t];return a?a.metrics.advance*e.scale+i:0}}function vu(t,e,r,n){const i=Math.pow(t-e,2);return n?t<e?i/2:2*i:i+Math.abs(r)*r}function bu(t,e,r){let n=0;return 10===t&&(n-=1e4),r&&(n+=150),40!==t&&65288!==t||(n+=50),41!==e&&65289!==e||(n+=50),n}function wu(t,e,r,n,i,a){let s=null,o=vu(e,r,i,a);for(const t of n){const n=vu(e-t.x,r,i,a)+t.badness;n<=o&&(s=t,o=n);}return {index:t,x:e,priorBreak:s,badness:o}}function _u(t){return t?_u(t.priorBreak).concat(t.index):[]}function Au(t,e,r,n,i,a,s){if(\"point\"!==a)return [];if(!t)return [];const o=[],l=function(t,e,r,n,i,a){let s=0;for(let r=0;r<t.length();r++){const o=t.getSection(r);s+=xu(t.getCharCode(r),o,n,i,e,a);}return s/Math.max(1,Math.ceil(s/r))}(t,e,r,n,i,s),u=t.text.indexOf(\"​\")>=0;let c=0;for(let r=0;r<t.length();r++){const a=t.getSection(r),p=t.getCharCode(r);if(mu[p]||(c+=xu(p,a,n,i,e,s)),r<t.length()-1){const e=!((h=p)<11904||!(Rn[\"Bopomofo Extended\"](h)||Rn.Bopomofo(h)||Rn[\"CJK Compatibility Forms\"](h)||Rn[\"CJK Compatibility Ideographs\"](h)||Rn[\"CJK Compatibility\"](h)||Rn[\"CJK Radicals Supplement\"](h)||Rn[\"CJK Strokes\"](h)||Rn[\"CJK Symbols and Punctuation\"](h)||Rn[\"CJK Unified Ideographs Extension A\"](h)||Rn[\"CJK Unified Ideographs\"](h)||Rn[\"Enclosed CJK Letters and Months\"](h)||Rn[\"Halfwidth and Fullwidth Forms\"](h)||Rn.Hiragana(h)||Rn[\"Ideographic Description Characters\"](h)||Rn[\"Kangxi Radicals\"](h)||Rn[\"Katakana Phonetic Extensions\"](h)||Rn.Katakana(h)||Rn[\"Vertical Forms\"](h)||Rn[\"Yi Radicals\"](h)||Rn[\"Yi Syllables\"](h)));(gu[p]||e||a.imageName)&&o.push(wu(r+1,c,l,o,bu(p,t.getCharCode(r+1),e&&u),!1));}}var h;return _u(wu(t.length(),c,l,o,0,!0))}function Su(t){let e=.5,r=.5;switch(t){case\"right\":case\"top-right\":case\"bottom-right\":e=1;break;case\"left\":case\"top-left\":case\"bottom-left\":e=0;}switch(t){case\"bottom\":case\"bottom-right\":case\"bottom-left\":r=1;break;case\"top\":case\"top-right\":case\"top-left\":r=0;}return {horizontalAlign:e,verticalAlign:r}}function ku(t,e,r,n,i){if(!n&&!i)return;const a=t[r],s=(t[r].x+a.metrics.advance*a.scale)*n;for(let n=e;n<=r;n++)t[n].x-=s,t[n].y+=i;}function Iu(t,e,r){const{horizontalAlign:n,verticalAlign:i}=Su(r),a=e[0]-t.displaySize[0]*n,s=e[1]-t.displaySize[1]*i;return {image:t,top:s,bottom:s+t.displaySize[1],left:a,right:a+t.displaySize[0]}}function zu(t,e,r,n,i,a){const s=t.image;let o;if(s.content){const t=s.content,e=s.pixelRatio||1;o=[t[0]/e,t[1]/e,s.displaySize[0]-t[2]/e,s.displaySize[1]-t[3]/e];}const l=e.left*a,u=e.right*a;let c,h,p,f;\"width\"===r||\"both\"===r?(f=i[0]+l-n[3],h=i[0]+u+n[1]):(f=i[0]+(l+u-s.displaySize[0])/2,h=f+s.displaySize[0]);const d=e.top*a,y=e.bottom*a;return \"height\"===r||\"both\"===r?(c=i[1]+d-n[0],p=i[1]+y+n[2]):(c=i[1]+(d+y-s.displaySize[1])/2,p=c+s.displaySize[1]),{image:s,top:c,right:h,bottom:p,left:f,collisionPadding:o}}const Mu=255,Cu=128,Bu=Mu*Cu;function Pu(t,e){const{expression:r}=e;if(\"constant\"===r.kind)return {kind:\"constant\",layoutSize:r.evaluate(new li(t+1))};if(\"source\"===r.kind)return {kind:\"source\"};{const{zoomStops:e,interpolationType:n}=r;let i=0;for(;i<e.length&&e[i]<=t;)i++;i=Math.max(0,i-1);let a=i;for(;a<e.length&&e[a]<t+1;)a++;a=Math.min(e.length-1,a);const s=e[i],o=e[a];return \"composite\"===r.kind?{kind:\"composite\",minZoom:s,maxZoom:o,interpolationType:n}:{kind:\"camera\",minZoom:s,maxZoom:o,minSize:r.evaluate(new li(s)),maxSize:r.evaluate(new li(o)),interpolationType:n}}}function Vu(t,e,r){let n=\"never\";const i=t.get(e);return i?n=i:t.get(r)&&(n=\"always\"),n}const Eu=Ro.VectorTileFeature.types,Fu=[{name:\"a_fade_opacity\",components:1,type:\"Uint8\",offset:0}];function Tu(t,e,r,n,i,a,s,o,l,u,c,h,p){const f=o?Math.min(Bu,Math.round(o[0])):0,d=o?Math.min(Bu,Math.round(o[1])):0;t.emplaceBack(e,r,Math.round(32*n),Math.round(32*i),a,s,(f<<1)+(l?1:0),d,16*u,16*c,256*h,256*p);}function $u(t,e,r){t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r);}function Lu(t){for(const e of t.sections)if(Xn(e.text))return !0;return !1}class Du{constructor(t){this.layoutVertexArray=new xa,this.indexArray=new Aa,this.programConfigurations=t,this.segments=new za,this.dynamicLayoutVertexArray=new va,this.opacityVertexArray=new ba,this.hasVisibleVertices=!1,this.placedSymbolArray=new ra;}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length}upload(t,e,r,n){this.isEmpty()||(r&&(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,kl.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,Il.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,Fu,!0),this.opacityVertexBuffer.itemSize=1),(r||n)&&this.programConfigurations.upload(t));}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy());}}$n(\"SymbolBuffers\",Du);class Ou{constructor(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new za,this.collisionVertexArray=new _a;}upload(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,zl.members,!0);}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy());}}$n(\"CollisionBuffers\",Ou);class Uu{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Ms([]),this.placementViewportMatrix=Ms([]);const r=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Pu(this.zoom,r[\"text-size\"]),this.iconSizeData=Pu(this.zoom,r[\"icon-size\"]);const n=this.layers[0].layout,i=n.get(\"symbol-sort-key\"),a=n.get(\"symbol-z-order\");this.canOverlap=\"never\"!==Vu(n,\"text-overlap\",\"text-allow-overlap\")||\"never\"!==Vu(n,\"icon-overlap\",\"icon-allow-overlap\")||n.get(\"text-ignore-placement\")||n.get(\"icon-ignore-placement\"),this.sortFeaturesByKey=\"viewport-y\"!==a&&!i.isConstant(),this.sortFeaturesByY=(\"viewport-y\"===a||\"auto\"===a&&!this.sortFeaturesByKey)&&this.canOverlap,\"point\"===n.get(\"symbol-placement\")&&(this.writingModes=n.get(\"text-writing-mode\").map((e=>t.ai[e]))),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=e.sourceID;}createArrays(){this.text=new Du(new Qa(this.layers,this.zoom,(t=>/^text/.test(t)))),this.icon=new Du(new Qa(this.layers,this.zoom,(t=>/^icon/.test(t)))),this.glyphOffsetArray=new aa,this.lineVertexArray=new sa,this.symbolInstances=new ia,this.textAnchorOffsets=new la;}calculateGlyphDependencies(t,e,r,n,i){for(let a=0;a<t.length;a++)if(e[t.charCodeAt(a)]=!0,(r||n)&&i){const r=Pl[t.charAt(a)];r&&(e[r.charCodeAt(0)]=!0);}}populate(e,r,n){const i=this.layers[0],a=i.layout,s=a.get(\"text-font\"),o=a.get(\"text-field\"),l=a.get(\"icon-image\"),u=(\"constant\"!==o.value.kind||o.value.value instanceof Qt&&!o.value.value.isEmpty()||o.value.value.toString().length>0)&&(\"constant\"!==s.value.kind||s.value.value.length>0),c=\"constant\"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,h=a.get(\"symbol-sort-key\");if(this.features=[],!u&&!c)return;const p=r.iconDependencies,f=r.glyphDependencies,d=r.availableImages,y=new li(this.zoom);for(const{feature:r,id:o,index:l,sourceLayerIndex:m}of e){const e=i._featureFilter.needGeometry,g=ss(r,e);if(!i._featureFilter.filter(y,g,n))continue;let x,v;if(e||(g.geometry=as(r)),u){const t=i.getValueAndResolveTokens(\"text-field\",g,n,d),e=Qt.factory(t);Lu(e)&&(this.hasRTLText=!0),(!this.hasRTLText||\"unavailable\"===ai()||this.hasRTLText&&oi.isParsed())&&(x=Bl(e,i,g));}if(c){const t=i.getValueAndResolveTokens(\"icon-image\",g,n,d);v=t instanceof ne?t:ne.fromString(t);}if(!x&&!v)continue;const b=this.sortFeaturesByKey?h.evaluate(g,{},n):void 0;if(this.features.push({id:o,text:x,icon:v,index:l,sourceLayerIndex:m,geometry:g.geometry,properties:r.properties,type:Eu[r.type],sortKey:b}),v&&(p[v.name]=!0),x){const e=s.evaluate(g,{},n).join(\",\"),r=\"viewport\"!==a.get(\"text-rotation-alignment\")&&\"point\"!==a.get(\"symbol-placement\");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(t.ai.vertical)>=0;for(const t of x.sections)if(t.image)p[t.image.name]=!0;else {const n=qn(x.toString()),i=t.fontStack||e,a=f[i]=f[i]||{};this.calculateGlyphDependencies(t.text,a,r,this.allowVerticalPlacement,n);}}}\"line\"===a.get(\"symbol-placement\")&&(this.features=function(t){const e={},r={},n=[];let i=0;function a(e){n.push(t[e]),i++;}function s(t,e,i){const a=r[t];return delete r[t],r[e]=a,n[a].geometry[0].pop(),n[a].geometry[0]=n[a].geometry[0].concat(i[0]),a}function o(t,r,i){const a=e[r];return delete e[r],e[t]=a,n[a].geometry[0].shift(),n[a].geometry[0]=i[0].concat(n[a].geometry[0]),a}function l(t,e,r){const n=r?e[0][e[0].length-1]:e[0][0];return `${t}:${n.x}:${n.y}`}for(let u=0;u<t.length;u++){const c=t[u],h=c.geometry,p=c.text?c.text.toString():null;if(!p){a(u);continue}const f=l(p,h),d=l(p,h,!0);if(f in r&&d in e&&r[f]!==e[d]){const t=o(f,d,h),i=s(f,d,n[t].geometry);delete e[f],delete r[d],r[l(p,n[i].geometry,!0)]=i,n[t].geometry=null;}else f in r?s(f,d,h):d in e?o(f,d,h):(a(u),e[f]=i-1,r[d]=i-1);}return n.filter((t=>t.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey));}update(t,e,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r));}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();}addToLineVertexArray(t,e){const r=this.lineVertexArray.length;if(void 0!==t.segment){let r=t.dist(e[t.segment+1]),n=t.dist(e[t.segment]);const i={};for(let n=t.segment+1;n<e.length;n++)i[n]={x:e[n].x,y:e[n].y,tileUnitDistanceFromAnchor:r},n<e.length-1&&(r+=e[n+1].dist(e[n]));for(let r=t.segment||0;r>=0;r--)i[r]={x:e[r].x,y:e[r].y,tileUnitDistanceFromAnchor:n},r>0&&(n+=e[r-1].dist(e[r]));for(let t=0;t<e.length;t++){const e=i[t];this.lineVertexArray.emplaceBack(e.x,e.y,e.tileUnitDistanceFromAnchor);}}return {lineStartIndex:r,lineLength:this.lineVertexArray.length-r}}addSymbols(e,r,n,i,a,s,o,l,u,c,h,p){const f=e.indexArray,d=e.layoutVertexArray,y=e.segments.prepareSegment(4*r.length,d,f,this.canOverlap?s.sortKey:void 0),m=this.glyphOffsetArray.length,g=y.vertexLength,x=this.allowVerticalPlacement&&o===t.ai.vertical?Math.PI/2:0,v=s.text&&s.text.sections;for(let t=0;t<r.length;t++){const{tl:i,tr:a,bl:o,br:u,tex:c,pixelOffsetTL:h,pixelOffsetBR:m,minFontScaleX:g,minFontScaleY:b,glyphOffset:w,isSDF:_,sectionIndex:A}=r[t],S=y.vertexLength,k=w[1];Tu(d,l.x,l.y,i.x,k+i.y,c.x,c.y,n,_,h.x,h.y,g,b),Tu(d,l.x,l.y,a.x,k+a.y,c.x+c.w,c.y,n,_,m.x,h.y,g,b),Tu(d,l.x,l.y,o.x,k+o.y,c.x,c.y+c.h,n,_,h.x,m.y,g,b),Tu(d,l.x,l.y,u.x,k+u.y,c.x+c.w,c.y+c.h,n,_,m.x,m.y,g,b),$u(e.dynamicLayoutVertexArray,l,x),f.emplaceBack(S,S+1,S+2),f.emplaceBack(S+1,S+2,S+3),y.vertexLength+=4,y.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(w[0]),t!==r.length-1&&A===r[t+1].sectionIndex||e.programConfigurations.populatePaintArrays(d.length,s,s.index,{},p,v&&v[A]);}e.placedSymbolArray.emplaceBack(l.x,l.y,m,this.glyphOffsetArray.length-m,g,u,c,l.segment,n?n[0]:0,n?n[1]:0,i[0],i[1],o,0,!1,0,h);}_addCollisionDebugVertex(t,e,r,n,i,a){return e.emplaceBack(0,0),t.emplaceBack(r.x,r.y,n,i,Math.round(a.x),Math.round(a.y))}addCollisionDebugVertices(t,e,r,n,i,s,o){const l=i.segments.prepareSegment(4,i.layoutVertexArray,i.indexArray),u=l.vertexLength,c=i.layoutVertexArray,h=i.collisionVertexArray,p=o.anchorX,f=o.anchorY;this._addCollisionDebugVertex(c,h,s,p,f,new a(t,e)),this._addCollisionDebugVertex(c,h,s,p,f,new a(r,e)),this._addCollisionDebugVertex(c,h,s,p,f,new a(r,n)),this._addCollisionDebugVertex(c,h,s,p,f,new a(t,n)),l.vertexLength+=4;const d=i.indexArray;d.emplaceBack(u,u+1),d.emplaceBack(u+1,u+2),d.emplaceBack(u+2,u+3),d.emplaceBack(u+3,u),l.primitiveLength+=4;}addDebugCollisionBoxes(t,e,r,n){for(let i=t;i<e;i++){const t=this.collisionBoxArray.get(i);this.addCollisionDebugVertices(t.x1,t.y1,t.x2,t.y2,n?this.textCollisionBox:this.iconCollisionBox,t.anchorPoint,r);}}generateCollisionDebugBuffers(){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new Ou(wa,Ml.members,Sa),this.iconCollisionBox=new Ou(wa,Ml.members,Sa);for(let t=0;t<this.symbolInstances.length;t++){const e=this.symbolInstances.get(t);this.addDebugCollisionBoxes(e.textBoxStartIndex,e.textBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.verticalTextBoxStartIndex,e.verticalTextBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.iconBoxStartIndex,e.iconBoxEndIndex,e,!1),this.addDebugCollisionBoxes(e.verticalIconBoxStartIndex,e.verticalIconBoxEndIndex,e,!1);}}_deserializeCollisionBoxesForSymbol(t,e,r,n,i,a,s,o,l){const u={};for(let n=e;n<r;n++){const e=t.get(n);u.textBox={x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,anchorPointX:e.anchorPointX,anchorPointY:e.anchorPointY},u.textFeatureIndex=e.featureIndex;break}for(let e=n;e<i;e++){const r=t.get(e);u.verticalTextBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.verticalTextFeatureIndex=r.featureIndex;break}for(let e=a;e<s;e++){const r=t.get(e);u.iconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.iconFeatureIndex=r.featureIndex;break}for(let e=o;e<l;e++){const r=t.get(e);u.verticalIconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.verticalIconFeatureIndex=r.featureIndex;break}return u}deserializeCollisionBoxes(t){this.collisionArrays=[];for(let e=0;e<this.symbolInstances.length;e++){const r=this.symbolInstances.get(e);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(t,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex));}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){const r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs;for(let e=r.vertexStartIndex;e<n;e+=4)t.indexArray.emplaceBack(e,e+1,e+2),t.indexArray.emplaceBack(e+1,e+2,e+3);}getSortedSymbolIndexes(t){if(this.sortedAngle===t&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;const e=Math.sin(t),r=Math.cos(t),n=[],i=[],a=[];for(let t=0;t<this.symbolInstances.length;++t){a.push(t);const s=this.symbolInstances.get(t);n.push(0|Math.round(e*s.anchorX+r*s.anchorY)),i.push(s.featureIndex);}return a.sort(((t,e)=>n[t]-n[e]||i[e]-i[t])),a}addToSortKeyRanges(t,e){const r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const t of this.symbolInstanceIndexes){const e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex),[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex].forEach(((t,e,r)=>{t>=0&&r.indexOf(t)===e&&this.addIndicesForPlacedSymbol(this.text,t);})),e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}}}let Ru,qu;$n(\"SymbolBucket\",Uu,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Uu.MAX_GLYPHS=65535,Uu.addDynamicAttributes=$u;var ju={get paint(){return qu=qu||new _i({\"icon-opacity\":new xi(X.paint_symbol[\"icon-opacity\"]),\"icon-color\":new xi(X.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new xi(X.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new xi(X.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new xi(X.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new gi(X.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new gi(X.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new xi(X.paint_symbol[\"text-opacity\"]),\"text-color\":new xi(X.paint_symbol[\"text-color\"],{runtimeType:yt,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),\"text-halo-color\":new xi(X.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new xi(X.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new xi(X.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new gi(X.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new gi(X.paint_symbol[\"text-translate-anchor\"])})},get layout(){return Ru=Ru||new _i({\"symbol-placement\":new gi(X.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new gi(X.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new gi(X.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new xi(X.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new gi(X.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new gi(X.layout_symbol[\"icon-allow-overlap\"]),\"icon-overlap\":new gi(X.layout_symbol[\"icon-overlap\"]),\"icon-ignore-placement\":new gi(X.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new gi(X.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new gi(X.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new xi(X.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new gi(X.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new gi(X.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new xi(X.layout_symbol[\"icon-image\"]),\"icon-rotate\":new xi(X.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new xi(X.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new gi(X.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new xi(X.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new xi(X.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new gi(X.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new gi(X.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new gi(X.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new xi(X.layout_symbol[\"text-field\"]),\"text-font\":new xi(X.layout_symbol[\"text-font\"]),\"text-size\":new xi(X.layout_symbol[\"text-size\"]),\"text-max-width\":new xi(X.layout_symbol[\"text-max-width\"]),\"text-line-height\":new gi(X.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new xi(X.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new xi(X.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new xi(X.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new gi(X.layout_symbol[\"text-variable-anchor\"]),\"text-variable-anchor-offset\":new xi(X.layout_symbol[\"text-variable-anchor-offset\"]),\"text-anchor\":new xi(X.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new gi(X.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new gi(X.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new xi(X.layout_symbol[\"text-rotate\"]),\"text-padding\":new gi(X.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new gi(X.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new xi(X.layout_symbol[\"text-transform\"]),\"text-offset\":new xi(X.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new gi(X.layout_symbol[\"text-allow-overlap\"]),\"text-overlap\":new gi(X.layout_symbol[\"text-overlap\"]),\"text-ignore-placement\":new gi(X.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new gi(X.layout_symbol[\"text-optional\"])})}};class Nu{constructor(t){if(void 0===t.property.overrides)throw new Error(\"overrides must be provided to instantiate FormatSectionOverride class\");this.type=t.property.overrides?t.property.overrides.runtimeType:ht,this.defaultValue=t;}evaluate(t){if(t.formattedSection){const e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);}outputDefined(){return !1}serialize(){return null}}$n(\"FormatSectionOverride\",Nu,{omit:[\"defaultValue\"]});class Zu extends Si{constructor(t){super(t,ju);}recalculate(t,e){if(super.recalculate(t,e),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(this.layout._values[\"icon-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(this.layout._values[\"text-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=\"map\"===this.layout.get(\"text-rotation-alignment\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){const t=this.layout.get(\"text-writing-mode\");if(t){const e=[];for(const r of t)e.indexOf(r)<0&&e.push(r);this.layout._values[\"text-writing-mode\"]=e;}else this.layout._values[\"text-writing-mode\"]=[\"horizontal\"];}this._setPaintOverrides();}getValueAndResolveTokens(t,e,r,n){const i=this.layout.get(t).evaluate(e,{},r,n),a=this._unevaluatedLayout._values[t];return a.isDataDriven()||Tr(a.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,((e,r)=>t&&r in t?String(t[r]):\"\"))}(e.properties,i)}createBucket(t){return new Uu(t)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error(\"Should take a different path in FeatureIndex\")}_setPaintOverrides(){for(const t of ju.paint.overridableProperties){if(!Zu.hasPaintOverride(this.layout,t))continue;const e=this.paint.get(t),r=new Nu(e),n=new Fr(r,e.property.specification);let i=null;i=\"constant\"===e.value.kind||\"source\"===e.value.kind?new Lr(\"source\",n):new Dr(\"composite\",n,e.value.zoomStops),this.paint._values[t]=new yi(e.property,i,e.parameters);}}_handleOverridablePaintPropertyUpdate(t,e,r){return !(!this.layout||e.isDataDriven()||r.isDataDriven())&&Zu.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){const r=t.get(\"text-field\"),n=ju.paint.properties[e];let i=!1;const a=t=>{for(const e of t)if(n.overrides&&n.overrides.hasOverride(e))return void(i=!0)};if(\"constant\"===r.value.kind&&r.value.value instanceof Qt)a(r.value.value.sections);else if(\"source\"===r.value.kind){const t=e=>{i||(e instanceof le&&se(e.value)===vt?a(e.value.sections):e instanceof pr?a(e.sections):e.eachChild(t));},e=r.value;e._styleExpression&&t(e._styleExpression.expression);}return i}}let Ku;var Gu={get paint(){return Ku=Ku||new _i({\"background-color\":new gi(X.paint_background[\"background-color\"]),\"background-pattern\":new bi(X.paint_background[\"background-pattern\"]),\"background-opacity\":new gi(X.paint_background[\"background-opacity\"])})}};class Ju extends Si{constructor(t){super(t,Gu);}}let Xu;var Yu={get paint(){return Xu=Xu||new _i({\"raster-opacity\":new gi(X.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new gi(X.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new gi(X.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new gi(X.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new gi(X.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new gi(X.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new gi(X.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new gi(X.paint_raster[\"raster-fade-duration\"])})}};class Hu extends Si{constructor(t){super(t,Yu);}}class Wu extends Si{constructor(t){super(t,{}),this.onAdd=t=>{this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},this.onRemove=t=>{this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);},this.implementation=t;}is3D(){return \"3d\"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return !1}serialize(){throw new Error(\"Custom layers cannot be serialized\")}}class Qu{constructor(t){this._callback=t,this._triggered=!1,\"undefined\"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback();});}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback();}),0));}remove(){delete this._channel,this._callback=()=>{};}}const tc=6371008.8;class ec{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat object: (${t}, ${e})`);if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")}wrap(){return new ec(m(this.lng,-180,180),this.lat)}toArray(){return [this.lng,this.lat]}toString(){return `LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return tc*Math.acos(Math.min(i,1))}static convert(t){if(t instanceof ec)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new ec(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new ec(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")}}const rc=2*Math.PI*tc;function nc(t){return rc*Math.cos(t*Math.PI/180)}function ic(t){return (180+t)/360}function ac(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function sc(t,e){return t/nc(e)}function oc(t){return 360*t-180}function lc(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}class uc{constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r;}static fromLngLat(t,e=0){const r=ec.convert(t);return new uc(ic(r.lng),ac(r.lat),sc(e,r.lat))}toLngLat(){return new ec(oc(this.x),lc(this.y))}toAltitude(){return this.z*nc(lc(this.y))}meterInMercatorCoordinateUnits(){return 1/rc*(t=lc(this.y),1/Math.cos(t*Math.PI/180));var t;}}function cc(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}class hc{constructor(t,e,r){if(t<0||t>25||r<0||r>=Math.pow(2,t)||e<0||e>=Math.pow(2,t))throw new Error(`x=${e}, y=${r}, z=${t} outside of bounds. 0<=x<${Math.pow(2,t)}, 0<=y<${Math.pow(2,t)} 0<=z<=25 `);this.z=t,this.x=e,this.y=r,this.key=dc(0,t,t,e,r);}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e,r){const n=(a=this.y,s=this.z,o=cc(256*(i=this.x),256*(a=Math.pow(2,s)-a-1),s),l=cc(256*(i+1),256*(a+1),s),o[0]+\",\"+o[1]+\",\"+l[0]+\",\"+l[1]);var i,a,s,o,l;const u=function(t,e,r){let n,i=\"\";for(let a=t;a>0;a--)n=1<<a-1,i+=(e&n?1:0)+(r&n?2:0);return i}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(/{prefix}/g,(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String(\"tms\"===r?Math.pow(2,this.z)-this.y-1:this.y)).replace(/{ratio}/g,e>1?\"@2x\":\"\").replace(/{quadkey}/g,u).replace(/{bbox-epsg-3857}/g,n)}isChildOf(t){const e=this.z-t.z;return e>0&&t.x===this.x>>e&&t.y===this.y>>e}getTilePoint(t){const e=Math.pow(2,this.z);return new a((t.x*e-this.x)*rs,(t.y*e-this.y)*rs)}toString(){return `${this.z}/${this.x}/${this.y}`}}class pc{constructor(t,e){this.wrap=t,this.canonical=e,this.key=dc(t,e.z,e.z,e.x,e.y);}}class fc{constructor(t,e,r,n,i){if(t<r)throw new Error(`overscaledZ should be >= z; overscaledZ = ${t}; z = ${r}`);this.overscaledZ=t,this.wrap=e,this.canonical=new hc(r,+n,+i),this.key=dc(e,t,r,n,i);}clone(){return new fc(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const e=this.canonical.z-t;return t>this.canonical.z?new fc(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new fc(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}calculateScaledKey(t,e){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const r=this.canonical.z-t;return t>this.canonical.z?dc(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):dc(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)}isChildOf(t){if(t.wrap!==this.wrap)return !1;const e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ<this.overscaledZ&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return [new fc(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new fc(e,this.wrap,e,r,n),new fc(e,this.wrap,e,r+1,n),new fc(e,this.wrap,e,r,n+1),new fc(e,this.wrap,e,r+1,n+1)]}isLessThan(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))}wrapped(){return new fc(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(t){return new fc(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new pc(this.wrap,this.canonical)}toString(){return `${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}getTilePoint(t){return this.canonical.getTilePoint(new uc(t.x-this.wrap,t.y))}}function dc(t,e,r,n,i){(t*=2)<0&&(t=-1*t-1);const a=1<<r;return (a*a*t+a*i+n).toString(36)+r.toString(36)+e.toString(36)}$n(\"CanonicalTileID\",hc),$n(\"OverscaledTileID\",fc,{omit:[\"posMatrix\"]});class yc{constructor(t,e,r,n=1,i=1,a=1,s=0){if(this.uid=t,e.height!==e.width)throw new RangeError(\"DEM tiles must be square\");if(r&&![\"mapbox\",\"terrarium\",\"custom\"].includes(r))return void A(`\"${r}\" is not a valid encoding type. Valid types include \"mapbox\", \"terrarium\" and \"custom\".`);this.stride=e.height;const o=this.dim=e.height-2;switch(this.data=new Uint32Array(e.data.buffer),r){case\"terrarium\":this.redFactor=256,this.greenFactor=1,this.blueFactor=1/256,this.baseShift=32768;break;case\"custom\":this.redFactor=n,this.greenFactor=i,this.blueFactor=a,this.baseShift=s;break;default:this.redFactor=6553.6,this.greenFactor=25.6,this.blueFactor=.1,this.baseShift=1e4;}for(let t=0;t<o;t++)this.data[this._idx(-1,t)]=this.data[this._idx(0,t)],this.data[this._idx(o,t)]=this.data[this._idx(o-1,t)],this.data[this._idx(t,-1)]=this.data[this._idx(t,0)],this.data[this._idx(t,o)]=this.data[this._idx(t,o-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(o,-1)]=this.data[this._idx(o-1,0)],this.data[this._idx(-1,o)]=this.data[this._idx(0,o-1)],this.data[this._idx(o,o)]=this.data[this._idx(o-1,o-1)],this.min=Number.MAX_SAFE_INTEGER,this.max=Number.MIN_SAFE_INTEGER;for(let t=0;t<o;t++)for(let e=0;e<o;e++){const r=this.get(t,e);r>this.max&&(this.max=r),r<this.min&&(this.min=r);}}get(t,e){const r=new Uint8Array(this.data.buffer),n=4*this._idx(t,e);return this.unpack(r[n],r[n+1],r[n+2])}getUnpackVector(){return [this.redFactor,this.greenFactor,this.blueFactor,this.baseShift]}_idx(t,e){if(t<-1||t>=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return (e+1)*this.stride+(t+1)}unpack(t,e,r){return t*this.redFactor+e*this.greenFactor+r*this.blueFactor-this.baseShift}getPixels(){return new qs({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");let n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,s=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:a=s-1;break;case 1:s=a+1;}const o=-e*this.dim,l=-r*this.dim;for(let e=a;e<s;e++)for(let r=n;r<i;r++)this.data[this._idx(r,e)]=t.data[this._idx(r+o,e+l)];}}$n(\"DEMData\",yc);class mc{constructor(t){this._stringToNumber={},this._numberToString=[];for(let e=0;e<t.length;e++){const r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r;}}encode(t){return this._stringToNumber[t]}decode(t){if(t>=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${t} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[t]}}class gc{constructor(t,e,r,n,i){this.type=\"Feature\",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=n,this.properties=t.properties,this.id=i;}get geometry(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(t){this._geometry=t;}toJSON(){const t={geometry:this.geometry};for(const e in this)\"_geometry\"!==e&&\"_vectorTileFeature\"!==e&&(t[e]=this[e]);return t}}class xc{constructor(t,e){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new Fn(rs,16,0),this.grid3D=new Fn(rs,16,0),this.featureIndexArray=new ca,this.promoteId=e;}insert(t,e,r,n,i,a){const s=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i);const o=a?this.grid3D:this.grid;for(let t=0;t<e.length;t++){const r=e[t],n=[1/0,1/0,-1/0,-1/0];for(let t=0;t<r.length;t++){const e=r[t];n[0]=Math.min(n[0],e.x),n[1]=Math.min(n[1],e.y),n[2]=Math.max(n[2],e.x),n[3]=Math.max(n[3],e.y);}n[0]<rs&&n[1]<rs&&n[2]>=0&&n[3]>=0&&o.insert(s,n[0],n[1],n[2],n[3]);}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new Ro.VectorTile(new eu(this.rawTileData)).layers,this.sourceLayerCoder=new mc(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers}query(t,e,r,n){this.loadVTLayers();const i=t.params||{},s=rs/t.tileSize/t.scale,o=Nr(i.filter),l=t.queryGeometry,u=t.queryPadding*s,c=bc(l),h=this.grid.query(c.minX-u,c.minY-u,c.maxX+u,c.maxY+u),p=bc(t.cameraQueryGeometry),f=this.grid3D.query(p.minX-u,p.minY-u,p.maxX+u,p.maxY+u,((e,r,n,i)=>function(t,e,r,n,i){for(const a of t)if(e<=a.x&&r<=a.y&&n>=a.x&&i>=a.y)return !0;const s=[new a(e,r),new a(e,i),new a(n,i),new a(n,r)];if(t.length>2)for(const e of s)if(xs(t,e))return !0;for(let e=0;e<t.length-1;e++)if(vs(t[e],t[e+1],s))return !0;return !1}(t.cameraQueryGeometry,e-u,r-u,n+u,i+u)));for(const t of f)h.push(t);h.sort(wc);const d={};let y;for(let a=0;a<h.length;a++){const u=h[a];if(u===y)continue;y=u;const c=this.featureIndexArray.get(u);let p=null;this.loadMatchingFeature(d,c.bucketIndex,c.sourceLayerIndex,c.featureIndex,o,i.layers,i.availableImages,e,r,n,((e,r,n)=>(p||(p=as(e)),r.queryIntersectsFeature(l,e,n,p,this.z,t.transform,s,t.pixelPosMatrix))));}return d}loadMatchingFeature(t,e,r,n,i,a,s,o,l,u,c){const h=this.bucketLayerIDs[e];if(a&&!function(t,e){for(let r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return !0;return !1}(a,h))return;const p=this.sourceLayerCoder.decode(r),f=this.vtLayers[p].feature(n);if(i.needGeometry){const t=ss(f,!0);if(!i.filter(new li(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!i.filter(new li(this.tileID.overscaledZ),f))return;const d=this.getId(f,p);for(let e=0;e<h.length;e++){const r=h[e];if(a&&a.indexOf(r)<0)continue;const i=o[r];if(!i)continue;let p={};d&&u&&(p=u.getState(i.sourceLayer||\"_geojsonTileLayer\",d));const y=g({},l[r]);y.paint=vc(y.paint,i.paint,f,p,s),y.layout=vc(y.layout,i.layout,f,p,s);const m=!c||c(f,i,p);if(!m)continue;const x=new gc(f,this.z,this.x,this.y,d);x.layer=y;let v=t[r];void 0===v&&(v=t[r]=[]),v.push({featureIndex:n,feature:x,intersectionZ:m});}}lookupSymbolFeatures(t,e,r,n,i,a,s,o){const l={};this.loadVTLayers();const u=Nr(i);for(const i of t)this.loadMatchingFeature(l,r,n,i,u,a,s,o,e);return l}hasLayer(t){for(const e of this.bucketLayerIDs)for(const r of e)if(t===r)return !0;return !1}getId(t,e){let r=t.id;return this.promoteId&&(r=t.properties[\"string\"==typeof this.promoteId?this.promoteId:this.promoteId[e]],\"boolean\"==typeof r&&(r=Number(r))),r}}function vc(t,e,r,n,i){return v(t,((t,a)=>{const s=e instanceof mi?e.get(a):null;return s&&s.evaluate?s.evaluate(r,n,i):s}))}function bc(t){let e=1/0,r=1/0,n=-1/0,i=-1/0;for(const a of t)e=Math.min(e,a.x),r=Math.min(r,a.y),n=Math.max(n,a.x),i=Math.max(i,a.y);return {minX:e,minY:r,maxX:n,maxY:i}}function wc(t,e){return e-t}function _c(t,e,r,n,i){const s=[];for(let o=0;o<t.length;o++){const l=t[o];let u;for(let t=0;t<l.length-1;t++){let o=l[t],c=l[t+1];o.x<e&&c.x<e||(o.x<e?o=new a(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x<e&&(c=new a(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y<r&&c.y<r||(o.y<r?o=new a(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round():c.y<r&&(c=new a(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round()),o.x>=n&&c.x>=n||(o.x>=n?o=new a(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x>=n&&(c=new a(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y>=i&&c.y>=i||(o.y>=i?o=new a(o.x+(i-o.y)/(c.y-o.y)*(c.x-o.x),i)._round():c.y>=i&&(c=new a(o.x+(i-o.y)/(c.y-o.y)*(c.x-o.x),i)._round()),u&&o.equals(u[u.length-1])||(u=[o],s.push(u)),u.push(c)))));}}return s}$n(\"FeatureIndex\",xc,{omit:[\"rawTileData\",\"sourceLayerCoder\"]});class Ac extends a{constructor(t,e,r,n){super(t,e),this.angle=r,void 0!==n&&(this.segment=n);}clone(){return new Ac(this.x,this.y,this.angle,this.segment)}}function Sc(t,e,r,n,i){if(void 0===e.segment||0===r)return !0;let a=e,s=e.segment+1,o=0;for(;o>-r/2;){if(s--,s<0)return !1;o-=t[s].dist(a),a=t[s];}o+=t[s].dist(t[s+1]),s++;const l=[];let u=0;for(;o<r/2;){const e=t[s],r=t[s+1];if(!r)return !1;let a=t[s-1].angleTo(e)-e.angleTo(r);for(a=Math.abs((a+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:o,angleDelta:a}),u+=a;o-l[0].distance>n;)u-=l.shift().angleDelta;if(u>i)return !1;s++,o+=e.dist(r);}return !0}function kc(t){let e=0;for(let r=0;r<t.length-1;r++)e+=t[r].dist(t[r+1]);return e}function Ic(t,e,r){return t?.6*e*r:0}function zc(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function Mc(t,e,r,n,i,a){const s=Ic(r,i,a),o=zc(r,n)*a;let l=0;const u=kc(t)/2;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1],a=n.dist(i);if(l+a>u){const c=(u-l)/a,h=Ze.number(n.x,i.x,c),p=Ze.number(n.y,i.y,c),f=new Ac(h,p,i.angleTo(n),r);return f._round(),!s||Sc(t,f,o,s,e)?f:void 0}l+=a;}}function Cc(t,e,r,n,i,a,s,o,l){const u=Ic(n,a,s),c=zc(n,i),h=c*s,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h<e/4&&(e=h+e/4),Bc(t,p?e/2*o%e:(c/2+2*a)*s*o%e,e,u,r,h,p,!1,l)}function Bc(t,e,r,n,i,a,s,o,l){const u=a/2,c=kc(t);let h=0,p=e-r,f=[];for(let e=0;e<t.length-1;e++){const s=t[e],o=t[e+1],d=s.dist(o),y=o.angleTo(s);for(;p+r<h+d;){p+=r;const m=(p-h)/d,g=Ze.number(s.x,o.x,m),x=Ze.number(s.y,o.y,m);if(g>=0&&g<l&&x>=0&&x<l&&p-u>=0&&p+u<=c){const r=new Ac(g,x,y,e);r._round(),n&&!Sc(t,r,a,n,i)||f.push(r);}}h+=d;}return o||f.length||s||(f=Bc(t,h/2,r,n,i,a,s,!0,l)),f}$n(\"Anchor\",Ac);const Pc=lu;function Vc(t,e,r,n){const i=[],s=t.image,o=s.pixelRatio,l=s.paddedRect.w-2*Pc,u=s.paddedRect.h-2*Pc,c=t.right-t.left,h=t.bottom-t.top,p=s.stretchX||[[0,l]],f=s.stretchY||[[0,u]],d=(t,e)=>t+e[1]-e[0],y=p.reduce(d,0),m=f.reduce(d,0),g=l-y,x=u-m;let v=0,b=y,w=0,_=m,A=0,S=g,k=0,I=x;if(s.content&&n){const t=s.content;v=Ec(p,0,t[0]),w=Ec(f,0,t[1]),b=Ec(p,t[0],t[2]),_=Ec(f,t[1],t[3]),A=t[0]-v,k=t[1]-w,S=t[2]-t[0]-b,I=t[3]-t[1]-_;}const z=(n,i,l,u)=>{const p=Tc(n.stretch-v,b,c,t.left),f=$c(n.fixed-A,S,n.stretch,y),d=Tc(i.stretch-w,_,h,t.top),g=$c(i.fixed-k,I,i.stretch,m),x=Tc(l.stretch-v,b,c,t.left),z=$c(l.fixed-A,S,l.stretch,y),M=Tc(u.stretch-w,_,h,t.top),C=$c(u.fixed-k,I,u.stretch,m),B=new a(p,d),P=new a(x,d),V=new a(x,M),E=new a(p,M),F=new a(f/o,g/o),T=new a(z/o,C/o),$=e*Math.PI/180;if($){const t=Math.sin($),e=Math.cos($),r=[e,-t,t,e];B._matMult(r),P._matMult(r),E._matMult(r),V._matMult(r);}const L=n.stretch+n.fixed,D=i.stretch+i.fixed;return {tl:B,tr:P,bl:E,br:V,tex:{x:s.paddedRect.x+Pc+L,y:s.paddedRect.y+Pc+D,w:l.stretch+l.fixed-L,h:u.stretch+u.fixed-D},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:F,pixelOffsetBR:T,minFontScaleX:S/o/c,minFontScaleY:I/o/h,isSDF:r}};if(n&&(s.stretchX||s.stretchY)){const t=Fc(p,g,y),e=Fc(f,x,m);for(let r=0;r<t.length-1;r++){const n=t[r],a=t[r+1];for(let t=0;t<e.length-1;t++)i.push(z(n,e[t],a,e[t+1]));}}else i.push(z({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:l+1},{fixed:0,stretch:u+1}));return i}function Ec(t,e,r){let n=0;for(const i of t)n+=Math.max(e,Math.min(r,i[1]))-Math.max(e,Math.min(r,i[0]));return n}function Fc(t,e,r){const n=[{fixed:-Pc,stretch:0}];for(const[e,r]of t){const t=n[n.length-1];n.push({fixed:e-t.stretch,stretch:t.stretch}),n.push({fixed:e-t.stretch,stretch:t.stretch+(r-e)});}return n.push({fixed:e+Pc,stretch:r}),n}function Tc(t,e,r,n){return t/e*r+n}function $c(t,e,r,n){return t-e*r/n}class Lc{constructor(t,e,r,n,i,s,o,l,u,c){if(this.boxStartIndex=t.length,u){let t=s.top,e=s.bottom;const r=s.collisionPadding;r&&(t-=r[1],e+=r[3]);let n=e-t;n>0&&(n=Math.max(10,n),this.circleDiameter=n);}else {let u=s.top*o-l[0],h=s.bottom*o+l[2],p=s.left*o-l[3],f=s.right*o+l[1];const d=s.collisionPadding;if(d&&(p-=d[0]*o,u-=d[1]*o,f+=d[2]*o,h+=d[3]*o),c){const t=new a(p,u),e=new a(f,u),r=new a(p,h),n=new a(f,h),i=c*Math.PI/180;t._rotate(i),e._rotate(i),r._rotate(i),n._rotate(i),p=Math.min(t.x,e.x,r.x,n.x),f=Math.max(t.x,e.x,r.x,n.x),u=Math.min(t.y,e.y,r.y,n.y),h=Math.max(t.y,e.y,r.y,n.y);}t.emplaceBack(e.x,e.y,p,u,f,h,r,n,i);}this.boxEndIndex=t.length;}}class Dc{constructor(t=[],e=Oc){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this.length++,this._up(this.length-1);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i;}e[t]=n;}_down(t){const{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t<n;){let n=1+(t<<1),a=e[n];const s=n+1;if(s<this.length&&r(e[s],a)<0&&(n=s,a=e[s]),r(a,i)>=0)break;e[t]=a,t=n;}e[t]=i;}}function Oc(t,e){return t<e?-1:t>e?1:0}function Uc(t,e=1,r=!1){let n=1/0,i=1/0,s=-1/0,o=-1/0;const l=t[0];for(let t=0;t<l.length;t++){const e=l[t];(!t||e.x<n)&&(n=e.x),(!t||e.y<i)&&(i=e.y),(!t||e.x>s)&&(s=e.x),(!t||e.y>o)&&(o=e.y);}const u=Math.min(s-n,o-i);let c=u/2;const h=new Dc([],Rc);if(0===u)return new a(n,i);for(let e=n;e<s;e+=u)for(let r=i;r<o;r+=u)h.push(new qc(e+c,r+c,c,t));let p=function(t){let e=0,r=0,n=0;const i=t[0];for(let t=0,a=i.length,s=a-1;t<a;s=t++){const a=i[t],o=i[s],l=a.x*o.y-o.x*a.y;r+=(a.x+o.x)*l,n+=(a.y+o.y)*l,e+=3*l;}return new qc(r/e,n/e,0,t)}(t),f=h.length;for(;h.length;){const n=h.pop();(n.d>p.d||!p.d)&&(p=n,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*n.d)/1e4,f)),n.max-p.d<=e||(c=n.h/2,h.push(new qc(n.p.x-c,n.p.y-c,c,t)),h.push(new qc(n.p.x+c,n.p.y-c,c,t)),h.push(new qc(n.p.x-c,n.p.y+c,c,t)),h.push(new qc(n.p.x+c,n.p.y+c,c,t)),f+=4);}return r&&(console.log(`num probes: ${f}`),console.log(`best distance: ${p.d}`)),p.p}function Rc(t,e){return e.max-t.max}function qc(t,e,r,n){this.p=new a(t,e),this.h=r,this.d=function(t,e){let r=!1,n=1/0;for(let i=0;i<e.length;i++){const a=e[i];for(let e=0,i=a.length,s=i-1;e<i;s=e++){const i=a[e],o=a[s];i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(r=!r),n=Math.min(n,ms(t,i,o));}}return (r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2;}var jc;t.aq=void 0,(jc=t.aq||(t.aq={}))[jc.center=1]=\"center\",jc[jc.left=2]=\"left\",jc[jc.right=3]=\"right\",jc[jc.top=4]=\"top\",jc[jc.bottom=5]=\"bottom\",jc[jc[\"top-left\"]=6]=\"top-left\",jc[jc[\"top-right\"]=7]=\"top-right\",jc[jc[\"bottom-left\"]=8]=\"bottom-left\",jc[jc[\"bottom-right\"]=9]=\"bottom-right\";const Nc=7,Zc=Number.POSITIVE_INFINITY;function Kc(t,e){return e[1]!==Zc?function(t,e,r){let n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-Nc;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=-r+Nc;}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e;}return [n,i]}(t,e[0],e[1]):function(t,e){let r=0,n=0;e<0&&(e=0);const i=e/Math.SQRT2;switch(t){case\"top-right\":case\"top-left\":n=i-Nc;break;case\"bottom-right\":case\"bottom-left\":n=-i+Nc;break;case\"bottom\":n=-e+Nc;break;case\"top\":n=e-Nc;}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e;}return [r,n]}(t,e[0])}function Gc(t,e,r){var n;const i=t.layout,a=null===(n=i.get(\"text-variable-anchor-offset\"))||void 0===n?void 0:n.evaluate(e,{},r);if(a){const t=a.values,e=[];for(let r=0;r<t.length;r+=2){const n=e[r]=t[r],i=t[r+1].map((t=>t*Vl));n.startsWith(\"top\")?i[1]-=Nc:n.startsWith(\"bottom\")&&(i[1]+=Nc),e[r+1]=i;}return new re(e)}const s=i.get(\"text-variable-anchor\");if(s){let n;n=void 0!==t._unevaluatedLayout.getValue(\"text-radial-offset\")?[i.get(\"text-radial-offset\").evaluate(e,{},r)*Vl,Zc]:i.get(\"text-offset\").evaluate(e,{},r).map((t=>t*Vl));const a=[];for(const t of s)a.push(t,Kc(t,n));return new re(a)}return null}function Jc(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return \"right\";case\"left\":case\"top-left\":case\"bottom-left\":return \"left\"}return \"center\"}function Xc(e,r,n,i,a,s,o,l,u,c,h){let p=s.textMaxSize.evaluate(r,{});void 0===p&&(p=o);const f=e.layers[0].layout,d=f.get(\"icon-offset\").evaluate(r,{},h),y=Hc(n.horizontal),m=o/24,g=e.tilePixelRatio*m,x=e.tilePixelRatio*p/24,v=e.tilePixelRatio*l,b=e.tilePixelRatio*f.get(\"symbol-spacing\"),w=f.get(\"text-padding\")*e.tilePixelRatio,_=function(t,e,r,n=1){const i=t.get(\"icon-padding\").evaluate(e,{},r),a=i&&i.values;return [a[0]*n,a[1]*n,a[2]*n,a[3]*n]}(f,r,h,e.tilePixelRatio),S=f.get(\"text-max-angle\")/180*Math.PI,k=\"viewport\"!==f.get(\"text-rotation-alignment\")&&\"point\"!==f.get(\"symbol-placement\"),I=\"map\"===f.get(\"icon-rotation-alignment\")&&\"point\"!==f.get(\"symbol-placement\"),z=f.get(\"symbol-placement\"),M=b/2,C=f.get(\"icon-text-fit\");let B;i&&\"none\"!==C&&(e.allowVerticalPlacement&&n.vertical&&(B=zu(i,n.vertical,C,f.get(\"icon-text-fit-padding\"),d,m)),y&&(i=zu(i,y,C,f.get(\"icon-text-fit-padding\"),d,m)));const P=(l,p)=>{p.x<0||p.x>=rs||p.y<0||p.y>=rs||function(e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,k,I){const z=e.addToLineVertexArray(r,n);let M,C,B,P,V=0,E=0,F=0,T=0,$=-1,L=-1;const D={};let O=$a(\"\");if(e.allowVerticalPlacement&&i.vertical){const t=l.layout.get(\"text-rotate\").evaluate(w,{},k)+90;B=new Lc(u,r,c,h,p,i.vertical,f,d,y,t),o&&(P=new Lc(u,r,c,h,p,o,g,x,y,t));}if(a){const n=l.layout.get(\"icon-rotate\").evaluate(w,{}),i=\"none\"!==l.layout.get(\"icon-text-fit\"),s=Vc(a,n,S,i),f=o?Vc(o,n,S,i):void 0;C=new Lc(u,r,c,h,p,a,g,x,!1,n),V=4*s.length;const d=e.iconSizeData;let y=null;\"source\"===d.kind?(y=[Cu*l.layout.get(\"icon-size\").evaluate(w,{})],y[0]>Bu&&A(`${e.layerIds[0]}: Value for \"icon-size\" is >= ${Mu}. Reduce your \"icon-size\".`)):\"composite\"===d.kind&&(y=[Cu*_.compositeIconSizes[0].evaluate(w,{},k),Cu*_.compositeIconSizes[1].evaluate(w,{},k)],(y[0]>Bu||y[1]>Bu)&&A(`${e.layerIds[0]}: Value for \"icon-size\" is >= ${Mu}. Reduce your \"icon-size\".`)),e.addSymbols(e.icon,s,y,b,v,w,t.ai.none,r,z.lineStartIndex,z.lineLength,-1,k),$=e.icon.placedSymbolArray.length-1,f&&(E=4*f.length,e.addSymbols(e.icon,f,y,b,v,w,t.ai.vertical,r,z.lineStartIndex,z.lineLength,-1,k),L=e.icon.placedSymbolArray.length-1);}const U=Object.keys(i.horizontal);for(const n of U){const a=i.horizontal[n];if(!M){O=$a(a.text);const t=l.layout.get(\"text-rotate\").evaluate(w,{},k);M=new Lc(u,r,c,h,p,a,f,d,y,t);}const o=1===a.positionedLines.length;if(F+=Yc(e,r,a,s,l,y,w,m,z,i.vertical?t.ai.horizontal:t.ai.horizontalOnly,o?U:[n],D,$,_,k),o)break}i.vertical&&(T+=Yc(e,r,i.vertical,s,l,y,w,m,z,t.ai.vertical,[\"vertical\"],D,L,_,k));const R=M?M.boxStartIndex:e.collisionBoxArray.length,q=M?M.boxEndIndex:e.collisionBoxArray.length,j=B?B.boxStartIndex:e.collisionBoxArray.length,N=B?B.boxEndIndex:e.collisionBoxArray.length,Z=C?C.boxStartIndex:e.collisionBoxArray.length,K=C?C.boxEndIndex:e.collisionBoxArray.length,G=P?P.boxStartIndex:e.collisionBoxArray.length,J=P?P.boxEndIndex:e.collisionBoxArray.length;let X=-1;const Y=(t,e)=>t&&t.circleDiameter?Math.max(t.circleDiameter,e):e;X=Y(M,X),X=Y(B,X),X=Y(C,X),X=Y(P,X);const H=X>-1?1:0;H&&(X*=I/Vl),e.glyphOffsetArray.length>=Uu.MAX_GLYPHS&&A(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),void 0!==w.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,w.sortKey);const W=Gc(l,w,k),[Q,tt]=function(e,r){const n=e.length,i=null==r?void 0:r.values;if((null==i?void 0:i.length)>0)for(let r=0;r<i.length;r+=2){const n=i[r+1];e.emplaceBack(t.aq[i[r]],n[0],n[1]);}return [n,e.length]}(e.textAnchorOffsets,W);e.symbolInstances.emplaceBack(r.x,r.y,D.right>=0?D.right:-1,D.center>=0?D.center:-1,D.left>=0?D.left:-1,D.vertical||-1,$,L,O,R,q,j,N,Z,K,G,J,c,F,T,V,E,H,0,f,X,Q,tt);}(e,p,l,n,i,a,B,e.layers[0],e.collisionBoxArray,r.index,r.sourceLayerIndex,e.index,g,[w,w,w,w],k,u,v,_,I,d,r,s,c,h,o);};if(\"line\"===z)for(const t of _c(r.geometry,0,0,rs,rs)){const r=Cc(t,b,S,n.vertical||y,i,24,x,e.overscaling,rs);for(const n of r)y&&Wc(e,y.text,M,n)||P(t,n);}else if(\"line-center\"===z){for(const t of r.geometry)if(t.length>1){const e=Mc(t,S,n.vertical||y,i,24,x);e&&P(t,e);}}else if(\"Polygon\"===r.type)for(const t of Co(r.geometry,0)){const e=Uc(t,16);P(t[0],new Ac(e.x,e.y,0));}else if(\"LineString\"===r.type)for(const t of r.geometry)P(t,new Ac(t[0].x,t[0].y,0));else if(\"Point\"===r.type)for(const t of r.geometry)for(const e of t)P([e],new Ac(e.x,e.y,0));}function Yc(t,e,r,n,i,s,o,l,u,c,h,p,f,d,y){const m=function(t,e,r,n,i,s,o,l){const u=n.layout.get(\"text-rotate\").evaluate(s,{})*Math.PI/180,c=[];for(const t of e.positionedLines)for(const n of t.positionedGlyphs){if(!n.rect)continue;const s=n.rect||{};let h=su+1,p=!0,f=1,d=0;const y=(i||l)&&n.vertical,m=n.metrics.advance*n.scale/2;if(l&&e.verticalizable&&(d=t.lineOffset/2-(n.imageName?-(Vl-n.metrics.width*n.scale)/2:(n.scale-1)*Vl)),n.imageName){const t=o[n.imageName];p=t.sdf,f=t.pixelRatio,h=lu/f;}const g=i?[n.x+m,n.y]:[0,0];let x=i?[0,0]:[n.x+m+r[0],n.y+r[1]-d],v=[0,0];y&&(v=x,x=[0,0]);const b=n.metrics.isDoubleResolution?2:1,w=(n.metrics.left-h)*n.scale-m+x[0],_=(-n.metrics.top-h)*n.scale+x[1],A=w+s.w/b*n.scale/f,S=_+s.h/b*n.scale/f,k=new a(w,_),I=new a(A,_),z=new a(w,S),M=new a(A,S);if(y){const t=new a(-m,m-pu),e=-Math.PI/2,r=Vl/2-m,i=new a(5-pu-r,-(n.imageName?r:0)),s=new a(...v);k._rotateAround(e,t)._add(i)._add(s),I._rotateAround(e,t)._add(i)._add(s),z._rotateAround(e,t)._add(i)._add(s),M._rotateAround(e,t)._add(i)._add(s);}if(u){const t=Math.sin(u),e=Math.cos(u),r=[e,-t,t,e];k._matMult(r),I._matMult(r),z._matMult(r),M._matMult(r);}const C=new a(0,0),B=new a(0,0);c.push({tl:k,tr:I,bl:z,br:M,tex:s,writingMode:e.writingMode,glyphOffset:g,sectionIndex:n.sectionIndex,isSDF:p,pixelOffsetTL:C,pixelOffsetBR:B,minFontScaleX:0,minFontScaleY:0});}return c}(0,r,l,i,s,o,n,t.allowVerticalPlacement),g=t.textSizeData;let x=null;\"source\"===g.kind?(x=[Cu*i.layout.get(\"text-size\").evaluate(o,{})],x[0]>Bu&&A(`${t.layerIds[0]}: Value for \"text-size\" is >= ${Mu}. Reduce your \"text-size\".`)):\"composite\"===g.kind&&(x=[Cu*d.compositeTextSizes[0].evaluate(o,{},y),Cu*d.compositeTextSizes[1].evaluate(o,{},y)],(x[0]>Bu||x[1]>Bu)&&A(`${t.layerIds[0]}: Value for \"text-size\" is >= ${Mu}. Reduce your \"text-size\".`)),t.addSymbols(t.text,m,x,l,s,o,c,e,u.lineStartIndex,u.lineLength,f,y);for(const e of h)p[e]=t.text.placedSymbolArray.length-1;return 4*m.length}function Hc(t){for(const e in t)return t[e];return null}function Wc(t,e,r,n){const i=t.compareText;if(e in i){const t=i[e];for(let e=t.length-1;e>=0;e--)if(n.dist(t[e])<r)return !0}else i[e]=[];return i[e].push(n),!1}const Qc=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class th{static from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[e,r]=new Uint8Array(t,0,2);if(219!==e)throw new Error(\"Data does not appear to be in a KDBush format.\");const n=r>>4;if(1!==n)throw new Error(`Got v${n} data when expected v1.`);const i=Qc[15&r];if(!i)throw new Error(\"Unrecognized array type.\");const[a]=new Uint16Array(t,2,1),[s]=new Uint32Array(t,4,1);return new th(s,a,i,t)}constructor(t,e=64,r=Float64Array,n){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+e,2),65535),this.ArrayType=r,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const i=Qc.indexOf(this.ArrayType),a=2*t*this.ArrayType.BYTES_PER_ELEMENT,s=t*this.IndexArrayType.BYTES_PER_ELEMENT,o=(8-s%8)%8;if(i<0)throw new Error(`Unexpected typed array class: ${r}.`);n&&n instanceof ArrayBuffer?(this.data=n,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+s+o,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+a+s+o),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+s+o,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+i]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t);}add(t,e){const r=this._pos>>1;return this.ids[r]=r,this.coords[this._pos++]=t,this.coords[this._pos++]=e,r}finish(){const t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return eh(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,e,r,n){if(!this._finished)throw new Error(\"Data not yet indexed - call index.finish().\");const{ids:i,coords:a,nodeSize:s}=this,o=[0,i.length-1,0],l=[];for(;o.length;){const u=o.pop()||0,c=o.pop()||0,h=o.pop()||0;if(c-h<=s){for(let s=h;s<=c;s++){const o=a[2*s],u=a[2*s+1];o>=t&&o<=r&&u>=e&&u<=n&&l.push(i[s]);}continue}const p=h+c>>1,f=a[2*p],d=a[2*p+1];f>=t&&f<=r&&d>=e&&d<=n&&l.push(i[p]),(0===u?t<=f:e<=d)&&(o.push(h),o.push(p-1),o.push(1-u)),(0===u?r>=f:n>=d)&&(o.push(p+1),o.push(c),o.push(1-u));}return l}within(t,e,r){if(!this._finished)throw new Error(\"Data not yet indexed - call index.finish().\");const{ids:n,coords:i,nodeSize:a}=this,s=[0,n.length-1,0],o=[],l=r*r;for(;s.length;){const u=s.pop()||0,c=s.pop()||0,h=s.pop()||0;if(c-h<=a){for(let r=h;r<=c;r++)ah(i[2*r],i[2*r+1],t,e)<=l&&o.push(n[r]);continue}const p=h+c>>1,f=i[2*p],d=i[2*p+1];ah(f,d,t,e)<=l&&o.push(n[p]),(0===u?t-r<=f:e-r<=d)&&(s.push(h),s.push(p-1),s.push(1-u)),(0===u?t+r>=f:e+r>=d)&&(s.push(p+1),s.push(c),s.push(1-u));}return o}}function eh(t,e,r,n,i,a){if(i-n<=r)return;const s=n+i>>1;rh(t,e,s,n,i,a),eh(t,e,r,n,s-1,1-a),eh(t,e,r,s+1,i,1-a);}function rh(t,e,r,n,i,a){for(;i>n;){if(i-n>600){const s=i-n+1,o=r-n+1,l=Math.log(s),u=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*u*(s-u)/s)*(o-s/2<0?-1:1);rh(t,e,r,Math.max(n,Math.floor(r-o*u/s+c)),Math.min(i,Math.floor(r+(s-o)*u/s+c)),a);}const s=e[2*r+a];let o=n,l=i;for(nh(t,e,n,r),e[2*i+a]>s&&nh(t,e,n,i);o<l;){for(nh(t,e,o,l),o++,l--;e[2*o+a]<s;)o++;for(;e[2*l+a]>s;)l--;}e[2*n+a]===s?nh(t,e,n,l):(l++,nh(t,e,l,i)),l<=r&&(n=l+1),r<=l&&(i=l-1);}}function nh(t,e,r,n){ih(t,r,n),ih(e,2*r,2*n),ih(e,2*r+1,2*n+1);}function ih(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}function ah(t,e,r,n){const i=t-r,a=e-n;return i*i+a*a}var sh;t.bh=void 0,(sh=t.bh||(t.bh={})).create=\"create\",sh.load=\"load\",sh.fullLoad=\"fullLoad\";let oh=null,lh=[];const uh=1e3/60,ch=\"loadTime\",hh=\"fullLoadTime\",ph={mark(t){performance.mark(t);},frame(t){const e=t;null!=oh&&lh.push(e-oh),oh=e;},clearMetrics(){oh=null,lh=[],performance.clearMeasures(ch),performance.clearMeasures(hh);for(const e in t.bh)performance.clearMarks(t.bh[e]);},getPerformanceMetrics(){performance.measure(ch,t.bh.create,t.bh.load),performance.measure(hh,t.bh.create,t.bh.fullLoad);const e=performance.getEntriesByName(ch)[0].duration,r=performance.getEntriesByName(hh)[0].duration,n=lh.length,i=1/(lh.reduce(((t,e)=>t+e),0)/n/1e3),a=lh.filter((t=>t>uh)).reduce(((t,e)=>t+(e-uh)/uh),0);return {loadTime:e,fullLoadTime:r,fps:i,percentDroppedFrames:a/(n+a)*100,totalFrames:n}}};t.$=function(t,e,r){var n,i,a,s,o,l,u,c,h,p,f,d,y=r[0],m=r[1],g=r[2];return e===t?(t[12]=e[0]*y+e[4]*m+e[8]*g+e[12],t[13]=e[1]*y+e[5]*m+e[9]*g+e[13],t[14]=e[2]*y+e[6]*m+e[10]*g+e[14],t[15]=e[3]*y+e[7]*m+e[11]*g+e[15]):(i=e[1],a=e[2],s=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],t[0]=n=e[0],t[1]=i,t[2]=a,t[3]=s,t[4]=o,t[5]=l,t[6]=u,t[7]=c,t[8]=h,t[9]=p,t[10]=f,t[11]=d,t[12]=n*y+o*m+h*g+e[12],t[13]=i*y+l*m+p*g+e[13],t[14]=a*y+u*m+f*g+e[14],t[15]=s*y+c*m+d*g+e[15]),t},t.A=zs,t.B=Ze,t.C=class{constructor(t,e,r){this.receive=t=>{const e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"<cancel>\"===e.type){delete this.tasks[r];const t=this.cancelCallbacks[r];delete this.cancelCallbacks[r],t&&t();}else I()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e);},this.process=()=>{if(!this.taskQueue.length)return;const t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e);},this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},this.invoker=new Qu(this.process),this.target.addEventListener(\"message\",this.receive,!1),this.globalScope=I()?t:window;}send(t,e,r,n,i=!1){const a=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(this.callbacks[a]=r);const s=[],o={id:a,type:t,hasCallback:!!r,targetMapId:n,mustQueue:i,sourceMapId:this.mapId,data:Dn(e,s)};return this.target.postMessage(o,{transfer:s}),{cancel:()=>{r&&delete this.callbacks[a],this.target.postMessage({id:a,type:\"<cancel>\",targetMapId:n,sourceMapId:this.mapId});}}}processTask(t,e){if(\"<response>\"===e.type){const r=this.callbacks[t];delete this.callbacks[t],r&&(e.error?r(On(e.error)):r(null,On(e.data)));}else {let r=!1;const n=[],i=e.hasCallback?(e,i)=>{r=!0,delete this.cancelCallbacks[t];const a={id:t,type:\"<response>\",sourceMapId:this.mapId,error:e?Dn(e):null,data:Dn(i,n)};this.target.postMessage(a,{transfer:n});}:t=>{r=!0;};let a=null;const s=On(e.data);if(this.parent[e.type])a=this.parent[e.type](e.sourceMapId,s,i);else if(\"getWorkerSource\"in this.parent){const t=e.type.split(\".\");a=this.parent.getWorkerSource(e.sourceMapId,t[0],s.source)[t[1]](s,i);}else i(new Error(`Could not find function ${e.type}`));!r&&a&&a.cancel&&(this.cancelCallbacks[t]=a.cancel);}}remove(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1);}},t.D=gi,t.E=J,t.F=function(t,e){const r={};for(let n=0;n<e.length;n++){const i=e[n];i in t&&(r[i]=t[i]);}return r},t.G=ic,t.H=ac,t.I=uu,t.J=h,t.K=p,t.L=ec,t.M=B,t.N=rs,t.O=fc,t.P=a,t.Q=Mi,t.R=qs,t.S=za,t.T=hi,t.U=uc,t.V=class extends Vi{},t.W=hc,t.X=function(t,e){const r=window.document.createElement(\"video\");r.muted=!0,r.onloadstart=function(){e(null,r);};for(let e=0;e<t.length;e++){const n=window.document.createElement(\"source\");j(t[e])||(r.crossOrigin=\"Anonymous\"),n.src=t[e],r.appendChild(n);}return {cancel:()=>{}}},t.Y=ot,t.Z=function(){var t=new zs(16);return zs!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t._=e,t.a=M,t.a$=class extends Hi{},t.a0=function(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.a1=Cs,t.a2=function(){return x++},t.a3=ta,t.a4=Uu,t.a5=function(){oi.isLoading()||oi.isLoaded()||\"deferred\"!==ai()||si();},t.a6=Nr,t.a7=ss,t.a8=li,t.a9=gc,t.aA=ri,t.aB=function(t){t=t.slice();const e=Object.create(null);for(let r=0;r<t.length;r++)e[t[r].id]=t[r];for(let r=0;r<t.length;r++)\"ref\"in t[r]&&(t[r]=H(t[r],e[t[r].ref]));return t},t.aC=function(t){if(\"custom\"===t.type)return new Wu(t);switch(t.type){case\"background\":return new Ju(t);case\"circle\":return new Es(t);case\"fill\":return new Lo(t);case\"fill-extrusion\":return new ol(t);case\"heatmap\":return new Ns(t);case\"hillshade\":return new Gs(t);case\"line\":return new Al(t);case\"raster\":return new Hu(t);case\"symbol\":return new Zu(t)}},t.aD=w,t.aE=function(t,e){if(!t)return [{command:Q.setStyle,args:[e]}];let r=[];try{if(!W(t.version,e.version))return [{command:Q.setStyle,args:[e]}];W(t.center,e.center)||r.push({command:Q.setCenter,args:[e.center]}),W(t.zoom,e.zoom)||r.push({command:Q.setZoom,args:[e.zoom]}),W(t.bearing,e.bearing)||r.push({command:Q.setBearing,args:[e.bearing]}),W(t.pitch,e.pitch)||r.push({command:Q.setPitch,args:[e.pitch]}),W(t.sprite,e.sprite)||r.push({command:Q.setSprite,args:[e.sprite]}),W(t.glyphs,e.glyphs)||r.push({command:Q.setGlyphs,args:[e.glyphs]}),W(t.transition,e.transition)||r.push({command:Q.setTransition,args:[e.transition]}),W(t.light,e.light)||r.push({command:Q.setLight,args:[e.light]});const n={},i=[];!function(t,e,r,n){let i;for(i in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,i)&&(Object.prototype.hasOwnProperty.call(e,i)||et(i,r,n));for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(Object.prototype.hasOwnProperty.call(t,i)?W(t[i],e[i])||(\"geojson\"===t[i].type&&\"geojson\"===e[i].type&&nt(t,e,i)?r.push({command:Q.setGeoJSONSourceData,args:[i,e[i].data]}):rt(i,e,r,n)):tt(i,e,r));}(t.sources,e.sources,i,n);const a=[];t.layers&&t.layers.forEach((t=>{n[t.source]?r.push({command:Q.removeLayer,args:[t.id]}):a.push(t);})),r=r.concat(i),function(t,e,r){e=e||[];const n=(t=t||[]).map(at),i=e.map(at),a=t.reduce(st,{}),s=e.reduce(st,{}),o=n.slice(),l=Object.create(null);let u,c,h,p,f,d,y;for(u=0,c=0;u<n.length;u++)h=n[u],Object.prototype.hasOwnProperty.call(s,h)?c++:(r.push({command:Q.removeLayer,args:[h]}),o.splice(o.indexOf(h,c),1));for(u=0,c=0;u<i.length;u++)h=i[i.length-1-u],o[o.length-1-u]!==h&&(Object.prototype.hasOwnProperty.call(a,h)?(r.push({command:Q.removeLayer,args:[h]}),o.splice(o.lastIndexOf(h,o.length-c),1)):c++,d=o[o.length-u],r.push({command:Q.addLayer,args:[s[h],d]}),o.splice(o.length-u,0,h),l[h]=!0);for(u=0;u<i.length;u++)if(h=i[u],p=a[h],f=s[h],!l[h]&&!W(p,f))if(W(p.source,f.source)&&W(p[\"source-layer\"],f[\"source-layer\"])&&W(p.type,f.type)){for(y in it(p.layout,f.layout,r,h,null,Q.setLayoutProperty),it(p.paint,f.paint,r,h,null,Q.setPaintProperty),W(p.filter,f.filter)||r.push({command:Q.setFilter,args:[h,f.filter]}),W(p.minzoom,f.minzoom)&&W(p.maxzoom,f.maxzoom)||r.push({command:Q.setLayerZoomRange,args:[h,f.minzoom,f.maxzoom]}),p)Object.prototype.hasOwnProperty.call(p,y)&&\"layout\"!==y&&\"paint\"!==y&&\"filter\"!==y&&\"metadata\"!==y&&\"minzoom\"!==y&&\"maxzoom\"!==y&&(0===y.indexOf(\"paint.\")?it(p[y],f[y],r,h,y.slice(6),Q.setPaintProperty):W(p[y],f[y])||r.push({command:Q.setLayerProperty,args:[h,y,f[y]]}));for(y in f)Object.prototype.hasOwnProperty.call(f,y)&&!Object.prototype.hasOwnProperty.call(p,y)&&\"layout\"!==y&&\"paint\"!==y&&\"filter\"!==y&&\"metadata\"!==y&&\"minzoom\"!==y&&\"maxzoom\"!==y&&(0===y.indexOf(\"paint.\")?it(p[y],f[y],r,h,y.slice(6),Q.setPaintProperty):W(p[y],f[y])||r.push({command:Q.setLayerProperty,args:[h,y,f[y]]}));}else r.push({command:Q.removeLayer,args:[h]}),d=o[o.lastIndexOf(h)+1],r.push({command:Q.addLayer,args:[f,d]});}(a,e.layers,r);}catch(t){console.warn(\"Unable to compute style diff:\",t),r=[{command:Q.setStyle,args:[e]}];}return r},t.aF=function(t){const e=[],r=t.id;return void 0===r&&e.push({message:`layers.${r}: missing required property \"id\"`}),void 0===t.render&&e.push({message:`layers.${r}: missing required method \"render\"`}),t.renderingMode&&\"2d\"!==t.renderingMode&&\"3d\"!==t.renderingMode&&e.push({message:`layers.${r}: property \"renderingMode\" must be either \"2d\" or \"3d\"`}),e},t.aG=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return !1;for(let n=0;n<e.length;n++)if(!t(e[n],r[n]))return !1;return !0}if(\"object\"==typeof e&&null!==e&&null!==r){if(\"object\"!=typeof r)return !1;if(Object.keys(e).length!==Object.keys(r).length)return !1;for(const n in e)if(!t(e[n],r[n]))return !1;return !0}return e===r},t.aH=v,t.aI=b,t.aJ=ii,t.aK=function(t){return t({pluginStatus:ti,pluginURL:ei}),ii.on(\"pluginStateChange\",t),t},t.aL=class extends Ra{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));}},t.aM=qa,t.aN=class extends Ra{constructor(t,e){super(t,e),this.current=Za;}set(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(let e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}}},t.aO=ja,t.aP=class extends Ra{constructor(t,e){super(t,e),this.current=[0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));}},t.aQ=class extends Ra{constructor(t,e){super(t,e),this.current=[0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));}},t.aR=Na,t.aS=function(t,e,r,n,i,a,s){var o=1/(e-r),l=1/(n-i),u=1/(a-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*l,t[14]=(s+a)*u,t[15]=1,t},t.aT=Yt,t.aU=Ps,t.aV=class extends qi{},t.aW=Cl,t.aX=class extends Ni{},t.aY=function(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},t.aZ=js,t.a_=ha,t.aa=function(t){const e={};if(t.replace(/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,((t,r,n,i)=>{const a=n||i;return e[r]=!a||a.toLowerCase(),\"\"})),e[\"max-age\"]){const t=parseInt(e[\"max-age\"],10);isNaN(t)?delete e[\"max-age\"]:e[\"max-age\"]=t;}return e},t.ab=function(t,e){const r=[];for(const n in t)n in e||r.push(n);return r},t.ac=function(t){if(null==z){const e=t.navigator?t.navigator.userAgent:null;z=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")));}return z},t.ad=y,t.ae=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],s=e[1],o=e[2],l=e[3],u=e[4],c=e[5],h=e[6],p=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i+u*n,t[1]=s*i+c*n,t[2]=o*i+h*n,t[3]=l*i+p*n,t[4]=u*i-a*n,t[5]=c*i-s*n,t[6]=h*i-o*n,t[7]=p*i-l*n,t},t.af=function(t){var e=new zs(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.ag=Vs,t.ah=function(t,e){let r=0,n=0;if(\"constant\"===t.kind)n=t.layoutSize;else if(\"source\"!==t.kind){const{interpolationType:i,minZoom:a,maxZoom:s}=t,o=i?y(Ke.interpolationFactor(i,e,a,s),0,1):0;\"camera\"===t.kind?n=Ze.number(t.minSize,t.maxSize,o):r=o;}return {uSizeT:r,uSize:n}},t.aj=function(t,{uSize:e,uSizeT:r},{lowerSize:n,upperSize:i}){return \"source\"===t.kind?n/Cu:\"composite\"===t.kind?Ze.number(n/Cu,i/Cu,r):e},t.ak=$u,t.al=function(t,e,r,n){const i=e.y-t.y,s=e.x-t.x,o=n.y-r.y,l=n.x-r.x,u=o*s-l*i;if(0===u)return null;const c=(l*(t.y-r.y)-o*(t.x-r.x))/u;return new a(t.x+c*s,t.y+c*i)},t.am=_c,t.an=us,t.ao=Ms,t.ap=Vl,t.ar=Vu,t.as=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],s=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=e[9],p=e[10],f=e[11],d=e[12],y=e[13],m=e[14],g=e[15],x=r*o-n*s,v=r*l-i*s,b=r*u-a*s,w=n*l-i*o,_=n*u-a*o,A=i*u-a*l,S=c*y-h*d,k=c*m-p*d,I=c*g-f*d,z=h*m-p*y,M=h*g-f*y,C=p*g-f*m,B=x*C-v*M+b*z+w*I-_*k+A*S;return B?(t[0]=(o*C-l*M+u*z)*(B=1/B),t[1]=(i*M-n*C-a*z)*B,t[2]=(y*A-m*_+g*w)*B,t[3]=(p*_-h*A-f*w)*B,t[4]=(l*I-s*C-u*k)*B,t[5]=(r*C-i*I+a*k)*B,t[6]=(m*b-d*A-g*v)*B,t[7]=(c*A-p*b+f*v)*B,t[8]=(s*M-o*I+u*S)*B,t[9]=(n*I-r*M-a*S)*B,t[10]=(d*_-y*b+g*x)*B,t[11]=(h*b-c*_-f*x)*B,t[12]=(o*k-s*z-l*S)*B,t[13]=(r*z-n*k+i*S)*B,t[14]=(y*v-d*w-m*x)*B,t[15]=(c*w-h*v+p*x)*B,t):null},t.at=Jc,t.au=Su,t.av=th,t.aw=function(){const t={},e=X.$version;for(const r in X.$root){const n=X.$root[r];if(n.required){let i=null;i=\"version\"===r?e:\"array\"===n.type?[]:{},null!=i&&(t[r]=i);}}return t},t.ax=Q,t.ay=Un,t.az=D,t.b=function(t,e){const r=new Blob([new Uint8Array(t)],{type:\"image/png\"});createImageBitmap(r).then((t=>{e(null,t);})).catch((t=>{e(new Error(`Could not load image because of ${t.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`));}));},t.b0=Aa,t.b1=function(t,e){var r=t[0],n=t[1],i=t[2],a=t[3],s=t[4],o=t[5],l=t[6],u=t[7],c=t[8],h=t[9],p=t[10],f=t[11],d=t[12],y=t[13],m=t[14],g=t[15],x=e[0],v=e[1],b=e[2],w=e[3],_=e[4],A=e[5],S=e[6],k=e[7],I=e[8],z=e[9],M=e[10],C=e[11],B=e[12],P=e[13],V=e[14],E=e[15];return Math.abs(r-x)<=Is*Math.max(1,Math.abs(r),Math.abs(x))&&Math.abs(n-v)<=Is*Math.max(1,Math.abs(n),Math.abs(v))&&Math.abs(i-b)<=Is*Math.max(1,Math.abs(i),Math.abs(b))&&Math.abs(a-w)<=Is*Math.max(1,Math.abs(a),Math.abs(w))&&Math.abs(s-_)<=Is*Math.max(1,Math.abs(s),Math.abs(_))&&Math.abs(o-A)<=Is*Math.max(1,Math.abs(o),Math.abs(A))&&Math.abs(l-S)<=Is*Math.max(1,Math.abs(l),Math.abs(S))&&Math.abs(u-k)<=Is*Math.max(1,Math.abs(u),Math.abs(k))&&Math.abs(c-I)<=Is*Math.max(1,Math.abs(c),Math.abs(I))&&Math.abs(h-z)<=Is*Math.max(1,Math.abs(h),Math.abs(z))&&Math.abs(p-M)<=Is*Math.max(1,Math.abs(p),Math.abs(M))&&Math.abs(f-C)<=Is*Math.max(1,Math.abs(f),Math.abs(C))&&Math.abs(d-B)<=Is*Math.max(1,Math.abs(d),Math.abs(B))&&Math.abs(y-P)<=Is*Math.max(1,Math.abs(y),Math.abs(P))&&Math.abs(m-V)<=Is*Math.max(1,Math.abs(m),Math.abs(V))&&Math.abs(g-E)<=Is*Math.max(1,Math.abs(g),Math.abs(E))},t.b2=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.b3=function(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t},t.b4=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]},t.b5=m,t.b6=pc,t.b7=sc,t.b8=function(t,e,r,n,i){var a,s=1/Math.tan(e/2);return t[0]=s/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=s,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(t[10]=(i+n)*(a=1/(n-i)),t[14]=2*i*n*a):(t[10]=-1,t[14]=-2*n),t},t.b9=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=a*i+u*n,t[5]=s*i+c*n,t[6]=o*i+h*n,t[7]=l*i+p*n,t[8]=u*i-a*n,t[9]=c*i-s*n,t[10]=h*i-o*n,t[11]=p*i-l*n,t},t.bA=n,t.bB=El,t.bC=$r,t.bD=oi,t.ba=f,t.bb=d,t.bc=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.bd=class extends Pi{},t.be=tc,t.bf=oc,t.bg=ph,t.bi=L,t.bj=function(t,e,r=!1){if(ti===Yn||ti===Hn||ti===Wn)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");ei=T.resolveURL(t),ti=Yn,Qn=e,ni(),r||si();},t.bk=ai,t.bl=function(t,e){const r={};for(let n=0;n<t.length;n++){const i=e&&e[t[n].id]||Qr(t[n]);e&&(e[t[n].id]=i);let a=r[i];a||(a=r[i]=[]),a.push(t[n]);}const n=[];for(const t in r)n.push(r[t]);return n},t.bm=$n,t.bn=mc,t.bo=xc,t.bp=cu,t.bq=function(e){e.bucket.createArrays(),e.bucket.tilePixelRatio=rs/(512*e.bucket.overscaling),e.bucket.compareText={},e.bucket.iconsNeedLinear=!1;const r=e.bucket.layers[0],n=r.layout,i=r._unevaluatedLayout._values,a={layoutIconSize:i[\"icon-size\"].possiblyEvaluate(new li(e.bucket.zoom+1),e.canonical),layoutTextSize:i[\"text-size\"].possiblyEvaluate(new li(e.bucket.zoom+1),e.canonical),textMaxSize:i[\"text-size\"].possiblyEvaluate(new li(18))};if(\"composite\"===e.bucket.textSizeData.kind){const{minZoom:t,maxZoom:r}=e.bucket.textSizeData;a.compositeTextSizes=[i[\"text-size\"].possiblyEvaluate(new li(t),e.canonical),i[\"text-size\"].possiblyEvaluate(new li(r),e.canonical)];}if(\"composite\"===e.bucket.iconSizeData.kind){const{minZoom:t,maxZoom:r}=e.bucket.iconSizeData;a.compositeIconSizes=[i[\"icon-size\"].possiblyEvaluate(new li(t),e.canonical),i[\"icon-size\"].possiblyEvaluate(new li(r),e.canonical)];}const s=n.get(\"text-line-height\")*Vl,o=\"viewport\"!==n.get(\"text-rotation-alignment\")&&\"point\"!==n.get(\"symbol-placement\"),l=n.get(\"text-keep-upright\"),u=n.get(\"text-size\");for(const i of e.bucket.features){const c=n.get(\"text-font\").evaluate(i,{},e.canonical).join(\",\"),h=u.evaluate(i,{},e.canonical),p=a.layoutTextSize.evaluate(i,{},e.canonical),f=a.layoutIconSize.evaluate(i,{},e.canonical),d={horizontal:{},vertical:void 0},y=i.text;let m,g=[0,0];if(y){const a=y.toString(),u=n.get(\"text-letter-spacing\").evaluate(i,{},e.canonical)*Vl,f=jn(a)?u:0,m=n.get(\"text-anchor\").evaluate(i,{},e.canonical),x=Gc(r,i,e.canonical);if(!x){const t=n.get(\"text-radial-offset\").evaluate(i,{},e.canonical);g=t?Kc(m,[t*Vl,Zc]):n.get(\"text-offset\").evaluate(i,{},e.canonical).map((t=>t*Vl));}let v=o?\"center\":n.get(\"text-justify\").evaluate(i,{},e.canonical);const b=n.get(\"symbol-placement\"),w=\"point\"===b?n.get(\"text-max-width\").evaluate(i,{},e.canonical)*Vl:0,_=()=>{e.bucket.allowVerticalPlacement&&qn(a)&&(d.vertical=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,m,\"left\",f,g,t.ai.vertical,!0,b,p,h));};if(!o&&x){const r=new Set;if(\"auto\"===v)for(let t=0;t<x.values.length;t+=2)r.add(Jc(x.values[t]));else r.add(v);let n=!1;for(const i of r)if(!d.horizontal[i])if(n)d.horizontal[i]=d.horizontal[0];else {const r=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,\"center\",i,f,g,t.ai.horizontal,!1,b,p,h);r&&(d.horizontal[i]=r,n=1===r.positionedLines.length);}_();}else {\"auto\"===v&&(v=Jc(m));const r=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,m,v,f,g,t.ai.horizontal,!1,b,p,h);r&&(d.horizontal[v]=r),_(),qn(a)&&o&&l&&(d.vertical=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,m,v,f,g,t.ai.vertical,!1,b,p,h));}}let x=!1;if(i.icon&&i.icon.name){const t=e.imageMap[i.icon.name];t&&(m=Iu(e.imagePositions[i.icon.name],n.get(\"icon-offset\").evaluate(i,{},e.canonical),n.get(\"icon-anchor\").evaluate(i,{},e.canonical)),x=!!t.sdf,void 0===e.bucket.sdfIcons?e.bucket.sdfIcons=x:e.bucket.sdfIcons!==x&&A(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),(t.pixelRatio!==e.bucket.pixelRatio||0!==n.get(\"icon-rotate\").constantOr(1))&&(e.bucket.iconsNeedLinear=!0));}const v=Hc(d.horizontal)||d.vertical;e.bucket.iconsInText=!!v&&v.iconsInText,(v||m)&&Xc(e.bucket,i,d,m,e.imageMap,a,p,f,g,x,e.canonical);}e.showCollisionBoxes&&e.bucket.generateCollisionDebugBuffers();},t.br=gl,t.bs=Eo,t.bt=rl,t.bu=class{constructor(t){this._marks={start:[t.url,\"start\"].join(\"#\"),end:[t.url,\"end\"].join(\"#\"),measure:t.url.toString()},performance.mark(this._marks.start);}finish(){performance.mark(this._marks.end);let t=performance.getEntriesByName(this._marks.measure);return 0===t.length&&(performance.measure(this._marks.measure,this._marks.start,this._marks.end),t=performance.getEntriesByName(this._marks.measure),performance.clearMarks(this._marks.start),performance.clearMarks(this._marks.end),performance.clearMeasures(this._marks.measure)),t}},t.bv=eu,t.bw=Ro,t.bx=function(t,r,n,i,a){return e(this,void 0,void 0,(function*(){if(p())try{return yield B(t,r,n,i,a)}catch(t){}return function(t,e,r,n,i){const a=t.width,s=t.height;P&&V||(P=new OffscreenCanvas(a,s),V=P.getContext(\"2d\",{willReadFrequently:!0})),P.width=a,P.height=s,V.drawImage(t,0,0,a,s);const o=V.getImageData(e,r,n,i);return V.clearRect(0,0,a,s),o.data}(t,r,n,i,a)}))},t.by=yc,t.bz=r,t.c=$,t.d=function(t,e){const r=new Image;r.onload=()=>{e(null,r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame((()=>{r.src=C;}));},r.onerror=()=>e(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"));const n=new Blob([new Uint8Array(t)],{type:\"image/png\"});r.src=t.byteLength?URL.createObjectURL(n):C;},t.e=g,t.f=function(t,e){return R(g(t,{type:\"json\"}),e)},t.g=O,t.h=T,t.i=I,t.j=G,t.k=K,t.l=q,t.m=R,t.n=function(t){return new eu(t).readFields(nu,[])},t.o=function(t,e,r){if(!t.length)return r(null,[]);let n=t.length;const i=new Array(t.length);let a=null;t.forEach(((t,s)=>{e(t,((t,e)=>{t&&(a=t),i[s]=e,0==--n&&r(a,i);}));}));},t.p=ou,t.q=Rs,t.r=_i,t.s=j,t.t=Bn,t.u=Rn,t.v=X,t.w=A,t.x=En,t.y=Cn,t.z=function([t,e,r]){return e+=90,e*=Math.PI/180,r*=Math.PI/180,{x:t*Math.cos(e)*Math.sin(r),y:t*Math.sin(e)*Math.sin(r),z:t*Math.cos(r)}};}));\n\ndefine([\"./shared\"],(function(e){\"use strict\";class t{constructor(e){this.keyCache={},e&&this.replace(e);}replace(e){this._layerConfigs={},this._layers={},this.update(e,[]);}update(t,i){for(const i of t){this._layerConfigs[i.id]=i;const t=this._layers[i.id]=e.aC(i);t._featureFilter=e.a6(t.filter),this.keyCache[i.id]&&delete this.keyCache[i.id];}for(const e of i)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const o=e.bl(Object.values(this._layerConfigs),this.keyCache);for(const e of o){const t=e.map((e=>this._layers[e.id])),i=t[0];if(\"none\"===i.visibility)continue;const o=i.source||\"\";let r=this.familiesBySource[o];r||(r=this.familiesBySource[o]={});const s=i.sourceLayer||\"_geojsonTileLayer\";let n=r[s];n||(n=r[s]=[]),n.push(t);}}}class i{constructor(t){const i={},o=[];for(const e in t){const r=t[e],s=i[e]={};for(const e in r){const t=r[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const i={x:0,y:0,w:t.bitmap.width+2,h:t.bitmap.height+2};o.push(i),s[e]={rect:i,metrics:t.metrics};}}const{w:r,h:s}=e.p(o),n=new e.q({width:r||1,height:s||1});for(const o in t){const r=t[o];for(const t in r){const s=r[+t];if(!s||0===s.bitmap.width||0===s.bitmap.height)continue;const a=i[o][t].rect;e.q.copy(s.bitmap,n,{x:0,y:0},{x:a.x+1,y:a.y+1},s.bitmap);}}this.image=n,this.positions=i;}}e.bm(\"GlyphAtlas\",i);class o{constructor(t){this.tileID=new e.O(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.inFlightDependencies=[],this.dependencySentinel=-1;}parse(t,o,s,n,a){this.status=\"parsing\",this.data=t,this.collisionBoxArray=new e.a3;const l=new e.bn(Object.keys(t.layers).sort()),c=new e.bo(this.tileID,this.promoteId);c.bucketLayerIDs=[];const h={},u={featureIndex:c,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:s},d=o.familiesBySource[this.source];for(const i in d){const o=t.layers[i];if(!o)continue;1===o.version&&e.w(`Vector tile source \"${this.source}\" layer \"${i}\" does not use vector tile spec v2 and therefore may have some rendering errors.`);const n=l.encode(i),a=[];for(let e=0;e<o.length;e++){const t=o.feature(e),r=c.getId(t,i);a.push({feature:t,id:r,index:e,sourceLayerIndex:n});}for(const t of d[i]){const i=t[0];i.source!==this.source&&e.w(`layer.source = ${i.source} does not equal this.source = ${this.source}`),i.minzoom&&this.zoom<Math.floor(i.minzoom)||i.maxzoom&&this.zoom>=i.maxzoom||\"none\"!==i.visibility&&(r(t,this.zoom,s),(h[i.id]=i.createBucket({index:c.bucketLayerIDs.length,layers:t,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:n,sourceID:this.source})).populate(a,u,this.tileID.canonical),c.bucketLayerIDs.push(t.map((e=>e.id))));}}let p,f,g,m;const y=e.aH(u.glyphDependencies,(e=>Object.keys(e).map(Number)));this.inFlightDependencies.forEach((e=>null==e?void 0:e.cancel())),this.inFlightDependencies=[];const v=++this.dependencySentinel;Object.keys(y).length?this.inFlightDependencies.push(n.send(\"getGlyphs\",{uid:this.uid,stacks:y,source:this.source,tileID:this.tileID,type:\"glyphs\"},((e,t)=>{v===this.dependencySentinel&&(p||(p=e,f=t,b.call(this)));}))):f={};const w=Object.keys(u.iconDependencies);w.length?this.inFlightDependencies.push(n.send(\"getImages\",{icons:w,source:this.source,tileID:this.tileID,type:\"icons\"},((e,t)=>{v===this.dependencySentinel&&(p||(p=e,g=t,b.call(this)));}))):g={};const x=Object.keys(u.patternDependencies);function b(){if(p)return a(p);if(f&&g&&m){const t=new i(f),o=new e.bp(g,m);for(const i in h){const n=h[i];n instanceof e.a4?(r(n.layers,this.zoom,s),e.bq({bucket:n,glyphMap:f,glyphPositions:t.positions,imageMap:g,imagePositions:o.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):n.hasPattern&&(n instanceof e.br||n instanceof e.bs||n instanceof e.bt)&&(r(n.layers,this.zoom,s),n.addFeatures(u,this.tileID.canonical,o.patternPositions));}this.status=\"done\",a(null,{buckets:Object.values(h).filter((e=>!e.isEmpty())),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,imageAtlas:o,glyphMap:this.returnDependencies?f:null,iconMap:this.returnDependencies?g:null,glyphPositions:this.returnDependencies?t.positions:null});}}x.length?this.inFlightDependencies.push(n.send(\"getImages\",{icons:x,source:this.source,tileID:this.tileID,type:\"patterns\"},((e,t)=>{v===this.dependencySentinel&&(p||(p=e,m=t,b.call(this)));}))):m={},b.call(this);}}function r(t,i,o){const r=new e.a8(i);for(const e of t)e.recalculate(r,o);}function s(t,i){const o=e.l(t.request,((o,r,s,n)=>{if(o)i(o);else if(r)try{const t=new e.bw.VectorTile(new e.bv(r));i(null,{vectorTile:t,rawData:r,cacheControl:s,expires:n});}catch(e){const o=new Uint8Array(r);let s=`Unable to parse the tile at ${t.request.url}, `;s+=31===o[0]&&139===o[1]?\"please make sure the data is not gzipped and that you have configured the relevant header in the server\":`got error: ${e.messge}`,i(new Error(s));}}));return ()=>{o.cancel(),i();}}class n{constructor(e,t,i,o){this.actor=e,this.layerIndex=t,this.availableImages=i,this.loadVectorData=o||s,this.fetching={},this.loading={},this.loaded={};}loadTile(t,i){const r=t.uid;this.loading||(this.loading={});const s=!!(t&&t.request&&t.request.collectResourceTiming)&&new e.bu(t.request),n=this.loading[r]=new o(t);n.abort=this.loadVectorData(t,((t,o)=>{if(delete this.loading[r],t||!o)return n.status=\"done\",this.loaded[r]=n,i(t);const a=o.rawData,l={};o.expires&&(l.expires=o.expires),o.cacheControl&&(l.cacheControl=o.cacheControl);const c={};if(s){const e=s.finish();e&&(c.resourceTiming=JSON.parse(JSON.stringify(e)));}n.vectorTile=o.vectorTile,n.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,((t,o)=>{if(delete this.fetching[r],t||!o)return i(t);i(null,e.e({rawTileData:a.slice(0)},o,l,c));})),this.loaded=this.loaded||{},this.loaded[r]=n,this.fetching[r]={rawTileData:a,cacheControl:l,resourceTiming:c};}));}reloadTile(t,i){const o=this.loaded,r=t.uid;if(o&&o[r]){const s=o[r];s.showCollisionBoxes=t.showCollisionBoxes,\"parsing\"===s.status?s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,((t,o)=>{if(t||!o)return i(t,o);let s;if(this.fetching[r]){const{rawTileData:t,cacheControl:i,resourceTiming:n}=this.fetching[r];delete this.fetching[r],s=e.e({rawTileData:t.slice(0)},o,i,n);}else s=o;i(null,s);})):\"done\"===s.status&&(s.vectorTile?s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,i):i());}}abortTile(e,t){const i=this.loading,o=e.uid;i&&i[o]&&i[o].abort&&(i[o].abort(),delete i[o]),t();}removeTile(e,t){const i=this.loaded,o=e.uid;i&&i[o]&&delete i[o],t();}}class a{constructor(){this.loaded={};}loadTile(t,i){return e._(this,void 0,void 0,(function*(){const{uid:o,encoding:r,rawImageData:s,redFactor:n,greenFactor:a,blueFactor:l,baseShift:c}=t,h=s.width+2,u=s.height+2,d=e.a(s)?new e.R({width:h,height:u},yield e.bx(s,-1,-1,h,u)):s,p=new e.by(o,d,r,n,a,l,c);this.loaded=this.loaded||{},this.loaded[o]=p,i(null,p);}))}removeTile(e){const t=this.loaded,i=e.uid;t&&t[i]&&delete t[i];}}function l(e,t){if(0!==e.length){c(e[0],t);for(var i=1;i<e.length;i++)c(e[i],!t);}}function c(e,t){for(var i=0,o=0,r=0,s=e.length,n=s-1;r<s;n=r++){var a=(e[r][0]-e[n][0])*(e[n][1]+e[r][1]),l=i+a;o+=Math.abs(i)>=Math.abs(a)?i-l+a:a-l+i,i=l;}i+o>=0!=!!t&&e.reverse();}var h=e.bz((function e(t,i){var o,r=t&&t.type;if(\"FeatureCollection\"===r)for(o=0;o<t.features.length;o++)e(t.features[o],i);else if(\"GeometryCollection\"===r)for(o=0;o<t.geometries.length;o++)e(t.geometries[o],i);else if(\"Feature\"===r)e(t.geometry,i);else if(\"Polygon\"===r)l(t.coordinates,i);else if(\"MultiPolygon\"===r)for(o=0;o<t.coordinates.length;o++)l(t.coordinates[o],i);return t}));const u=e.bw.VectorTileFeature.prototype.toGeoJSON;var d={exports:{}},p=e.bA,f=e.bw.VectorTileFeature,g=m;function m(e,t){this.options=t||{},this.features=e,this.length=e.length;}function y(e,t){this.id=\"number\"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096;}m.prototype.feature=function(e){return new y(this.features[e],this.options.extent)},y.prototype.loadGeometry=function(){var e=this.rawGeometry;this.geometry=[];for(var t=0;t<e.length;t++){for(var i=e[t],o=[],r=0;r<i.length;r++)o.push(new p(i[r][0],i[r][1]));this.geometry.push(o);}return this.geometry},y.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,i=-1/0,o=1/0,r=-1/0,s=0;s<e.length;s++)for(var n=e[s],a=0;a<n.length;a++){var l=n[a];t=Math.min(t,l.x),i=Math.max(i,l.x),o=Math.min(o,l.y),r=Math.max(r,l.y);}return [t,o,i,r]},y.prototype.toGeoJSON=f.prototype.toGeoJSON;var v=e.bB,w=g;function x(e){var t=new v;return function(e,t){for(var i in e.layers)t.writeMessage(3,b,e.layers[i]);}(e,t),t.finish()}function b(e,t){var i;t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||\"\"),t.writeVarintField(5,e.extent||4096);var o={keys:[],values:[],keycache:{},valuecache:{}};for(i=0;i<e.length;i++)o.feature=e.feature(i),t.writeMessage(2,S,o);var r=o.keys;for(i=0;i<r.length;i++)t.writeStringField(3,r[i]);var s=o.values;for(i=0;i<s.length;i++)t.writeMessage(4,_,s[i]);}function S(e,t){var i=e.feature;void 0!==i.id&&t.writeVarintField(1,i.id),t.writeMessage(2,M,e),t.writeVarintField(3,i.type),t.writeMessage(4,T,i);}function M(e,t){var i=e.feature,o=e.keys,r=e.values,s=e.keycache,n=e.valuecache;for(var a in i.properties){var l=i.properties[a],c=s[a];if(null!==l){void 0===c&&(o.push(a),s[a]=c=o.length-1),t.writeVarint(c);var h=typeof l;\"string\"!==h&&\"boolean\"!==h&&\"number\"!==h&&(l=JSON.stringify(l));var u=h+\":\"+l,d=n[u];void 0===d&&(r.push(l),n[u]=d=r.length-1),t.writeVarint(d);}}}function I(e,t){return (t<<3)+(7&e)}function P(e){return e<<1^e>>31}function T(e,t){for(var i=e.loadGeometry(),o=e.type,r=0,s=0,n=i.length,a=0;a<n;a++){var l=i[a],c=1;1===o&&(c=l.length),t.writeVarint(I(1,c));for(var h=3===o?l.length-1:l.length,u=0;u<h;u++){1===u&&1!==o&&t.writeVarint(I(2,h-1));var d=l[u].x-r,p=l[u].y-s;t.writeVarint(P(d)),t.writeVarint(P(p)),r+=d,s+=p;}3===o&&t.writeVarint(I(7,1));}}function _(e,t){var i=typeof e;\"string\"===i?t.writeStringField(1,e):\"boolean\"===i?t.writeBooleanField(7,e):\"number\"===i&&(e%1!=0?t.writeDoubleField(3,e):e<0?t.writeSVarintField(6,e):t.writeVarintField(5,e));}d.exports=x,d.exports.fromVectorTileJs=x,d.exports.fromGeojsonVt=function(e,t){t=t||{};var i={};for(var o in e)i[o]=new w(e[o].features,t),i[o].name=o,i[o].version=t.version,i[o].extent=t.extent;return x({layers:i})},d.exports.GeoJSONWrapper=w;var k=e.bz(d.exports);const D={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e},O=Math.fround||(C=new Float32Array(1),e=>(C[0]=+e,C[0]));var C;const L=3,F=5,z=6;class N{constructor(e){this.options=Object.assign(Object.create(D),e),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[];}load(e){const{log:t,minZoom:i,maxZoom:o}=this.options;t&&console.time(\"total time\");const r=`prepare ${e.length} points`;t&&console.time(r),this.points=e;const s=[];for(let t=0;t<e.length;t++){const i=e[t];if(!i.geometry)continue;const[o,r]=i.geometry.coordinates,n=O(Z(o)),a=O(G(r));s.push(n,a,1/0,t,-1,1),this.options.reduce&&s.push(0);}let n=this.trees[o+1]=this._createTree(s);t&&console.timeEnd(r);for(let e=o;e>=i;e--){const i=+Date.now();n=this.trees[e]=this._createTree(this._cluster(n,e)),t&&console.log(\"z%d: %d clusters in %dms\",e,n.numItems,+Date.now()-i);}return t&&console.timeEnd(\"total time\"),this}getClusters(e,t){let i=((e[0]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,e[1]));let r=180===e[2]?180:((e[2]+180)%360+360)%360-180;const s=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)i=-180,r=180;else if(i>r){const e=this.getClusters([i,o,180,s],t),n=this.getClusters([-180,o,r,s],t);return e.concat(n)}const n=this.trees[this._limitZoom(t)],a=n.range(Z(i),G(s),Z(r),G(o)),l=n.data,c=[];for(const e of a){const t=this.stride*e;c.push(l[t+F]>1?E(l,t,this.clusterProps):this.points[l[t+L]]);}return c}getChildren(e){const t=this._getOriginId(e),i=this._getOriginZoom(e),o=\"No cluster with the specified id.\",r=this.trees[i];if(!r)throw new Error(o);const s=r.data;if(t*this.stride>=s.length)throw new Error(o);const n=this.options.radius/(this.options.extent*Math.pow(2,i-1)),a=r.within(s[t*this.stride],s[t*this.stride+1],n),l=[];for(const t of a){const i=t*this.stride;s[i+4]===e&&l.push(s[i+F]>1?E(s,i,this.clusterProps):this.points[s[i+L]]);}if(0===l.length)throw new Error(o);return l}getLeaves(e,t,i){const o=[];return this._appendLeaves(o,e,t=t||10,i=i||0,0),o}getTile(e,t,i){const o=this.trees[this._limitZoom(e)],r=Math.pow(2,e),{extent:s,radius:n}=this.options,a=n/s,l=(i-a)/r,c=(i+1+a)/r,h={features:[]};return this._addTileFeatures(o.range((t-a)/r,l,(t+1+a)/r,c),o.data,t,i,r,h),0===t&&this._addTileFeatures(o.range(1-a/r,l,1,c),o.data,r,i,r,h),t===r-1&&this._addTileFeatures(o.range(0,l,a/r,c),o.data,-1,i,r,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const i=this.getChildren(e);if(t++,1!==i.length)break;e=i[0].properties.cluster_id;}return t}_appendLeaves(e,t,i,o,r){const s=this.getChildren(t);for(const t of s){const s=t.properties;if(s&&s.cluster?r+s.point_count<=o?r+=s.point_count:r=this._appendLeaves(e,s.cluster_id,i,o,r):r<o?r++:e.push(t),e.length===i)break}return r}_createTree(t){const i=new e.av(t.length/this.stride|0,this.options.nodeSize,Float32Array);for(let e=0;e<t.length;e+=this.stride)i.add(t[e],t[e+1]);return i.finish(),i.data=t,i}_addTileFeatures(e,t,i,o,r,s){for(const n of e){const e=n*this.stride,a=t[e+F]>1;let l,c,h;if(a)l=j(t,e,this.clusterProps),c=t[e],h=t[e+1];else {const i=this.points[t[e+L]];l=i.properties;const[o,r]=i.geometry.coordinates;c=Z(o),h=G(r);}const u={type:1,geometry:[[Math.round(this.options.extent*(c*r-i)),Math.round(this.options.extent*(h*r-o))]],tags:l};let d;d=a||this.options.generateId?t[e+L]:this.points[t[e+L]].id,void 0!==d&&(u.id=d),s.features.push(u);}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(Math.floor(+e),this.options.maxZoom+1))}_cluster(e,t){const{radius:i,extent:o,reduce:r,minPoints:s}=this.options,n=i/(o*Math.pow(2,t)),a=e.data,l=[],c=this.stride;for(let i=0;i<a.length;i+=c){if(a[i+2]<=t)continue;a[i+2]=t;const o=a[i],h=a[i+1],u=e.within(a[i],a[i+1],n),d=a[i+F];let p=d;for(const e of u){const i=e*c;a[i+2]>t&&(p+=a[i+F]);}if(p>d&&p>=s){let e,s=o*d,n=h*d,f=-1;const g=((i/c|0)<<5)+(t+1)+this.points.length;for(const o of u){const l=o*c;if(a[l+2]<=t)continue;a[l+2]=t;const h=a[l+F];s+=a[l]*h,n+=a[l+1]*h,a[l+4]=g,r&&(e||(e=this._map(a,i,!0),f=this.clusterProps.length,this.clusterProps.push(e)),r(e,this._map(a,l)));}a[i+4]=g,l.push(s/p,n/p,1/0,g,-1,p),r&&l.push(f);}else {for(let e=0;e<c;e++)l.push(a[i+e]);if(p>1)for(const e of u){const i=e*c;if(!(a[i+2]<=t)){a[i+2]=t;for(let e=0;e<c;e++)l.push(a[i+e]);}}}}return l}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return (e-this.points.length)%32}_map(e,t,i){if(e[t+F]>1){const o=this.clusterProps[e[t+z]];return i?Object.assign({},o):o}const o=this.points[e[t+L]].properties,r=this.options.map(o);return i&&r===o?Object.assign({},r):r}}function E(e,t,i){return {type:\"Feature\",id:e[t+L],properties:j(e,t,i),geometry:{type:\"Point\",coordinates:[(o=e[t],360*(o-.5)),J(e[t+1])]}};var o;}function j(e,t,i){const o=e[t+F],r=o>=1e4?`${Math.round(o/1e3)}k`:o>=1e3?Math.round(o/100)/10+\"k\":o,s=e[t+z],n=-1===s?{}:Object.assign({},i[s]);return Object.assign(n,{cluster:!0,cluster_id:e[t+L],point_count:o,point_count_abbreviated:r})}function Z(e){return e/360+.5}function G(e){const t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function J(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function Y(e,t,i,o){for(var r,s=o,n=i-t>>1,a=i-t,l=e[t],c=e[t+1],h=e[i],u=e[i+1],d=t+3;d<i;d+=3){var p=A(e[d],e[d+1],l,c,h,u);if(p>s)r=d,s=p;else if(p===s){var f=Math.abs(d-n);f<a&&(r=d,a=f);}}s>o&&(r-t>3&&Y(e,t,r,o),e[r+2]=s,i-r>3&&Y(e,r,i,o));}function A(e,t,i,o,r,s){var n=r-i,a=s-o;if(0!==n||0!==a){var l=((e-i)*n+(t-o)*a)/(n*n+a*a);l>1?(i=r,o=s):l>0&&(i+=n*l,o+=a*l);}return (n=e-i)*n+(a=t-o)*a}function V(e,t,i,o){var r={id:void 0===e?null:e,type:t,geometry:i,tags:o,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,i=e.type;if(\"Point\"===i||\"MultiPoint\"===i||\"LineString\"===i)B(e,t);else if(\"Polygon\"===i||\"MultiLineString\"===i)for(var o=0;o<t.length;o++)B(e,t[o]);else if(\"MultiPolygon\"===i)for(o=0;o<t.length;o++)for(var r=0;r<t[o].length;r++)B(e,t[o][r]);}(r),r}function B(e,t){for(var i=0;i<t.length;i+=3)e.minX=Math.min(e.minX,t[i]),e.minY=Math.min(e.minY,t[i+1]),e.maxX=Math.max(e.maxX,t[i]),e.maxY=Math.max(e.maxY,t[i+1]);}function X(e,t,i,o){if(t.geometry){var r=t.geometry.coordinates,s=t.geometry.type,n=Math.pow(i.tolerance/((1<<i.maxZoom)*i.extent),2),a=[],l=t.id;if(i.promoteId?l=t.properties[i.promoteId]:i.generateId&&(l=o||0),\"Point\"===s)q(r,a);else if(\"MultiPoint\"===s)for(var c=0;c<r.length;c++)q(r[c],a);else if(\"LineString\"===s)R(r,a,n,!1);else if(\"MultiLineString\"===s){if(i.lineMetrics){for(c=0;c<r.length;c++)R(r[c],a=[],n,!1),e.push(V(l,\"LineString\",a,t.properties));return}W(r,a,n,!1);}else if(\"Polygon\"===s)W(r,a,n,!0);else {if(\"MultiPolygon\"!==s){if(\"GeometryCollection\"===s){for(c=0;c<t.geometry.geometries.length;c++)X(e,{id:l,geometry:t.geometry.geometries[c],properties:t.properties},i,o);return}throw new Error(\"Input data is not a valid GeoJSON object.\")}for(c=0;c<r.length;c++){var h=[];W(r[c],h,n,!0),a.push(h);}}e.push(V(l,s,a,t.properties));}}function q(e,t){t.push($(e[0])),t.push(U(e[1])),t.push(0);}function R(e,t,i,o){for(var r,s,n=0,a=0;a<e.length;a++){var l=$(e[a][0]),c=U(e[a][1]);t.push(l),t.push(c),t.push(0),a>0&&(n+=o?(r*c-l*s)/2:Math.sqrt(Math.pow(l-r,2)+Math.pow(c-s,2))),r=l,s=c;}var h=t.length-3;t[2]=1,Y(t,0,h,i),t[h+2]=1,t.size=Math.abs(n),t.start=0,t.end=t.size;}function W(e,t,i,o){for(var r=0;r<e.length;r++){var s=[];R(e[r],s,i,o),t.push(s);}}function $(e){return e/360+.5}function U(e){var t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function H(e,t,i,o,r,s,n,a){if(o/=t,s>=(i/=t)&&n<o)return e;if(n<i||s>=o)return null;for(var l=[],c=0;c<e.length;c++){var h=e[c],u=h.geometry,d=h.type,p=0===r?h.minX:h.minY,f=0===r?h.maxX:h.maxY;if(p>=i&&f<o)l.push(h);else if(!(f<i||p>=o)){var g=[];if(\"Point\"===d||\"MultiPoint\"===d)K(u,g,i,o,r);else if(\"LineString\"===d)Q(u,g,i,o,r,!1,a.lineMetrics);else if(\"MultiLineString\"===d)te(u,g,i,o,r,!1);else if(\"Polygon\"===d)te(u,g,i,o,r,!0);else if(\"MultiPolygon\"===d)for(var m=0;m<u.length;m++){var y=[];te(u[m],y,i,o,r,!0),y.length&&g.push(y);}if(g.length){if(a.lineMetrics&&\"LineString\"===d){for(m=0;m<g.length;m++)l.push(V(h.id,d,g[m],h.tags));continue}\"LineString\"!==d&&\"MultiLineString\"!==d||(1===g.length?(d=\"LineString\",g=g[0]):d=\"MultiLineString\"),\"Point\"!==d&&\"MultiPoint\"!==d||(d=3===g.length?\"Point\":\"MultiPoint\"),l.push(V(h.id,d,g,h.tags));}}}return l.length?l:null}function K(e,t,i,o,r){for(var s=0;s<e.length;s+=3){var n=e[s+r];n>=i&&n<=o&&(t.push(e[s]),t.push(e[s+1]),t.push(e[s+2]));}}function Q(e,t,i,o,r,s,n){for(var a,l,c=ee(e),h=0===r?oe:re,u=e.start,d=0;d<e.length-3;d+=3){var p=e[d],f=e[d+1],g=e[d+2],m=e[d+3],y=e[d+4],v=0===r?p:f,w=0===r?m:y,x=!1;n&&(a=Math.sqrt(Math.pow(p-m,2)+Math.pow(f-y,2))),v<i?w>i&&(l=h(c,p,f,m,y,i),n&&(c.start=u+a*l)):v>o?w<o&&(l=h(c,p,f,m,y,o),n&&(c.start=u+a*l)):ie(c,p,f,g),w<i&&v>=i&&(l=h(c,p,f,m,y,i),x=!0),w>o&&v<=o&&(l=h(c,p,f,m,y,o),x=!0),!s&&x&&(n&&(c.end=u+a*l),t.push(c),c=ee(e)),n&&(u+=a);}var b=e.length-3;p=e[b],f=e[b+1],g=e[b+2],(v=0===r?p:f)>=i&&v<=o&&ie(c,p,f,g),b=c.length-3,s&&b>=3&&(c[b]!==c[0]||c[b+1]!==c[1])&&ie(c,c[0],c[1],c[2]),c.length&&t.push(c);}function ee(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function te(e,t,i,o,r,s){for(var n=0;n<e.length;n++)Q(e[n],t,i,o,r,s,!1);}function ie(e,t,i,o){e.push(t),e.push(i),e.push(o);}function oe(e,t,i,o,r,s){var n=(s-t)/(o-t);return e.push(s),e.push(i+(r-i)*n),e.push(1),n}function re(e,t,i,o,r,s){var n=(s-i)/(r-i);return e.push(t+(o-t)*n),e.push(s),e.push(1),n}function se(e,t){for(var i=[],o=0;o<e.length;o++){var r,s=e[o],n=s.type;if(\"Point\"===n||\"MultiPoint\"===n||\"LineString\"===n)r=ne(s.geometry,t);else if(\"MultiLineString\"===n||\"Polygon\"===n){r=[];for(var a=0;a<s.geometry.length;a++)r.push(ne(s.geometry[a],t));}else if(\"MultiPolygon\"===n)for(r=[],a=0;a<s.geometry.length;a++){for(var l=[],c=0;c<s.geometry[a].length;c++)l.push(ne(s.geometry[a][c],t));r.push(l);}i.push(V(s.id,n,r,s.tags));}return i}function ne(e,t){var i=[];i.size=e.size,void 0!==e.start&&(i.start=e.start,i.end=e.end);for(var o=0;o<e.length;o+=3)i.push(e[o]+t,e[o+1],e[o+2]);return i}function ae(e,t){if(e.transformed)return e;var i,o,r,s=1<<e.z,n=e.x,a=e.y;for(i=0;i<e.features.length;i++){var l=e.features[i],c=l.geometry,h=l.type;if(l.geometry=[],1===h)for(o=0;o<c.length;o+=2)l.geometry.push(le(c[o],c[o+1],t,s,n,a));else for(o=0;o<c.length;o++){var u=[];for(r=0;r<c[o].length;r+=2)u.push(le(c[o][r],c[o][r+1],t,s,n,a));l.geometry.push(u);}}return e.transformed=!0,e}function le(e,t,i,o,r,s){return [Math.round(i*(e*o-r)),Math.round(i*(t*o-s))]}function ce(e,t,i,o,r){for(var s=t===r.maxZoom?0:r.tolerance/((1<<t)*r.extent),n={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:i,y:o,z:t,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},a=0;a<e.length;a++){n.numFeatures++,he(n,e[a],s,r);var l=e[a].minX,c=e[a].minY,h=e[a].maxX,u=e[a].maxY;l<n.minX&&(n.minX=l),c<n.minY&&(n.minY=c),h>n.maxX&&(n.maxX=h),u>n.maxY&&(n.maxY=u);}return n}function he(e,t,i,o){var r=t.geometry,s=t.type,n=[];if(\"Point\"===s||\"MultiPoint\"===s)for(var a=0;a<r.length;a+=3)n.push(r[a]),n.push(r[a+1]),e.numPoints++,e.numSimplified++;else if(\"LineString\"===s)ue(n,r,e,i,!1,!1);else if(\"MultiLineString\"===s||\"Polygon\"===s)for(a=0;a<r.length;a++)ue(n,r[a],e,i,\"Polygon\"===s,0===a);else if(\"MultiPolygon\"===s)for(var l=0;l<r.length;l++){var c=r[l];for(a=0;a<c.length;a++)ue(n,c[a],e,i,!0,0===a);}if(n.length){var h=t.tags||null;if(\"LineString\"===s&&o.lineMetrics){for(var u in h={},t.tags)h[u]=t.tags[u];h.mapbox_clip_start=r.start/r.size,h.mapbox_clip_end=r.end/r.size;}var d={geometry:n,type:\"Polygon\"===s||\"MultiPolygon\"===s?3:\"LineString\"===s||\"MultiLineString\"===s?2:1,tags:h};null!==t.id&&(d.id=t.id),e.features.push(d);}}function ue(e,t,i,o,r,s){var n=o*o;if(o>0&&t.size<(r?n:o))i.numPoints+=t.length/3;else {for(var a=[],l=0;l<t.length;l+=3)(0===o||t[l+2]>n)&&(i.numSimplified++,a.push(t[l]),a.push(t[l+1])),i.numPoints++;r&&function(e,t){for(var i=0,o=0,r=e.length,s=r-2;o<r;s=o,o+=2)i+=(e[o]-e[s])*(e[o+1]+e[s+1]);if(i>0===t)for(o=0,r=e.length;o<r/2;o+=2){var n=e[o],a=e[o+1];e[o]=e[r-2-o],e[o+1]=e[r-1-o],e[r-2-o]=n,e[r-1-o]=a;}}(a,s),e.push(a);}}function de(e,t){var i=(t=this.options=function(e,t){for(var i in t)e[i]=t[i];return e}(Object.create(this.options),t)).debug;if(i&&console.time(\"preprocess data\"),t.maxZoom<0||t.maxZoom>24)throw new Error(\"maxZoom should be in the 0-24 range\");if(t.promoteId&&t.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var o=function(e,t){var i=[];if(\"FeatureCollection\"===e.type)for(var o=0;o<e.features.length;o++)X(i,e.features[o],t,o);else X(i,\"Feature\"===e.type?e:{geometry:e},t);return i}(e,t);this.tiles={},this.tileCoords=[],i&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",t.indexMaxZoom,t.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),o=function(e,t){var i=t.buffer/t.extent,o=e,r=H(e,1,-1-i,i,0,-1,2,t),s=H(e,1,1-i,2+i,0,-1,2,t);return (r||s)&&(o=H(e,1,-i,1+i,0,-1,2,t)||[],r&&(o=se(r,1).concat(o)),s&&(o=o.concat(se(s,-1)))),o}(o,t),o.length&&this.splitTile(o,0,0,0),i&&(o.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)));}function pe(e,t,i){return 32*((1<<e)*i+t)+e}function fe(e,t){return t?e.properties[t]:e.id}function ge(e,t){if(null==e)return !0;if(\"Feature\"===e.type)return null!=fe(e,t);if(\"FeatureCollection\"===e.type){const i=new Set;for(const o of e.features){const e=fe(o,t);if(null==e)return !1;if(i.has(e))return !1;i.add(e);}return !0}return !1}function me(e,t){const i=new Map;if(null==e);else if(\"Feature\"===e.type)i.set(fe(e,t),e);else for(const o of e.features)i.set(fe(o,t),o);return i}de.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},de.prototype.splitTile=function(e,t,i,o,r,s,n){for(var a=[e,t,i,o],l=this.options,c=l.debug;a.length;){o=a.pop(),i=a.pop(),t=a.pop(),e=a.pop();var h=1<<t,u=pe(t,i,o),d=this.tiles[u];if(!d&&(c>1&&console.time(\"creation\"),d=this.tiles[u]=ce(e,t,i,o,l),this.tileCoords.push({z:t,x:i,y:o}),c)){c>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,i,o,d.numFeatures,d.numPoints,d.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+t;this.stats[p]=(this.stats[p]||0)+1,this.total++;}if(d.source=e,r){if(t===l.maxZoom||t===r)continue;var f=1<<r-t;if(i!==Math.floor(s/f)||o!==Math.floor(n/f))continue}else if(t===l.indexMaxZoom||d.numPoints<=l.indexMaxPoints)continue;if(d.source=null,0!==e.length){c>1&&console.time(\"clipping\");var g,m,y,v,w,x,b=.5*l.buffer/l.extent,S=.5-b,M=.5+b,I=1+b;g=m=y=v=null,w=H(e,h,i-b,i+M,0,d.minX,d.maxX,l),x=H(e,h,i+S,i+I,0,d.minX,d.maxX,l),e=null,w&&(g=H(w,h,o-b,o+M,1,d.minY,d.maxY,l),m=H(w,h,o+S,o+I,1,d.minY,d.maxY,l),w=null),x&&(y=H(x,h,o-b,o+M,1,d.minY,d.maxY,l),v=H(x,h,o+S,o+I,1,d.minY,d.maxY,l),x=null),c>1&&console.timeEnd(\"clipping\"),a.push(g||[],t+1,2*i,2*o),a.push(m||[],t+1,2*i,2*o+1),a.push(y||[],t+1,2*i+1,2*o),a.push(v||[],t+1,2*i+1,2*o+1);}}},de.prototype.getTile=function(e,t,i){var o=this.options,r=o.extent,s=o.debug;if(e<0||e>24)return null;var n=1<<e,a=pe(e,t=(t%n+n)%n,i);if(this.tiles[a])return ae(this.tiles[a],r);s>1&&console.log(\"drilling down to z%d-%d-%d\",e,t,i);for(var l,c=e,h=t,u=i;!l&&c>0;)c--,h=Math.floor(h/2),u=Math.floor(u/2),l=this.tiles[pe(c,h,u)];return l&&l.source?(s>1&&console.log(\"found parent tile z%d-%d-%d\",c,h,u),s>1&&console.time(\"drilling down\"),this.splitTile(l.source,c,h,u,e,t,i),s>1&&console.timeEnd(\"drilling down\"),this.tiles[a]?ae(this.tiles[a],r):null):null};class ye extends n{constructor(t,i,o,r){super(t,i,o),this._dataUpdateable=new Map,this.loadGeoJSON=(t,i)=>{const{promoteId:o}=t;if(t.request)return e.f(t.request,((e,t,r,s)=>{this._dataUpdateable=ge(t,o)?me(t,o):void 0,i(e,t,r,s);}));if(\"string\"==typeof t.data)try{const e=JSON.parse(t.data);this._dataUpdateable=ge(e,o)?me(e,o):void 0,i(null,e);}catch(e){i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));}else t.dataDiff?this._dataUpdateable?(function(e,t,i){var o,r,s,n;if(t.removeAll&&e.clear(),t.remove)for(const i of t.remove)e.delete(i);if(t.add)for(const o of t.add){const t=fe(o,i);null!=t&&e.set(t,o);}if(t.update)for(const i of t.update){let t=e.get(i.id);if(null==t)continue;const a=!i.removeAllProperties&&((null===(o=i.removeProperties)||void 0===o?void 0:o.length)>0||(null===(r=i.addOrUpdateProperties)||void 0===r?void 0:r.length)>0);if((i.newGeometry||i.removeAllProperties||a)&&(t=Object.assign({},t),e.set(i.id,t),a&&(t.properties=Object.assign({},t.properties))),i.newGeometry&&(t.geometry=i.newGeometry),i.removeAllProperties)t.properties={};else if((null===(s=i.removeProperties)||void 0===s?void 0:s.length)>0)for(const e of i.removeProperties)Object.prototype.hasOwnProperty.call(t.properties,e)&&delete t.properties[e];if((null===(n=i.addOrUpdateProperties)||void 0===n?void 0:n.length)>0)for(const{key:e,value:o}of i.addOrUpdateProperties)t.properties[e]=o;}}(this._dataUpdateable,t.dataDiff,o),i(null,{type:\"FeatureCollection\",features:Array.from(this._dataUpdateable.values())})):i(new Error(`Cannot update existing geojson data in ${t.source}`)):i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));return {cancel:()=>{}}},this.loadVectorData=this.loadGeoJSONTile,r&&(this.loadGeoJSON=r);}loadGeoJSONTile(t,i){const o=t.tileID.canonical;if(!this._geoJSONIndex)return i(null,null);const r=this._geoJSONIndex.getTile(o.z,o.x,o.y);if(!r)return i(null,null);const s=new class{constructor(t){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=e.N,this.length=t.length,this._features=t;}feature(t){return new class{constructor(t){this._feature=t,this.extent=e.N,this.type=t.type,this.properties=t.tags,\"id\"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10));}loadGeometry(){if(1===this._feature.type){const t=[];for(const i of this._feature.geometry)t.push([new e.P(i[0],i[1])]);return t}{const t=[];for(const i of this._feature.geometry){const o=[];for(const t of i)o.push(new e.P(t[0],t[1]));t.push(o);}return t}}toGeoJSON(e,t,i){return u.call(this,e,t,i)}}(this._features[t])}}(r.features);let n=k(s);0===n.byteOffset&&n.byteLength===n.buffer.byteLength||(n=new Uint8Array(n)),i(null,{vectorTile:s,rawData:n.buffer});}loadData(t,i){var o;null===(o=this._pendingRequest)||void 0===o||o.cancel(),this._pendingCallback&&this._pendingCallback(null,{abandoned:!0});const r=!!(t&&t.request&&t.request.collectResourceTiming)&&new e.bu(t.request);this._pendingCallback=i,this._pendingRequest=this.loadGeoJSON(t,((o,s)=>{if(delete this._pendingCallback,delete this._pendingRequest,o||!s)return i(o);if(\"object\"!=typeof s)return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));{h(s,!0);try{if(t.filter){const i=e.bC(t.filter,{type:\"boolean\",\"property-type\":\"data-driven\",overridable:!1,transition:!1});if(\"error\"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(\", \"));const o=s.features.filter((e=>i.value.evaluate({zoom:0},e)));s={type:\"FeatureCollection\",features:o};}this._geoJSONIndex=t.cluster?new N(function({superclusterOptions:t,clusterProperties:i}){if(!i||!t)return t;const o={},r={},s={accumulated:null,zoom:0},n={properties:null},a=Object.keys(i);for(const t of a){const[s,n]=i[t],a=e.bC(n),l=e.bC(\"string\"==typeof s?[s,[\"accumulated\"],[\"get\",t]]:s);o[t]=a.value,r[t]=l.value;}return t.map=e=>{n.properties=e;const t={};for(const e of a)t[e]=o[e].evaluate(s,n);return t},t.reduce=(e,t)=>{n.properties=t;for(const t of a)s.accumulated=e[t],e[t]=r[t].evaluate(s,n);},t}(t)).load(s.features):function(e,t){return new de(e,t)}(s,t.geojsonVtOptions);}catch(o){return i(o)}this.loaded={};const n={};if(r){const e=r.finish();e&&(n.resourceTiming={},n.resourceTiming[t.source]=JSON.parse(JSON.stringify(e)));}i(null,n);}}));}reloadTile(e,t){const i=this.loaded;return i&&i[e.uid]?super.reloadTile(e,t):this.loadTile(e,t)}removeSource(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),t();}getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId));}catch(e){t(e);}}getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId));}catch(e){t(e);}}getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset));}catch(e){t(e);}}}class ve{constructor(t){this.self=t,this.actor=new e.C(t,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:n,geojson:ye},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(e,t)=>{if(this.workerSourceTypes[e])throw new Error(`Worker source with name \"${e}\" already registered.`);this.workerSourceTypes[e]=t;},this.self.registerRTLTextPlugin=t=>{if(e.bD.isParsed())throw new Error(\"RTL text plugin already registered.\");e.bD.applyArabicShaping=t.applyArabicShaping,e.bD.processBidirectionalText=t.processBidirectionalText,e.bD.processStyledBidirectionalText=t.processStyledBidirectionalText;};}setReferrer(e,t){this.referrer=t;}setImages(e,t,i){this.availableImages[e]=t;for(const i in this.workerSources[e]){const o=this.workerSources[e][i];for(const e in o)o[e].availableImages=t;}i();}setLayers(e,t,i){this.getLayerIndex(e).replace(t),i();}updateLayers(e,t,i){this.getLayerIndex(e).update(t.layers,t.removedIds),i();}loadTile(e,t,i){this.getWorkerSource(e,t.type,t.source).loadTile(t,i);}loadDEMTile(e,t,i){this.getDEMWorkerSource(e,t.source).loadTile(t,i);}reloadTile(e,t,i){this.getWorkerSource(e,t.type,t.source).reloadTile(t,i);}abortTile(e,t,i){this.getWorkerSource(e,t.type,t.source).abortTile(t,i);}removeTile(e,t,i){this.getWorkerSource(e,t.type,t.source).removeTile(t,i);}removeDEMTile(e,t){this.getDEMWorkerSource(e,t.source).removeTile(t);}removeSource(e,t,i){if(!this.workerSources[e]||!this.workerSources[e][t.type]||!this.workerSources[e][t.type][t.source])return;const o=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==o.removeSource?o.removeSource(t,i):i();}loadWorkerSource(e,t,i){try{this.self.importScripts(t.url),i();}catch(e){i(e.toString());}}syncRTLPluginState(t,i,o){try{e.bD.setState(i);const t=e.bD.getPluginURL();if(e.bD.isLoaded()&&!e.bD.isParsed()&&null!=t){this.self.importScripts(t);const i=e.bD.isParsed();o(i?void 0:new Error(`RTL Text Plugin failed to import scripts from ${t}`),i);}}catch(e){o(e.toString());}}getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}getLayerIndex(e){let i=this.layerIndexes[e];return i||(i=this.layerIndexes[e]=new t),i}getWorkerSource(e,t,i){return this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),this.workerSources[e][t][i]||(this.workerSources[e][t][i]=new this.workerSourceTypes[t]({send:(t,i,o)=>{this.actor.send(t,i,o,e);}},this.getLayerIndex(e),this.getAvailableImages(e))),this.workerSources[e][t][i]}getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new a),this.demWorkerSources[e][t]}}return e.i()&&(self.worker=new ve(self)),ve}));\n\ndefine([\"./shared\"],(function(t){\"use strict\";var e=\"3.6.2\";class i{static testProp(t){if(!i.docStyle)return t[0];for(let e=0;e<t.length;e++)if(t[e]in i.docStyle)return t[e];return t[0]}static create(t,e,i){const s=window.document.createElement(t);return void 0!==e&&(s.className=e),i&&i.appendChild(s),s}static createNS(t,e){return window.document.createElementNS(t,e)}static disableDrag(){i.docStyle&&i.selectProp&&(i.userSelect=i.docStyle[i.selectProp],i.docStyle[i.selectProp]=\"none\");}static enableDrag(){i.docStyle&&i.selectProp&&(i.docStyle[i.selectProp]=i.userSelect);}static setTransform(t,e){t.style[i.transformProp]=e;}static addEventListener(t,e,i,s={}){t.addEventListener(e,i,\"passive\"in s?s:s.capture);}static removeEventListener(t,e,i,s={}){t.removeEventListener(e,i,\"passive\"in s?s:s.capture);}static suppressClickInternal(t){t.preventDefault(),t.stopPropagation(),window.removeEventListener(\"click\",i.suppressClickInternal,!0);}static suppressClick(){window.addEventListener(\"click\",i.suppressClickInternal,!0),window.setTimeout((()=>{window.removeEventListener(\"click\",i.suppressClickInternal,!0);}),0);}static mousePos(e,i){const s=e.getBoundingClientRect();return new t.P(i.clientX-s.left-e.clientLeft,i.clientY-s.top-e.clientTop)}static touchPos(e,i){const s=e.getBoundingClientRect(),a=[];for(let o=0;o<i.length;o++)a.push(new t.P(i[o].clientX-s.left-e.clientLeft,i[o].clientY-s.top-e.clientTop));return a}static mouseButton(t){return t.button}static remove(t){t.parentNode&&t.parentNode.removeChild(t);}}i.docStyle=\"undefined\"!=typeof window&&window.document&&window.document.documentElement.style,i.selectProp=i.testProp([\"userSelect\",\"MozUserSelect\",\"WebkitUserSelect\",\"msUserSelect\"]),i.transformProp=i.testProp([\"transform\",\"WebkitTransform\"]);const s={supported:!1,testSupport:function(t){!r&&o&&(n?l(t):a=t);}};let a,o,r=!1,n=!1;function l(t){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,o),t.isContextLost())return;s.supported=!0;}catch(t){}t.deleteTexture(e),r=!0;}var h,c;\"undefined\"!=typeof document&&(o=document.createElement(\"img\"),o.onload=function(){a&&l(a),a=null,n=!0;},o.onerror=function(){r=!0,a=null;},o.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\"),function(e){let i,a,o,r;e.resetRequestQueue=()=>{i=[],a=0,o=0,r={};},e.addThrottleControl=t=>{const e=o++;return r[e]=t,e},e.removeThrottleControl=t=>{delete r[t],h();},e.getImage=(t,e,o=!0)=>{s.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\");const r={requestParameters:t,supportImageRefresh:o,callback:e,cancelled:!1,completed:!1,cancel:()=>{r.completed||r.cancelled||(r.cancelled=!0,r.innerRequest&&(r.innerRequest.cancel(),a--),h());}};return i.push(r),h(),r};const n=e=>{const{requestParameters:i,supportImageRefresh:s,callback:a}=e;return t.e(i,{type:\"image\"}),(!1!==s||t.i()||t.g(i.url)||i.headers&&!Object.keys(i.headers).reduce(((t,e)=>t&&\"accept\"===e),!0)?t.m:c)(i,((t,i,s,o)=>{l(e,a,t,i,s,o);}))},l=(e,i,s,o,r,n)=>{s?i(s):o instanceof HTMLImageElement||t.a(o)?i(null,o):o&&((e,i)=>{\"function\"==typeof createImageBitmap?t.b(e,i):t.d(e,i);})(o,((t,e)=>{null!=t?i(t):null!=e&&i(null,e,{cacheControl:r,expires:n});})),e.cancelled||(e.completed=!0,a--,h());},h=()=>{const e=(()=>{const t=Object.keys(r);let e=!1;if(t.length>0)for(const i of t)if(e=r[i](),e)break;return e})()?t.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:t.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let t=a;t<e&&i.length>0;t++){const e=i.shift();if(e.cancelled){t--;continue}const s=n(e);a++,e.innerRequest=s;}},c=(e,i)=>{const s=new Image,a=e.url;let o=!1;const r=e.credentials;return r&&\"include\"===r?s.crossOrigin=\"use-credentials\":(r&&\"same-origin\"===r||!t.s(a))&&(s.crossOrigin=\"anonymous\"),s.fetchPriority=\"high\",s.onload=()=>{i(null,s),s.onerror=s.onload=null;},s.onerror=()=>{o||i(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\")),s.onerror=s.onload=null;},s.src=a,{cancel:()=>{o=!0,s.src=\"\";}}};}(h||(h={})),h.resetRequestQueue(),function(t){t.Glyphs=\"Glyphs\",t.Image=\"Image\",t.Source=\"Source\",t.SpriteImage=\"SpriteImage\",t.SpriteJSON=\"SpriteJSON\",t.Style=\"Style\",t.Tile=\"Tile\",t.Unknown=\"Unknown\";}(c||(c={}));class u{constructor(t){this._transformRequestFn=t;}transformRequest(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}}normalizeSpriteURL(t,e,i){const s=function(t){const e=t.match(d);if(!e)throw new Error(`Unable to parse URL \"${t}\"`);return {protocol:e[1],authority:e[2],path:e[3]||\"/\",params:e[4]?e[4].split(\"&\"):[]}}(t);return s.path+=`${e}${i}`,function(t){const e=t.params.length?`?${t.params.join(\"&\")}`:\"\";return `${t.protocol}://${t.authority}${t.path}${e}`}(s)}setTransformRequest(t){this._transformRequestFn=t;}}const d=/^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;function _(e){var i=new t.A(3);return i[0]=e[0],i[1]=e[1],i[2]=e[2],i}var p,m=function(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t[2]=e[2]-i[2],t};p=new t.A(3),t.A!=Float32Array&&(p[0]=0,p[1]=0,p[2]=0);var f=function(t){var e=t[0],i=t[1];return e*e+i*i};function g(t){const e=[];if(\"string\"==typeof t)e.push({id:\"default\",url:t});else if(t&&t.length>0){const i=[];for(const{id:s,url:a}of t){const t=`${s}${a}`;-1===i.indexOf(t)&&(i.push(t),e.push({id:s,url:a}));}}return e}function v(e,i,s,a,o){if(a)return void e(a);if(o!==Object.values(i).length||o!==Object.values(s).length)return;const r={};for(const e in i){r[e]={};const a=t.h.getImageCanvasContext(s[e]),o=i[e];for(const t in o){const{width:i,height:s,x:n,y:l,sdf:h,pixelRatio:c,stretchX:u,stretchY:d,content:_}=o[t];r[e][t]={data:null,pixelRatio:c,sdf:h,stretchX:u,stretchY:d,content:_,spriteData:{width:i,height:s,x:n,y:l,context:a}};}}e(null,r);}!function(){var e=new t.A(2);t.A!=Float32Array&&(e[0]=0,e[1]=0);}();class x{constructor(t,e,i,s){this.context=t,this.format=i,this.texture=t.gl.createTexture(),this.update(e,s);}update(e,i,s){const{width:a,height:o}=e,r=!(this.size&&this.size[0]===a&&this.size[1]===o||s),{context:n}=this,{gl:l}=n;if(this.useMipmap=Boolean(i&&i.useMipmap),l.bindTexture(l.TEXTURE_2D,this.texture),n.pixelStoreUnpackFlipY.set(!1),n.pixelStoreUnpack.set(1),n.pixelStoreUnpackPremultiplyAlpha.set(this.format===l.RGBA&&(!i||!1!==i.premultiply)),r)this.size=[a,o],e instanceof HTMLImageElement||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement||e instanceof ImageData||t.a(e)?l.texImage2D(l.TEXTURE_2D,0,this.format,this.format,l.UNSIGNED_BYTE,e):l.texImage2D(l.TEXTURE_2D,0,this.format,a,o,0,this.format,l.UNSIGNED_BYTE,e.data);else {const{x:i,y:r}=s||{x:0,y:0};e instanceof HTMLImageElement||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement||e instanceof ImageData||t.a(e)?l.texSubImage2D(l.TEXTURE_2D,0,i,r,l.RGBA,l.UNSIGNED_BYTE,e):l.texSubImage2D(l.TEXTURE_2D,0,i,r,a,o,l.RGBA,l.UNSIGNED_BYTE,e.data);}this.useMipmap&&this.isSizePowerOfTwo()&&l.generateMipmap(l.TEXTURE_2D);}bind(t,e,i){const{context:s}=this,{gl:a}=s;a.bindTexture(a.TEXTURE_2D,this.texture),i!==a.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(i=a.LINEAR),t!==this.filter&&(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,t),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,i||t),this.filter=t),e!==this.wrap&&(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,e),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,e),this.wrap=e);}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null;}}function y(t){const{userImage:e}=t;return !!(e&&e.render&&e.render())&&(t.data.replace(new Uint8Array(e.data.buffer)),!0)}class b extends t.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0;}isLoaded(){return this.loaded}setLoaded(t){if(this.loaded!==t&&(this.loaded=t,t)){for(const{ids:t,callback:e}of this.requestors)this._notify(t,e);this.requestors=[];}}getImage(e){const i=this.images[e];if(i&&!i.data&&i.spriteData){const e=i.spriteData;i.data=new t.R({width:e.width,height:e.height},e.context.getImageData(e.x,e.y,e.width,e.height).data),i.spriteData=null;}return i}addImage(t,e){if(this.images[t])throw new Error(`Image id ${t} already exist, use updateImage instead`);this._validate(t,e)&&(this.images[t]=e);}_validate(e,i){let s=!0;const a=i.data||i.spriteData;return this._validateStretch(i.stretchX,a&&a.width)||(this.fire(new t.j(new Error(`Image \"${e}\" has invalid \"stretchX\" value`))),s=!1),this._validateStretch(i.stretchY,a&&a.height)||(this.fire(new t.j(new Error(`Image \"${e}\" has invalid \"stretchY\" value`))),s=!1),this._validateContent(i.content,i)||(this.fire(new t.j(new Error(`Image \"${e}\" has invalid \"content\" value`))),s=!1),s}_validateStretch(t,e){if(!t)return !0;let i=0;for(const s of t){if(s[0]<i||s[1]<s[0]||e<s[1])return !1;i=s[1];}return !0}_validateContent(t,e){if(!t)return !0;if(4!==t.length)return !1;const i=e.spriteData,s=i&&i.width||e.data.width,a=i&&i.height||e.data.height;return !(t[0]<0||s<t[0]||t[1]<0||a<t[1]||t[2]<0||s<t[2]||t[3]<0||a<t[3]||t[2]<t[0]||t[3]<t[1])}updateImage(t,e,i=!0){const s=this.getImage(t);if(i&&(s.data.width!==e.data.width||s.data.height!==e.data.height))throw new Error(`size mismatch between old image (${s.data.width}x${s.data.height}) and new image (${e.data.width}x${e.data.height}).`);e.version=s.version+1,this.images[t]=e,this.updatedImages[t]=!0;}removeImage(t){const e=this.images[t];delete this.images[t],delete this.patterns[t],e.userImage&&e.userImage.onRemove&&e.userImage.onRemove();}listImages(){return Object.keys(this.images)}getImages(t,e){let i=!0;if(!this.isLoaded())for(const e of t)this.images[e]||(i=!1);this.isLoaded()||i?this._notify(t,e):this.requestors.push({ids:t,callback:e});}_notify(e,i){const s={};for(const i of e){let e=this.getImage(i);e||(this.fire(new t.k(\"styleimagemissing\",{id:i})),e=this.getImage(i)),e?s[i]={data:e.data.clone(),pixelRatio:e.pixelRatio,sdf:e.sdf,version:e.version,stretchX:e.stretchX,stretchY:e.stretchY,content:e.content,hasRenderCallback:Boolean(e.userImage&&e.userImage.render)}:t.w(`Image \"${i}\" could not be loaded. Please make sure you have added the image with map.addImage() or a \"sprite\" property in your style. You can provide missing images by listening for the \"styleimagemissing\" map event.`);}i(null,s);}getPixelSize(){const{width:t,height:e}=this.atlasImage;return {width:t,height:e}}getPattern(e){const i=this.patterns[e],s=this.getImage(e);if(!s)return null;if(i&&i.position.version===s.version)return i.position;if(i)i.position.version=s.version;else {const i={w:s.data.width+2,h:s.data.height+2,x:0,y:0},a=new t.I(i,s);this.patterns[e]={bin:i,position:a};}return this._updatePatternAtlas(),this.patterns[e].position}bind(t){const e=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new x(t,this.atlasImage,e.RGBA),this.atlasTexture.bind(e.LINEAR,e.CLAMP_TO_EDGE);}_updatePatternAtlas(){const e=[];for(const t in this.patterns)e.push(this.patterns[t].bin);const{w:i,h:s}=t.p(e),a=this.atlasImage;a.resize({width:i||1,height:s||1});for(const e in this.patterns){const{bin:i}=this.patterns[e],s=i.x+1,o=i.y+1,r=this.getImage(e).data,n=r.width,l=r.height;t.R.copy(r,a,{x:0,y:0},{x:s,y:o},{width:n,height:l}),t.R.copy(r,a,{x:0,y:l-1},{x:s,y:o-1},{width:n,height:1}),t.R.copy(r,a,{x:0,y:0},{x:s,y:o+l},{width:n,height:1}),t.R.copy(r,a,{x:n-1,y:0},{x:s-1,y:o},{width:1,height:l}),t.R.copy(r,a,{x:0,y:0},{x:s+n,y:o},{width:1,height:l});}this.dirty=!0;}beginFrame(){this.callbackDispatchedThisFrame={};}dispatchRenderCallbacks(e){for(const i of e){if(this.callbackDispatchedThisFrame[i])continue;this.callbackDispatchedThisFrame[i]=!0;const e=this.getImage(i);e||t.w(`Image with ID: \"${i}\" was not found`),y(e)&&this.updateImage(i,e);}}}const w=1e20;function T(t,e,i,s,a,o,r,n,l){for(let h=e;h<e+s;h++)I(t,i*o+h,o,a,r,n,l);for(let h=i;h<i+a;h++)I(t,h*o+e,1,s,r,n,l);}function I(t,e,i,s,a,o,r){o[0]=0,r[0]=-w,r[1]=w,a[0]=t[e];for(let n=1,l=0,h=0;n<s;n++){a[n]=t[e+n*i];const s=n*n;do{const t=o[l];h=(a[n]-a[t]+s-t*t)/(n-t)/2;}while(h<=r[l]&&--l>-1);l++,o[l]=n,r[l]=h,r[l+1]=w;}for(let n=0,l=0;n<s;n++){for(;r[l+1]<n;)l++;const s=o[l],h=n-s;t[e+n*i]=a[s]+h*h;}}class E{constructor(t,e){this.requestManager=t,this.localIdeographFontFamily=e,this.entries={};}setURL(t){this.url=t;}getGlyphs(e,i){const s=[];for(const t in e)for(const i of e[t])s.push({stack:t,id:i});t.o(s,(({stack:t,id:e},i)=>{let s=this.entries[t];s||(s=this.entries[t]={glyphs:{},requests:{},ranges:{}});let a=s.glyphs[e];if(void 0!==a)return void i(null,{stack:t,id:e,glyph:a});if(a=this._tinySDF(s,t,e),a)return s.glyphs[e]=a,void i(null,{stack:t,id:e,glyph:a});const o=Math.floor(e/256);if(256*o>65535)return void i(new Error(\"glyphs > 65535 not supported\"));if(s.ranges[o])return void i(null,{stack:t,id:e,glyph:a});if(!this.url)return void i(new Error(\"glyphsUrl is not set\"));let r=s.requests[o];r||(r=s.requests[o]=[],E.loadGlyphRange(t,o,this.url,this.requestManager,((t,e)=>{if(e){for(const t in e)this._doesCharSupportLocalGlyph(+t)||(s.glyphs[+t]=e[+t]);s.ranges[o]=!0;}for(const i of r)i(t,e);delete s.requests[o];}))),r.push(((s,a)=>{s?i(s):a&&i(null,{stack:t,id:e,glyph:a[e]||null});}));}),((t,e)=>{if(t)i(t);else if(e){const t={};for(const{stack:i,id:s,glyph:a}of e)(t[i]||(t[i]={}))[s]=a&&{id:a.id,bitmap:a.bitmap.clone(),metrics:a.metrics};i(null,t);}}));}_doesCharSupportLocalGlyph(e){return !!this.localIdeographFontFamily&&(t.u[\"CJK Unified Ideographs\"](e)||t.u[\"Hangul Syllables\"](e)||t.u.Hiragana(e)||t.u.Katakana(e))}_tinySDF(e,i,s){const a=this.localIdeographFontFamily;if(!a)return;if(!this._doesCharSupportLocalGlyph(s))return;let o=e.tinySDF;if(!o){let t=\"400\";/bold/i.test(i)?t=\"900\":/medium/i.test(i)?t=\"500\":/light/i.test(i)&&(t=\"200\"),o=e.tinySDF=new E.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:a,fontWeight:t});}const r=o.draw(String.fromCharCode(s));return {id:s,bitmap:new t.q({width:r.width||60,height:r.height||60},r.data),metrics:{width:r.glyphWidth/2||24,height:r.glyphHeight/2||24,left:r.glyphLeft/2+.5||0,top:r.glyphTop/2-27.5||-8,advance:r.glyphAdvance/2||24,isDoubleResolution:!0}}}}E.loadGlyphRange=function(e,i,s,a,o){const r=256*i,n=r+255,l=a.transformRequest(s.replace(\"{fontstack}\",e).replace(\"{range}\",`${r}-${n}`),c.Glyphs);t.l(l,((e,i)=>{if(e)o(e);else if(i){const e={};for(const s of t.n(i))e[s.id]=s;o(null,e);}}));},E.TinySDF=class{constructor({fontSize:t=24,buffer:e=3,radius:i=8,cutoff:s=.25,fontFamily:a=\"sans-serif\",fontWeight:o=\"normal\",fontStyle:r=\"normal\"}={}){this.buffer=e,this.cutoff=s,this.radius=i;const n=this.size=t+4*e,l=this._createCanvas(n),h=this.ctx=l.getContext(\"2d\",{willReadFrequently:!0});h.font=`${r} ${o} ${t}px ${a}`,h.textBaseline=\"alphabetic\",h.textAlign=\"left\",h.fillStyle=\"black\",this.gridOuter=new Float64Array(n*n),this.gridInner=new Float64Array(n*n),this.f=new Float64Array(n),this.z=new Float64Array(n+1),this.v=new Uint16Array(n);}_createCanvas(t){const e=document.createElement(\"canvas\");return e.width=e.height=t,e}draw(t){const{width:e,actualBoundingBoxAscent:i,actualBoundingBoxDescent:s,actualBoundingBoxLeft:a,actualBoundingBoxRight:o}=this.ctx.measureText(t),r=Math.ceil(i),n=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(o-a))),l=Math.min(this.size-this.buffer,r+Math.ceil(s)),h=n+2*this.buffer,c=l+2*this.buffer,u=Math.max(h*c,0),d=new Uint8ClampedArray(u),_={data:d,width:h,height:c,glyphWidth:n,glyphHeight:l,glyphTop:r,glyphLeft:0,glyphAdvance:e};if(0===n||0===l)return _;const{ctx:p,buffer:m,gridInner:f,gridOuter:g}=this;p.clearRect(m,m,n,l),p.fillText(t,m,m+r);const v=p.getImageData(m,m,n,l);g.fill(w,0,u),f.fill(0,0,u);for(let t=0;t<l;t++)for(let e=0;e<n;e++){const i=v.data[4*(t*n+e)+3]/255;if(0===i)continue;const s=(t+m)*h+e+m;if(1===i)g[s]=0,f[s]=w;else {const t=.5-i;g[s]=t>0?t*t:0,f[s]=t<0?t*t:0;}}T(g,0,0,h,c,h,this.f,this.v,this.z),T(f,m,m,n,l,h,this.f,this.v,this.z);for(let t=0;t<u;t++){const e=Math.sqrt(g[t])-Math.sqrt(f[t]);d[t]=Math.round(255-255*(e/this.radius+this.cutoff));}return _}};class S{constructor(){this.specification=t.v.light.position;}possiblyEvaluate(e,i){return t.z(e.expression.evaluate(i))}interpolate(e,i,s){return {x:t.B.number(e.x,i.x,s),y:t.B.number(e.y,i.y,s),z:t.B.number(e.z,i.z,s)}}}let C;class P extends t.E{constructor(e){super(),C=C||new t.r({anchor:new t.D(t.v.light.anchor),position:new S,color:new t.D(t.v.light.color),intensity:new t.D(t.v.light.intensity)}),this._transitionable=new t.T(C),this.setLight(e),this._transitioning=this._transitionable.untransitioned();}getLight(){return this._transitionable.serialize()}setLight(e,i={}){if(!this._validate(t.t,e,i))for(const t in e){const i=e[t];t.endsWith(\"-transition\")?this._transitionable.setTransition(t.slice(0,-11),i):this._transitionable.setValue(t,i);}}updateTransitions(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(t){this.properties=this._transitioning.possiblyEvaluate(t);}_validate(e,i,s){return (!s||!1!==s.validate)&&t.x(this,e.call(t.y,t.e({value:i,style:{glyphs:!0,sprite:!0},styleSpec:t.v})))}}class D{constructor(t,e){this.width=t,this.height=e,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={};}getDash(t,e){const i=t.join(\",\")+String(e);return this.dashEntry[i]||(this.dashEntry[i]=this.addDash(t,e)),this.dashEntry[i]}getDashRanges(t,e,i){const s=[];let a=t.length%2==1?-t[t.length-1]*i:0,o=t[0]*i,r=!0;s.push({left:a,right:o,isDash:r,zeroLength:0===t[0]});let n=t[0];for(let e=1;e<t.length;e++){r=!r;const l=t[e];a=n*i,n+=l,o=n*i,s.push({left:a,right:o,isDash:r,zeroLength:0===l});}return s}addRoundDash(t,e,i){const s=e/2;for(let e=-i;e<=i;e++){const a=this.width*(this.nextRow+i+e);let o=0,r=t[o];for(let n=0;n<this.width;n++){n/r.right>1&&(r=t[++o]);const l=Math.abs(n-r.left),h=Math.abs(n-r.right),c=Math.min(l,h);let u;const d=e/i*(s+1);if(r.isDash){const t=s-Math.abs(d);u=Math.sqrt(c*c+t*t);}else u=s-Math.sqrt(c*c+d*d);this.data[a+n]=Math.max(0,Math.min(255,u+128));}}}addRegularDash(t){for(let e=t.length-1;e>=0;--e){const i=t[e],s=t[e+1];i.zeroLength?t.splice(e,1):s&&s.isDash===i.isDash&&(s.left=i.left,t.splice(e,1));}const e=t[0],i=t[t.length-1];e.isDash===i.isDash&&(e.left=i.left-this.width,i.right=e.right+this.width);const s=this.width*this.nextRow;let a=0,o=t[a];for(let e=0;e<this.width;e++){e/o.right>1&&(o=t[++a]);const i=Math.abs(e-o.left),r=Math.abs(e-o.right),n=Math.min(i,r);this.data[s+e]=Math.max(0,Math.min(255,(o.isDash?n:-n)+128));}}addDash(e,i){const s=i?7:0,a=2*s+1;if(this.nextRow+a>this.height)return t.w(\"LineAtlas out of space\"),null;let o=0;for(let t=0;t<e.length;t++)o+=e[t];if(0!==o){const t=this.width/o,a=this.getDashRanges(e,this.width,t);i?this.addRoundDash(a,t,s):this.addRegularDash(a);}const r={y:(this.nextRow+s+.5)/this.height,height:2*s/this.height,width:o};return this.nextRow+=a,this.dirty=!0,r}bind(t){const e=t.gl;this.texture?(e.bindTexture(e.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,e.texSubImage2D(e.TEXTURE_2D,0,0,0,this.width,this.height,e.ALPHA,e.UNSIGNED_BYTE,this.data))):(this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.ALPHA,this.width,this.height,0,e.ALPHA,e.UNSIGNED_BYTE,this.data));}}class M{constructor(e,i,s){this.workerPool=e,this.actors=[],this.currentActor=0,this.id=s;const a=this.workerPool.acquire(s);for(let e=0;e<a.length;e++){const o=new t.C(a[e],i,s);o.name=`Worker ${e}`,this.actors.push(o);}if(!this.actors.length)throw new Error(\"No actors found\")}broadcast(e,i,s){t.o(this.actors,((t,s)=>{t.send(e,i,s);}),s=s||function(){});}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(t=!0){this.actors.forEach((t=>{t.remove();})),this.actors=[],t&&this.workerPool.release(this.id);}}function z(e,i,s){const a=function(i,a){if(i)return s(i);if(a){const i=t.F(t.e(a,e),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);a.vector_layers&&(i.vectorLayers=a.vector_layers,i.vectorLayerIds=i.vectorLayers.map((t=>t.id))),s(null,i);}};return e.url?t.f(i.transformRequest(e.url,c.Source),a):t.h.frame((()=>a(null,e)))}class L{constructor(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):Array.isArray(t)&&(4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1])));}setNorthEast(e){return this._ne=e instanceof t.L?new t.L(e.lng,e.lat):t.L.convert(e),this}setSouthWest(e){return this._sw=e instanceof t.L?new t.L(e.lng,e.lat):t.L.convert(e),this}extend(e){const i=this._sw,s=this._ne;let a,o;if(e instanceof t.L)a=e,o=e;else {if(!(e instanceof L))return Array.isArray(e)?4===e.length||e.every(Array.isArray)?this.extend(L.convert(e)):this.extend(t.L.convert(e)):e&&(\"lng\"in e||\"lon\"in e)&&\"lat\"in e?this.extend(t.L.convert(e)):this;if(a=e._sw,o=e._ne,!a||!o)return this}return i||s?(i.lng=Math.min(a.lng,i.lng),i.lat=Math.min(a.lat,i.lat),s.lng=Math.max(o.lng,s.lng),s.lat=Math.max(o.lat,s.lat)):(this._sw=new t.L(a.lng,a.lat),this._ne=new t.L(o.lng,o.lat)),this}getCenter(){return new t.L((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new t.L(this.getWest(),this.getNorth())}getSouthEast(){return new t.L(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return [this._sw.toArray(),this._ne.toArray()]}toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return !(this._sw&&this._ne)}contains(e){const{lng:i,lat:s}=t.L.convert(e);let a=this._sw.lng<=i&&i<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=i&&i>=this._ne.lng),this._sw.lat<=s&&s<=this._ne.lat&&a}static convert(t){return t instanceof L?t:t?new L(t):t}static fromLngLat(e,i=0){const s=360*i/40075017,a=s/Math.cos(Math.PI/180*e.lat);return new L(new t.L(e.lng-a,e.lat-s),new t.L(e.lng+a,e.lat+s))}}class A{constructor(t,e,i){this.bounds=L.convert(this.validateBounds(t)),this.minzoom=e||0,this.maxzoom=i||24;}validateBounds(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]}contains(e){const i=Math.pow(2,e.z),s=Math.floor(t.G(this.bounds.getWest())*i),a=Math.floor(t.H(this.bounds.getNorth())*i),o=Math.ceil(t.G(this.bounds.getEast())*i),r=Math.ceil(t.H(this.bounds.getSouth())*i);return e.x>=s&&e.x<o&&e.y>=a&&e.y<r}}class R extends t.E{constructor(e,i,s,a){if(super(),this.load=()=>{this._loaded=!1,this.fire(new t.k(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=z(this._options,this.map._requestManager,((e,i)=>{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),e?this.fire(new t.j(e)):i&&(t.e(this,i),i.bounds&&(this.tileBounds=new A(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new t.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));},this.serialize=()=>t.e({},this._options),this.id=e,this.dispatcher=s,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,t.e(this,t.F(i,[\"url\",\"scheme\",\"tileSize\",\"promoteId\"])),this._options=t.e({type:\"vector\"},i),this._collectResourceTiming=i.collectResourceTiming,512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(a);}loaded(){return this._loaded}hasTile(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)}onAdd(t){this.map=t,this.load();}setSourceProperty(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.load();}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t;})),this}setUrl(t){return this.setSourceProperty((()=>{this.url=t,this._options.url=t;})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}loadTile(t,e){const i=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),s={request:this.map._requestManager.transformRequest(i,c.Tile),uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function a(i,s){return delete t.request,t.aborted?e(null):i&&404!==i.status?e(i):(s&&s.resourceTiming&&(t.resourceTiming=s.resourceTiming),this.map._refreshExpiredTiles&&s&&t.setExpiryData(s),t.loadVectorData(s,this.map.painter),e(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}s.request.collectResourceTiming=this._collectResourceTiming,t.actor&&\"expired\"!==t.state?\"loading\"===t.state?t.reloadCallback=e:t.request=t.actor.send(\"reloadTile\",s,a.bind(this)):(t.actor=this.dispatcher.getActor(),t.request=t.actor.send(\"loadTile\",s,a.bind(this)));}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.actor&&t.actor.send(\"abortTile\",{uid:t.uid,type:this.type,source:this.id},void 0);}unloadTile(t){t.unloadVectorData(),t.actor&&t.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},void 0);}hasTransition(){return !1}}class k extends t.E{constructor(e,i,s,a){super(),this.id=e,this.dispatcher=s,this.setEventedParent(a),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=t.e({type:\"raster\"},i),t.e(this,t.F(i,[\"url\",\"scheme\",\"tileSize\"]));}load(){this._loaded=!1,this.fire(new t.k(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=z(this._options,this.map._requestManager,((e,i)=>{this._tileJSONRequest=null,this._loaded=!0,e?this.fire(new t.j(e)):i&&(t.e(this,i),i.bounds&&(this.tileBounds=new A(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new t.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));}loaded(){return this._loaded}onAdd(t){this.map=t,this.load();}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}setSourceProperty(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.load();}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t;})),this}serialize(){return t.e({},this._options)}hasTile(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t,e){const i=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);t.request=h.getImage(this.map._requestManager.transformRequest(i,c.Tile),((i,s,a)=>{if(delete t.request,t.aborted)t.state=\"unloaded\",e(null);else if(i)t.state=\"errored\",e(i);else if(s){this.map._refreshExpiredTiles&&a&&t.setExpiryData(a);const i=this.map.painter.context,o=i.gl;t.texture=this.map.painter.getTileTexture(s.width),t.texture?t.texture.update(s,{useMipmap:!0}):(t.texture=new x(i,s,o.RGBA,{useMipmap:!0}),t.texture.bind(o.LINEAR,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),i.extTextureFilterAnisotropic&&o.texParameterf(o.TEXTURE_2D,i.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,i.extTextureFilterAnisotropicMax)),t.state=\"loaded\",e(null);}}),this.map._refreshExpiredTiles);}abortTile(t,e){t.request&&(t.request.cancel(),delete t.request),e();}unloadTile(t,e){t.texture&&this.map.painter.saveTileTexture(t.texture),e();}hasTransition(){return !1}}class F extends k{constructor(e,i,s,a){super(e,i,s,a),this.type=\"raster-dem\",this.maxzoom=22,this._options=t.e({type:\"raster-dem\"},i),this.encoding=i.encoding||\"mapbox\",this.redFactor=i.redFactor,this.greenFactor=i.greenFactor,this.blueFactor=i.blueFactor,this.baseShift=i.baseShift;}loadTile(e,i){const s=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),a=this.map._requestManager.transformRequest(s,c.Tile);function o(t,s){t&&(e.state=\"errored\",i(t)),s&&(e.dem=s,e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0,e.state=\"loaded\",i(null));}e.neighboringTiles=this._getNeighboringTiles(e.tileID),e.request=h.getImage(a,((s,a,r)=>t._(this,void 0,void 0,(function*(){if(delete e.request,e.aborted)e.state=\"unloaded\",i(null);else if(s)e.state=\"errored\",i(s);else if(a){this.map._refreshExpiredTiles&&e.setExpiryData(r);const i=t.a(a)&&t.J()?a:yield function(e){return t._(this,void 0,void 0,(function*(){if(\"undefined\"!=typeof VideoFrame&&t.K()){const i=e.width+2,s=e.height+2;try{return new t.R({width:i,height:s},yield t.M(e,-1,-1,i,s))}catch(t){}}return t.h.getImageData(e,1)}))}(a),s={uid:e.uid,coord:e.tileID,source:this.id,rawImageData:i,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};e.actor&&\"expired\"!==e.state||(e.actor=this.dispatcher.getActor(),e.actor.send(\"loadDEMTile\",s,o));}}))),this.map._refreshExpiredTiles);}_getNeighboringTiles(e){const i=e.canonical,s=Math.pow(2,i.z),a=(i.x-1+s)%s,o=0===i.x?e.wrap-1:e.wrap,r=(i.x+1+s)%s,n=i.x+1===s?e.wrap+1:e.wrap,l={};return l[new t.O(e.overscaledZ,o,i.z,a,i.y).key]={backfilled:!1},l[new t.O(e.overscaledZ,n,i.z,r,i.y).key]={backfilled:!1},i.y>0&&(l[new t.O(e.overscaledZ,o,i.z,a,i.y-1).key]={backfilled:!1},l[new t.O(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.O(e.overscaledZ,n,i.z,r,i.y-1).key]={backfilled:!1}),i.y+1<s&&(l[new t.O(e.overscaledZ,o,i.z,a,i.y+1).key]={backfilled:!1},l[new t.O(e.overscaledZ,e.wrap,i.z,i.x,i.y+1).key]={backfilled:!1},l[new t.O(e.overscaledZ,n,i.z,r,i.y+1).key]={backfilled:!1}),l}unloadTile(t){t.demTexture&&this.map.painter.saveTileTexture(t.demTexture),t.fbo&&(t.fbo.destroy(),delete t.fbo),t.dem&&delete t.dem,delete t.neighboringTiles,t.state=\"unloaded\",t.actor&&t.actor.send(\"removeDEMTile\",{uid:t.uid,source:this.id});}}class B extends t.E{constructor(e,i,s,a){super(),this.load=()=>{this._updateWorkerData();},this.serialize=()=>t.e({},this._options,{type:this.type,data:this._data}),this.id=e,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._pendingLoads=0,this.actor=s.getActor(),this.setEventedParent(a),this._data=i.data,this._options=t.e({},i),this._collectResourceTiming=i.collectResourceTiming,void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId;const o=t.N/this.tileSize;this.workerOptions=t.e({source:this.id,cluster:i.cluster||!1,geojsonVtOptions:{buffer:(void 0!==i.buffer?i.buffer:128)*o,tolerance:(void 0!==i.tolerance?i.tolerance:.375)*o,extent:t.N,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1},superclusterOptions:{maxZoom:void 0!==i.clusterMaxZoom?i.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,i.clusterMinPoints||2),extent:t.N,radius:(i.clusterRadius||50)*o,log:!1,generateId:i.generateId||!1},clusterProperties:i.clusterProperties,filter:i.filter},i.workerOptions),\"string\"==typeof this.promoteId&&(this.workerOptions.promoteId=this.promoteId);}onAdd(t){this.map=t,this.load();}setData(t){return this._data=t,this._updateWorkerData(),this}updateData(t){return this._updateWorkerData(t),this}setClusterOptions(t){return this.workerOptions.cluster=t.cluster,t&&(void 0!==t.clusterRadius&&(this.workerOptions.superclusterOptions.radius=t.clusterRadius),void 0!==t.clusterMaxZoom&&(this.workerOptions.superclusterOptions.maxZoom=t.clusterMaxZoom)),this._updateWorkerData(),this}getClusterExpansionZoom(t,e){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e),this}getClusterChildren(t,e){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e),this}getClusterLeaves(t,e,i,s){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:i},s),this}_updateWorkerData(e){const i=t.e({},this.workerOptions);e?i.dataDiff=e:\"string\"==typeof this._data?(i.request=this.map._requestManager.transformRequest(t.h.resolveURL(this._data),c.Source),i.request.collectResourceTiming=this._collectResourceTiming):i.data=JSON.stringify(this._data),this._pendingLoads++,this.fire(new t.k(\"dataloading\",{dataType:\"source\"})),this.actor.send(`${this.type}.loadData`,i,((e,i)=>{if(this._pendingLoads--,this._removed||i&&i.abandoned)return void this.fire(new t.k(\"dataabort\",{dataType:\"source\"}));let s=null;if(i&&i.resourceTiming&&i.resourceTiming[this.id]&&(s=i.resourceTiming[this.id].slice(0)),e)return void this.fire(new t.j(e));const a={dataType:\"source\"};this._collectResourceTiming&&s&&s.length>0&&t.e(a,{resourceTiming:s}),this.fire(new t.k(\"data\",Object.assign(Object.assign({},a),{sourceDataType:\"metadata\"}))),this.fire(new t.k(\"data\",Object.assign(Object.assign({},a),{sourceDataType:\"content\"})));}));}loaded(){return 0===this._pendingLoads}loadTile(t,e){const i=t.actor?\"reloadTile\":\"loadTile\";t.actor=this.actor;const s={type:this.type,uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};t.request=this.actor.send(i,s,((s,a)=>(delete t.request,t.unloadVectorData(),t.aborted?e(null):s?e(s):(t.loadVectorData(a,this.map.painter,\"reloadTile\"===i),e(null)))));}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0;}unloadTile(t){t.unloadVectorData(),this.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id});}onRemove(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id});}hasTransition(){return !1}}var O=t.Q([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]);class N extends t.E{constructor(e,i,s,a){super(),this.load=(e,i)=>{this._loaded=!1,this.fire(new t.k(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,this._request=h.getImage(this.map._requestManager.transformRequest(this.url,c.Image),((s,a)=>{this._request=null,this._loaded=!0,s?this.fire(new t.j(s)):a&&(this.image=a,e&&(this.coordinates=e),i&&i(),this._finishLoading());}));},this.prepare=()=>{if(0===Object.keys(this.tiles).length||!this.image)return;const e=this.map.painter.context,i=e.gl;this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.S.simpleSegment(0,0,4,2)),this.texture||(this.texture=new x(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let s=!1;for(const t in this.tiles){const e=this.tiles[t];\"loaded\"!==e.state&&(e.state=\"loaded\",e.texture=this.texture,s=!0);}s&&this.fire(new t.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}));},this.serialize=()=>({type:\"image\",url:this.options.url,coordinates:this.coordinates}),this.id=e,this.dispatcher=s,this.coordinates=i.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(a),this.options=i;}loaded(){return this._loaded}updateImage(t){return t.url?(this._request&&(this._request.cancel(),this._request=null),this.options.url=t.url,this.load(t.coordinates,(()=>{this.texture=null;})),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.k(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})));}onAdd(t){this.map=t,this.load();}onRemove(){this._request&&(this._request.cancel(),this._request=null);}setCoordinates(e){this.coordinates=e;const i=e.map(t.U.fromLngLat);this.tileID=function(e){let i=1/0,s=1/0,a=-1/0,o=-1/0;for(const t of e)i=Math.min(i,t.x),s=Math.min(s,t.y),a=Math.max(a,t.x),o=Math.max(o,t.y);const r=Math.max(a-i,o-s),n=Math.max(0,Math.floor(-Math.log(r)/Math.LN2)),l=Math.pow(2,n);return new t.W(n,Math.floor((i+a)/2*l),Math.floor((s+o)/2*l))}(i),this.minzoom=this.maxzoom=this.tileID.z;const s=i.map((t=>this.tileID.getTilePoint(t)._round()));return this._boundsArray=new t.V,this._boundsArray.emplaceBack(s[0].x,s[0].y,0,0),this._boundsArray.emplaceBack(s[1].x,s[1].y,t.N,0),this._boundsArray.emplaceBack(s[3].x,s[3].y,0,t.N),this._boundsArray.emplaceBack(s[2].x,s[2].y,t.N,t.N),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new t.k(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this}loadTile(t,e){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},e(null)):(t.state=\"errored\",e(null));}hasTransition(){return !1}}class U extends N{constructor(e,i,s,a){super(e,i,s,a),this.load=()=>{this._loaded=!1;const e=this.options;this.urls=[];for(const t of e.urls)this.urls.push(this.map._requestManager.transformRequest(t,c.Source).url);t.X(this.urls,((e,i)=>{this._loaded=!0,e?this.fire(new t.j(e)):i&&(this.video=i,this.video.loop=!0,this.video.addEventListener(\"playing\",(()=>{this.map.triggerRepaint();})),this.map&&this.video.play(),this._finishLoading());}));},this.prepare=()=>{if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const e=this.map.painter.context,i=e.gl;this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.S.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new x(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let s=!1;for(const t in this.tiles){const e=this.tiles[t];\"loaded\"!==e.state&&(e.state=\"loaded\",e.texture=this.texture,s=!0);}s&&this.fire(new t.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}));},this.serialize=()=>({type:\"video\",urls:this.urls,coordinates:this.coordinates}),this.roundZoom=!0,this.type=\"video\",this.options=i;}pause(){this.video&&this.video.pause();}play(){this.video&&this.video.play();}seek(e){if(this.video){const i=this.video.seekable;e<i.start(0)||e>i.end(0)?this.fire(new t.j(new t.Y(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=e;}}getVideo(){return this.video}onAdd(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));}hasTransition(){return this.video&&!this.video.paused}}class Z extends N{constructor(e,i,s,a){super(e,i,s,a),this.load=()=>{this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.j(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());},this.prepare=()=>{let e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context,s=i.gl;this.boundsBuffer||(this.boundsBuffer=i.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.S.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new x(i,this.canvas,s.RGBA,{premultiply:!0});let a=!1;for(const t in this.tiles){const e=this.tiles[t];\"loaded\"!==e.state&&(e.state=\"loaded\",e.texture=this.texture,a=!0);}a&&this.fire(new t.k(\"data\",{dataType:\"source\",sourceDataType:\"idle\",sourceId:this.id}));},this.serialize=()=>({type:\"canvas\",coordinates:this.coordinates}),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((t=>!Array.isArray(t)||2!==t.length||t.some((t=>\"number\"!=typeof t))))||this.fire(new t.j(new t.Y(`sources.${e}`,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.j(new t.Y(`sources.${e}`,null,'missing required property \"coordinates\"'))),i.animate&&\"boolean\"!=typeof i.animate&&this.fire(new t.j(new t.Y(`sources.${e}`,null,'optional \"animate\" property must be a boolean value'))),i.canvas?\"string\"==typeof i.canvas||i.canvas instanceof HTMLCanvasElement||this.fire(new t.j(new t.Y(`sources.${e}`,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.j(new t.Y(`sources.${e}`,null,'missing required property \"canvas\"'))),this.options=i,this.animate=void 0===i.animate||i.animate;}getCanvas(){return this.canvas}onAdd(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play();}onRemove(){this.pause();}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const t of [this.canvas.width,this.canvas.height])if(isNaN(t)||t<=0)return !0;return !1}}const G={},j=t=>{switch(t){case\"geojson\":return B;case\"image\":return N;case\"raster\":return k;case\"raster-dem\":return F;case\"vector\":return R;case\"video\":return U;case\"canvas\":return Z}return G[t]};function V(e,i){const s=t.Z();return t.$(s,s,[1,1,0]),t.a0(s,s,[.5*e.width,.5*e.height,1]),t.a1(s,s,e.calculatePosMatrix(i.toUnwrapped()))}function q(t,e,i,s,a,o){const r=function(t,e,i){if(t)for(const s of t){const t=e[s];if(t&&t.source===i&&\"fill-extrusion\"===t.type)return !0}else for(const t in e){const s=e[t];if(s.source===i&&\"fill-extrusion\"===s.type)return !0}return !1}(a&&a.layers,e,t.id),n=o.maxPitchScaleFactor(),l=t.tilesIn(s,n,r);l.sort($);const h=[];for(const s of l)h.push({wrappedTileID:s.tileID.wrapped().key,queryResults:s.tile.queryRenderedFeatures(e,i,t._state,s.queryGeometry,s.cameraQueryGeometry,s.scale,a,o,n,V(t.transform,s.tileID))});const c=function(t){const e={},i={};for(const s of t){const t=s.queryResults,a=s.wrappedTileID,o=i[a]=i[a]||{};for(const i in t){const s=t[i],a=o[i]=o[i]||{},r=e[i]=e[i]||[];for(const t of s)a[t.featureIndex]||(a[t.featureIndex]=!0,r.push(t));}}return e}(h);for(const e in c)c[e].forEach((e=>{const i=e.feature,s=t.getFeatureState(i.layer[\"source-layer\"],i.id);i.source=i.layer.source,i.layer[\"source-layer\"]&&(i.sourceLayer=i.layer[\"source-layer\"]),i.state=s;}));return c}function $(t,e){const i=t.tileID,s=e.tileID;return i.overscaledZ-s.overscaledZ||i.canonical.y-s.canonical.y||i.wrap-s.wrap||i.canonical.x-s.canonical.x}class W{constructor(e,i){this.timeAdded=0,this.fadeEndTime=0,this.tileID=e,this.uid=t.a2(),this.uses=0,this.tileSize=i,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state=\"loading\";}registerFadeDuration(t){const e=t+this.timeAdded;e<this.fadeEndTime||(this.fadeEndTime=e);}wasRequested(){return \"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state}clearTextures(t){this.demTexture&&t.saveTileTexture(this.demTexture),this.demTexture=null;}loadVectorData(e,i,s){if(this.hasData()&&this.unloadVectorData(),this.state=\"loaded\",e){e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestFeatureIndex.rawTileData=e.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(t,e){const i={};if(!e)return i;for(const s of t){const t=s.layerIds.map((t=>e.getLayer(t))).filter(Boolean);if(0!==t.length){s.layers=t,s.stateDependentLayerIds&&(s.stateDependentLayers=s.stateDependentLayerIds.map((e=>t.filter((t=>t.id===e))[0])));for(const e of t)i[e.id]=s;}}return i}(e.buckets,i.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.a4){if(this.hasSymbolBuckets=!0,!s)break;i.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.a4&&i.hasRTLText){this.hasRTLText=!0,t.a5();break}}this.queryPadding=0;for(const t in this.buckets){const e=this.buckets[t];this.queryPadding=Math.max(this.queryPadding,i.style.getLayer(t).queryRadius(e));}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage);}else this.collisionBoxArray=new t.a3;}unloadVectorData(){for(const t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state=\"unloaded\";}getBucket(t){return this.buckets[t.id]}upload(t){for(const e in this.buckets){const i=this.buckets[e];i.uploadPending()&&i.upload(t);}const e=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new x(t,this.imageAtlas.image,e.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new x(t,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null);}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture);}queryRenderedFeatures(t,e,i,s,a,o,r,n,l,h){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:s,cameraQueryGeometry:a,scale:o,tileSize:this.tileSize,pixelPosMatrix:h,transform:n,params:r,queryPadding:this.queryPadding*l},t,e,i):{}}querySourceFeatures(e,i){const s=this.latestFeatureIndex;if(!s||!s.rawTileData)return;const a=s.loadVTLayers(),o=i&&i.sourceLayer?i.sourceLayer:\"\",r=a._geojsonTileLayer||a[o];if(!r)return;const n=t.a6(i&&i.filter),{z:l,x:h,y:c}=this.tileID.canonical,u={z:l,x:h,y:c};for(let i=0;i<r.length;i++){const a=r.feature(i);if(n.needGeometry){const e=t.a7(a,!0);if(!n.filter(new t.a8(this.tileID.overscaledZ),e,this.tileID.canonical))continue}else if(!n.filter(new t.a8(this.tileID.overscaledZ),a))continue;const d=s.getId(a,o),_=new t.a9(a,l,h,c,d);_.tile=u,e.push(_);}}hasData(){return \"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state}patternsLoaded(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(e){const i=this.expirationTime;if(e.cacheControl){const i=t.aa(e.cacheControl);i[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*i[\"max-age\"]);}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){const t=Date.now();let e=!1;if(this.expirationTime>t)e=!1;else if(i)if(this.expirationTime<i)e=!0;else {const s=this.expirationTime-i;s?this.expirationTime=t+Math.max(s,3e4):e=!0;}else e=!0;e?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0;}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)}setFeatureState(t,e){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||0===Object.keys(t).length)return;const i=this.latestFeatureIndex.loadVTLayers();for(const s in this.buckets){if(!e.style.hasLayer(s))continue;const a=this.buckets[s],o=a.layers[0].sourceLayer||\"_geojsonTileLayer\",r=i[o],n=t[o];if(!r||!n||0===Object.keys(n).length)continue;a.update(n,r,this.imageAtlas&&this.imageAtlas.patternPositions||{});const l=e&&e.style&&e.style.getLayer(s);l&&(this.queryPadding=Math.max(this.queryPadding,l.queryRadius(a)));}}holdingForFade(){return void 0!==this.symbolFadeHoldUntil}symbolFadeFinished(){return !this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<t.h.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0;}setHoldDuration(e){this.symbolFadeHoldUntil=t.h.now()+e;}setDependencies(t,e){const i={};for(const t of e)i[t]=!0;this.dependencies[t]=i;}hasDependency(t,e){for(const i of t){const t=this.dependencies[i];if(t)for(const i of e)if(t[i])return !0}return !1}}class H{constructor(t,e){this.max=t,this.onRemove=e,this.reset();}reset(){for(const t in this.data)for(const e of this.data[t])e.timeout&&clearTimeout(e.timeout),this.onRemove(e.value);return this.data={},this.order=[],this}add(t,e,i){const s=t.wrapped().key;void 0===this.data[s]&&(this.data[s]=[]);const a={value:e,timeout:void 0};if(void 0!==i&&(a.timeout=setTimeout((()=>{this.remove(t,a);}),i)),this.data[s].push(a),this.order.push(s),this.order.length>this.max){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value}getByKey(t){const e=this.data[t];return e?e[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,e){if(!this.has(t))return this;const i=t.wrapped().key,s=void 0===e?0:this.data[i].indexOf(e),a=this.data[i][s];return this.data[i].splice(s,1),a.timeout&&clearTimeout(a.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(a.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}filter(t){const e=[];for(const i in this.data)for(const s of this.data[i])t(s.value)||e.push(s);for(const t of e)this.remove(t.value.tileID,t);}}class X{constructor(){this.state={},this.stateChanges={},this.deletedStates={};}updateState(e,i,s){const a=String(i);if(this.stateChanges[e]=this.stateChanges[e]||{},this.stateChanges[e][a]=this.stateChanges[e][a]||{},t.e(this.stateChanges[e][a],s),null===this.deletedStates[e]){this.deletedStates[e]={};for(const t in this.state[e])t!==a&&(this.deletedStates[e][t]=null);}else if(this.deletedStates[e]&&null===this.deletedStates[e][a]){this.deletedStates[e][a]={};for(const t in this.state[e][a])s[t]||(this.deletedStates[e][a][t]=null);}else for(const t in s)this.deletedStates[e]&&this.deletedStates[e][a]&&null===this.deletedStates[e][a][t]&&delete this.deletedStates[e][a][t];}removeFeatureState(t,e,i){if(null===this.deletedStates[t])return;const s=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},i&&void 0!==e)null!==this.deletedStates[t][s]&&(this.deletedStates[t][s]=this.deletedStates[t][s]||{},this.deletedStates[t][s][i]=null);else if(void 0!==e)if(this.stateChanges[t]&&this.stateChanges[t][s])for(i in this.deletedStates[t][s]={},this.stateChanges[t][s])this.deletedStates[t][s][i]=null;else this.deletedStates[t][s]=null;else this.deletedStates[t]=null;}getState(e,i){const s=String(i),a=t.e({},(this.state[e]||{})[s],(this.stateChanges[e]||{})[s]);if(null===this.deletedStates[e])return {};if(this.deletedStates[e]){const t=this.deletedStates[e][i];if(null===t)return {};for(const e in t)delete a[e];}return a}initializeTileState(t,e){t.setFeatureState(this.state,e);}coalesceChanges(e,i){const s={};for(const e in this.stateChanges){this.state[e]=this.state[e]||{};const i={};for(const s in this.stateChanges[e])this.state[e][s]||(this.state[e][s]={}),t.e(this.state[e][s],this.stateChanges[e][s]),i[s]=this.state[e][s];s[e]=i;}for(const e in this.deletedStates){this.state[e]=this.state[e]||{};const i={};if(null===this.deletedStates[e])for(const t in this.state[e])i[t]={},this.state[e][t]={};else for(const t in this.deletedStates[e]){if(null===this.deletedStates[e][t])this.state[e][t]={};else for(const i of Object.keys(this.deletedStates[e][t]))delete this.state[e][t][i];i[t]=this.state[e][t];}s[e]=s[e]||{},t.e(s[e],i);}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(s).length)for(const t in e)e[t].setFeatureState(s,i);}}class K extends t.E{constructor(t,e,i){super(),this.id=t,this.dispatcher=i,this.on(\"data\",(t=>{\"source\"===t.dataType&&\"metadata\"===t.sourceDataType&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&\"source\"===t.dataType&&\"content\"===t.sourceDataType&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0);})),this.on(\"dataloading\",(()=>{this._sourceErrored=!1;})),this.on(\"error\",(()=>{this._sourceErrored=this._source.loaded();})),this._source=((t,e,i,s)=>{const a=new(j(e.type))(t,e,i,s);if(a.id!==t)throw new Error(`Expected Source id to be ${t} instead of ${a.id}`);return a})(t,e,i,this),this._tiles={},this._cache=new H(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new X,this._didEmitContent=!1,this._updated=!1;}onAdd(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._maxTileCacheZoomLevels=t?t._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(t);}onRemove(t){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(t);}loaded(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;if(!(void 0===this.used&&void 0===this.usedForTerrain||this.used||this.usedForTerrain))return !0;if(!this._updated)return !1;for(const t in this._tiles){const e=this._tiles[t];if(\"loaded\"!==e.state&&\"errored\"!==e.state)return !1}return !0}getSource(){return this._source}pause(){this._paused=!0;}resume(){if(!this._paused)return;const t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform,this.terrain);}_loadTile(t,e){return this._source.loadTile(t,e)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t,(()=>{}))}_abortTile(e){this._source.abortTile&&this._source.abortTile(e,(()=>{})),this._source.fire(new t.k(\"dataabort\",{tile:e,coord:e.tileID,dataType:\"source\"}));}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const e in this._tiles){const i=this._tiles[e];i.upload(t),i.prepare(this.map.style.imageManager);}}getIds(){return Object.values(this._tiles).map((t=>t.tileID)).sort(Q).map((t=>t.key))}getRenderableIds(e){const i=[];for(const t in this._tiles)this._isIdRenderable(t,e)&&i.push(this._tiles[t]);return e?i.sort(((e,i)=>{const s=e.tileID,a=i.tileID,o=new t.P(s.canonical.x,s.canonical.y)._rotate(this.transform.angle),r=new t.P(a.canonical.x,a.canonical.y)._rotate(this.transform.angle);return s.overscaledZ-a.overscaledZ||r.y-o.y||r.x-o.x})).map((t=>t.tileID.key)):i.map((t=>t.tileID)).sort(Q).map((t=>t.key))}hasRenderableParent(t){const e=this.findLoadedParent(t,0);return !!e&&this._isIdRenderable(e.tileID.key)}_isIdRenderable(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else {this._cache.reset();for(const t in this._tiles)\"errored\"!==this._tiles[t].state&&this._reloadTile(t,\"reloading\");}}_reloadTile(t,e){const i=this._tiles[t];i&&(\"loading\"!==i.state&&(i.state=e),this._loadTile(i,this._tileLoaded.bind(this,i,t,e)));}_tileLoaded(e,i,s,a){if(a)return e.state=\"errored\",void(404!==a.status?this._source.fire(new t.j(a,{tile:e})):this.update(this.transform,this.terrain));e.timeAdded=t.h.now(),\"expired\"===s&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),\"raster-dem\"===this.getSource().type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),e.aborted||this._source.fire(new t.k(\"data\",{dataType:\"source\",tile:e,coord:e.tileID}));}_backfillDEM(t){const e=this.getRenderableIds();for(let s=0;s<e.length;s++){const a=e[s];if(t.neighboringTiles&&t.neighboringTiles[a]){const e=this.getTileByID(a);i(t,e),i(e,t);}}function i(t,e){t.needsHillshadePrepare=!0,t.needsTerrainPrepare=!0;let i=e.tileID.canonical.x-t.tileID.canonical.x;const s=e.tileID.canonical.y-t.tileID.canonical.y,a=Math.pow(2,t.tileID.canonical.z),o=e.tileID.key;0===i&&0===s||Math.abs(s)>1||(Math.abs(i)>1&&(1===Math.abs(i+a)?i+=a:1===Math.abs(i-a)&&(i-=a)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,i,s),t.neighboringTiles&&t.neighboringTiles[o]&&(t.neighboringTiles[o].backfilled=!0)));}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,e,i,s){for(const a in this._tiles){let o=this._tiles[a];if(s[a]||!o.hasData()||o.tileID.overscaledZ<=e||o.tileID.overscaledZ>i)continue;let r=o.tileID;for(;o&&o.tileID.overscaledZ>e+1;){const t=o.tileID.scaledTo(o.tileID.overscaledZ-1);o=this._tiles[t.key],o&&o.hasData()&&(r=t);}let n=r;for(;n.overscaledZ>e;)if(n=n.scaledTo(n.overscaledZ-1),t[n.key]){s[r.key]=r;break}}}findLoadedParent(t,e){if(t.key in this._loadedParentTiles){const i=this._loadedParentTiles[t.key];return i&&i.tileID.overscaledZ>=e?i:null}for(let i=t.overscaledZ-1;i>=e;i--){const e=t.scaledTo(i),s=this._getLoadedTile(e);if(s)return s}}_getLoadedTile(t){const e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)}updateCacheSize(e){const i=Math.ceil(e.width/this._source.tileSize)+1,s=Math.ceil(e.height/this._source.tileSize)+1,a=Math.floor(i*s*(null===this._maxTileCacheZoomLevels?t.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),o=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,a):a;this._cache.setMaxSize(o);}handleWrapJump(t){const e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){const t={};for(const i in this._tiles){const s=this._tiles[i];s.tileID=s.tileID.unwrapTo(s.tileID.wrap+e),t[s.tileID.key]=s;}this._tiles=t;for(const t in this._timers)clearTimeout(this._timers[t]),delete this._timers[t];for(const t in this._tiles)this._setTileReloadTimer(t,this._tiles[t]);}}update(e,i){if(this.transform=e,this.terrain=i,!this._sourceLoaded||this._paused)return;let s;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?s=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((e=>new t.O(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y))):(s=e.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:i}),this._source.hasTile&&(s=s.filter((t=>this._source.hasTile(t))))):s=[];const a=e.coveringZoomLevel(this._source),o=Math.max(a-K.maxOverzooming,this._source.minzoom),r=Math.max(a+K.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){const t={};for(const e of s)if(e.canonical.z>this._source.minzoom){const i=e.scaledTo(e.canonical.z-1);t[i.key]=i;const s=e.scaledTo(Math.max(this._source.minzoom,Math.min(e.canonical.z,5)));t[s.key]=s;}s=s.concat(Object.values(t));}const n=0===s.length&&!this._updated&&this._didEmitContent;this._updated=!0,n&&this.fire(new t.k(\"data\",{sourceDataType:\"idle\",dataType:\"source\",sourceId:this.id}));const l=this._updateRetainedTiles(s,a);if(Y(this._source.type)){const e={},n={},h=Object.keys(l),c=t.h.now();for(const t of h){const i=l[t],s=this._tiles[t];if(!s||0!==s.fadeEndTime&&s.fadeEndTime<=c)continue;const a=this.findLoadedParent(i,o);a&&(this._addTile(a.tileID),e[a.tileID.key]=a.tileID),n[t]=i;}this._retainLoadedChildren(n,a,r,l);for(const t in e)l[t]||(this._coveredTiles[t]=!0,l[t]=e[t]);if(i){const t={},e={};for(const i of s)this._tiles[i.key].hasData()?t[i.key]=i:e[i.key]=i;for(const i in e){const s=e[i].children(this._source.maxzoom);this._tiles[s[0].key]&&this._tiles[s[1].key]&&this._tiles[s[2].key]&&this._tiles[s[3].key]&&(t[s[0].key]=l[s[0].key]=s[0],t[s[1].key]=l[s[1].key]=s[1],t[s[2].key]=l[s[2].key]=s[2],t[s[3].key]=l[s[3].key]=s[3],delete e[i]);}for(const i in e){const s=this.findLoadedParent(e[i],this._source.minzoom);if(s){t[s.tileID.key]=l[s.tileID.key]=s.tileID;for(const e in t)t[e].isChildOf(s.tileID)&&delete t[e];}}for(const e in this._tiles)t[e]||(this._coveredTiles[e]=!0);}}for(const t in l)this._tiles[t].clearFadeHold();const h=t.ab(this._tiles,l);for(const t of h){const e=this._tiles[t];e.hasSymbolBuckets&&!e.holdingForFade()?e.setHoldDuration(this.map._fadeDuration):e.hasSymbolBuckets&&!e.symbolFadeFinished()||this._removeTile(t);}this._updateLoadedParentTileCache();}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t);}_updateRetainedTiles(t,e){const i={},s={},a=Math.max(e-K.maxOverzooming,this._source.minzoom),o=Math.max(e+K.maxUnderzooming,this._source.minzoom),r={};for(const s of t){const t=this._addTile(s);i[s.key]=s,t.hasData()||e<this._source.maxzoom&&(r[s.key]=s);}this._retainLoadedChildren(r,e,o,i);for(const o of t){let t=this._tiles[o.key];if(t.hasData())continue;if(e+1>this._source.maxzoom){const t=o.children(this._source.maxzoom)[0],e=this.getTile(t);if(e&&e.hasData()){i[t.key]=t;continue}}else {const t=o.children(this._source.maxzoom);if(i[t[0].key]&&i[t[1].key]&&i[t[2].key]&&i[t[3].key])continue}let r=t.wasRequested();for(let e=o.overscaledZ-1;e>=a;--e){const a=o.scaledTo(e);if(s[a.key])break;if(s[a.key]=!0,t=this.getTile(a),!t&&r&&(t=this._addTile(a)),t){const e=t.hasData();if((r||e)&&(i[a.key]=a),r=t.wasRequested(),e)break}}}return i}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const e=[];let i,s=this._tiles[t].tileID;for(;s.overscaledZ>0;){if(s.key in this._loadedParentTiles){i=this._loadedParentTiles[s.key];break}e.push(s.key);const t=s.scaledTo(s.overscaledZ-1);if(i=this._getLoadedTile(t),i)break;s=t;}for(const t of e)this._loadedParentTiles[t]=i;}}_addTile(e){let i=this._tiles[e.key];if(i)return i;i=this._cache.getAndRemove(e),i&&(this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,i)));const s=i;return i||(i=new W(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,this._tileLoaded.bind(this,i,e.key,i.state))),i.uses++,this._tiles[e.key]=i,s||this._source.fire(new t.k(\"dataloading\",{tile:i,coord:i.tileID,dataType:\"source\"})),i}_setTileReloadTimer(t,e){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const i=e.getExpiryTimeout();i&&(this._timers[t]=setTimeout((()=>{this._reloadTile(t,\"expired\"),delete this._timers[t];}),i));}_removeTile(t){const e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(t);this._cache.reset();}tilesIn(e,i,s){const a=[],o=this.transform;if(!o)return a;const r=s?o.getCameraQueryGeometry(e):e,n=e.map((t=>o.pointCoordinate(t,this.terrain))),l=r.map((t=>o.pointCoordinate(t,this.terrain))),h=this.getIds();let c=1/0,u=1/0,d=-1/0,_=-1/0;for(const t of l)c=Math.min(c,t.x),u=Math.min(u,t.y),d=Math.max(d,t.x),_=Math.max(_,t.y);for(let e=0;e<h.length;e++){const s=this._tiles[h[e]];if(s.holdingForFade())continue;const r=s.tileID,p=Math.pow(2,o.zoom-s.tileID.overscaledZ),m=i*s.queryPadding*t.N/s.tileSize/p,f=[r.getTilePoint(new t.U(c,u)),r.getTilePoint(new t.U(d,_))];if(f[0].x-m<t.N&&f[0].y-m<t.N&&f[1].x+m>=0&&f[1].y+m>=0){const t=n.map((t=>r.getTilePoint(t))),e=l.map((t=>r.getTilePoint(t)));a.push({tile:s,tileID:r,queryGeometry:t,cameraQueryGeometry:e,scale:p});}}return a}getVisibleCoordinates(t){const e=this.getRenderableIds(t).map((t=>this._tiles[t].tileID));for(const t of e)t.posMatrix=this.transform.calculatePosMatrix(t.toUnwrapped());return e}hasTransition(){if(this._source.hasTransition())return !0;if(Y(this._source.type)){const e=t.h.now();for(const t in this._tiles)if(this._tiles[t].fadeEndTime>=e)return !0}return !1}setFeatureState(t,e,i){this._state.updateState(t=t||\"_geojsonTileLayer\",e,i);}removeFeatureState(t,e,i){this._state.removeFeatureState(t=t||\"_geojsonTileLayer\",e,i);}getFeatureState(t,e){return this._state.getState(t=t||\"_geojsonTileLayer\",e)}setDependencies(t,e,i){const s=this._tiles[t];s&&s.setDependencies(e,i);}reloadTilesForDependencies(t,e){for(const i in this._tiles)this._tiles[i].hasDependency(t,e)&&this._reloadTile(i,\"reloading\");this._cache.filter((i=>!i.hasDependency(t,e)));}}function Q(t,e){const i=Math.abs(2*t.wrap)-+(t.wrap<0),s=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||s-i||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function Y(t){return \"raster\"===t||\"image\"===t||\"video\"===t}K.maxOverzooming=10,K.maxUnderzooming=3;const J=\"mapboxgl_preloaded_worker_pool\";class tt{constructor(){this.active={};}acquire(e){if(!this.workers)for(this.workers=[];this.workers.length<tt.workerCount;)this.workers.push(new Worker(t.c.WORKER_URL));return this.active[e]=!0,this.workers.slice()}release(t){delete this.active[t],0===this.numActive()&&(this.workers.forEach((t=>{t.terminate();})),this.workers=null);}isPreloaded(){return !!this.active[J]}numActive(){return Object.keys(this.active).length}}const et=Math.floor(t.h.hardwareConcurrency/2);let it;function st(){return it||(it=new tt),it}tt.workerCount=t.ac(globalThis)?Math.max(Math.min(et,3),1):1;class at{constructor(t,e){this.reset(t,e);}reset(t,e){this.points=t||[],this._distances=[0];for(let t=1;t<this.points.length;t++)this._distances[t]=this._distances[t-1]+this.points[t].dist(this.points[t-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(e||0,.5*this.length),this.paddedLength=this.length-2*this.padding;}lerp(e){if(1===this.points.length)return this.points[0];e=t.ad(e,0,1);let i=1,s=this._distances[i];const a=e*this.paddedLength+this.padding;for(;s<a&&i<this._distances.length;)s=this._distances[++i];const o=i-1,r=this._distances[o],n=s-r,l=n>0?(a-r)/n:0;return this.points[o].mult(1-l).add(this.points[i].mult(l))}}function ot(t,e){let i=!0;return \"always\"===t||\"never\"!==t&&\"never\"!==e||(i=!1),i}class rt{constructor(t,e,i){const s=this.boxCells=[],a=this.circleCells=[];this.xCellCount=Math.ceil(t/i),this.yCellCount=Math.ceil(e/i);for(let t=0;t<this.xCellCount*this.yCellCount;t++)s.push([]),a.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=t,this.height=e,this.xScale=this.xCellCount/t,this.yScale=this.yCellCount/e,this.boxUid=0,this.circleUid=0;}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(t,e,i,s,a){this._forEachCell(e,i,s,a,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(i),this.bboxes.push(s),this.bboxes.push(a);}insertCircle(t,e,i,s){this._forEachCell(e-s,i-s,e+s,i+s,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(i),this.circles.push(s);}_insertBoxCell(t,e,i,s,a,o){this.boxCells[a].push(o);}_insertCircleCell(t,e,i,s,a,o){this.circleCells[a].push(o);}_query(t,e,i,s,a,o,r){if(i<0||t>this.width||s<0||e>this.height)return [];const n=[];if(t<=0&&e<=0&&this.width<=i&&this.height<=s){if(a)return [{key:null,x1:t,y1:e,x2:i,y2:s}];for(let t=0;t<this.boxKeys.length;t++)n.push({key:this.boxKeys[t],x1:this.bboxes[4*t],y1:this.bboxes[4*t+1],x2:this.bboxes[4*t+2],y2:this.bboxes[4*t+3]});for(let t=0;t<this.circleKeys.length;t++){const e=this.circles[3*t],i=this.circles[3*t+1],s=this.circles[3*t+2];n.push({key:this.circleKeys[t],x1:e-s,y1:i-s,x2:e+s,y2:i+s});}}else this._forEachCell(t,e,i,s,this._queryCell,n,{hitTest:a,overlapMode:o,seenUids:{box:{},circle:{}}},r);return n}query(t,e,i,s){return this._query(t,e,i,s,!1,null)}hitTest(t,e,i,s,a,o){return this._query(t,e,i,s,!0,a,o).length>0}hitTestCircle(t,e,i,s,a){const o=t-i,r=t+i,n=e-i,l=e+i;if(r<0||o>this.width||l<0||n>this.height)return !1;const h=[];return this._forEachCell(o,n,r,l,this._queryCellCircle,h,{hitTest:!0,overlapMode:s,circle:{x:t,y:e,radius:i},seenUids:{box:{},circle:{}}},a),h.length>0}_queryCell(t,e,i,s,a,o,r,n){const{seenUids:l,hitTest:h,overlapMode:c}=r,u=this.boxCells[a];if(null!==u){const a=this.bboxes;for(const r of u)if(!l.box[r]){l.box[r]=!0;const u=4*r,d=this.boxKeys[r];if(t<=a[u+2]&&e<=a[u+3]&&i>=a[u+0]&&s>=a[u+1]&&(!n||n(d))&&(!h||!ot(c,d.overlapMode))&&(o.push({key:d,x1:a[u],y1:a[u+1],x2:a[u+2],y2:a[u+3]}),h))return !0}}const d=this.circleCells[a];if(null!==d){const a=this.circles;for(const r of d)if(!l.circle[r]){l.circle[r]=!0;const u=3*r,d=this.circleKeys[r];if(this._circleAndRectCollide(a[u],a[u+1],a[u+2],t,e,i,s)&&(!n||n(d))&&(!h||!ot(c,d.overlapMode))){const t=a[u],e=a[u+1],i=a[u+2];if(o.push({key:d,x1:t-i,y1:e-i,x2:t+i,y2:e+i}),h)return !0}}}return !1}_queryCellCircle(t,e,i,s,a,o,r,n){const{circle:l,seenUids:h,overlapMode:c}=r,u=this.boxCells[a];if(null!==u){const t=this.bboxes;for(const e of u)if(!h.box[e]){h.box[e]=!0;const i=4*e,s=this.boxKeys[e];if(this._circleAndRectCollide(l.x,l.y,l.radius,t[i+0],t[i+1],t[i+2],t[i+3])&&(!n||n(s))&&!ot(c,s.overlapMode))return o.push(!0),!0}}const d=this.circleCells[a];if(null!==d){const t=this.circles;for(const e of d)if(!h.circle[e]){h.circle[e]=!0;const i=3*e,s=this.circleKeys[e];if(this._circlesCollide(t[i],t[i+1],t[i+2],l.x,l.y,l.radius)&&(!n||n(s))&&!ot(c,s.overlapMode))return o.push(!0),!0}}}_forEachCell(t,e,i,s,a,o,r,n){const l=this._convertToXCellCoord(t),h=this._convertToYCellCoord(e),c=this._convertToXCellCoord(i),u=this._convertToYCellCoord(s);for(let d=l;d<=c;d++)for(let l=h;l<=u;l++)if(a.call(this,t,e,i,s,this.xCellCount*l+d,o,r,n))return}_convertToXCellCoord(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))}_convertToYCellCoord(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))}_circlesCollide(t,e,i,s,a,o){const r=s-t,n=a-e,l=i+o;return l*l>r*r+n*n}_circleAndRectCollide(t,e,i,s,a,o,r){const n=(o-s)/2,l=Math.abs(t-(s+n));if(l>n+i)return !1;const h=(r-a)/2,c=Math.abs(e-(a+h));if(c>h+i)return !1;if(l<=n||c<=h)return !0;const u=l-n,d=c-h;return u*u+d*d<=i*i}}function nt(e,i,s,a,o){const r=t.Z();return i?(t.a0(r,r,[1/o,1/o,1]),s||t.ae(r,r,a.angle)):t.a1(r,a.labelPlaneMatrix,e),r}function lt(e,i,s,a,o){if(i){const i=t.af(e);return t.a0(i,i,[o,o,1]),s||t.ae(i,i,-a.angle),i}return a.glCoordMatrix}function ht(e,i,s){let a;s?(a=[e.x,e.y,s(e.x,e.y),1],t.ag(a,a,i)):(a=[e.x,e.y,0,1],Tt(a,a,i));const o=a[3];return {point:new t.P(a[0]/o,a[1]/o),signedDistanceFromCamera:o}}function ct(t,e){return .5+t/e*.5}function ut(t,e){const i=t[0]/t[3],s=t[1]/t[3];return i>=-e[0]&&i<=e[0]&&s>=-e[1]&&s<=e[1]}function dt(e,i,s,a,o,r,n,l,h,c){const u=a?e.textSizeData:e.iconSizeData,d=t.ah(u,s.transform.zoom),_=[256/s.width*2+1,256/s.height*2+1],p=a?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;p.clear();const m=e.lineVertexArray,f=a?e.text.placedSymbolArray:e.icon.placedSymbolArray,g=s.transform.width/s.transform.height;let v=!1;for(let a=0;a<f.length;a++){const x=f.get(a);if(x.hidden||x.writingMode===t.ai.vertical&&!v){wt(x.numGlyphs,p);continue}let y;if(v=!1,c?(y=[x.anchorX,x.anchorY,c(x.anchorX,x.anchorY),1],t.ag(y,y,i)):(y=[x.anchorX,x.anchorY,0,1],Tt(y,y,i)),!ut(y,_)){wt(x.numGlyphs,p);continue}const b=ct(s.transform.cameraToCenterDistance,y[3]),w=t.aj(u,d,x),T=n?w/b:w*b,I=new t.P(x.anchorX,x.anchorY),E=ht(I,o,c).point,S={projections:{},offsets:{}},C=mt(x,T,!1,l,i,o,r,e.glyphOffsetArray,m,p,E,I,S,g,h,c);v=C.useVertical,(C.notEnoughRoom||v||C.needsFlipping&&mt(x,T,!0,l,i,o,r,e.glyphOffsetArray,m,p,E,I,S,g,h,c).notEnoughRoom)&&wt(x.numGlyphs,p);}a?e.text.dynamicLayoutVertexBuffer.updateData(p):e.icon.dynamicLayoutVertexBuffer.updateData(p);}function _t(t,e,i,s,a,o,r,n,l,h,c,u,d){const _=n.glyphStartIndex+n.numGlyphs,p=n.lineStartIndex,m=n.lineStartIndex+n.lineLength,f=e.getoffsetX(n.glyphStartIndex),g=e.getoffsetX(_-1),v=yt(t*f,i,s,a,o,r,n.segment,p,m,l,h,c,u,d);if(!v)return null;const x=yt(t*g,i,s,a,o,r,n.segment,p,m,l,h,c,u,d);return x?{first:v,last:x}:null}function pt(e,i,s,a){return e===t.ai.horizontal&&Math.abs(s.y-i.y)>Math.abs(s.x-i.x)*a?{useVertical:!0}:(e===t.ai.vertical?i.y<s.y:i.x>s.x)?{needsFlipping:!0}:null}function mt(e,i,s,a,o,r,n,l,h,c,u,d,_,p,m,f){const g=i/24,v=e.lineOffsetX*g,x=e.lineOffsetY*g;let y;if(e.numGlyphs>1){const t=e.glyphStartIndex+e.numGlyphs,i=e.lineStartIndex,o=e.lineStartIndex+e.lineLength,c=_t(g,l,v,x,s,u,d,e,h,r,_,m,f);if(!c)return {notEnoughRoom:!0};const b=ht(c.first.point,n,f).point,w=ht(c.last.point,n,f).point;if(a&&!s){const t=pt(e.writingMode,b,w,p);if(t)return t}y=[c.first];for(let a=e.glyphStartIndex+1;a<t-1;a++)y.push(yt(g*l.getoffsetX(a),v,x,s,u,d,e.segment,i,o,h,r,_,m,f));y.push(c.last);}else {if(a&&!s){const i=ht(d,o,f).point,s=e.lineStartIndex+e.segment+1,a=new t.P(h.getx(s),h.gety(s)),r=ht(a,o,f),n=r.signedDistanceFromCamera>0?r.point:ft(d,a,i,1,o,f),l=pt(e.writingMode,i,n,p);if(l)return l}const i=yt(g*l.getoffsetX(e.glyphStartIndex),v,x,s,u,d,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,h,r,_,m,f);if(!i)return {notEnoughRoom:!0};y=[i];}for(const e of y)t.ak(c,e.point,e.angle);return {}}function ft(t,e,i,s,a,o){const r=ht(t.add(t.sub(e)._unit()),a,o).point,n=i.sub(r);return i.add(n._mult(s/n.mag()))}function gt(e,i){const{projectionCache:s,lineVertexArray:a,labelPlaneMatrix:o,tileAnchorPoint:r,distanceFromAnchor:n,getElevation:l,previousVertex:h,direction:c,absOffsetX:u}=i;if(s.projections[e])return s.projections[e];const d=new t.P(a.getx(e),a.gety(e)),_=ht(d,o,l);if(_.signedDistanceFromCamera>0)return s.projections[e]=_.point,_.point;const p=e-c;return ft(0===n?r:new t.P(a.getx(p),a.gety(p)),d,h,u-n+1,o,l)}function vt(t,e,i){return t._unit()._perp()._mult(e*i)}function xt(e,i,s,a,o,r,n,l){const{projectionCache:h,direction:c}=l;if(h.offsets[e])return h.offsets[e];const u=s.add(i);if(e+c<a||e+c>=o)return h.offsets[e]=u,u;const d=gt(e+c,l),_=vt(d.sub(s),n,c),p=s.add(_),m=d.add(_);return h.offsets[e]=t.al(r,u,p,m)||u,h.offsets[e]}function yt(t,e,i,s,a,o,r,n,l,h,c,u,d,_){const p=s?t-e:t+e;let m=p>0?1:-1,f=0;s&&(m*=-1,f=Math.PI),m<0&&(f+=Math.PI);let g,v,x=m>0?n+r:n+r+1,y=a,b=a,w=0,T=0;const I=Math.abs(p),E=[];let S;for(;w+T<=I;){if(x+=m,x<n||x>=l)return null;w+=T,b=y,v=g;const t={projectionCache:u,lineVertexArray:h,labelPlaneMatrix:c,tileAnchorPoint:o,distanceFromAnchor:w,getElevation:_,previousVertex:b,direction:m,absOffsetX:I};if(y=gt(x,t),0===i)E.push(b),S=y.sub(b);else {let e;const s=y.sub(b);e=0===s.mag()?vt(gt(x+m,t).sub(y),i,m):vt(s,i,m),v||(v=b.add(e)),g=xt(x,e,y,n,l,v,i,t),E.push(v),S=g.sub(v);}T=S.mag();}const C=S._mult((I-w)/T)._add(v||b),P=f+Math.atan2(y.y-b.y,y.x-b.x);return E.push(C),{point:C,angle:d?P:0,path:E}}const bt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function wt(t,e){for(let i=0;i<t;i++){const t=e.length;e.resize(t+4),e.float32.set(bt,3*t);}}function Tt(t,e,i){const s=e[0],a=e[1];return t[0]=i[0]*s+i[4]*a+i[12],t[1]=i[1]*s+i[5]*a+i[13],t[3]=i[3]*s+i[7]*a+i[15],t}const It=100;class Et{constructor(t,e=new rt(t.width+200,t.height+200,25),i=new rt(t.width+200,t.height+200,25)){this.transform=t,this.grid=e,this.ignoredGrid=i,this.pitchfactor=Math.cos(t._pitch)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+It,this.screenBottomBoundary=t.height+It,this.gridRightBoundary=t.width+200,this.gridBottomBoundary=t.height+200,this.perspectiveRatioCutoff=.6;}placeCollisionBox(t,e,i,s,a,o){const r=this.projectAndGetPerspectiveRatio(s,t.anchorPointX,t.anchorPointY,o),n=i*r.perspectiveRatio,l=t.x1*n+r.point.x,h=t.y1*n+r.point.y,c=t.x2*n+r.point.x,u=t.y2*n+r.point.y;return !this.isInsideGrid(l,h,c,u)||\"always\"!==e&&this.grid.hitTest(l,h,c,u,e,a)||r.perspectiveRatio<this.perspectiveRatioCutoff?{box:[],offscreen:!1}:{box:[l,h,c,u],offscreen:this.isOffscreen(l,h,c,u)}}placeCollisionCircles(e,i,s,a,o,r,n,l,h,c,u,d,_,p){const m=[],f=new t.P(i.anchorX,i.anchorY),g=ht(f,r,p),v=ct(this.transform.cameraToCenterDistance,g.signedDistanceFromCamera),x=(c?o/v:o*v)/t.ap,y=ht(f,n,p).point,b=_t(x,a,i.lineOffsetX*x,i.lineOffsetY*x,!1,y,f,i,s,n,{projections:{},offsets:{}},!1,p);let w=!1,T=!1,I=!0;if(b){const i=.5*d*v+_,s=new t.P(-100,-100),a=new t.P(this.screenRightBoundary,this.screenBottomBoundary),o=new at,r=b.first,n=b.last;let c=[];for(let t=r.path.length-1;t>=1;t--)c.push(r.path[t]);for(let t=1;t<n.path.length;t++)c.push(n.path[t]);const f=2.5*i;if(l){const t=c.map((t=>ht(t,l,p)));c=t.some((t=>t.signedDistanceFromCamera<=0))?[]:t.map((t=>t.point));}let g=[];if(c.length>0){const e=c[0].clone(),i=c[0].clone();for(let t=1;t<c.length;t++)e.x=Math.min(e.x,c[t].x),e.y=Math.min(e.y,c[t].y),i.x=Math.max(i.x,c[t].x),i.y=Math.max(i.y,c[t].y);g=e.x>=s.x&&i.x<=a.x&&e.y>=s.y&&i.y<=a.y?[c]:i.x<s.x||e.x>a.x||i.y<s.y||e.y>a.y?[]:t.am([c],s.x,s.y,a.x,a.y);}for(const t of g){o.reset(t,.25*i);let s=0;s=o.length<=.5*i?1:Math.ceil(o.paddedLength/f)+1;for(let t=0;t<s;t++){const a=t/Math.max(s-1,1),r=o.lerp(a),n=r.x+It,l=r.y+It;m.push(n,l,i,0);const c=n-i,d=l-i,_=n+i,p=l+i;if(I=I&&this.isOffscreen(c,d,_,p),T=T||this.isInsideGrid(c,d,_,p),\"always\"!==e&&this.grid.hitTestCircle(n,l,i,e,u)&&(w=!0,!h))return {circles:[],offscreen:!1,collisionDetected:w}}}}return {circles:!h&&w||!T||v<this.perspectiveRatioCutoff?[]:m,offscreen:I,collisionDetected:w}}queryRenderedSymbols(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};const i=[];let s=1/0,a=1/0,o=-1/0,r=-1/0;for(const n of e){const e=new t.P(n.x+It,n.y+It);s=Math.min(s,e.x),a=Math.min(a,e.y),o=Math.max(o,e.x),r=Math.max(r,e.y),i.push(e);}const n=this.grid.query(s,a,o,r).concat(this.ignoredGrid.query(s,a,o,r)),l={},h={};for(const e of n){const s=e.key;if(void 0===l[s.bucketInstanceId]&&(l[s.bucketInstanceId]={}),l[s.bucketInstanceId][s.featureIndex])continue;const a=[new t.P(e.x1,e.y1),new t.P(e.x2,e.y1),new t.P(e.x2,e.y2),new t.P(e.x1,e.y2)];t.an(i,a)&&(l[s.bucketInstanceId][s.featureIndex]=!0,void 0===h[s.bucketInstanceId]&&(h[s.bucketInstanceId]=[]),h[s.bucketInstanceId].push(s.featureIndex));}return h}insertCollisionBox(t,e,i,s,a,o){(i?this.ignoredGrid:this.grid).insert({bucketInstanceId:s,featureIndex:a,collisionGroupID:o,overlapMode:e},t[0],t[1],t[2],t[3]);}insertCollisionCircles(t,e,i,s,a,o){const r=i?this.ignoredGrid:this.grid,n={bucketInstanceId:s,featureIndex:a,collisionGroupID:o,overlapMode:e};for(let e=0;e<t.length;e+=4)r.insertCircle(n,t[e],t[e+1],t[e+2]);}projectAndGetPerspectiveRatio(e,i,s,a){let o;return a?(o=[i,s,a(i,s),1],t.ag(o,o,e)):(o=[i,s,0,1],Tt(o,o,e)),{point:new t.P((o[0]/o[3]+1)/2*this.transform.width+It,(-o[1]/o[3]+1)/2*this.transform.height+It),perspectiveRatio:.5+this.transform.cameraToCenterDistance/o[3]*.5}}isOffscreen(t,e,i,s){return i<It||t>=this.screenRightBoundary||s<It||e>this.screenBottomBoundary}isInsideGrid(t,e,i,s){return i>=0&&t<this.gridRightBoundary&&s>=0&&e<this.gridBottomBoundary}getViewportMatrix(){const e=t.ao([]);return t.$(e,e,[-100,-100,0]),e}}function St(e,i,s){return i*(t.N/(e.tileSize*Math.pow(2,s-e.tileID.overscaledZ)))}class Ct{constructor(t,e,i,s){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?e:-e))):s&&i?1:0,this.placed=i;}isHidden(){return 0===this.opacity&&!this.placed}}class Pt{constructor(t,e,i,s,a){this.text=new Ct(t?t.text:null,e,i,a),this.icon=new Ct(t?t.icon:null,e,s,a);}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Dt{constructor(t,e,i){this.text=t,this.icon=e,this.skipFade=i;}}class Mt{constructor(){this.invProjMatrix=t.Z(),this.viewportMatrix=t.Z(),this.circles=[];}}class zt{constructor(t,e,i,s,a){this.bucketInstanceId=t,this.featureIndex=e,this.sourceLayerIndex=i,this.bucketIndex=s,this.tileID=a;}}class Lt{constructor(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={};}get(t){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[t]){const e=++this.maxGroupID;this.collisionGroups[t]={ID:e,predicate:t=>t.collisionGroupID===e};}return this.collisionGroups[t]}}function At(e,i,s,a,o){const{horizontalAlign:r,verticalAlign:n}=t.au(e);return new t.P(-(r-.5)*i+a[0]*o,-(n-.5)*s+a[1]*o)}function Rt(e,i,s,a,o,r){const{x1:n,x2:l,y1:h,y2:c,anchorPointX:u,anchorPointY:d}=e,_=new t.P(i,s);return a&&_._rotate(o?r:-r),{x1:n+_.x,y1:h+_.y,x2:l+_.x,y2:c+_.y,anchorPointX:u,anchorPointY:d}}class kt{constructor(t,e,i,s,a){this.transform=t.clone(),this.terrain=e,this.collisionIndex=new Et(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=i,this.retainedQueryData={},this.collisionGroups=new Lt(s),this.collisionCircleArrays={},this.prevPlacement=a,a&&(a.prevPlacement=void 0),this.placedOrientations={};}getBucketParts(e,i,s,a){const o=s.getBucket(i),r=s.latestFeatureIndex;if(!o||!r||i.id!==o.layerIds[0])return;const n=s.collisionBoxArray,l=o.layers[0].layout,h=Math.pow(2,this.transform.zoom-s.tileID.overscaledZ),c=s.tileSize/t.N,u=this.transform.calculatePosMatrix(s.tileID.toUnwrapped()),d=\"map\"===l.get(\"text-pitch-alignment\"),_=\"map\"===l.get(\"text-rotation-alignment\"),p=St(s,1,this.transform.zoom),m=nt(u,d,_,this.transform,p);let f=null;if(d){const e=lt(u,d,_,this.transform,p);f=t.a1([],this.transform.labelPlaneMatrix,e);}this.retainedQueryData[o.bucketInstanceId]=new zt(o.bucketInstanceId,r,o.sourceLayerIndex,o.index,s.tileID);const g={bucket:o,layout:l,posMatrix:u,textLabelPlaneMatrix:m,labelToScreenMatrix:f,scale:h,textPixelRatio:c,holdingForFade:s.holdingForFade(),collisionBoxArray:n,partiallyEvaluatedTextSize:t.ah(o.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(o.sourceID)};if(a)for(const t of o.sortKeyRanges){const{sortKey:i,symbolInstanceStart:s,symbolInstanceEnd:a}=t;e.push({sortKey:i,symbolInstanceStart:s,symbolInstanceEnd:a,parameters:g});}else e.push({symbolInstanceStart:0,symbolInstanceEnd:o.symbolInstances.length,parameters:g});}attemptAnchorPlacement(e,i,s,a,o,r,n,l,h,c,u,d,_,p,m,f){const g=t.aq[e.textAnchor],v=[e.textOffset0,e.textOffset1],x=At(g,s,a,v,o),y=this.collisionIndex.placeCollisionBox(Rt(i,x.x,x.y,r,n,this.transform.angle),u,l,h,c.predicate,f);if((!m||0!==this.collisionIndex.placeCollisionBox(Rt(m,x.x,x.y,r,n,this.transform.angle),u,l,h,c.predicate,f).box.length)&&y.box.length>0){let t;if(this.prevPlacement&&this.prevPlacement.variableOffsets[d.crossTileID]&&this.prevPlacement.placements[d.crossTileID]&&this.prevPlacement.placements[d.crossTileID].text&&(t=this.prevPlacement.variableOffsets[d.crossTileID].anchor),0===d.crossTileID)throw new Error(\"symbolInstance.crossTileID can't be 0\");return this.variableOffsets[d.crossTileID]={textOffset:v,width:s,height:a,anchor:g,textBoxScale:o,prevAnchor:t},this.markUsedJustification(_,g,d,p),_.allowVerticalPlacement&&(this.markUsedOrientation(_,p,d),this.placedOrientations[d.crossTileID]=p),{shift:x,placedGlyphBoxes:y}}}placeLayerBucketPart(e,i,s){const{bucket:a,layout:o,posMatrix:r,textLabelPlaneMatrix:n,labelToScreenMatrix:l,textPixelRatio:h,holdingForFade:c,collisionBoxArray:u,partiallyEvaluatedTextSize:d,collisionGroup:_}=e.parameters,p=o.get(\"text-optional\"),m=o.get(\"icon-optional\"),f=t.ar(o,\"text-overlap\",\"text-allow-overlap\"),g=\"always\"===f,v=t.ar(o,\"icon-overlap\",\"icon-allow-overlap\"),x=\"always\"===v,y=\"map\"===o.get(\"text-rotation-alignment\"),b=\"map\"===o.get(\"text-pitch-alignment\"),w=\"none\"!==o.get(\"icon-text-fit\"),T=\"viewport-y\"===o.get(\"symbol-z-order\"),I=g&&(x||!a.hasIconData()||m),E=x&&(g||!a.hasTextData()||p);!a.collisionArrays&&u&&a.deserializeCollisionBoxes(u);const S=this.retainedQueryData[a.bucketInstanceId].tileID,C=this.terrain?(t,e)=>this.terrain.getElevation(S,t,e):null,P=(e,u)=>{var x,T;if(i[e.crossTileID])return;if(c)return void(this.placements[e.crossTileID]=new Dt(!1,!1,!1));let S=!1,P=!1,D=!0,M=null,z={box:null,offscreen:null},L={box:null,offscreen:null},A=null,R=null,k=null,F=0,B=0,O=0;u.textFeatureIndex?F=u.textFeatureIndex:e.useRuntimeCollisionCircles&&(F=e.featureIndex),u.verticalTextFeatureIndex&&(B=u.verticalTextFeatureIndex);const N=u.textBox;if(N){const i=i=>{let s=t.ai.horizontal;if(a.allowVerticalPlacement&&!i&&this.prevPlacement){const t=this.prevPlacement.placedOrientations[e.crossTileID];t&&(this.placedOrientations[e.crossTileID]=t,s=t,this.markUsedOrientation(a,s,e));}return s},s=(i,s)=>{if(a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&u.verticalTextBox){for(const e of a.writingModes)if(e===t.ai.vertical?(z=s(),L=z):z=i(),z&&z.box&&z.box.length)break}else z=i();},o=e.textAnchorOffsetStartIndex,n=e.textAnchorOffsetEndIndex;if(n===o){const o=(t,i)=>{const s=this.collisionIndex.placeCollisionBox(t,f,h,r,_.predicate,C);return s&&s.box&&s.box.length&&(this.markUsedOrientation(a,i,e),this.placedOrientations[e.crossTileID]=i),s};s((()=>o(N,t.ai.horizontal)),(()=>{const i=u.verticalTextBox;return a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&i?o(i,t.ai.vertical):{box:null,offscreen:null}})),i(z&&z.box&&z.box.length);}else {let l=t.aq[null===(T=null===(x=this.prevPlacement)||void 0===x?void 0:x.variableOffsets[e.crossTileID])||void 0===T?void 0:T.anchor];const c=(t,i,s)=>{const c=t.x2-t.x1,u=t.y2-t.y1,d=e.textBoxScale,p=w&&\"never\"===v?i:null;let m={box:[],offscreen:!1},g=\"never\"===f?1:2,x=\"never\";l&&g++;for(let i=0;i<g;i++){for(let i=o;i<n;i++){const o=a.textAnchorOffsets.get(i);if(l&&o.textAnchor!==l)continue;const n=this.attemptAnchorPlacement(o,t,c,u,d,y,b,h,r,_,x,e,a,s,p,C);if(n&&(m=n.placedGlyphBoxes,m&&m.box&&m.box.length))return S=!0,M=n.shift,m}l?l=null:x=f;}return m};s((()=>c(N,u.iconBox,t.ai.horizontal)),(()=>{const i=u.verticalTextBox;return a.allowVerticalPlacement&&!(z&&z.box&&z.box.length)&&e.numVerticalGlyphVertices>0&&i?c(i,u.verticalIconBox,t.ai.vertical):{box:null,offscreen:null}})),z&&(S=z.box,D=z.offscreen);const d=i(z&&z.box);if(!S&&this.prevPlacement){const t=this.prevPlacement.variableOffsets[e.crossTileID];t&&(this.variableOffsets[e.crossTileID]=t,this.markUsedJustification(a,t.anchor,e,d));}}}if(A=z,S=A&&A.box&&A.box.length>0,D=A&&A.offscreen,e.useRuntimeCollisionCircles){const i=a.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),h=t.aj(a.textSizeData,d,i),c=o.get(\"text-padding\");R=this.collisionIndex.placeCollisionCircles(f,i,a.lineVertexArray,a.glyphOffsetArray,h,r,n,l,s,b,_.predicate,e.collisionCircleDiameter,c,C),R.circles.length&&R.collisionDetected&&!s&&t.w(\"Collisions detected, but collision boxes are not shown\"),S=g||R.circles.length>0&&!R.collisionDetected,D=D&&R.offscreen;}if(u.iconFeatureIndex&&(O=u.iconFeatureIndex),u.iconBox){const t=t=>{const e=w&&M?Rt(t,M.x,M.y,y,b,this.transform.angle):t;return this.collisionIndex.placeCollisionBox(e,v,h,r,_.predicate,C)};L&&L.box&&L.box.length&&u.verticalIconBox?(k=t(u.verticalIconBox),P=k.box.length>0):(k=t(u.iconBox),P=k.box.length>0),D=D&&k.offscreen;}const U=p||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,Z=m||0===e.numIconVertices;if(U||Z?Z?U||(P=P&&S):S=P&&S:P=S=P&&S,S&&A&&A.box&&this.collisionIndex.insertCollisionBox(A.box,f,o.get(\"text-ignore-placement\"),a.bucketInstanceId,L&&L.box&&B?B:F,_.ID),P&&k&&this.collisionIndex.insertCollisionBox(k.box,v,o.get(\"icon-ignore-placement\"),a.bucketInstanceId,O,_.ID),R&&(S&&this.collisionIndex.insertCollisionCircles(R.circles,f,o.get(\"text-ignore-placement\"),a.bucketInstanceId,F,_.ID),s)){const t=a.bucketInstanceId;let e=this.collisionCircleArrays[t];void 0===e&&(e=this.collisionCircleArrays[t]=new Mt);for(let t=0;t<R.circles.length;t+=4)e.circles.push(R.circles[t+0]),e.circles.push(R.circles[t+1]),e.circles.push(R.circles[t+2]),e.circles.push(R.collisionDetected?1:0);}if(0===e.crossTileID)throw new Error(\"symbolInstance.crossTileID can't be 0\");if(0===a.bucketInstanceId)throw new Error(\"bucket.bucketInstanceId can't be 0\");this.placements[e.crossTileID]=new Dt(S||I,P||E,D||a.justReloaded),i[e.crossTileID]=!0;};if(T){if(0!==e.symbolInstanceStart)throw new Error(\"bucket.bucketInstanceId should be 0\");const t=a.getSortedSymbolIndexes(this.transform.angle);for(let e=t.length-1;e>=0;--e){const i=t[e];P(a.symbolInstances.get(i),a.collisionArrays[i]);}}else for(let t=e.symbolInstanceStart;t<e.symbolInstanceEnd;t++)P(a.symbolInstances.get(t),a.collisionArrays[t]);if(s&&a.bucketInstanceId in this.collisionCircleArrays){const e=this.collisionCircleArrays[a.bucketInstanceId];t.as(e.invProjMatrix,r),e.viewportMatrix=this.collisionIndex.getViewportMatrix();}a.justReloaded=!1;}markUsedJustification(e,i,s,a){let o;o=a===t.ai.vertical?s.verticalPlacedTextSymbolIndex:{left:s.leftJustifiedTextSymbolIndex,center:s.centerJustifiedTextSymbolIndex,right:s.rightJustifiedTextSymbolIndex}[t.at(i)];const r=[s.leftJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.rightJustifiedTextSymbolIndex,s.verticalPlacedTextSymbolIndex];for(const t of r)t>=0&&(e.text.placedSymbolArray.get(t).crossTileID=o>=0&&t!==o?0:s.crossTileID);}markUsedOrientation(e,i,s){const a=i===t.ai.horizontal||i===t.ai.horizontalOnly?i:0,o=i===t.ai.vertical?i:0,r=[s.leftJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.rightJustifiedTextSymbolIndex];for(const t of r)e.text.placedSymbolArray.get(t).placedOrientation=a;s.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(s.verticalPlacedTextSymbolIndex).placedOrientation=o);}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;const e=this.prevPlacement;let i=!1;this.prevZoomAdjustment=e?e.zoomAdjustment(this.transform.zoom):0;const s=e?e.symbolFadeChange(t):1,a=e?e.opacities:{},o=e?e.variableOffsets:{},r=e?e.placedOrientations:{};for(const t in this.placements){const e=this.placements[t],o=a[t];o?(this.opacities[t]=new Pt(o,s,e.text,e.icon),i=i||e.text!==o.text.placed||e.icon!==o.icon.placed):(this.opacities[t]=new Pt(null,s,e.text,e.icon,e.skipFade),i=i||e.text||e.icon);}for(const t in a){const e=a[t];if(!this.opacities[t]){const a=new Pt(e,s,!1,!1);a.isHidden()||(this.opacities[t]=a,i=i||e.text.placed||e.icon.placed);}}for(const t in o)this.variableOffsets[t]||!this.opacities[t]||this.opacities[t].isHidden()||(this.variableOffsets[t]=o[t]);for(const t in r)this.placedOrientations[t]||!this.opacities[t]||this.opacities[t].isHidden()||(this.placedOrientations[t]=r[t]);if(e&&void 0===e.lastPlacementChangeTime)throw new Error(\"Last placement time for previous placement is not defined\");i?this.lastPlacementChangeTime=t:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=e?e.lastPlacementChangeTime:t);}updateLayerOpacities(t,e){const i={};for(const s of e){const e=s.getBucket(t);e&&s.latestFeatureIndex&&t.id===e.layerIds[0]&&this.updateBucketOpacities(e,i,s.collisionBoxArray);}}updateBucketOpacities(e,i,s){e.hasTextData()&&(e.text.opacityVertexArray.clear(),e.text.hasVisibleVertices=!1),e.hasIconData()&&(e.icon.opacityVertexArray.clear(),e.icon.hasVisibleVertices=!1),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();const a=e.layers[0],o=a.layout,r=new Pt(null,0,!1,!1,!0),n=o.get(\"text-allow-overlap\"),l=o.get(\"icon-allow-overlap\"),h=a._unevaluatedLayout.hasValue(\"text-variable-anchor\")||a._unevaluatedLayout.hasValue(\"text-variable-anchor-offset\"),c=\"map\"===o.get(\"text-rotation-alignment\"),u=\"map\"===o.get(\"text-pitch-alignment\"),d=\"none\"!==o.get(\"icon-text-fit\"),_=new Pt(null,0,n&&(l||!e.hasIconData()||o.get(\"icon-optional\")),l&&(n||!e.hasTextData()||o.get(\"text-optional\")),!0);!e.collisionArrays&&s&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(s);const p=(t,e,i)=>{for(let s=0;s<e/4;s++)t.opacityVertexArray.emplaceBack(i);t.hasVisibleVertices=t.hasVisibleVertices||i!==qt;};for(let s=0;s<e.symbolInstances.length;s++){const a=e.symbolInstances.get(s),{numHorizontalGlyphVertices:o,numVerticalGlyphVertices:n,crossTileID:l}=a;let m=this.opacities[l];i[l]?m=r:m||(m=_,this.opacities[l]=m),i[l]=!0;const f=a.numIconVertices>0,g=this.placedOrientations[a.crossTileID],v=g===t.ai.vertical,x=g===t.ai.horizontal||g===t.ai.horizontalOnly;if(o>0||n>0){const t=Vt(m.text);p(e.text,o,v?qt:t),p(e.text,n,x?qt:t);const i=m.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((t=>{t>=0&&(e.text.placedSymbolArray.get(t).hidden=i||v?1:0);})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=i||x?1:0);const s=this.variableOffsets[a.crossTileID];s&&this.markUsedJustification(e,s.anchor,a,g);const r=this.placedOrientations[a.crossTileID];r&&(this.markUsedJustification(e,\"left\",a,r),this.markUsedOrientation(e,r,a));}if(f){const t=Vt(m.icon),i=!(d&&a.verticalPlacedIconSymbolIndex&&v);a.placedIconSymbolIndex>=0&&(p(e.icon,a.numIconVertices,i?t:qt),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=m.icon.isHidden()),a.verticalPlacedIconSymbolIndex>=0&&(p(e.icon,a.numVerticalIconVertices,i?qt:t),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=m.icon.isHidden());}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){const i=e.collisionArrays[s];if(i){let s=new t.P(0,0);if(i.textBox||i.verticalTextBox){let t=!0;if(h){const e=this.variableOffsets[l];e?(s=At(e.anchor,e.width,e.height,e.textOffset,e.textBoxScale),c&&s._rotate(u?this.transform.angle:-this.transform.angle)):t=!1;}i.textBox&&Ft(e.textCollisionBox.collisionVertexArray,m.text.placed,!t||v,s.x,s.y),i.verticalTextBox&&Ft(e.textCollisionBox.collisionVertexArray,m.text.placed,!t||x,s.x,s.y);}const a=Boolean(!x&&i.verticalIconBox);i.iconBox&&Ft(e.iconCollisionBox.collisionVertexArray,m.icon.placed,a,d?s.x:0,d?s.y:0),i.verticalIconBox&&Ft(e.iconCollisionBox.collisionVertexArray,m.icon.placed,!a,d?s.x:0,d?s.y:0);}}}if(e.sortFeatures(this.transform.angle),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.text.opacityVertexArray.length!==e.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${e.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${e.text.layoutVertexArray.length}) / 4`);if(e.icon.opacityVertexArray.length!==e.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${e.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${e.icon.layoutVertexArray.length}) / 4`);if(e.bucketInstanceId in this.collisionCircleArrays){const t=this.collisionCircleArrays[e.bucketInstanceId];e.placementInvProjMatrix=t.invProjMatrix,e.placementViewportMatrix=t.viewportMatrix,e.collisionCircleArray=t.circles,delete this.collisionCircleArrays[e.bucketInstanceId];}}symbolFadeChange(t){return 0===this.fadeDuration?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(t){return Math.max(0,(this.transform.zoom-t)/1.5)}hasTransitions(t){return this.stale||t-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(t,e){const i=this.zoomAtLastRecencyCheck===e?1-this.zoomAdjustment(e):1;return this.zoomAtLastRecencyCheck=e,this.commitTime+this.fadeDuration*i>t}setStale(){this.stale=!0;}}function Ft(t,e,i,s,a){t.emplaceBack(e?1:0,i?1:0,s||0,a||0),t.emplaceBack(e?1:0,i?1:0,s||0,a||0),t.emplaceBack(e?1:0,i?1:0,s||0,a||0),t.emplaceBack(e?1:0,i?1:0,s||0,a||0);}const Bt=Math.pow(2,25),Ot=Math.pow(2,24),Nt=Math.pow(2,17),Ut=Math.pow(2,16),Zt=Math.pow(2,9),Gt=Math.pow(2,8),jt=Math.pow(2,1);function Vt(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;const e=t.placed?1:0,i=Math.floor(127*t.opacity);return i*Bt+e*Ot+i*Nt+e*Ut+i*Zt+e*Gt+i*jt+e}const qt=0;class $t{constructor(t){this._sortAcrossTiles=\"viewport-y\"!==t.layout.get(\"symbol-z-order\")&&!t.layout.get(\"symbol-sort-key\").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];}continuePlacement(t,e,i,s,a){const o=this._bucketParts;for(;this._currentTileIndex<t.length;)if(e.getBucketParts(o,s,t[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,a())return !0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,o.sort(((t,e)=>t.sortKey-e.sortKey)));this._currentPartIndex<o.length;)if(e.placeLayerBucketPart(o[this._currentPartIndex],this._seenCrossTileIDs,i),this._currentPartIndex++,a())return !0;return !1}}class Wt{constructor(t,e,i,s,a,o,r,n){this.placement=new kt(t,e,o,r,n),this._currentPlacementIndex=i.length-1,this._forceFullPlacement=s,this._showCollisionBoxes=a,this._done=!1;}isDone(){return this._done}continuePlacement(e,i,s){const a=t.h.now(),o=()=>!this._forceFullPlacement&&t.h.now()-a>2;for(;this._currentPlacementIndex>=0;){const t=i[e[this._currentPlacementIndex]],a=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===t.type&&(!t.minzoom||t.minzoom<=a)&&(!t.maxzoom||t.maxzoom>a)){if(this._inProgressLayer||(this._inProgressLayer=new $t(t)),this._inProgressLayer.continuePlacement(s[t.source],this.placement,this._showCollisionBoxes,t,o))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;}commit(t){return this.placement.commit(t),this.placement}}const Ht=512/t.N/2;class Xt{constructor(e,i,s){this.tileID=e,this.bucketInstanceId=s,this._symbolsByKey={};const a=new Map;for(let t=0;t<i.length;t++){const e=i.get(t),s=e.key,o=a.get(s);o?o.push(e):a.set(s,[e]);}for(const[e,i]of a){const s={positions:i.map((t=>({x:Math.floor(t.anchorX*Ht),y:Math.floor(t.anchorY*Ht)}))),crossTileIDs:i.map((t=>t.crossTileID))};if(s.positions.length>128){const e=new t.av(s.positions.length,16,Uint16Array);for(const{x:t,y:i}of s.positions)e.add(t,i);e.finish(),delete s.positions,s.index=e;}this._symbolsByKey[e]=s;}}getScaledCoordinates(e,i){const{x:s,y:a,z:o}=this.tileID.canonical,{x:r,y:n,z:l}=i.canonical,h=Ht/Math.pow(2,l-o),c=(n*t.N+e.anchorY)*h,u=a*t.N*Ht;return {x:Math.floor((r*t.N+e.anchorX)*h-s*t.N*Ht),y:Math.floor(c-u)}}findMatches(t,e,i){const s=this.tileID.canonical.z<e.canonical.z?1:Math.pow(2,this.tileID.canonical.z-e.canonical.z);for(let a=0;a<t.length;a++){const o=t.get(a);if(o.crossTileID)continue;const r=this._symbolsByKey[o.key];if(!r)continue;const n=this.getScaledCoordinates(o,e);if(r.index){const t=r.index.range(n.x-s,n.y-s,n.x+s,n.y+s).sort();for(const e of t){const t=r.crossTileIDs[e];if(!i[t]){i[t]=!0,o.crossTileID=t;break}}}else if(r.positions)for(let t=0;t<r.positions.length;t++){const e=r.positions[t],a=r.crossTileIDs[t];if(Math.abs(e.x-n.x)<=s&&Math.abs(e.y-n.y)<=s&&!i[a]){i[a]=!0,o.crossTileID=a;break}}}}getCrossTileIDsLists(){return Object.values(this._symbolsByKey).map((({crossTileIDs:t})=>t))}}class Kt{constructor(){this.maxCrossTileID=0;}generate(){return ++this.maxCrossTileID}}class Qt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;}handleWrapJump(t){const e=Math.round((t-this.lng)/360);if(0!==e)for(const t in this.indexes){const i=this.indexes[t],s={};for(const t in i){const a=i[t];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+e),s[a.tileID.key]=a;}this.indexes[t]=s;}this.lng=t;}addBucket(t,e,i){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===e.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key]);}for(let t=0;t<e.symbolInstances.length;t++)e.symbolInstances.get(t).crossTileID=0;this.usedCrossTileIDs[t.overscaledZ]||(this.usedCrossTileIDs[t.overscaledZ]={});const s=this.usedCrossTileIDs[t.overscaledZ];for(const i in this.indexes){const a=this.indexes[i];if(Number(i)>t.overscaledZ)for(const i in a){const o=a[i];o.tileID.isChildOf(t)&&o.findMatches(e.symbolInstances,t,s);}else {const o=a[t.scaledTo(Number(i)).key];o&&o.findMatches(e.symbolInstances,t,s);}}for(let t=0;t<e.symbolInstances.length;t++){const a=e.symbolInstances.get(t);a.crossTileID||(a.crossTileID=i.generate(),s[a.crossTileID]=!0);}return void 0===this.indexes[t.overscaledZ]&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new Xt(t,e.symbolInstances,e.bucketInstanceId),!0}removeBucketCrossTileIDs(t,e){for(const i of e.getCrossTileIDsLists())for(const e of i)delete this.usedCrossTileIDs[t][e];}removeStaleBuckets(t){let e=!1;for(const i in this.indexes){const s=this.indexes[i];for(const a in s)t[s[a].bucketInstanceId]||(this.removeBucketCrossTileIDs(i,s[a]),delete s[a],e=!0);}return e}}class Yt{constructor(){this.layerIndexes={},this.crossTileIDs=new Kt,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={};}addLayer(t,e,i){let s=this.layerIndexes[t.id];void 0===s&&(s=this.layerIndexes[t.id]=new Qt);let a=!1;const o={};s.handleWrapJump(i);for(const i of e){const e=i.getBucket(t);e&&t.id===e.layerIds[0]&&(e.bucketInstanceId||(e.bucketInstanceId=++this.maxBucketInstanceId),s.addBucket(i.tileID,e,this.crossTileIDs)&&(a=!0),o[e.bucketInstanceId]=!0);}return s.removeStaleBuckets(o)&&(a=!0),a}pruneUnusedLayers(t){const e={};t.forEach((t=>{e[t]=!0;}));for(const t in this.layerIndexes)e[t]||delete this.layerIndexes[t];}}const Jt=(e,i)=>t.x(e,i&&i.filter((t=>\"source.canvas\"!==t.identifier))),te=t.F(t.ax,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\",\"setGlyphs\",\"setSprite\"]),ee=t.F(t.ax,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),ie=t.aw();class se extends t.E{constructor(e,i={}){super(),this.map=e,this.dispatcher=new M(st(),this,e._getMapId()),this.imageManager=new b,this.imageManager.setEventedParent(this),this.glyphManager=new E(e._requestManager,i.localIdeographFontFamily),this.lineAtlas=new D(256,512),this.crossTileSymbolIndex=new Yt,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new t.ay,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast(\"setReferrer\",t.az());const s=this;this._rtlTextPluginCallback=se.registerForPluginStateChange((e=>{s.dispatcher.broadcast(\"syncRTLPluginState\",{pluginStatus:e.pluginStatus,pluginURL:e.pluginURL},((e,i)=>{if(t.aA(e),i&&i.every((t=>t)))for(const t in s.sourceCaches){const e=s.sourceCaches[t].getSource().type;\"vector\"!==e&&\"geojson\"!==e||s.sourceCaches[t].reload();}}));})),this.on(\"data\",(t=>{if(\"source\"!==t.dataType||\"metadata\"!==t.sourceDataType)return;const e=this.sourceCaches[t.sourceId];if(!e)return;const i=e.getSource();if(i&&i.vectorLayerIds)for(const t in this._layers){const e=this._layers[t];e.source===i.id&&this._validateLayer(e);}}));}loadURL(e,i={},s){this.fire(new t.k(\"dataloading\",{dataType:\"style\"})),i.validate=\"boolean\"!=typeof i.validate||i.validate;const a=this.map._requestManager.transformRequest(e,c.Style);this._request=t.f(a,((e,a)=>{this._request=null,e?this.fire(new t.j(e)):a&&this._load(a,i,s);}));}loadJSON(e,i={},s){this.fire(new t.k(\"dataloading\",{dataType:\"style\"})),this._request=t.h.frame((()=>{this._request=null,i.validate=!1!==i.validate,this._load(e,i,s);}));}loadEmpty(){this.fire(new t.k(\"dataloading\",{dataType:\"style\"})),this._load(ie,{validate:!1});}_load(e,i,s){var a;const o=i.transformStyle?i.transformStyle(s,e):e;if(!i.validate||!Jt(this,t.y(o))){this._loaded=!0,this.stylesheet=o;for(const t in o.sources)this.addSource(t,o.sources[t],{validate:!1});o.sprite?this._loadSprite(o.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(o.glyphs),this._createLayers(),this.light=new P(this.stylesheet.light),this.map.setTerrain(null!==(a=this.stylesheet.terrain)&&void 0!==a?a:null),this.fire(new t.k(\"data\",{dataType:\"style\"})),this.fire(new t.k(\"style.load\"));}}_createLayers(){const e=t.aB(this.stylesheet.layers);this.dispatcher.broadcast(\"setLayers\",e),this._order=e.map((t=>t.id)),this._layers={},this._serializedLayers=null;for(const i of e){const e=t.aC(i);e.setEventedParent(this,{layer:{id:i.id}}),this._layers[i.id]=e;}}_loadSprite(e,i=!1,s=void 0){this.imageManager.setLoaded(!1),this._spriteRequest=function(e,i,s,a){const o=g(e),r=o.length,n=s>1?\"@2x\":\"\",l={},u={},d={};for(const{id:e,url:s}of o){const o=i.transformRequest(i.normalizeSpriteURL(s,n,\".json\"),c.SpriteJSON),_=`${e}_${o.url}`;l[_]=t.f(o,((t,i)=>{delete l[_],u[e]=i,v(a,u,d,t,r);}));const p=i.transformRequest(i.normalizeSpriteURL(s,n,\".png\"),c.SpriteImage),m=`${e}_${p.url}`;l[m]=h.getImage(p,((t,i)=>{delete l[m],d[e]=i,v(a,u,d,t,r);}));}return {cancel(){for(const t of Object.values(l))t.cancel();}}}(e,this.map._requestManager,this.map.getPixelRatio(),((e,a)=>{if(this._spriteRequest=null,e)this.fire(new t.j(e));else if(a)for(const t in a){this._spritesImagesIds[t]=[];const e=this._spritesImagesIds[t]?this._spritesImagesIds[t].filter((t=>!(t in a))):[];for(const t of e)this.imageManager.removeImage(t),this._changedImages[t]=!0;for(const e in a[t]){const s=\"default\"===t?e:`${t}:${e}`;this._spritesImagesIds[t].push(s),s in this.imageManager.images?this.imageManager.updateImage(s,a[t][e],!1):this.imageManager.addImage(s,a[t][e]),i&&(this._changedImages[s]=!0);}}this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),i&&(this._changed=!0),this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new t.k(\"data\",{dataType:\"style\"})),s&&s(e);}));}_unloadSprite(){for(const t of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(t),this._changedImages[t]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new t.k(\"data\",{dataType:\"style\"}));}_validateLayer(e){const i=this.sourceCaches[e.source];if(!i)return;const s=e.sourceLayer;if(!s)return;const a=i.getSource();(\"geojson\"===a.type||a.vectorLayerIds&&-1===a.vectorLayerIds.indexOf(s))&&this.fire(new t.j(new Error(`Source layer \"${s}\" does not exist on source \"${a.id}\" as specified by style layer \"${e.id}\".`)));}loaded(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(const t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return !1;return !!this.imageManager.isLoaded()}_serializeByIds(t){const e=this._serializedAllLayers();if(!t||0===t.length)return Object.values(e);const i=[];for(const s of t)e[s]&&i.push(e[s]);return i}_serializedAllLayers(){let t=this._serializedLayers;if(t)return t;t=this._serializedLayers={};const e=Object.keys(this._layers);for(const i of e){const e=this._layers[i];\"custom\"!==e.type&&(t[i]=e.serialize());}return t}hasTransitions(){if(this.light&&this.light.hasTransition())return !0;for(const t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return !0;for(const t in this._layers)if(this._layers[t].hasTransition())return !0;return !1}_checkLoaded(){if(!this._loaded)throw new Error(\"Style is not done loading.\")}update(e){if(!this._loaded)return;const i=this._changed;if(this._changed){const t=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(t.length||i.length)&&this._updateWorkerLayers(t,i);for(const t in this._updatedSources){const e=this._updatedSources[t];if(\"reload\"===e)this._reloadSource(t);else {if(\"clear\"!==e)throw new Error(`Invalid action ${e}`);this._clearSource(t);}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const t in this._updatedPaintProps)this._layers[t].updateTransitions(e);this.light.updateTransitions(e),this._resetUpdates();}const s={};for(const t in this.sourceCaches){const e=this.sourceCaches[t];s[t]=e.used,e.used=!1;}for(const t of this._order){const i=this._layers[t];i.recalculate(e,this._availableImages),!i.isHidden(e.zoom)&&i.source&&(this.sourceCaches[i.source].used=!0);}for(const e in s){const i=this.sourceCaches[e];s[e]!==i.used&&i.fire(new t.k(\"data\",{sourceDataType:\"visibility\",dataType:\"source\",sourceId:e}));}this.light.recalculate(e),this.z=e.zoom,i&&this.fire(new t.k(\"data\",{dataType:\"style\"}));}_updateTilesForChangedImages(){const t=Object.keys(this._changedImages);if(t.length){for(const e in this.sourceCaches)this.sourceCaches[e].reloadTilesForDependencies([\"icons\",\"patterns\"],t);this._changedImages={};}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const t in this.sourceCaches)this.sourceCaches[t].reloadTilesForDependencies([\"glyphs\"],[\"\"]);this._glyphsDidChange=!1;}}_updateWorkerLayers(t,e){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeByIds(t),removedIds:e});}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1;}setState(e,i={}){this._checkLoaded();const s=this.serialize();if(e=i.transformStyle?i.transformStyle(s,e):e,Jt(this,t.y(e)))return !1;(e=t.aD(e)).layers=t.aB(e.layers);const a=t.aE(s,e).filter((t=>!(t.command in ee)));if(0===a.length)return !1;const o=a.filter((t=>!(t.command in te)));if(o.length>0)throw new Error(`Unimplemented: ${o.map((t=>t.command)).join(\", \")}.`);for(const t of a)\"setTransition\"!==t.command&&this[t.command].apply(this,t.args);return this.stylesheet=e,this._serializedLayers=null,!0}addImage(e,i){if(this.getImage(e))return this.fire(new t.j(new Error(`An image named \"${e}\" already exists.`)));this.imageManager.addImage(e,i),this._afterImageUpdated(e);}updateImage(t,e){this.imageManager.updateImage(t,e);}getImage(t){return this.imageManager.getImage(t)}removeImage(e){if(!this.getImage(e))return this.fire(new t.j(new Error(`An image named \"${e}\" does not exist.`)));this.imageManager.removeImage(e),this._afterImageUpdated(e);}_afterImageUpdated(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new t.k(\"data\",{dataType:\"style\"}));}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(e,i,s={}){if(this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(`Source \"${e}\" already exists.`);if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(\", \")}.`);if([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(i.type)>=0&&this._validate(t.y.source,`sources.${e}`,i,null,s))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const a=this.sourceCaches[e]=new K(e,i,this.dispatcher);a.style=this,a.setEventedParent(this,(()=>({isSourceLoaded:a.loaded(),source:a.serialize(),sourceId:e}))),a.onAdd(this.map),this._changed=!0;}removeSource(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(const i in this._layers)if(this._layers[i].source===e)return this.fire(new t.j(new Error(`Source \"${e}\" cannot be removed while layer \"${i}\" is using it.`)));const i=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],i.fire(new t.k(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),i.setEventedParent(null),i.onRemove(this.map),this._changed=!0;}setGeoJSONSourceData(t,e){if(this._checkLoaded(),void 0===this.sourceCaches[t])throw new Error(`There is no source with this ID=${t}`);const i=this.sourceCaches[t].getSource();if(\"geojson\"!==i.type)throw new Error(`geojsonSource.type is ${i.type}, which is !== 'geojson`);i.setData(e),this._changed=!0;}getSource(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()}addLayer(e,i,s={}){this._checkLoaded();const a=e.id;if(this.getLayer(a))return void this.fire(new t.j(new Error(`Layer \"${a}\" already exists on this map.`)));let o;if(\"custom\"===e.type){if(Jt(this,t.aF(e)))return;o=t.aC(e);}else {if(\"source\"in e&&\"object\"==typeof e.source&&(this.addSource(a,e.source),e=t.aD(e),e=t.e(e,{source:a})),this._validate(t.y.layer,`layers.${a}`,e,{arrayIndex:-1},s))return;o=t.aC(e),this._validateLayer(o),o.setEventedParent(this,{layer:{id:a}});}const r=i?this._order.indexOf(i):this._order.length;if(i&&-1===r)this.fire(new t.j(new Error(`Cannot add layer \"${a}\" before non-existing layer \"${i}\".`)));else {if(this._order.splice(r,0,a),this._layerOrderChanged=!0,this._layers[a]=o,this._removedLayers[a]&&o.source&&\"custom\"!==o.type){const t=this._removedLayers[a];delete this._removedLayers[a],t.type!==o.type?this._updatedSources[o.source]=\"clear\":(this._updatedSources[o.source]=\"reload\",this.sourceCaches[o.source].pause());}this._updateLayer(o),o.onAdd&&o.onAdd(this.map);}}moveLayer(e,i){if(this._checkLoaded(),this._changed=!0,!this._layers[e])return void this.fire(new t.j(new Error(`The layer '${e}' does not exist in the map's style and cannot be moved.`)));if(e===i)return;const s=this._order.indexOf(e);this._order.splice(s,1);const a=i?this._order.indexOf(i):this._order.length;i&&-1===a?this.fire(new t.j(new Error(`Cannot move layer \"${e}\" before non-existing layer \"${i}\".`))):(this._order.splice(a,0,e),this._layerOrderChanged=!0);}removeLayer(e){this._checkLoaded();const i=this._layers[e];if(!i)return void this.fire(new t.j(new Error(`Cannot remove non-existing layer \"${e}\".`)));i.setEventedParent(null);const s=this._order.indexOf(e);this._order.splice(s,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],this._serializedLayers&&delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}getLayer(t){return this._layers[t]}getLayersOrder(){return [...this._order]}hasLayer(t){return t in this._layers}setLayerZoomRange(e,i,s){this._checkLoaded();const a=this.getLayer(e);a?a.minzoom===i&&a.maxzoom===s||(null!=i&&(a.minzoom=i),null!=s&&(a.maxzoom=s),this._updateLayer(a)):this.fire(new t.j(new Error(`Cannot set the zoom range of non-existing layer \"${e}\".`)));}setFilter(e,i,s={}){this._checkLoaded();const a=this.getLayer(e);if(a){if(!t.aG(a.filter,i))return null==i?(a.filter=void 0,void this._updateLayer(a)):void(this._validate(t.y.filter,`layers.${a.id}.filter`,i,null,s)||(a.filter=t.aD(i),this._updateLayer(a)))}else this.fire(new t.j(new Error(`Cannot filter non-existing layer \"${e}\".`)));}getFilter(e){return t.aD(this.getLayer(e).filter)}setLayoutProperty(e,i,s,a={}){this._checkLoaded();const o=this.getLayer(e);o?t.aG(o.getLayoutProperty(i),s)||(o.setLayoutProperty(i,s,a),this._updateLayer(o)):this.fire(new t.j(new Error(`Cannot style non-existing layer \"${e}\".`)));}getLayoutProperty(e,i){const s=this.getLayer(e);if(s)return s.getLayoutProperty(i);this.fire(new t.j(new Error(`Cannot get style of non-existing layer \"${e}\".`)));}setPaintProperty(e,i,s,a={}){this._checkLoaded();const o=this.getLayer(e);o?t.aG(o.getPaintProperty(i),s)||(o.setPaintProperty(i,s,a)&&this._updateLayer(o),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.j(new Error(`Cannot style non-existing layer \"${e}\".`)));}getPaintProperty(t,e){return this.getLayer(t).getPaintProperty(e)}setFeatureState(e,i){this._checkLoaded();const s=e.source,a=e.sourceLayer,o=this.sourceCaches[s];if(void 0===o)return void this.fire(new t.j(new Error(`The source '${s}' does not exist in the map's style.`)));const r=o.getSource().type;\"geojson\"===r&&a?this.fire(new t.j(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==r||a?(void 0===e.id&&this.fire(new t.j(new Error(\"The feature id parameter must be provided.\"))),o.setFeatureState(a,e.id,i)):this.fire(new t.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}removeFeatureState(e,i){this._checkLoaded();const s=e.source,a=this.sourceCaches[s];if(void 0===a)return void this.fire(new t.j(new Error(`The source '${s}' does not exist in the map's style.`)));const o=a.getSource().type,r=\"vector\"===o?e.sourceLayer:void 0;\"vector\"!==o||r?i&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.j(new Error(\"A feature id is required to remove its specific state property.\"))):a.removeFeatureState(r,e.id,i):this.fire(new t.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}getFeatureState(e){this._checkLoaded();const i=e.source,s=e.sourceLayer,a=this.sourceCaches[i];if(void 0!==a)return \"vector\"!==a.getSource().type||s?(void 0===e.id&&this.fire(new t.j(new Error(\"The feature id parameter must be provided.\"))),a.getFeatureState(s,e.id)):void this.fire(new t.j(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));this.fire(new t.j(new Error(`The source '${i}' does not exist in the map's style.`)));}getTransition(){return t.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;const e=t.aH(this.sourceCaches,(t=>t.serialize())),i=this._serializeByIds(this._order),s=this.map.getTerrain()||void 0,a=this.stylesheet;return t.aI({version:a.version,name:a.name,metadata:a.metadata,light:a.light,center:a.center,zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,sprite:a.sprite,glyphs:a.glyphs,transition:a.transition,sources:e,layers:i,terrain:s},(t=>void 0!==t))}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&\"raster\"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._serializedLayers=null,this._changed=!0;}_flattenAndSortRenderedFeatures(t){const e=t=>\"fill-extrusion\"===this._layers[t].type,i={},s=[];for(let a=this._order.length-1;a>=0;a--){const o=this._order[a];if(e(o)){i[o]=a;for(const e of t){const t=e[o];if(t)for(const e of t)s.push(e);}}}s.sort(((t,e)=>e.intersectionZ-t.intersectionZ));const a=[];for(let o=this._order.length-1;o>=0;o--){const r=this._order[o];if(e(r))for(let t=s.length-1;t>=0;t--){const e=s[t].feature;if(i[e.layer.id]<o)break;a.push(e),s.pop();}else for(const e of t){const t=e[r];if(t)for(const e of t)a.push(e.feature);}}return a}queryRenderedFeatures(e,i,s){i&&i.filter&&this._validate(t.y.filter,\"queryRenderedFeatures.filter\",i.filter,null,i);const a={};if(i&&i.layers){if(!Array.isArray(i.layers))return this.fire(new t.j(new Error(\"parameters.layers must be an Array.\"))),[];for(const e of i.layers){const i=this._layers[e];if(!i)return this.fire(new t.j(new Error(`The layer '${e}' does not exist in the map's style and cannot be queried for features.`))),[];a[i.source]=!0;}}const o=[];i.availableImages=this._availableImages;const r=this._serializedAllLayers();for(const t in this.sourceCaches)i.layers&&!a[t]||o.push(q(this.sourceCaches[t],this._layers,r,e,i,s));return this.placement&&o.push(function(t,e,i,s,a,o,r){const n={},l=o.queryRenderedSymbols(s),h=[];for(const t of Object.keys(l).map(Number))h.push(r[t]);h.sort($);for(const i of h){const s=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],e,i.bucketIndex,i.sourceLayerIndex,a.filter,a.layers,a.availableImages,t);for(const t in s){const e=n[t]=n[t]||[],a=s[t];a.sort(((t,e)=>{const s=i.featureSortOrder;if(s){const i=s.indexOf(t.featureIndex);return s.indexOf(e.featureIndex)-i}return e.featureIndex-t.featureIndex}));for(const t of a)e.push(t);}}for(const e in n)n[e].forEach((s=>{const a=s.feature,o=i[t[e].source].getFeatureState(a.layer[\"source-layer\"],a.id);a.source=a.layer.source,a.layer[\"source-layer\"]&&(a.sourceLayer=a.layer[\"source-layer\"]),a.state=o;}));return n}(this._layers,r,this.sourceCaches,e,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(o)}querySourceFeatures(e,i){i&&i.filter&&this._validate(t.y.filter,\"querySourceFeatures.filter\",i.filter,null,i);const s=this.sourceCaches[e];return s?function(t,e){const i=t.getRenderableIds().map((e=>t.getTileByID(e))),s=[],a={};for(let t=0;t<i.length;t++){const o=i[t],r=o.tileID.canonical.key;a[r]||(a[r]=!0,o.querySourceFeatures(s,e));}return s}(s,i):[]}addSourceType(t,e,i){return j(t)?i(new Error(`A source type called \"${t}\" already exists.`)):(((t,e)=>{G[t]=e;})(t,e),e.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:t,url:e.workerSourceURL},i):i(null,null))}getLight(){return this.light.getLight()}setLight(e,i={}){this._checkLoaded();const s=this.light.getLight();let a=!1;for(const i in e)if(!t.aG(e[i],s[i])){a=!0;break}if(!a)return;const o={now:t.h.now(),transition:t.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e,i),this.light.updateTransitions(o);}_validate(e,i,s,a,o={}){return (!o||!1!==o.validate)&&Jt(this,e.call(t.y,t.e({key:i,style:this.serialize(),value:s,styleSpec:t.v},a)))}_remove(e=!0){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),t.aJ.off(\"pluginStateChange\",this._rtlTextPluginCallback);for(const t in this._layers)this._layers[t].setEventedParent(null);for(const t in this.sourceCaches){const e=this.sourceCaches[t];e.setEventedParent(null),e.onRemove(this.map);}this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove(e);}_clearSource(t){this.sourceCaches[t].clearTiles();}_reloadSource(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload();}_updateSources(t){for(const e in this.sourceCaches)this.sourceCaches[e].update(t,this.map.terrain);}_generateCollisionBoxes(){for(const t in this.sourceCaches)this._reloadSource(t);}_updatePlacement(e,i,s,a,o=!1){let r=!1,n=!1;const l={};for(const t of this._order){const i=this._layers[t];if(\"symbol\"!==i.type)continue;if(!l[i.source]){const t=this.sourceCaches[i.source];l[i.source]=t.getRenderableIds(!0).map((e=>t.getTileByID(e))).sort(((t,e)=>e.tileID.overscaledZ-t.tileID.overscaledZ||(t.tileID.isLessThan(e.tileID)?-1:1)));}const s=this.crossTileSymbolIndex.addLayer(i,l[i.source],e.center.lng);r=r||s;}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((o=o||this._layerOrderChanged||0===s)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(t.h.now(),e.zoom))&&(this.pauseablePlacement=new Wt(e,this.map.terrain,this._order,o,i,s,a,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(t.h.now()),n=!0),r&&this.pauseablePlacement.placement.setStale()),n||r)for(const t of this._order){const e=this._layers[t];\"symbol\"===e.type&&this.placement.updateLayerOpacities(e,l[e.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(t.h.now())}_releaseSymbolFadeTiles(){for(const t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles();}getImages(t,e,i){this.imageManager.getImages(e.icons,i),this._updateTilesForChangedImages();const s=this.sourceCaches[e.source];s&&s.setDependencies(e.tileID.key,e.type,e.icons);}getGlyphs(t,e,i){this.glyphManager.getGlyphs(e.stacks,i);const s=this.sourceCaches[e.source];s&&s.setDependencies(e.tileID.key,e.type,[\"\"]);}getResource(e,i,s){return t.m(i,s)}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(e,i={}){this._checkLoaded(),e&&this._validate(t.y.glyphs,\"glyphs\",e,null,i)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=e,this.glyphManager.entries={},this.glyphManager.setURL(e));}addSprite(e,i,s={},a){this._checkLoaded();const o=[{id:e,url:i}],r=[...g(this.stylesheet.sprite),...o];this._validate(t.y.sprite,\"sprite\",r,null,s)||(this.stylesheet.sprite=r,this._loadSprite(o,!0,a));}removeSprite(e){this._checkLoaded();const i=g(this.stylesheet.sprite);if(i.find((t=>t.id===e))){if(this._spritesImagesIds[e])for(const t of this._spritesImagesIds[e])this.imageManager.removeImage(t),this._changedImages[t]=!0;i.splice(i.findIndex((t=>t.id===e)),1),this.stylesheet.sprite=i.length>0?i:void 0,delete this._spritesImagesIds[e],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new t.k(\"data\",{dataType:\"style\"}));}else this.fire(new t.j(new Error(`Sprite \"${e}\" doesn't exists on this map.`)));}getSprite(){return g(this.stylesheet.sprite)}setSprite(e,i={},s){this._checkLoaded(),e&&this._validate(t.y.sprite,\"sprite\",e,null,i)||(this.stylesheet.sprite=e,e?this._loadSprite(e,!0,s):(this._unloadSprite(),s&&s(null)));}}se.registerForPluginStateChange=t.aK;var ae=t.Q([{name:\"a_pos\",type:\"Int16\",components:2}]),oe=\"attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_depth;void main() {float extent=8192.0;float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/extent;gl_Position=u_matrix*vec4(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}\";const re={prelude:ne(\"#ifdef GL_ES\\nprecision mediump float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\\n\",\"#ifdef GL_ES\\nprecision highp float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\\n#ifdef TERRAIN3D\\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\\n#endif\\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\\n#ifdef TERRAIN3D\\nhighp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\\n#else\\nreturn 1.0;\\n#endif\\n}float calculate_visibility(vec4 pos) {\\n#ifdef TERRAIN3D\\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\\n#else\\nreturn 1.0;\\n#endif\\n}float ele(vec2 pos) {\\n#ifdef TERRAIN3D\\nvec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\\n#else\\nreturn 0.0;\\n#endif\\n}float get_elevation(vec2 pos) {\\n#ifdef TERRAIN3D\\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\\n#else\\nreturn 0.0;\\n#endif\\n}\"),background:ne(\"uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),backgroundPattern:ne(\"uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}\"),circle:ne(\"varying vec3 v_data;varying float v_visibility;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main(void) {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}\"),clippingMask:ne(\"void main() {gl_FragColor=vec4(1.0);}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),heatmap:ne(\"uniform highp float u_intensity;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main() {\\n#pragma mapbox: initialize highp float weight\\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#pragma mapbox: define mediump float radius\\nconst highp float ZERO=1.0/255.0/16.0;\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main(void) {\\n#pragma mapbox: initialize highp float weight\\n#pragma mapbox: initialize mediump float radius\\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}\"),heatmapTexture:ne(\"uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(0.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\"),collisionBox:ne(\"varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,get_elevation(a_pos),1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),collisionCircle:ne(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd  =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz  /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),debug:ne(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}\"),fill:ne(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),fillOutline:ne(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),fillOutlinePattern:ne(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),fillPattern:ne(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),fillExtrusion:ne(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\\n#ifdef TERRAIN3D\\nattribute vec2 a_centroid;\\n#endif\\nvarying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;\\n#ifdef TERRAIN3D\\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\\n#else\\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\\n#endif\\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),fillExtrusionPattern:ne(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\\n#ifdef TERRAIN3D\\nattribute vec2 a_centroid;\\n#endif\\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\\n#ifdef TERRAIN3D\\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\\n#else\\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\\n#endif\\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),hillshadePrepare:ne(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),hillshade:ne(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),line:ne(\"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\\n#ifdef TERRAIN3D\\nv_gamma_scale=1.0;\\n#else\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#endif\\nv_width2=vec2(outset,inset);}\"),lineGradient:ne(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\\n#ifdef TERRAIN3D\\nv_gamma_scale=1.0;\\n#else\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#endif\\nv_width2=vec2(outset,inset);}\"),linePattern:ne(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\\n#ifdef TERRAIN3D\\nv_gamma_scale=1.0;\\n#else\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#endif\\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\"),lineSDF:ne(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\\n#ifdef TERRAIN3D\\nv_gamma_scale=1.0;\\n#else\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#endif\\nv_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),raster:ne(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),symbolIcon:ne(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),z,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}\"),symbolSDF:ne(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),symbolTextAndIcon:ne(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\"),terrain:ne(\"uniform sampler2D u_texture;varying vec2 v_texture_pos;void main() {gl_FragColor=texture2D(u_texture,v_texture_pos);}\",oe),terrainDepth:ne(\"varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}\",oe),terrainCoords:ne(\"precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}\",oe)};function ne(t,e){const i=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,s=e.match(/attribute ([\\w]+) ([\\w]+)/g),a=t.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),o=e.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),r=o?o.concat(a):a,n={};return {fragmentSource:t=t.replace(i,((t,e,i,s,a)=>(n[a]=!0,\"define\"===e?`\\n#ifndef HAS_UNIFORM_u_${a}\\nvarying ${i} ${s} ${a};\\n#else\\nuniform ${i} ${s} u_${a};\\n#endif\\n`:`\\n#ifdef HAS_UNIFORM_u_${a}\\n    ${i} ${s} ${a} = u_${a};\\n#endif\\n`))),vertexSource:e=e.replace(i,((t,e,i,s,a)=>{const o=\"float\"===s?\"vec2\":\"vec4\",r=a.match(/color/)?\"color\":o;return n[a]?\"define\"===e?`\\n#ifndef HAS_UNIFORM_u_${a}\\nuniform lowp float u_${a}_t;\\nattribute ${i} ${o} a_${a};\\nvarying ${i} ${s} ${a};\\n#else\\nuniform ${i} ${s} u_${a};\\n#endif\\n`:\"vec4\"===r?`\\n#ifndef HAS_UNIFORM_u_${a}\\n    ${a} = a_${a};\\n#else\\n    ${i} ${s} ${a} = u_${a};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${a}\\n    ${a} = unpack_mix_${r}(a_${a}, u_${a}_t);\\n#else\\n    ${i} ${s} ${a} = u_${a};\\n#endif\\n`:\"define\"===e?`\\n#ifndef HAS_UNIFORM_u_${a}\\nuniform lowp float u_${a}_t;\\nattribute ${i} ${o} a_${a};\\n#else\\nuniform ${i} ${s} u_${a};\\n#endif\\n`:\"vec4\"===r?`\\n#ifndef HAS_UNIFORM_u_${a}\\n    ${i} ${s} ${a} = a_${a};\\n#else\\n    ${i} ${s} ${a} = u_${a};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${a}\\n    ${i} ${s} ${a} = unpack_mix_${r}(a_${a}, u_${a}_t);\\n#else\\n    ${i} ${s} ${a} = u_${a};\\n#endif\\n`})),staticAttributes:s,staticUniforms:r}}class le{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;}bind(t,e,i,s,a,o,r,n,l){this.context=t;let h=this.boundPaintVertexBuffers.length!==s.length;for(let t=0;!h&&t<s.length;t++)this.boundPaintVertexBuffers[t]!==s[t]&&(h=!0);!this.vao||this.boundProgram!==e||this.boundLayoutVertexBuffer!==i||h||this.boundIndexBuffer!==a||this.boundVertexOffset!==o||this.boundDynamicVertexBuffer!==r||this.boundDynamicVertexBuffer2!==n||this.boundDynamicVertexBuffer3!==l?this.freshBind(e,i,s,a,o,r,n,l):(t.bindVertexArray.set(this.vao),r&&r.bind(),a&&a.dynamicDraw&&a.bind(),n&&n.bind(),l&&l.bind());}freshBind(t,e,i,s,a,o,r,n){const l=t.numAttributes,h=this.context,c=h.gl;this.vao&&this.destroy(),this.vao=h.createVertexArray(),h.bindVertexArray.set(this.vao),this.boundProgram=t,this.boundLayoutVertexBuffer=e,this.boundPaintVertexBuffers=i,this.boundIndexBuffer=s,this.boundVertexOffset=a,this.boundDynamicVertexBuffer=o,this.boundDynamicVertexBuffer2=r,this.boundDynamicVertexBuffer3=n,e.enableAttributes(c,t);for(const e of i)e.enableAttributes(c,t);o&&o.enableAttributes(c,t),r&&r.enableAttributes(c,t),n&&n.enableAttributes(c,t),e.bind(),e.setVertexAttribPointers(c,t,a);for(const e of i)e.bind(),e.setVertexAttribPointers(c,t,a);o&&(o.bind(),o.setVertexAttribPointers(c,t,a)),s&&s.bind(),r&&(r.bind(),r.setVertexAttribPointers(c,t,a)),n&&(n.bind(),n.setVertexAttribPointers(c,t,a)),h.currentNumAttributes=l;}destroy(){this.vao&&(this.context.deleteVertexArray(this.vao),this.vao=null);}}function he(t){const e=[];for(let i=0;i<t.length;i++){if(null===t[i])continue;const s=t[i].split(\" \");e.push(s.pop());}return e}class ce{constructor(e,i,s,a,o,r){const n=e.gl;this.program=n.createProgram();const l=he(i.staticAttributes),h=s?s.getBinderAttributes():[],c=l.concat(h),u=re.prelude.staticUniforms?he(re.prelude.staticUniforms):[],d=i.staticUniforms?he(i.staticUniforms):[],_=s?s.getBinderUniforms():[],p=u.concat(d).concat(_),m=[];for(const t of p)m.indexOf(t)<0&&m.push(t);const f=s?s.defines():[];o&&f.push(\"#define OVERDRAW_INSPECTOR;\"),r&&f.push(\"#define TERRAIN3D;\");const g=f.concat(re.prelude.fragmentSource,i.fragmentSource).join(\"\\n\"),v=f.concat(re.prelude.vertexSource,i.vertexSource).join(\"\\n\"),x=n.createShader(n.FRAGMENT_SHADER);if(n.isContextLost())return void(this.failedToCreate=!0);if(n.shaderSource(x,g),n.compileShader(x),!n.getShaderParameter(x,n.COMPILE_STATUS))throw new Error(`Could not compile fragment shader: ${n.getShaderInfoLog(x)}`);n.attachShader(this.program,x);const y=n.createShader(n.VERTEX_SHADER);if(n.isContextLost())return void(this.failedToCreate=!0);if(n.shaderSource(y,v),n.compileShader(y),!n.getShaderParameter(y,n.COMPILE_STATUS))throw new Error(`Could not compile vertex shader: ${n.getShaderInfoLog(y)}`);n.attachShader(this.program,y),this.attributes={};const b={};this.numAttributes=c.length;for(let t=0;t<this.numAttributes;t++)c[t]&&(n.bindAttribLocation(this.program,t,c[t]),this.attributes[c[t]]=t);if(n.linkProgram(this.program),!n.getProgramParameter(this.program,n.LINK_STATUS))throw new Error(`Program failed to link: ${n.getProgramInfoLog(this.program)}`);n.deleteShader(y),n.deleteShader(x);for(let t=0;t<m.length;t++){const e=m[t];if(e&&!b[e]){const t=n.getUniformLocation(this.program,e);t&&(b[e]=t);}}this.fixedUniforms=a(e,b),this.terrainUniforms=((e,i)=>({u_depth:new t.aL(e,i.u_depth),u_terrain:new t.aL(e,i.u_terrain),u_terrain_dim:new t.aM(e,i.u_terrain_dim),u_terrain_matrix:new t.aN(e,i.u_terrain_matrix),u_terrain_unpack:new t.aO(e,i.u_terrain_unpack),u_terrain_exaggeration:new t.aM(e,i.u_terrain_exaggeration)}))(e,b),this.binderUniforms=s?s.getUniforms(e,b):[];}draw(t,e,i,s,a,o,r,n,l,h,c,u,d,_,p,m,f,g){const v=t.gl;if(this.failedToCreate)return;if(t.program.set(this.program),t.setDepthMode(i),t.setStencilMode(s),t.setColorMode(a),t.setCullFace(o),n){t.activeTexture.set(v.TEXTURE2),v.bindTexture(v.TEXTURE_2D,n.depthTexture),t.activeTexture.set(v.TEXTURE3),v.bindTexture(v.TEXTURE_2D,n.texture);for(const t in this.terrainUniforms)this.terrainUniforms[t].set(n[t]);}for(const t in this.fixedUniforms)this.fixedUniforms[t].set(r[t]);p&&p.setUniforms(t,this.binderUniforms,d,{zoom:_});let x=0;switch(e){case v.LINES:x=2;break;case v.TRIANGLES:x=3;break;case v.LINE_STRIP:x=1;}for(const i of u.get()){const s=i.vaos||(i.vaos={});(s[l]||(s[l]=new le)).bind(t,this,h,p?p.getPaintVertexBuffers():[],c,i.vertexOffset,m,f,g),v.drawElements(e,i.primitiveLength*x,v.UNSIGNED_SHORT,i.primitiveOffset*x*2);}}}function ue(t,e,i){const s=1/St(i,1,e.transform.tileZoom),a=Math.pow(2,i.tileID.overscaledZ),o=i.tileSize*Math.pow(2,e.transform.tileZoom)/a,r=o*(i.tileID.canonical.x+i.tileID.wrap*a),n=o*i.tileID.canonical.y;return {u_image:0,u_texsize:i.imageAtlasTexture.size,u_scale:[s,t.fromScale,t.toScale],u_fade:t.t,u_pixel_coord_upper:[r>>16,n>>16],u_pixel_coord_lower:[65535&r,65535&n]}}const de=(e,i,s,a)=>{const o=i.style.light,r=o.properties.get(\"position\"),n=[r.x,r.y,r.z],l=function(){var e=new t.A(9);return t.A!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}();\"viewport\"===o.properties.get(\"anchor\")&&function(t,e){var i=Math.sin(e),s=Math.cos(e);t[0]=s,t[1]=i,t[2]=0,t[3]=-i,t[4]=s,t[5]=0,t[6]=0,t[7]=0,t[8]=1;}(l,-i.transform.angle),function(t,e,i){var s=e[0],a=e[1],o=e[2];t[0]=s*i[0]+a*i[3]+o*i[6],t[1]=s*i[1]+a*i[4]+o*i[7],t[2]=s*i[2]+a*i[5]+o*i[8];}(n,n,l);const h=o.properties.get(\"color\");return {u_matrix:e,u_lightpos:n,u_lightintensity:o.properties.get(\"intensity\"),u_lightcolor:[h.r,h.g,h.b],u_vertical_gradient:+s,u_opacity:a}},_e=(e,i,s,a,o,r,n)=>t.e(de(e,i,s,a),ue(r,i,n),{u_height_factor:-Math.pow(2,o.overscaledZ)/n.tileSize/8}),pe=t=>({u_matrix:t}),me=(e,i,s,a)=>t.e(pe(e),ue(s,i,a)),fe=(t,e)=>({u_matrix:t,u_world:e}),ge=(e,i,s,a,o)=>t.e(me(e,i,s,a),{u_world:o}),ve=(t,e,i,s)=>{const a=t.transform;let o,r;if(\"map\"===s.paint.get(\"circle-pitch-alignment\")){const t=St(i,1,a.zoom);o=!0,r=[t,t];}else o=!1,r=a.pixelsToGLUnits;return {u_camera_to_center_distance:a.cameraToCenterDistance,u_scale_with_map:+(\"map\"===s.paint.get(\"circle-pitch-scale\")),u_matrix:t.translatePosMatrix(e.posMatrix,i,s.paint.get(\"circle-translate\"),s.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+o,u_device_pixel_ratio:t.pixelRatio,u_extrude_scale:r}},xe=(t,e,i)=>{const s=St(i,1,e.zoom),a=Math.pow(2,e.zoom-i.tileID.overscaledZ),o=i.tileID.overscaleFactor();return {u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:s,u_extrude_scale:[e.pixelsToGLUnits[0]/(s*a),e.pixelsToGLUnits[1]/(s*a)],u_overscale_factor:o}},ye=(t,e,i=1)=>({u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:i}),be=t=>({u_matrix:t}),we=(t,e,i,s)=>({u_matrix:t,u_extrude_scale:St(e,1,i),u_intensity:s});function Te(e,i){const s=Math.pow(2,i.canonical.z),a=i.canonical.y;return [new t.U(0,a/s).toLngLat().lat,new t.U(0,(a+1)/s).toLngLat().lat]}const Ie=(t,e,i,s)=>{const a=t.transform;return {u_matrix:De(t,e,i,s),u_ratio:1/St(e,1,a.zoom),u_device_pixel_ratio:t.pixelRatio,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Ee=(e,i,s,a,o)=>t.e(Ie(e,i,s,o),{u_image:0,u_image_height:a}),Se=(t,e,i,s,a)=>{const o=t.transform,r=Pe(e,o);return {u_matrix:De(t,e,i,a),u_texsize:e.imageAtlasTexture.size,u_ratio:1/St(e,1,o.zoom),u_device_pixel_ratio:t.pixelRatio,u_image:0,u_scale:[r,s.fromScale,s.toScale],u_fade:s.t,u_units_to_pixels:[1/o.pixelsToGLUnits[0],1/o.pixelsToGLUnits[1]]}},Ce=(e,i,s,a,o,r)=>{const n=e.lineAtlas,l=Pe(i,e.transform),h=\"round\"===s.layout.get(\"line-cap\"),c=n.getDash(a.from,h),u=n.getDash(a.to,h),d=c.width*o.fromScale,_=u.width*o.toScale;return t.e(Ie(e,i,s,r),{u_patternscale_a:[l/d,-c.height/2],u_patternscale_b:[l/_,-u.height/2],u_sdfgamma:n.width/(256*Math.min(d,_)*e.pixelRatio)/2,u_image:0,u_tex_y_a:c.y,u_tex_y_b:u.y,u_mix:o.t})};function Pe(t,e){return 1/St(t,1,e.tileZoom)}function De(t,e,i,s){return t.translatePosMatrix(s?s.posMatrix:e.tileID.posMatrix,e,i.paint.get(\"line-translate\"),i.paint.get(\"line-translate-anchor\"))}const Me=(t,e,i,s,a)=>{return {u_matrix:t,u_tl_parent:e,u_scale_parent:i,u_buffer_scale:1,u_fade_t:s.mix,u_opacity:s.opacity*a.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:a.paint.get(\"raster-brightness-min\"),u_brightness_high:a.paint.get(\"raster-brightness-max\"),u_saturation_factor:(r=a.paint.get(\"raster-saturation\"),r>0?1-1/(1.001-r):-r),u_contrast_factor:(o=a.paint.get(\"raster-contrast\"),o>0?1/(1-o):1+o),u_spin_weights:ze(a.paint.get(\"raster-hue-rotate\"))};var o,r;};function ze(t){t*=Math.PI/180;const e=Math.sin(t),i=Math.cos(t);return [(2*i+1)/3,(-Math.sqrt(3)*e-i+1)/3,(Math.sqrt(3)*e-i+1)/3]}const Le=(t,e,i,s,a,o,r,n,l,h)=>{const c=a.transform;return {u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:c.cameraToCenterDistance,u_pitch:c.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:c.width/c.height,u_fade_change:a.options.fadeDuration?a.symbolFadeChange:1,u_matrix:o,u_label_plane_matrix:r,u_coord_matrix:n,u_is_text:+l,u_pitch_with_map:+s,u_texsize:h,u_texture:0}},Ae=(e,i,s,a,o,r,n,l,h,c,u)=>{const d=o.transform;return t.e(Le(e,i,s,a,o,r,n,l,h,c),{u_gamma_scale:a?Math.cos(d._pitch)*d.cameraToCenterDistance:1,u_device_pixel_ratio:o.pixelRatio,u_is_halo:+u})},Re=(e,i,s,a,o,r,n,l,h,c)=>t.e(Ae(e,i,s,a,o,r,n,l,!0,h,!0),{u_texsize_icon:c,u_texture_icon:1}),ke=(t,e,i)=>({u_matrix:t,u_opacity:e,u_color:i}),Fe=(e,i,s,a,o,r)=>t.e(function(t,e,i,s){const a=i.imageManager.getPattern(t.from.toString()),o=i.imageManager.getPattern(t.to.toString()),{width:r,height:n}=i.imageManager.getPixelSize(),l=Math.pow(2,s.tileID.overscaledZ),h=s.tileSize*Math.pow(2,i.transform.tileZoom)/l,c=h*(s.tileID.canonical.x+s.tileID.wrap*l),u=h*s.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:a.tl,u_pattern_br_a:a.br,u_pattern_tl_b:o.tl,u_pattern_br_b:o.br,u_texsize:[r,n],u_mix:e.t,u_pattern_size_a:a.displaySize,u_pattern_size_b:o.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/St(s,1,i.transform.tileZoom),u_pixel_coord_upper:[c>>16,u>>16],u_pixel_coord_lower:[65535&c,65535&u]}}(a,r,s,o),{u_matrix:e,u_opacity:i}),Be={fillExtrusion:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_lightpos:new t.aP(e,i.u_lightpos),u_lightintensity:new t.aM(e,i.u_lightintensity),u_lightcolor:new t.aP(e,i.u_lightcolor),u_vertical_gradient:new t.aM(e,i.u_vertical_gradient),u_opacity:new t.aM(e,i.u_opacity)}),fillExtrusionPattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_lightpos:new t.aP(e,i.u_lightpos),u_lightintensity:new t.aM(e,i.u_lightintensity),u_lightcolor:new t.aP(e,i.u_lightcolor),u_vertical_gradient:new t.aM(e,i.u_vertical_gradient),u_height_factor:new t.aM(e,i.u_height_factor),u_image:new t.aL(e,i.u_image),u_texsize:new t.aQ(e,i.u_texsize),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade),u_opacity:new t.aM(e,i.u_opacity)}),fill:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix)}),fillPattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_image:new t.aL(e,i.u_image),u_texsize:new t.aQ(e,i.u_texsize),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade)}),fillOutline:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_world:new t.aQ(e,i.u_world)}),fillOutlinePattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_world:new t.aQ(e,i.u_world),u_image:new t.aL(e,i.u_image),u_texsize:new t.aQ(e,i.u_texsize),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade)}),circle:(e,i)=>({u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_scale_with_map:new t.aL(e,i.u_scale_with_map),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_extrude_scale:new t.aQ(e,i.u_extrude_scale),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_matrix:new t.aN(e,i.u_matrix)}),collisionBox:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pixels_to_tile_units:new t.aM(e,i.u_pixels_to_tile_units),u_extrude_scale:new t.aQ(e,i.u_extrude_scale),u_overscale_factor:new t.aM(e,i.u_overscale_factor)}),collisionCircle:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_inv_matrix:new t.aN(e,i.u_inv_matrix),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_viewport_size:new t.aQ(e,i.u_viewport_size)}),debug:(e,i)=>({u_color:new t.aR(e,i.u_color),u_matrix:new t.aN(e,i.u_matrix),u_overlay:new t.aL(e,i.u_overlay),u_overlay_scale:new t.aM(e,i.u_overlay_scale)}),clippingMask:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix)}),heatmap:(e,i)=>({u_extrude_scale:new t.aM(e,i.u_extrude_scale),u_intensity:new t.aM(e,i.u_intensity),u_matrix:new t.aN(e,i.u_matrix)}),heatmapTexture:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_world:new t.aQ(e,i.u_world),u_image:new t.aL(e,i.u_image),u_color_ramp:new t.aL(e,i.u_color_ramp),u_opacity:new t.aM(e,i.u_opacity)}),hillshade:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_image:new t.aL(e,i.u_image),u_latrange:new t.aQ(e,i.u_latrange),u_light:new t.aQ(e,i.u_light),u_shadow:new t.aR(e,i.u_shadow),u_highlight:new t.aR(e,i.u_highlight),u_accent:new t.aR(e,i.u_accent)}),hillshadePrepare:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_image:new t.aL(e,i.u_image),u_dimension:new t.aQ(e,i.u_dimension),u_zoom:new t.aM(e,i.u_zoom),u_unpack:new t.aO(e,i.u_unpack)}),line:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels)}),lineGradient:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels),u_image:new t.aL(e,i.u_image),u_image_height:new t.aM(e,i.u_image_height)}),linePattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_texsize:new t.aQ(e,i.u_texsize),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_image:new t.aL(e,i.u_image),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade)}),lineSDF:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels),u_patternscale_a:new t.aQ(e,i.u_patternscale_a),u_patternscale_b:new t.aQ(e,i.u_patternscale_b),u_sdfgamma:new t.aM(e,i.u_sdfgamma),u_image:new t.aL(e,i.u_image),u_tex_y_a:new t.aM(e,i.u_tex_y_a),u_tex_y_b:new t.aM(e,i.u_tex_y_b),u_mix:new t.aM(e,i.u_mix)}),raster:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_tl_parent:new t.aQ(e,i.u_tl_parent),u_scale_parent:new t.aM(e,i.u_scale_parent),u_buffer_scale:new t.aM(e,i.u_buffer_scale),u_fade_t:new t.aM(e,i.u_fade_t),u_opacity:new t.aM(e,i.u_opacity),u_image0:new t.aL(e,i.u_image0),u_image1:new t.aL(e,i.u_image1),u_brightness_low:new t.aM(e,i.u_brightness_low),u_brightness_high:new t.aM(e,i.u_brightness_high),u_saturation_factor:new t.aM(e,i.u_saturation_factor),u_contrast_factor:new t.aM(e,i.u_contrast_factor),u_spin_weights:new t.aP(e,i.u_spin_weights)}),symbolIcon:(e,i)=>({u_is_size_zoom_constant:new t.aL(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aL(e,i.u_is_size_feature_constant),u_size_t:new t.aM(e,i.u_size_t),u_size:new t.aM(e,i.u_size),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pitch:new t.aM(e,i.u_pitch),u_rotate_symbol:new t.aL(e,i.u_rotate_symbol),u_aspect_ratio:new t.aM(e,i.u_aspect_ratio),u_fade_change:new t.aM(e,i.u_fade_change),u_matrix:new t.aN(e,i.u_matrix),u_label_plane_matrix:new t.aN(e,i.u_label_plane_matrix),u_coord_matrix:new t.aN(e,i.u_coord_matrix),u_is_text:new t.aL(e,i.u_is_text),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_texsize:new t.aQ(e,i.u_texsize),u_texture:new t.aL(e,i.u_texture)}),symbolSDF:(e,i)=>({u_is_size_zoom_constant:new t.aL(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aL(e,i.u_is_size_feature_constant),u_size_t:new t.aM(e,i.u_size_t),u_size:new t.aM(e,i.u_size),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pitch:new t.aM(e,i.u_pitch),u_rotate_symbol:new t.aL(e,i.u_rotate_symbol),u_aspect_ratio:new t.aM(e,i.u_aspect_ratio),u_fade_change:new t.aM(e,i.u_fade_change),u_matrix:new t.aN(e,i.u_matrix),u_label_plane_matrix:new t.aN(e,i.u_label_plane_matrix),u_coord_matrix:new t.aN(e,i.u_coord_matrix),u_is_text:new t.aL(e,i.u_is_text),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_texsize:new t.aQ(e,i.u_texsize),u_texture:new t.aL(e,i.u_texture),u_gamma_scale:new t.aM(e,i.u_gamma_scale),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_is_halo:new t.aL(e,i.u_is_halo)}),symbolTextAndIcon:(e,i)=>({u_is_size_zoom_constant:new t.aL(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aL(e,i.u_is_size_feature_constant),u_size_t:new t.aM(e,i.u_size_t),u_size:new t.aM(e,i.u_size),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pitch:new t.aM(e,i.u_pitch),u_rotate_symbol:new t.aL(e,i.u_rotate_symbol),u_aspect_ratio:new t.aM(e,i.u_aspect_ratio),u_fade_change:new t.aM(e,i.u_fade_change),u_matrix:new t.aN(e,i.u_matrix),u_label_plane_matrix:new t.aN(e,i.u_label_plane_matrix),u_coord_matrix:new t.aN(e,i.u_coord_matrix),u_is_text:new t.aL(e,i.u_is_text),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_texsize:new t.aQ(e,i.u_texsize),u_texsize_icon:new t.aQ(e,i.u_texsize_icon),u_texture:new t.aL(e,i.u_texture),u_texture_icon:new t.aL(e,i.u_texture_icon),u_gamma_scale:new t.aM(e,i.u_gamma_scale),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_is_halo:new t.aL(e,i.u_is_halo)}),background:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_opacity:new t.aM(e,i.u_opacity),u_color:new t.aR(e,i.u_color)}),backgroundPattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_opacity:new t.aM(e,i.u_opacity),u_image:new t.aL(e,i.u_image),u_pattern_tl_a:new t.aQ(e,i.u_pattern_tl_a),u_pattern_br_a:new t.aQ(e,i.u_pattern_br_a),u_pattern_tl_b:new t.aQ(e,i.u_pattern_tl_b),u_pattern_br_b:new t.aQ(e,i.u_pattern_br_b),u_texsize:new t.aQ(e,i.u_texsize),u_mix:new t.aM(e,i.u_mix),u_pattern_size_a:new t.aQ(e,i.u_pattern_size_a),u_pattern_size_b:new t.aQ(e,i.u_pattern_size_b),u_scale_a:new t.aM(e,i.u_scale_a),u_scale_b:new t.aM(e,i.u_scale_b),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.aM(e,i.u_tile_units_to_pixels)}),terrain:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_texture:new t.aL(e,i.u_texture),u_ele_delta:new t.aM(e,i.u_ele_delta)}),terrainDepth:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ele_delta:new t.aM(e,i.u_ele_delta)}),terrainCoords:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_texture:new t.aL(e,i.u_texture),u_terrain_coords_id:new t.aM(e,i.u_terrain_coords_id),u_ele_delta:new t.aM(e,i.u_ele_delta)})};class Oe{constructor(t,e,i){this.context=t;const s=t.gl;this.buffer=s.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),s.bufferData(s.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?s.DYNAMIC_DRAW:s.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;}bind(){this.context.bindElementBuffer.set(this.buffer);}updateData(t){const e=this.context.gl;if(!this.dynamicDraw)throw new Error(\"Attempted to update data while not in dynamic mode.\");this.context.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer);}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const Ne={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"};class Ue{constructor(t,e,i,s){this.length=e.length,this.attributes=i,this.itemSize=e.bytesPerElement,this.dynamicDraw=s,this.context=t;const a=t.gl;this.buffer=a.createBuffer(),t.bindVertexBuffer.set(this.buffer),a.bufferData(a.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?a.DYNAMIC_DRAW:a.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;}bind(){this.context.bindVertexBuffer.set(this.buffer);}updateData(t){if(t.length!==this.length)throw new Error(`Length of new data is ${t.length}, which doesn't match current length of ${this.length}`);const e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer);}enableAttributes(t,e){for(let i=0;i<this.attributes.length;i++){const s=e.attributes[this.attributes[i].name];void 0!==s&&t.enableVertexAttribArray(s);}}setVertexAttribPointers(t,e,i){for(let s=0;s<this.attributes.length;s++){const a=this.attributes[s],o=e.attributes[a.name];void 0!==o&&t.vertexAttribPointer(o,a.components,t[Ne[a.type]],!1,this.itemSize,a.offset+this.itemSize*(i||0));}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const Ze=new WeakMap;function Ge(t){var e;if(Ze.has(t))return Ze.get(t);{const i=null===(e=t.getParameter(t.VERSION))||void 0===e?void 0:e.startsWith(\"WebGL 2.0\");return Ze.set(t,i),i}}class je{constructor(t){this.gl=t.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;}get(){return this.current}set(t){}getDefault(){return this.default}setDefault(){this.set(this.default);}}class Ve extends je{getDefault(){return t.aT.transparent}set(t){const e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1);}}class qe extends je{getDefault(){return 1}set(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1);}}class $e extends je{getDefault(){return 0}set(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1);}}class We extends je{getDefault(){return [!0,!0,!0,!0]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1);}}class He extends je{getDefault(){return !0}set(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1);}}class Xe extends je{getDefault(){return 255}set(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1);}}class Ke extends je{getDefault(){return {func:this.gl.ALWAYS,ref:0,mask:255}}set(t){const e=this.current;(t.func!==e.func||t.ref!==e.ref||t.mask!==e.mask||this.dirty)&&(this.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t,this.dirty=!1);}}class Qe extends je{getDefault(){const t=this.gl;return [t.KEEP,t.KEEP,t.KEEP]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||this.dirty)&&(this.gl.stencilOp(t[0],t[1],t[2]),this.current=t,this.dirty=!1);}}class Ye extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this.current=t,this.dirty=!1;}}class Je extends je{getDefault(){return [0,1]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.depthRange(t[0],t[1]),this.current=t,this.dirty=!1);}}class ti extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this.current=t,this.dirty=!1;}}class ei extends je{getDefault(){return this.gl.LESS}set(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1);}}class ii extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.BLEND):e.disable(e.BLEND),this.current=t,this.dirty=!1;}}class si extends je{getDefault(){const t=this.gl;return [t.ONE,t.ZERO]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.blendFunc(t[0],t[1]),this.current=t,this.dirty=!1);}}class ai extends je{getDefault(){return t.aT.transparent}set(t){const e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1);}}class oi extends je{getDefault(){return this.gl.FUNC_ADD}set(t){(t!==this.current||this.dirty)&&(this.gl.blendEquation(t),this.current=t,this.dirty=!1);}}class ri extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.CULL_FACE):e.disable(e.CULL_FACE),this.current=t,this.dirty=!1;}}class ni extends je{getDefault(){return this.gl.BACK}set(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1);}}class li extends je{getDefault(){return this.gl.CCW}set(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1);}}class hi extends je{getDefault(){return null}set(t){(t!==this.current||this.dirty)&&(this.gl.useProgram(t),this.current=t,this.dirty=!1);}}class ci extends je{getDefault(){return this.gl.TEXTURE0}set(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1);}}class ui extends je{getDefault(){const t=this.gl;return [0,0,t.drawingBufferWidth,t.drawingBufferHeight]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1);}}class di extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,t),this.current=t,this.dirty=!1;}}class _i extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindRenderbuffer(e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}}class pi extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindTexture(e.TEXTURE_2D,t),this.current=t,this.dirty=!1;}}class mi extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindBuffer(e.ARRAY_BUFFER,t),this.current=t,this.dirty=!1;}}class fi extends je{getDefault(){return null}set(t){const e=this.gl;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1;}}class gi extends je{getDefault(){return null}set(t){var e;if(t===this.current&&!this.dirty)return;const i=this.gl;Ge(i)?i.bindVertexArray(t):null===(e=i.getExtension(\"OES_vertex_array_object\"))||void 0===e||e.bindVertexArrayOES(t),this.current=t,this.dirty=!1;}}class vi extends je{getDefault(){return 4}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.pixelStorei(e.UNPACK_ALIGNMENT,t),this.current=t,this.dirty=!1;}}class xi extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t,this.dirty=!1;}}class yi extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t),this.current=t,this.dirty=!1;}}class bi extends je{constructor(t,e){super(t),this.context=t,this.parent=e;}getDefault(){return null}}class wi extends bi{setDirty(){this.dirty=!0;}set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const e=this.gl;e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0),this.current=t,this.dirty=!1;}}class Ti extends bi{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const e=this.gl;e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}}class Ii extends bi{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const e=this.gl;e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}}class Ei{constructor(t,e,i,s,a){this.context=t,this.width=e,this.height=i;const o=t.gl,r=this.framebuffer=o.createFramebuffer();if(this.colorAttachment=new wi(t,r),s)this.depthAttachment=a?new Ii(t,r):new Ti(t,r);else if(a)throw new Error(\"Stencil cannot be setted without depth\");if(o.checkFramebufferStatus(o.FRAMEBUFFER)!==o.FRAMEBUFFER_COMPLETE)throw new Error(\"Framebuffer is not complete\")}destroy(){const t=this.context.gl,e=this.colorAttachment.get();if(e&&t.deleteTexture(e),this.depthAttachment){const e=this.depthAttachment.get();e&&t.deleteRenderbuffer(e);}t.deleteFramebuffer(this.framebuffer);}}class Si{constructor(t,e,i){this.blendFunction=t,this.blendColor=e,this.mask=i;}}Si.Replace=[1,0],Si.disabled=new Si(Si.Replace,t.aT.transparent,[!1,!1,!1,!1]),Si.unblended=new Si(Si.Replace,t.aT.transparent,[!0,!0,!0,!0]),Si.alphaBlended=new Si([1,771],t.aT.transparent,[!0,!0,!0,!0]);class Ci{constructor(t){var e,i;if(this.gl=t,this.clearColor=new Ve(this),this.clearDepth=new qe(this),this.clearStencil=new $e(this),this.colorMask=new We(this),this.depthMask=new He(this),this.stencilMask=new Xe(this),this.stencilFunc=new Ke(this),this.stencilOp=new Qe(this),this.stencilTest=new Ye(this),this.depthRange=new Je(this),this.depthTest=new ti(this),this.depthFunc=new ei(this),this.blend=new ii(this),this.blendFunc=new si(this),this.blendColor=new ai(this),this.blendEquation=new oi(this),this.cullFace=new ri(this),this.cullFaceSide=new ni(this),this.frontFace=new li(this),this.program=new hi(this),this.activeTexture=new ci(this),this.viewport=new ui(this),this.bindFramebuffer=new di(this),this.bindRenderbuffer=new _i(this),this.bindTexture=new pi(this),this.bindVertexBuffer=new mi(this),this.bindElementBuffer=new fi(this),this.bindVertexArray=new gi(this),this.pixelStoreUnpack=new vi(this),this.pixelStoreUnpackPremultiplyAlpha=new xi(this),this.pixelStoreUnpackFlipY=new yi(this),this.extTextureFilterAnisotropic=t.getExtension(\"EXT_texture_filter_anisotropic\")||t.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||t.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),Ge(t)){this.HALF_FLOAT=t.HALF_FLOAT;const s=t.getExtension(\"EXT_color_buffer_half_float\");this.RGBA16F=null!==(e=t.RGBA16F)&&void 0!==e?e:null==s?void 0:s.RGBA16F_EXT,this.RGB16F=null!==(i=t.RGB16F)&&void 0!==i?i:null==s?void 0:s.RGB16F_EXT,t.getExtension(\"EXT_color_buffer_float\");}else {t.getExtension(\"EXT_color_buffer_half_float\"),t.getExtension(\"OES_texture_half_float_linear\");const e=t.getExtension(\"OES_texture_half_float\");this.HALF_FLOAT=null==e?void 0:e.HALF_FLOAT_OES;}}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.bindVertexArray.dirty=!0,this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;}createIndexBuffer(t,e){return new Oe(this,t,e)}createVertexBuffer(t,e,i){return new Ue(this,t,e,i)}createRenderbuffer(t,e,i){const s=this.gl,a=s.createRenderbuffer();return this.bindRenderbuffer.set(a),s.renderbufferStorage(s.RENDERBUFFER,t,e,i),this.bindRenderbuffer.set(null),a}createFramebuffer(t,e,i,s){return new Ei(this,t,e,i,s)}clear({color:t,depth:e,stencil:i}){const s=this.gl;let a=0;t&&(a|=s.COLOR_BUFFER_BIT,this.clearColor.set(t),this.colorMask.set([!0,!0,!0,!0])),void 0!==e&&(a|=s.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(e),this.depthMask.set(!0)),void 0!==i&&(a|=s.STENCIL_BUFFER_BIT,this.clearStencil.set(i),this.stencilMask.set(255)),s.clear(a);}setCullFace(t){!1===t.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(t.mode),this.frontFace.set(t.frontFace));}setDepthMode(t){t.func!==this.gl.ALWAYS||t.mask?(this.depthTest.set(!0),this.depthFunc.set(t.func),this.depthMask.set(t.mask),this.depthRange.set(t.range)):this.depthTest.set(!1);}setStencilMode(t){t.test.func!==this.gl.ALWAYS||t.mask?(this.stencilTest.set(!0),this.stencilMask.set(t.mask),this.stencilOp.set([t.fail,t.depthFail,t.pass]),this.stencilFunc.set({func:t.test.func,ref:t.ref,mask:t.test.mask})):this.stencilTest.set(!1);}setColorMode(e){t.aG(e.blendFunction,Si.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask);}createVertexArray(){var t;return Ge(this.gl)?this.gl.createVertexArray():null===(t=this.gl.getExtension(\"OES_vertex_array_object\"))||void 0===t?void 0:t.createVertexArrayOES()}deleteVertexArray(t){var e;return Ge(this.gl)?this.gl.deleteVertexArray(t):null===(e=this.gl.getExtension(\"OES_vertex_array_object\"))||void 0===e?void 0:e.deleteVertexArrayOES(t)}unbindVAO(){this.bindVertexArray.set(null);}}class Pi{constructor(t,e,i){this.func=t,this.mask=e,this.range=i;}}Pi.ReadOnly=!1,Pi.ReadWrite=!0,Pi.disabled=new Pi(519,Pi.ReadOnly,[0,1]);const Di=7680;class Mi{constructor(t,e,i,s,a,o){this.test=t,this.ref=e,this.mask=i,this.fail=s,this.depthFail=a,this.pass=o;}}Mi.disabled=new Mi({func:519,mask:0},0,0,Di,Di,Di);class zi{constructor(t,e,i){this.enable=t,this.mode=e,this.frontFace=i;}}let Li;function Ai(e,i,s,a,o,r,n){const l=e.context,h=l.gl,c=e.useProgram(\"collisionBox\"),u=[];let d=0,_=0;for(let p=0;p<a.length;p++){const m=a[p],f=i.getTile(m),g=f.getBucket(s);if(!g)continue;let v=m.posMatrix;0===o[0]&&0===o[1]||(v=e.translatePosMatrix(m.posMatrix,f,o,r));const x=n?g.textCollisionBox:g.iconCollisionBox,y=g.collisionCircleArray;if(y.length>0){const i=t.Z(),s=v;t.aU(i,g.placementInvProjMatrix,e.transform.glCoordMatrix),t.aU(i,i,g.placementViewportMatrix),u.push({circleArray:y,circleOffset:_,transform:s,invTransform:i,coord:m}),d+=y.length/4,_=d;}x&&c.draw(l,h.LINES,Pi.disabled,Mi.disabled,e.colorModeForRenderPass(),zi.disabled,xe(v,e.transform,f),e.style.map.terrain&&e.style.map.terrain.getTerrainData(m),s.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer);}if(!n||!u.length)return;const p=e.useProgram(\"collisionCircle\"),m=new t.aV;m.resize(4*d),m._trim();let f=0;for(const t of u)for(let e=0;e<t.circleArray.length/4;e++){const i=4*e,s=t.circleArray[i+0],a=t.circleArray[i+1],o=t.circleArray[i+2],r=t.circleArray[i+3];m.emplace(f++,s,a,o,r,0),m.emplace(f++,s,a,o,r,1),m.emplace(f++,s,a,o,r,2),m.emplace(f++,s,a,o,r,3);}(!Li||Li.length<2*d)&&(Li=function(e){const i=2*e,s=new t.aX;s.resize(i),s._trim();for(let t=0;t<i;t++){const e=6*t;s.uint16[e+0]=4*t+0,s.uint16[e+1]=4*t+1,s.uint16[e+2]=4*t+2,s.uint16[e+3]=4*t+2,s.uint16[e+4]=4*t+3,s.uint16[e+5]=4*t+0;}return s}(d));const g=l.createIndexBuffer(Li,!0),v=l.createVertexBuffer(m,t.aW.members,!0);for(const i of u){const a={u_matrix:i.transform,u_inv_matrix:i.invTransform,u_camera_to_center_distance:(x=e.transform).cameraToCenterDistance,u_viewport_size:[x.width,x.height]};p.draw(l,h.TRIANGLES,Pi.disabled,Mi.disabled,e.colorModeForRenderPass(),zi.disabled,a,e.style.map.terrain&&e.style.map.terrain.getTerrainData(i.coord),s.id,v,g,t.S.simpleSegment(0,2*i.circleOffset,i.circleArray.length,i.circleArray.length/2),null,e.transform.zoom,null,null,null);}var x;v.destroy(),g.destroy();}zi.disabled=new zi(!1,1029,2305),zi.backCCW=new zi(!0,1029,2305);const Ri=t.ao(new Float32Array(16));function ki(e,i,s,a,o,r){const{horizontalAlign:n,verticalAlign:l}=t.au(e);return new t.P((-(n-.5)*i/o+a[0])*r,(-(l-.5)*s/o+a[1])*r)}function Fi(e,i,s,a,o,r,n,l,h,c,u){const d=e.text.placedSymbolArray,_=e.text.dynamicLayoutVertexArray,p=e.icon.dynamicLayoutVertexArray,m={};_.clear();for(let p=0;p<d.length;p++){const f=d.get(p),g=f.hidden||!f.crossTileID||e.allowVerticalPlacement&&!f.placedOrientation?null:a[f.crossTileID];if(g){const a=new t.P(f.anchorX,f.anchorY),d=ht(a,s?n:r,u),p=ct(o.cameraToCenterDistance,d.signedDistanceFromCamera);let v=t.aj(e.textSizeData,h,f)*p/t.ap;s&&(v*=e.tilePixelRatio/l);const{width:x,height:y,anchor:b,textOffset:w,textBoxScale:T}=g,I=ki(b,x,y,w,T,v),E=s?ht(a.add(I),r,u).point:d.point.add(i?I.rotate(-o.angle):I),S=e.allowVerticalPlacement&&f.placedOrientation===t.ai.vertical?Math.PI/2:0;for(let e=0;e<f.numGlyphs;e++)t.ak(_,E,S);c&&f.associatedIconIndex>=0&&(m[f.associatedIconIndex]={shiftedAnchor:E,angle:S});}else wt(f.numGlyphs,_);}if(c){p.clear();const i=e.icon.placedSymbolArray;for(let e=0;e<i.length;e++){const s=i.get(e);if(s.hidden)wt(s.numGlyphs,p);else {const i=m[e];if(i)for(let e=0;e<s.numGlyphs;e++)t.ak(p,i.shiftedAnchor,i.angle);else wt(s.numGlyphs,p);}}e.icon.dynamicLayoutVertexBuffer.updateData(p);}e.text.dynamicLayoutVertexBuffer.updateData(_);}function Bi(t,e,i){return i.iconsInText&&e?\"symbolTextAndIcon\":t?\"symbolSDF\":\"symbolIcon\"}function Oi(e,i,s,a,o,r,n,l,h,c,u,d){const _=e.context,p=_.gl,m=e.transform,f=\"map\"===l,g=\"map\"===h,v=\"viewport\"!==l&&\"point\"!==s.layout.get(\"symbol-placement\"),x=f&&!g&&!v,y=!s.layout.get(\"symbol-sort-key\").isConstant();let b=!1;const w=e.depthModeForSublayer(0,Pi.ReadOnly),T=s._unevaluatedLayout.hasValue(\"text-variable-anchor\")||s._unevaluatedLayout.hasValue(\"text-variable-anchor-offset\"),I=[];for(const l of a){const a=i.getTile(l),h=a.getBucket(s);if(!h)continue;const u=o?h.text:h.icon;if(!u||!u.segments.get().length||!u.hasVisibleVertices)continue;const d=u.programConfigurations.get(s.id),_=o||h.sdfIcons,w=o?h.textSizeData:h.iconSizeData,E=g||0!==m.pitch,S=e.useProgram(Bi(_,o,h),d),C=t.ah(w,m.zoom),P=e.style.map.terrain&&e.style.map.terrain.getTerrainData(l);let D,M,z,L,A=[0,0],R=null;if(o)M=a.glyphAtlasTexture,z=p.LINEAR,D=a.glyphAtlasTexture.size,h.iconsInText&&(A=a.imageAtlasTexture.size,R=a.imageAtlasTexture,L=E||e.options.rotating||e.options.zooming||\"composite\"===w.kind||\"camera\"===w.kind?p.LINEAR:p.NEAREST);else {const t=1!==s.layout.get(\"icon-size\").constantOr(0)||h.iconsNeedLinear;M=a.imageAtlasTexture,z=_||e.options.rotating||e.options.zooming||t||E?p.LINEAR:p.NEAREST,D=a.imageAtlasTexture.size;}const k=St(a,1,e.transform.zoom),F=nt(l.posMatrix,g,f,e.transform,k),B=lt(l.posMatrix,g,f,e.transform,k),O=T&&h.hasTextData(),N=\"none\"!==s.layout.get(\"icon-text-fit\")&&O&&h.hasIconData();if(v){const t=e.style.map.terrain?(t,i)=>e.style.map.terrain.getElevation(l,t,i):null,i=\"map\"===s.layout.get(\"text-rotation-alignment\");dt(h,l.posMatrix,e,o,F,B,g,c,i,t);}const U=e.translatePosMatrix(l.posMatrix,a,r,n),Z=v||o&&T||N?Ri:F,G=e.translatePosMatrix(B,a,r,n,!0),j=_&&0!==s.paint.get(o?\"text-halo-width\":\"icon-halo-width\").constantOr(1);let V;V=_?h.iconsInText?Re(w.kind,C,x,g,e,U,Z,G,D,A):Ae(w.kind,C,x,g,e,U,Z,G,o,D,!0):Le(w.kind,C,x,g,e,U,Z,G,o,D);const q={program:S,buffers:u,uniformValues:V,atlasTexture:M,atlasTextureIcon:R,atlasInterpolation:z,atlasInterpolationIcon:L,isSDF:_,hasHalo:j};if(y&&h.canOverlap){b=!0;const e=u.segments.get();for(const i of e)I.push({segments:new t.S([i]),sortKey:i.sortKey,state:q,terrainData:P});}else I.push({segments:u.segments,sortKey:0,state:q,terrainData:P});}b&&I.sort(((t,e)=>t.sortKey-e.sortKey));for(const t of I){const i=t.state;if(_.activeTexture.set(p.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,p.CLAMP_TO_EDGE),i.atlasTextureIcon&&(_.activeTexture.set(p.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,p.CLAMP_TO_EDGE)),i.isSDF){const a=i.uniformValues;i.hasHalo&&(a.u_is_halo=1,Ni(i.buffers,t.segments,s,e,i.program,w,u,d,a,t.terrainData)),a.u_is_halo=0;}Ni(i.buffers,t.segments,s,e,i.program,w,u,d,i.uniformValues,t.terrainData);}}function Ni(t,e,i,s,a,o,r,n,l,h){const c=s.context;a.draw(c,c.gl.TRIANGLES,o,r,n,zi.disabled,l,h,i.id,t.layoutVertexBuffer,t.indexBuffer,e,i.paint,s.transform.zoom,t.programConfigurations.get(i.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer);}function Ui(t,e,i,s,a){if(!i||!s||!s.imageAtlas)return;const o=s.imageAtlas.patternPositions;let r=o[i.to.toString()],n=o[i.from.toString()];if(!r&&n&&(r=n),!n&&r&&(n=r),!r||!n){const t=a.getPaintProperty(e);r=o[t],n=o[t];}r&&n&&t.setConstantPatternPositions(r,n);}function Zi(t,e,i,s,a,o,r){const n=t.context.gl,l=\"fill-pattern\",h=i.paint.get(l),c=h&&h.constantOr(1),u=i.getCrossfadeParameters();let d,_,p,m,f;r?(_=c&&!i.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",d=n.LINES):(_=c?\"fillPattern\":\"fill\",d=n.TRIANGLES);const g=h.constantOr(null);for(const h of s){const s=e.getTile(h);if(c&&!s.patternsLoaded())continue;const v=s.getBucket(i);if(!v)continue;const x=v.programConfigurations.get(i.id),y=t.useProgram(_,x),b=t.style.map.terrain&&t.style.map.terrain.getTerrainData(h);c&&(t.context.activeTexture.set(n.TEXTURE0),s.imageAtlasTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE),x.updatePaintBuffers(u)),Ui(x,l,g,s,i);const w=b?h:null,T=t.translatePosMatrix(w?w.posMatrix:h.posMatrix,s,i.paint.get(\"fill-translate\"),i.paint.get(\"fill-translate-anchor\"));if(r){m=v.indexBuffer2,f=v.segments2;const e=[n.drawingBufferWidth,n.drawingBufferHeight];p=\"fillOutlinePattern\"===_&&c?ge(T,t,u,s,e):fe(T,e);}else m=v.indexBuffer,f=v.segments,p=c?me(T,t,u,s):pe(T);y.draw(t.context,d,a,t.stencilModeForClipping(h),o,zi.disabled,p,b,i.id,v.layoutVertexBuffer,m,f,i.paint,t.transform.zoom,x);}}function Gi(t,e,i,s,a,o,r){const n=t.context,l=n.gl,h=\"fill-extrusion-pattern\",c=i.paint.get(h),u=c.constantOr(1),d=i.getCrossfadeParameters(),_=i.paint.get(\"fill-extrusion-opacity\"),p=c.constantOr(null);for(const c of s){const s=e.getTile(c),m=s.getBucket(i);if(!m)continue;const f=t.style.map.terrain&&t.style.map.terrain.getTerrainData(c),g=m.programConfigurations.get(i.id),v=t.useProgram(u?\"fillExtrusionPattern\":\"fillExtrusion\",g);u&&(t.context.activeTexture.set(l.TEXTURE0),s.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),g.updatePaintBuffers(d)),Ui(g,h,p,s,i);const x=t.translatePosMatrix(c.posMatrix,s,i.paint.get(\"fill-extrusion-translate\"),i.paint.get(\"fill-extrusion-translate-anchor\")),y=i.paint.get(\"fill-extrusion-vertical-gradient\"),b=u?_e(x,t,y,_,c,d,s):de(x,t,y,_);v.draw(n,n.gl.TRIANGLES,a,o,r,zi.backCCW,b,f,i.id,m.layoutVertexBuffer,m.indexBuffer,m.segments,i.paint,t.transform.zoom,g,t.style.map.terrain&&m.centroidVertexBuffer);}}function ji(t,e,i,s,a,o,r){const n=t.context,l=n.gl,h=i.fbo;if(!h)return;const c=t.useProgram(\"hillshade\"),u=t.style.map.terrain&&t.style.map.terrain.getTerrainData(e);n.activeTexture.set(l.TEXTURE0),l.bindTexture(l.TEXTURE_2D,h.colorAttachment.get()),c.draw(n,l.TRIANGLES,a,o,r,zi.disabled,((t,e,i,s)=>{const a=i.paint.get(\"hillshade-shadow-color\"),o=i.paint.get(\"hillshade-highlight-color\"),r=i.paint.get(\"hillshade-accent-color\");let n=i.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);\"viewport\"===i.paint.get(\"hillshade-illumination-anchor\")&&(n-=t.transform.angle);const l=!t.options.moving;return {u_matrix:s?s.posMatrix:t.transform.calculatePosMatrix(e.tileID.toUnwrapped(),l),u_image:0,u_latrange:Te(0,e.tileID),u_light:[i.paint.get(\"hillshade-exaggeration\"),n],u_shadow:a,u_highlight:o,u_accent:r}})(t,i,s,u?e:null),u,s.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments);}function Vi(e,i,s,a,o,r){const n=e.context,l=n.gl,h=i.dem;if(h&&h.data){const c=h.dim,u=h.stride,d=h.getPixels();if(n.activeTexture.set(l.TEXTURE1),n.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||e.getTileTexture(u),i.demTexture){const t=i.demTexture;t.update(d,{premultiply:!1}),t.bind(l.NEAREST,l.CLAMP_TO_EDGE);}else i.demTexture=new x(n,d,l.RGBA,{premultiply:!1}),i.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);n.activeTexture.set(l.TEXTURE0);let _=i.fbo;if(!_){const t=new x(n,{width:c,height:c,data:null},l.RGBA);t.bind(l.LINEAR,l.CLAMP_TO_EDGE),_=i.fbo=n.createFramebuffer(c,c,!0,!1),_.colorAttachment.set(t.texture);}n.bindFramebuffer.set(_.framebuffer),n.viewport.set([0,0,c,c]),e.useProgram(\"hillshadePrepare\").draw(n,l.TRIANGLES,a,o,r,zi.disabled,((e,i)=>{const s=i.stride,a=t.Z();return t.aS(a,0,t.N,-t.N,0,0,1),t.$(a,a,[0,-t.N,0]),{u_matrix:a,u_image:1,u_dimension:[s,s],u_zoom:e.overscaledZ,u_unpack:i.getUnpackVector()}})(i.tileID,h),null,s.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),i.needsHillshadePrepare=!1;}}function qi(e,i,s,a,o,r){const n=a.paint.get(\"raster-fade-duration\");if(!r&&n>0){const a=t.h.now(),r=(a-e.timeAdded)/n,l=i?(a-i.timeAdded)/n:-1,h=s.getSource(),c=o.coveringZoomLevel({tileSize:h.tileSize,roundZoom:h.roundZoom}),u=!i||Math.abs(i.tileID.overscaledZ-c)>Math.abs(e.tileID.overscaledZ-c),d=u&&e.refreshedUponExpiration?1:t.ad(u?r:1-l,0,1);return e.refreshedUponExpiration&&r>=1&&(e.refreshedUponExpiration=!1),i?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return {opacity:1,mix:0}}const $i=new t.aT(1,0,0,1),Wi=new t.aT(0,1,0,1),Hi=new t.aT(0,0,1,1),Xi=new t.aT(1,0,1,1),Ki=new t.aT(0,1,1,1);function Qi(t,e,i,s){Ji(t,0,e+i/2,t.transform.width,i,s);}function Yi(t,e,i,s){Ji(t,e-i/2,0,i,t.transform.height,s);}function Ji(t,e,i,s,a,o){const r=t.context,n=r.gl;n.enable(n.SCISSOR_TEST),n.scissor(e*t.pixelRatio,i*t.pixelRatio,s*t.pixelRatio,a*t.pixelRatio),r.clear({color:o}),n.disable(n.SCISSOR_TEST);}function ts(e,i,s){const a=e.context,o=a.gl,r=s.posMatrix,n=e.useProgram(\"debug\"),l=Pi.disabled,h=Mi.disabled,c=e.colorModeForRenderPass(),u=\"$debug\",d=e.style.map.terrain&&e.style.map.terrain.getTerrainData(s);a.activeTexture.set(o.TEXTURE0);const _=i.getTileByID(s.key).latestRawTileData,p=Math.floor((_&&_.byteLength||0)/1024),m=i.getTile(s).tileSize,f=512/Math.min(m,512)*(s.overscaledZ/e.transform.zoom)*.5;let g=s.canonical.toString();s.overscaledZ!==s.canonical.z&&(g+=` => ${s.overscaledZ}`),function(t,e){t.initDebugOverlayCanvas();const i=t.debugOverlayCanvas,s=t.context.gl,a=t.debugOverlayCanvas.getContext(\"2d\");a.clearRect(0,0,i.width,i.height),a.shadowColor=\"white\",a.shadowBlur=2,a.lineWidth=1.5,a.strokeStyle=\"white\",a.textBaseline=\"top\",a.font=\"bold 36px Open Sans, sans-serif\",a.fillText(e,5,5),a.strokeText(e,5,5),t.debugOverlayTexture.update(i),t.debugOverlayTexture.bind(s.LINEAR,s.CLAMP_TO_EDGE);}(e,`${g} ${p}kB`),n.draw(a,o.TRIANGLES,l,h,Si.alphaBlended,zi.disabled,ye(r,t.aT.transparent,f),null,u,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments),n.draw(a,o.LINE_STRIP,l,h,c,zi.disabled,ye(r,t.aT.red),d,u,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);}function es(t,e,i){const s=t.context,a=s.gl,o=t.colorModeForRenderPass(),r=new Pi(a.LEQUAL,Pi.ReadWrite,t.depthRangeFor3D),n=t.useProgram(\"terrain\"),l=e.getTerrainMesh();s.bindFramebuffer.set(null),s.viewport.set([0,0,t.width,t.height]);for(const h of i){const i=t.renderToTexture.getTexture(h),c=e.getTerrainData(h.tileID);s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,i.texture);const u={u_matrix:t.transform.calculatePosMatrix(h.tileID.toUnwrapped()),u_texture:0,u_ele_delta:e.getMeshFrameDelta(t.transform.zoom)};n.draw(s,a.TRIANGLES,r,Mi.disabled,o,zi.backCCW,u,c,\"terrain\",l.vertexBuffer,l.indexBuffer,l.segments);}}class is{constructor(e,i){this.context=new Ci(e),this.transform=i,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:t.Z(),renderTime:0},this.setup(),this.numSublayers=K.maxUnderzooming+K.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Yt;}resize(t,e,i){if(this.width=Math.floor(t*i),this.height=Math.floor(e*i),this.pixelRatio=i,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const t of this.style._order)this.style._layers[t].resize();}setup(){const e=this.context,i=new t.a_;i.emplaceBack(0,0),i.emplaceBack(t.N,0),i.emplaceBack(0,t.N),i.emplaceBack(t.N,t.N),this.tileExtentBuffer=e.createVertexBuffer(i,ae.members),this.tileExtentSegments=t.S.simpleSegment(0,0,4,2);const s=new t.a_;s.emplaceBack(0,0),s.emplaceBack(t.N,0),s.emplaceBack(0,t.N),s.emplaceBack(t.N,t.N),this.debugBuffer=e.createVertexBuffer(s,ae.members),this.debugSegments=t.S.simpleSegment(0,0,4,5);const a=new t.V;a.emplaceBack(0,0,0,0),a.emplaceBack(t.N,0,t.N,0),a.emplaceBack(0,t.N,0,t.N),a.emplaceBack(t.N,t.N,t.N,t.N),this.rasterBoundsBuffer=e.createVertexBuffer(a,O.members),this.rasterBoundsSegments=t.S.simpleSegment(0,0,4,2);const o=new t.a_;o.emplaceBack(0,0),o.emplaceBack(1,0),o.emplaceBack(0,1),o.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(o,ae.members),this.viewportSegments=t.S.simpleSegment(0,0,4,2);const r=new t.a$;r.emplaceBack(0),r.emplaceBack(1),r.emplaceBack(3),r.emplaceBack(2),r.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(r);const n=new t.b0;n.emplaceBack(0,1,2),n.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(n);const l=this.context.gl;this.stencilClearMode=new Mi({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO);}clearStencil(){const e=this.context,i=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const s=t.Z();t.aS(s,0,this.width,this.height,0,0,1),t.a0(s,s,[i.drawingBufferWidth,i.drawingBufferHeight,0]),this.useProgram(\"clippingMask\").draw(e,i.TRIANGLES,Pi.disabled,this.stencilClearMode,Si.disabled,zi.disabled,be(s),null,\"$clipping\",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);}_renderTileClippingMasks(t,e){if(this.currentStencilSource===t.source||!t.isTileClipped()||!e||!e.length)return;this.currentStencilSource=t.source;const i=this.context,s=i.gl;this.nextStencilID+e.length>256&&this.clearStencil(),i.setColorMode(Si.disabled),i.setDepthMode(Pi.disabled);const a=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(const t of e){const e=this._tileClippingMaskIDs[t.key]=this.nextStencilID++,o=this.style.map.terrain&&this.style.map.terrain.getTerrainData(t);a.draw(i,s.TRIANGLES,Pi.disabled,new Mi({func:s.ALWAYS,mask:0},e,255,s.KEEP,s.KEEP,s.REPLACE),Si.disabled,zi.disabled,be(t.posMatrix),o,\"$clipping\",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments);}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,e=this.context.gl;return new Mi({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)}stencilModeForClipping(t){const e=this.context.gl;return new Mi({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)}stencilConfigForOverlap(t){const e=this.context.gl,i=t.sort(((t,e)=>e.overscaledZ-t.overscaledZ)),s=i[i.length-1].overscaledZ,a=i[0].overscaledZ-s+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();const t={};for(let i=0;i<a;i++)t[i+s]=new Mi({func:e.GEQUAL,mask:255},i+this.nextStencilID,255,e.KEEP,e.KEEP,e.REPLACE);return this.nextStencilID+=a,[t,i]}return [{[s]:Mi.disabled},i]}colorModeForRenderPass(){const e=this.context.gl;if(this._showOverdrawInspector){const i=1/8;return new Si([e.CONSTANT_COLOR,e.ONE],new t.aT(i,i,i,0),[!0,!0,!0,!0])}return \"opaque\"===this.renderPass?Si.unblended:Si.alphaBlended}depthModeForSublayer(t,e,i){if(!this.opaquePassEnabledForLayer())return Pi.disabled;const s=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new Pi(i||this.context.gl.LEQUAL,e,[s,s])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(e,i){this.style=e,this.options=i,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.symbolFadeChange=e.placement.symbolFadeChange(t.h.now()),this.imageManager.beginFrame();const s=this.style._order,a=this.style.sourceCaches,o={},r={},n={};for(const t in a){const e=a[t];e.used&&e.prepare(this.context),o[t]=e.getVisibleCoordinates(),r[t]=o[t].slice().reverse(),n[t]=e.getVisibleCoordinates(!0).reverse();}this.opaquePassCutoff=1/0;for(let t=0;t<s.length;t++)if(this.style._layers[s[t]].is3D()){this.opaquePassCutoff=t;break}if(this.renderToTexture){this.renderToTexture.prepareForRender(this.style,this.transform.zoom),this.opaquePassCutoff=0;const e=this.style.map.terrain.sourceCache.tilesAfterTime(this.terrainFacilitator.renderTime);(this.terrainFacilitator.dirty||!t.b1(this.terrainFacilitator.matrix,this.transform.projMatrix)||e.length)&&(t.b2(this.terrainFacilitator.matrix,this.transform.projMatrix),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(e,i){const s=e.context,a=s.gl,o=Si.unblended,r=new Pi(a.LEQUAL,Pi.ReadWrite,[0,1]),n=i.getTerrainMesh(),l=i.sourceCache.getRenderableTiles(),h=e.useProgram(\"terrainDepth\");s.bindFramebuffer.set(i.getFramebuffer(\"depth\").framebuffer),s.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),s.clear({color:t.aT.transparent,depth:1});for(const t of l){const l=i.getTerrainData(t.tileID),c={u_matrix:e.transform.calculatePosMatrix(t.tileID.toUnwrapped()),u_ele_delta:i.getMeshFrameDelta(e.transform.zoom)};h.draw(s,a.TRIANGLES,r,Mi.disabled,o,zi.backCCW,c,l,\"terrain\",n.vertexBuffer,n.indexBuffer,n.segments);}s.bindFramebuffer.set(null),s.viewport.set([0,0,e.width,e.height]);}(this,this.style.map.terrain),function(e,i){const s=e.context,a=s.gl,o=Si.unblended,r=new Pi(a.LEQUAL,Pi.ReadWrite,[0,1]),n=i.getTerrainMesh(),l=i.getCoordsTexture(),h=i.sourceCache.getRenderableTiles(),c=e.useProgram(\"terrainCoords\");s.bindFramebuffer.set(i.getFramebuffer(\"coords\").framebuffer),s.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),s.clear({color:t.aT.transparent,depth:1}),i.coordsIndex=[];for(const t of h){const h=i.getTerrainData(t.tileID);s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,l.texture);const u={u_matrix:e.transform.calculatePosMatrix(t.tileID.toUnwrapped()),u_terrain_coords_id:(255-i.coordsIndex.length)/255,u_texture:0,u_ele_delta:i.getMeshFrameDelta(e.transform.zoom)};c.draw(s,a.TRIANGLES,r,Mi.disabled,o,zi.backCCW,u,h,\"terrain\",n.vertexBuffer,n.indexBuffer,n.segments),i.coordsIndex.push(t.tileID.key);}s.bindFramebuffer.set(null),s.viewport.set([0,0,e.width,e.height]);}(this,this.style.map.terrain));}this.renderPass=\"offscreen\";for(const t of s){const e=this.style._layers[t];if(!e.hasOffscreenPass()||e.isHidden(this.transform.zoom))continue;const i=r[e.source];(\"custom\"===e.type||i.length)&&this.renderLayer(this,a[e.source],e,i);}if(this.context.bindFramebuffer.set(null),this.context.clear({color:i.showOverdrawInspector?t.aT.black:t.aT.transparent,depth:1}),this.clearStencil(),this._showOverdrawInspector=i.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass=\"opaque\",this.currentLayer=s.length-1;this.currentLayer>=0;this.currentLayer--){const t=this.style._layers[s[this.currentLayer]],e=a[t.source],i=o[t.source];this._renderTileClippingMasks(t,i),this.renderLayer(this,e,t,i);}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer<s.length;this.currentLayer++){const t=this.style._layers[s[this.currentLayer]],e=a[t.source];if(this.renderToTexture&&this.renderToTexture.renderLayer(t))continue;const i=(\"symbol\"===t.type?n:r)[t.source];this._renderTileClippingMasks(t,o[t.source]),this.renderLayer(this,e,t,i);}if(this.options.showTileBoundaries){const t=function(t,e){let i=null;const s=Object.values(t._layers).flatMap((i=>i.source&&!i.isHidden(e)?[t.sourceCaches[i.source]]:[])),a=s.filter((t=>\"vector\"===t.getSource().type)),o=s.filter((t=>\"vector\"!==t.getSource().type)),r=t=>{(!i||i.getSource().maxzoom<t.getSource().maxzoom)&&(i=t);};return a.forEach((t=>r(t))),i||o.forEach((t=>r(t))),i}(this.style,this.transform.zoom);t&&function(t,e,i){for(let s=0;s<i.length;s++)ts(t,e,i[s]);}(this,t,t.getVisibleCoordinates());}this.options.showPadding&&function(t){const e=t.transform.padding;Qi(t,t.transform.height-(e.top||0),3,$i),Qi(t,e.bottom||0,3,Wi),Yi(t,e.left||0,3,Hi),Yi(t,t.transform.width-(e.right||0),3,Xi);const i=t.transform.centerPoint;!function(t,e,i,s){Ji(t,e-1,i-10,2,20,s),Ji(t,e-10,i-1,20,2,s);}(t,i.x,t.transform.height-i.y,Ki);}(this),this.context.setDefault();}renderLayer(e,i,s,a){if(!s.isHidden(this.transform.zoom)&&(\"background\"===s.type||\"custom\"===s.type||(a||[]).length))switch(this.id=s.id,s.type){case\"symbol\":!function(e,i,s,a,o){if(\"translucent\"!==e.renderPass)return;const r=Mi.disabled,n=e.colorModeForRenderPass();(s._unevaluatedLayout.hasValue(\"text-variable-anchor\")||s._unevaluatedLayout.hasValue(\"text-variable-anchor-offset\"))&&function(e,i,s,a,o,r,n){const l=i.transform,h=\"map\"===o,c=\"map\"===r;for(const o of e){const e=a.getTile(o),r=e.getBucket(s);if(!r||!r.text||!r.text.segments.get().length)continue;const u=t.ah(r.textSizeData,l.zoom),d=St(e,1,i.transform.zoom),_=nt(o.posMatrix,c,h,i.transform,d),p=\"none\"!==s.layout.get(\"icon-text-fit\")&&r.hasIconData();if(u){const t=Math.pow(2,l.zoom-e.tileID.overscaledZ);Fi(r,h,c,n,l,_,o.posMatrix,t,u,p,i.style.map.terrain?(t,e)=>i.style.map.terrain.getElevation(o,t,e):null);}}}(a,e,s,i,s.layout.get(\"text-rotation-alignment\"),s.layout.get(\"text-pitch-alignment\"),o),0!==s.paint.get(\"icon-opacity\").constantOr(1)&&Oi(e,i,s,a,!1,s.paint.get(\"icon-translate\"),s.paint.get(\"icon-translate-anchor\"),s.layout.get(\"icon-rotation-alignment\"),s.layout.get(\"icon-pitch-alignment\"),s.layout.get(\"icon-keep-upright\"),r,n),0!==s.paint.get(\"text-opacity\").constantOr(1)&&Oi(e,i,s,a,!0,s.paint.get(\"text-translate\"),s.paint.get(\"text-translate-anchor\"),s.layout.get(\"text-rotation-alignment\"),s.layout.get(\"text-pitch-alignment\"),s.layout.get(\"text-keep-upright\"),r,n),i.map.showCollisionBoxes&&(Ai(e,i,s,a,s.paint.get(\"text-translate\"),s.paint.get(\"text-translate-anchor\"),!0),Ai(e,i,s,a,s.paint.get(\"icon-translate\"),s.paint.get(\"icon-translate-anchor\"),!1));}(e,i,s,a,this.style.placement.variableOffsets);break;case\"circle\":!function(e,i,s,a){if(\"translucent\"!==e.renderPass)return;const o=s.paint.get(\"circle-opacity\"),r=s.paint.get(\"circle-stroke-width\"),n=s.paint.get(\"circle-stroke-opacity\"),l=!s.layout.get(\"circle-sort-key\").isConstant();if(0===o.constantOr(1)&&(0===r.constantOr(1)||0===n.constantOr(1)))return;const h=e.context,c=h.gl,u=e.depthModeForSublayer(0,Pi.ReadOnly),d=Mi.disabled,_=e.colorModeForRenderPass(),p=[];for(let o=0;o<a.length;o++){const r=a[o],n=i.getTile(r),h=n.getBucket(s);if(!h)continue;const c=h.programConfigurations.get(s.id),u=e.useProgram(\"circle\",c),d=h.layoutVertexBuffer,_=h.indexBuffer,m=e.style.map.terrain&&e.style.map.terrain.getTerrainData(r),f={programConfiguration:c,program:u,layoutVertexBuffer:d,indexBuffer:_,uniformValues:ve(e,r,n,s),terrainData:m};if(l){const e=h.segments.get();for(const i of e)p.push({segments:new t.S([i]),sortKey:i.sortKey,state:f});}else p.push({segments:h.segments,sortKey:0,state:f});}l&&p.sort(((t,e)=>t.sortKey-e.sortKey));for(const t of p){const{programConfiguration:i,program:a,layoutVertexBuffer:o,indexBuffer:r,uniformValues:n,terrainData:l}=t.state;a.draw(h,c.TRIANGLES,u,d,_,zi.disabled,n,l,s.id,o,r,t.segments,s.paint,e.transform.zoom,i);}}(e,i,s,a);break;case\"heatmap\":!function(e,i,s,a){if(0!==s.paint.get(\"heatmap-opacity\"))if(\"offscreen\"===e.renderPass){const o=e.context,r=o.gl,n=Mi.disabled,l=new Si([r.ONE,r.ONE],t.aT.transparent,[!0,!0,!0,!0]);!function(t,e,i){const s=t.gl;t.activeTexture.set(s.TEXTURE1),t.viewport.set([0,0,e.width/4,e.height/4]);let a=i.heatmapFbo;if(a)s.bindTexture(s.TEXTURE_2D,a.colorAttachment.get()),t.bindFramebuffer.set(a.framebuffer);else {const o=s.createTexture();s.bindTexture(s.TEXTURE_2D,o),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),a=i.heatmapFbo=t.createFramebuffer(e.width/4,e.height/4,!1,!1),function(t,e,i,s){var a,o;const r=t.gl,n=null!==(a=t.HALF_FLOAT)&&void 0!==a?a:r.UNSIGNED_BYTE,l=null!==(o=t.RGBA16F)&&void 0!==o?o:r.RGBA;r.texImage2D(r.TEXTURE_2D,0,l,e.width/4,e.height/4,0,r.RGBA,n,null),s.colorAttachment.set(i);}(t,e,o,a);}}(o,e,s),o.clear({color:t.aT.transparent});for(let t=0;t<a.length;t++){const h=a[t];if(i.hasRenderableParent(h))continue;const c=i.getTile(h),u=c.getBucket(s);if(!u)continue;const d=u.programConfigurations.get(s.id),_=e.useProgram(\"heatmap\",d),{zoom:p}=e.transform;_.draw(o,r.TRIANGLES,Pi.disabled,n,l,zi.disabled,we(h.posMatrix,c,p,s.paint.get(\"heatmap-intensity\")),null,s.id,u.layoutVertexBuffer,u.indexBuffer,u.segments,s.paint,e.transform.zoom,d);}o.viewport.set([0,0,e.width,e.height]);}else \"translucent\"===e.renderPass&&(e.context.setColorMode(e.colorModeForRenderPass()),function(e,i){const s=e.context,a=s.gl,o=i.heatmapFbo;if(!o)return;s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,o.colorAttachment.get()),s.activeTexture.set(a.TEXTURE1);let r=i.colorRampTexture;r||(r=i.colorRampTexture=new x(s,i.colorRamp,a.RGBA)),r.bind(a.LINEAR,a.CLAMP_TO_EDGE),e.useProgram(\"heatmapTexture\").draw(s,a.TRIANGLES,Pi.disabled,Mi.disabled,e.colorModeForRenderPass(),zi.disabled,((e,i,s,a)=>{const o=t.Z();t.aS(o,0,e.width,e.height,0,0,1);const r=e.context.gl;return {u_matrix:o,u_world:[r.drawingBufferWidth,r.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:i.paint.get(\"heatmap-opacity\")}})(e,i),null,i.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,i.paint,e.transform.zoom);}(e,s));}(e,i,s,a);break;case\"line\":!function(e,i,s,a){if(\"translucent\"!==e.renderPass)return;const o=s.paint.get(\"line-opacity\"),r=s.paint.get(\"line-width\");if(0===o.constantOr(1)||0===r.constantOr(1))return;const n=e.depthModeForSublayer(0,Pi.ReadOnly),l=e.colorModeForRenderPass(),h=s.paint.get(\"line-dasharray\"),c=s.paint.get(\"line-pattern\"),u=c.constantOr(1),d=s.paint.get(\"line-gradient\"),_=s.getCrossfadeParameters(),p=u?\"linePattern\":h?\"lineSDF\":d?\"lineGradient\":\"line\",m=e.context,f=m.gl;let g=!0;for(const o of a){const a=i.getTile(o);if(u&&!a.patternsLoaded())continue;const r=a.getBucket(s);if(!r)continue;const v=r.programConfigurations.get(s.id),y=e.context.program.get(),b=e.useProgram(p,v),w=g||b.program!==y,T=e.style.map.terrain&&e.style.map.terrain.getTerrainData(o),I=c.constantOr(null);if(I&&a.imageAtlas){const t=a.imageAtlas,e=t.patternPositions[I.to.toString()],i=t.patternPositions[I.from.toString()];e&&i&&v.setConstantPatternPositions(e,i);}const E=T?o:null,S=u?Se(e,a,s,_,E):h?Ce(e,a,s,h,_,E):d?Ee(e,a,s,r.lineClipsArray.length,E):Ie(e,a,s,E);if(u)m.activeTexture.set(f.TEXTURE0),a.imageAtlasTexture.bind(f.LINEAR,f.CLAMP_TO_EDGE),v.updatePaintBuffers(_);else if(h&&(w||e.lineAtlas.dirty))m.activeTexture.set(f.TEXTURE0),e.lineAtlas.bind(m);else if(d){const a=r.gradients[s.id];let n=a.texture;if(s.gradientVersion!==a.version){let l=256;if(s.stepInterpolant){const s=i.getSource().maxzoom,a=o.canonical.z===s?Math.ceil(1<<e.transform.maxZoom-o.canonical.z):1;l=t.ad(t.aY(r.maxLineLength/t.N*1024*a),256,m.maxTextureSize);}a.gradient=t.aZ({expression:s.gradientExpression(),evaluationKey:\"lineProgress\",resolution:l,image:a.gradient||void 0,clips:r.lineClipsArray}),a.texture?a.texture.update(a.gradient):a.texture=new x(m,a.gradient,f.RGBA),a.version=s.gradientVersion,n=a.texture;}m.activeTexture.set(f.TEXTURE0),n.bind(s.stepInterpolant?f.NEAREST:f.LINEAR,f.CLAMP_TO_EDGE);}b.draw(m,f.TRIANGLES,n,e.stencilModeForClipping(o),l,zi.disabled,S,T,s.id,r.layoutVertexBuffer,r.indexBuffer,r.segments,s.paint,e.transform.zoom,v,r.layoutVertexBuffer2),g=!1;}}(e,i,s,a);break;case\"fill\":!function(e,i,s,a){const o=s.paint.get(\"fill-color\"),r=s.paint.get(\"fill-opacity\");if(0===r.constantOr(1))return;const n=e.colorModeForRenderPass(),l=s.paint.get(\"fill-pattern\"),h=e.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===o.constantOr(t.aT.transparent).a&&1===r.constantOr(0)?\"opaque\":\"translucent\";if(e.renderPass===h){const t=e.depthModeForSublayer(1,\"opaque\"===e.renderPass?Pi.ReadWrite:Pi.ReadOnly);Zi(e,i,s,a,t,n,!1);}if(\"translucent\"===e.renderPass&&s.paint.get(\"fill-antialias\")){const t=e.depthModeForSublayer(s.getPaintProperty(\"fill-outline-color\")?2:0,Pi.ReadOnly);Zi(e,i,s,a,t,n,!0);}}(e,i,s,a);break;case\"fill-extrusion\":!function(t,e,i,s){const a=i.paint.get(\"fill-extrusion-opacity\");if(0!==a&&\"translucent\"===t.renderPass){const o=new Pi(t.context.gl.LEQUAL,Pi.ReadWrite,t.depthRangeFor3D);if(1!==a||i.paint.get(\"fill-extrusion-pattern\").constantOr(1))Gi(t,e,i,s,o,Mi.disabled,Si.disabled),Gi(t,e,i,s,o,t.stencilModeFor3D(),t.colorModeForRenderPass());else {const a=t.colorModeForRenderPass();Gi(t,e,i,s,o,Mi.disabled,a);}}}(e,i,s,a);break;case\"hillshade\":!function(t,e,i,s){if(\"offscreen\"!==t.renderPass&&\"translucent\"!==t.renderPass)return;const a=t.context,o=t.depthModeForSublayer(0,Pi.ReadOnly),r=t.colorModeForRenderPass(),[n,l]=\"translucent\"===t.renderPass?t.stencilConfigForOverlap(s):[{},s];for(const s of l){const a=e.getTile(s);void 0!==a.needsHillshadePrepare&&a.needsHillshadePrepare&&\"offscreen\"===t.renderPass?Vi(t,a,i,o,Mi.disabled,r):\"translucent\"===t.renderPass&&ji(t,s,a,i,o,n[s.overscaledZ],r);}a.viewport.set([0,0,t.width,t.height]);}(e,i,s,a);break;case\"raster\":!function(t,e,i,s){if(\"translucent\"!==t.renderPass)return;if(0===i.paint.get(\"raster-opacity\"))return;if(!s.length)return;const a=t.context,o=a.gl,r=e.getSource(),n=t.useProgram(\"raster\"),l=t.colorModeForRenderPass(),[h,c]=r instanceof N?[{},s]:t.stencilConfigForOverlap(s),u=c[c.length-1].overscaledZ,d=!t.options.moving;for(const s of c){const c=t.depthModeForSublayer(s.overscaledZ-u,1===i.paint.get(\"raster-opacity\")?Pi.ReadWrite:Pi.ReadOnly,o.LESS),_=e.getTile(s);_.registerFadeDuration(i.paint.get(\"raster-fade-duration\"));const p=e.findLoadedParent(s,0),m=qi(_,p,e,i,t.transform,t.style.map.terrain);let f,g;const v=\"nearest\"===i.paint.get(\"raster-resampling\")?o.NEAREST:o.LINEAR;a.activeTexture.set(o.TEXTURE0),_.texture.bind(v,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),a.activeTexture.set(o.TEXTURE1),p?(p.texture.bind(v,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),f=Math.pow(2,p.tileID.overscaledZ-_.tileID.overscaledZ),g=[_.tileID.canonical.x*f%1,_.tileID.canonical.y*f%1]):_.texture.bind(v,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST);const x=t.style.map.terrain&&t.style.map.terrain.getTerrainData(s),y=x?s:null,b=y?y.posMatrix:t.transform.calculatePosMatrix(s.toUnwrapped(),d),w=Me(b,g||[0,0],f||1,m,i);r instanceof N?n.draw(a,o.TRIANGLES,c,Mi.disabled,l,zi.disabled,w,x,i.id,r.boundsBuffer,t.quadTriangleIndexBuffer,r.boundsSegments):n.draw(a,o.TRIANGLES,c,h[s.overscaledZ],l,zi.disabled,w,x,i.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments);}}(e,i,s,a);break;case\"background\":!function(t,e,i,s){const a=i.paint.get(\"background-color\"),o=i.paint.get(\"background-opacity\");if(0===o)return;const r=t.context,n=r.gl,l=t.transform,h=l.tileSize,c=i.paint.get(\"background-pattern\");if(t.isPatternMissing(c))return;const u=!c&&1===a.a&&1===o&&t.opaquePassEnabledForLayer()?\"opaque\":\"translucent\";if(t.renderPass!==u)return;const d=Mi.disabled,_=t.depthModeForSublayer(0,\"opaque\"===u?Pi.ReadWrite:Pi.ReadOnly),p=t.colorModeForRenderPass(),m=t.useProgram(c?\"backgroundPattern\":\"background\"),f=s||l.coveringTiles({tileSize:h,terrain:t.style.map.terrain});c&&(r.activeTexture.set(n.TEXTURE0),t.imageManager.bind(t.context));const g=i.getCrossfadeParameters();for(const e of f){const l=s?e.posMatrix:t.transform.calculatePosMatrix(e.toUnwrapped()),u=c?Fe(l,o,t,c,{tileID:e,tileSize:h},g):ke(l,o,a),f=t.style.map.terrain&&t.style.map.terrain.getTerrainData(e);m.draw(r,n.TRIANGLES,_,d,p,zi.disabled,u,f,i.id,t.tileExtentBuffer,t.quadTriangleIndexBuffer,t.tileExtentSegments);}}(e,0,s,a);break;case\"custom\":!function(t,e,i){const s=t.context,a=i.implementation;if(\"offscreen\"===t.renderPass){const e=a.prerender;e&&(t.setCustomLayerDefaults(),s.setColorMode(t.colorModeForRenderPass()),e.call(a,s.gl,t.transform.customLayerMatrix()),s.setDirty(),t.setBaseState());}else if(\"translucent\"===t.renderPass){t.setCustomLayerDefaults(),s.setColorMode(t.colorModeForRenderPass()),s.setStencilMode(Mi.disabled);const e=\"3d\"===a.renderingMode?new Pi(t.context.gl.LEQUAL,Pi.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,Pi.ReadOnly);s.setDepthMode(e),a.render(s.gl,t.transform.customLayerMatrix()),s.setDirty(),t.setBaseState(),s.bindFramebuffer.set(null);}}(e,0,s);}}translatePosMatrix(e,i,s,a,o){if(!s[0]&&!s[1])return e;const r=o?\"map\"===a?this.transform.angle:0:\"viewport\"===a?-this.transform.angle:0;if(r){const t=Math.sin(r),e=Math.cos(r);s=[s[0]*e-s[1]*t,s[0]*t+s[1]*e];}const n=[o?s[0]:St(i,s[0],this.transform.zoom),o?s[1]:St(i,s[1],this.transform.zoom),0],l=new Float32Array(16);return t.$(l,e,n),l}saveTileTexture(t){const e=this._tileTextures[t.size[0]];e?e.push(t):this._tileTextures[t.size[0]]=[t];}getTileTexture(t){const e=this._tileTextures[t];return e&&e.length>0?e.pop():null}isPatternMissing(t){if(!t)return !1;if(!t.from||!t.to)return !0;const e=this.imageManager.getPattern(t.from.toString()),i=this.imageManager.getPattern(t.to.toString());return !e||!i}useProgram(t,e){this.cache=this.cache||{};const i=t+(e?e.cacheKey:\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\")+(this.style.map.terrain?\"/terrain\":\"\");return this.cache[i]||(this.cache[i]=new ce(this.context,re[t],e,Be[t],this._showOverdrawInspector,this.style.map.terrain)),this.cache[i]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();}setBaseState(){const t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD);}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new x(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy();}overLimit(){const{drawingBufferWidth:t,drawingBufferHeight:e}=this.context.gl;return this.width!==t||this.height!==e}}class ss{constructor(t,e){this.points=t,this.planes=e;}static fromInvProjectionMatrix(e,i,s){const a=Math.pow(2,s),o=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((s=>{const o=1/(s=t.ag([],s,e))[3]/i*a;return t.b3(s,s,[o,o,1/s[3],o])})),r=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((t=>{const e=function(t,e){var i=e[0],s=e[1],a=e[2],o=i*i+s*s+a*a;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o,t}([],function(t,e,i){var s=e[0],a=e[1],o=e[2],r=i[0],n=i[1],l=i[2];return t[0]=a*l-o*n,t[1]=o*r-s*l,t[2]=s*n-a*r,t}([],m([],o[t[0]],o[t[1]]),m([],o[t[2]],o[t[1]]))),i=-((s=e)[0]*(a=o[t[1]])[0]+s[1]*a[1]+s[2]*a[2]);var s,a;return e.concat(i)}));return new ss(o,r)}}class as{constructor(t,e){this.min=t,this.max=e,this.center=function(t,e,i){return t[0]=.5*e[0],t[1]=.5*e[1],t[2]=.5*e[2],t}([],function(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2],t}([],this.min,this.max));}quadrant(t){const e=[t%2==0,t<2],i=_(this.min),s=_(this.max);for(let t=0;t<e.length;t++)i[t]=e[t]?this.min[t]:this.center[t],s[t]=e[t]?this.center[t]:this.max[t];return s[2]=this.max[2],new as(i,s)}distanceX(t){return Math.max(Math.min(this.max[0],t[0]),this.min[0])-t[0]}distanceY(t){return Math.max(Math.min(this.max[1],t[1]),this.min[1])-t[1]}intersects(e){const i=[[this.min[0],this.min[1],this.min[2],1],[this.max[0],this.min[1],this.min[2],1],[this.max[0],this.max[1],this.min[2],1],[this.min[0],this.max[1],this.min[2],1],[this.min[0],this.min[1],this.max[2],1],[this.max[0],this.min[1],this.max[2],1],[this.max[0],this.max[1],this.max[2],1],[this.min[0],this.max[1],this.max[2],1]];let s=!0;for(let a=0;a<e.planes.length;a++){const o=e.planes[a];let r=0;for(let e=0;e<i.length;e++)t.b4(o,i[e])>=0&&r++;if(0===r)return 0;r!==i.length&&(s=!1);}if(s)return 2;for(let t=0;t<3;t++){let i=Number.MAX_VALUE,s=-Number.MAX_VALUE;for(let a=0;a<e.points.length;a++){const o=e.points[a][t]-this.min[t];i=Math.min(i,o),s=Math.max(s,o);}if(s<0||i>this.max[t]-this.min[t])return 0}return 1}}class os{constructor(t=0,e=0,i=0,s=0){if(isNaN(t)||t<0||isNaN(e)||e<0||isNaN(i)||i<0||isNaN(s)||s<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=t,this.bottom=e,this.left=i,this.right=s;}interpolate(e,i,s){return null!=i.top&&null!=e.top&&(this.top=t.B.number(e.top,i.top,s)),null!=i.bottom&&null!=e.bottom&&(this.bottom=t.B.number(e.bottom,i.bottom,s)),null!=i.left&&null!=e.left&&(this.left=t.B.number(e.left,i.left,s)),null!=i.right&&null!=e.right&&(this.right=t.B.number(e.right,i.right,s)),this}getCenter(e,i){const s=t.ad((this.left+e-this.right)/2,0,e),a=t.ad((this.top+i-this.bottom)/2,0,i);return new t.P(s,a)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new os(this.top,this.bottom,this.left,this.right)}toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class rs{constructor(e,i,s,a,o){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===o||!!o,this._minZoom=e||0,this._maxZoom=i||22,this._minPitch=null==s?0:s,this._maxPitch=null==a?60:a,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.L(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new os,this._posMatrixCache={},this._alignedPosMatrixCache={},this._minEleveationForCurrentTile=0;}clone(){const t=new rs(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.apply(this),t}apply(t){this.tileSize=t.tileSize,this.latRange=t.latRange,this.width=t.width,this.height=t.height,this._center=t._center,this._elevation=t._elevation,this._minEleveationForCurrentTile=t._minEleveationForCurrentTile,this.zoom=t.zoom,this.angle=t.angle,this._fov=t._fov,this._pitch=t._pitch,this._unmodified=t._unmodified,this._edgeInsets=t._edgeInsets.clone(),this._calcMatrices();}get minZoom(){return this._minZoom}set minZoom(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t));}get maxZoom(){return this._maxZoom}set maxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t));}get minPitch(){return this._minPitch}set minPitch(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t));}get maxPitch(){return this._maxPitch}set maxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t));}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t;}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new t.P(this.width,this.height)}get bearing(){return -this.angle/Math.PI*180}set bearing(e){const i=-t.b5(e,-180,180)*Math.PI/180;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=function(){var e=new t.A(4);return t.A!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}(),function(t,e,i){var s=e[0],a=e[1],o=e[2],r=e[3],n=Math.sin(i),l=Math.cos(i);t[0]=s*l+o*n,t[1]=a*l+r*n,t[2]=s*-n+o*l,t[3]=a*-n+r*l;}(this.rotationMatrix,this.rotationMatrix,this.angle));}get pitch(){return this._pitch/Math.PI*180}set pitch(e){const i=t.ad(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());}get fov(){return this._fov/Math.PI*180}set fov(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices());}get zoom(){return this._zoom}set zoom(t){const e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.tileZoom=Math.max(0,Math.floor(e)),this.scale=this.zoomScale(e),this._constrain(),this._calcMatrices());}get center(){return this._center}set center(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices());}get elevation(){return this._elevation}set elevation(t){t!==this._elevation&&(this._elevation=t,this._constrain(),this._calcMatrices());}get padding(){return this._edgeInsets.toJSON()}set padding(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices());}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,e,i){this._unmodified=!1,this._edgeInsets.interpolate(t,e,i),this._constrain(),this._calcMatrices();}coveringZoomLevel(t){const e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)}getVisibleUnwrappedCoordinates(e){const i=[new t.b6(0,e)];if(this._renderWorldCopies){const s=this.pointCoordinate(new t.P(0,0)),a=this.pointCoordinate(new t.P(this.width,0)),o=this.pointCoordinate(new t.P(this.width,this.height)),r=this.pointCoordinate(new t.P(0,this.height)),n=Math.floor(Math.min(s.x,a.x,o.x,r.x)),l=Math.floor(Math.max(s.x,a.x,o.x,r.x)),h=1;for(let s=n-h;s<=l+h;s++)0!==s&&i.push(new t.b6(s,e));}return i}coveringTiles(e){var i,s;let a=this.coveringZoomLevel(e);const o=a;if(void 0!==e.minzoom&&a<e.minzoom)return [];void 0!==e.maxzoom&&a>e.maxzoom&&(a=e.maxzoom);const r=this.pointCoordinate(this.getCameraPoint()),n=t.U.fromLngLat(this.center),l=Math.pow(2,a),h=[l*r.x,l*r.y,0],c=[l*n.x,l*n.y,0],u=ss.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,a);let d=e.minzoom||0;!e.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(d=a);const _=e.terrain?2/Math.min(this.tileSize,e.tileSize)*this.tileSize:3,p=t=>({aabb:new as([t*l,0,0],[(t+1)*l,l,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}),m=[],g=[],v=a,x=e.reparseOverscaled?o:a;if(this._renderWorldCopies)for(let t=1;t<=3;t++)m.push(p(-t)),m.push(p(t));for(m.push(p(0));m.length>0;){const a=m.pop(),o=a.x,r=a.y;let n=a.fullyVisible;if(!n){const t=a.aabb.intersects(u);if(0===t)continue;n=2===t;}const l=e.terrain?h:c,p=a.aabb.distanceX(l),y=a.aabb.distanceY(l),b=Math.max(Math.abs(p),Math.abs(y));if(a.zoom===v||b>_+(1<<v-a.zoom)-2&&a.zoom>=d){const e=v-a.zoom,i=h[0]-.5-(o<<e),s=h[1]-.5-(r<<e);g.push({tileID:new t.O(a.zoom===v?x:a.zoom,a.wrap,a.zoom,o,r),distanceSq:f([c[0]-.5-o,c[1]-.5-r]),tileDistanceToCamera:Math.sqrt(i*i+s*s)});}else for(let l=0;l<4;l++){const h=(o<<1)+l%2,c=(r<<1)+(l>>1),u=a.zoom+1;let d=a.aabb.quadrant(l);if(e.terrain){const o=new t.O(u,a.wrap,u,h,c),r=e.terrain.getMinMaxElevation(o),n=null!==(i=r.minElevation)&&void 0!==i?i:this.elevation,l=null!==(s=r.maxElevation)&&void 0!==s?s:this.elevation;d=new as([d.min[0],d.min[1],n],[d.max[0],d.max[1],l]);}m.push({aabb:d,zoom:u,x:h,y:c,wrap:a.wrap,fullyVisible:n});}}return g.sort(((t,e)=>t.distanceSq-e.distanceSq)).map((t=>t.tileID))}resize(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices();}get unmodified(){return this._unmodified}zoomScale(t){return Math.pow(2,t)}scaleZoom(t){return Math.log(t)/Math.LN2}project(e){const i=t.ad(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.P(t.G(e.lng)*this.worldSize,t.H(i)*this.worldSize)}unproject(e){return new t.U(e.x/this.worldSize,e.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return {lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(e){const i=this.pointLocation(this.centerPoint,e),s=e.getElevationForLngLatZoom(i,this.tileZoom);if(!(this.elevation-s))return;const a=this.getCameraPosition(),o=t.U.fromLngLat(a.lngLat,a.altitude),r=t.U.fromLngLat(i,s),n=o.x-r.x,l=o.y-r.y,h=o.z-r.z,c=Math.sqrt(n*n+l*l+h*h),u=this.scaleZoom(this.cameraToCenterDistance/c/this.tileSize);this._elevation=s,this._center=i,this.zoom=u;}setLocationAtPoint(e,i){const s=this.pointCoordinate(i),a=this.pointCoordinate(this.centerPoint),o=this.locationCoordinate(e),r=new t.U(o.x-(s.x-a.x),o.y-(s.y-a.y));this.center=this.coordinateLocation(r),this._renderWorldCopies&&(this.center=this.center.wrap());}locationPoint(t,e){return e?this.coordinatePoint(this.locationCoordinate(t),e.getElevationForLngLatZoom(t,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(t))}pointLocation(t,e){return this.coordinateLocation(this.pointCoordinate(t,e))}locationCoordinate(e){return t.U.fromLngLat(e)}coordinateLocation(t){return t&&t.toLngLat()}pointCoordinate(e,i){if(i){const t=i.pointCoordinate(e);if(null!=t)return t}const s=[e.x,e.y,0,1],a=[e.x,e.y,1,1];t.ag(s,s,this.pixelMatrixInverse),t.ag(a,a,this.pixelMatrixInverse);const o=s[3],r=a[3],n=s[1]/o,l=a[1]/r,h=s[2]/o,c=a[2]/r,u=h===c?0:(0-h)/(c-h);return new t.U(t.B.number(s[0]/o,a[0]/r,u)/this.worldSize,t.B.number(n,l,u)/this.worldSize)}coordinatePoint(e,i=0,s=this.pixelMatrix){const a=[e.x*this.worldSize,e.y*this.worldSize,i,1];return t.ag(a,a,s),new t.P(a[0]/a[3],a[1]/a[3])}getBounds(){const e=Math.max(0,this.height/2-this.getHorizon());return (new L).extend(this.pointLocation(new t.P(0,e))).extend(this.pointLocation(new t.P(this.width,e))).extend(this.pointLocation(new t.P(this.width,this.height))).extend(this.pointLocation(new t.P(0,this.height)))}getMaxBounds(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new L([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude]);}calculatePosMatrix(e,i=!1){const s=e.key,a=i?this._alignedPosMatrixCache:this._posMatrixCache;if(a[s])return a[s];const o=e.canonical,r=this.worldSize/this.zoomScale(o.z),n=o.x+Math.pow(2,o.z)*e.wrap,l=t.ao(new Float64Array(16));return t.$(l,l,[n*r,o.y*r,0]),t.a0(l,l,[r/t.N,r/t.N,1]),t.a1(l,i?this.alignedProjMatrix:this.projMatrix,l),a[s]=new Float32Array(l),a[s]}customLayerMatrix(){return this.mercatorMatrix.slice()}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let e,i,s,a,o=-90,r=90,n=-180,l=180;const h=this.size,c=this._unmodified;if(this.latRange){const i=this.latRange;o=t.H(i[1])*this.worldSize,r=t.H(i[0])*this.worldSize,e=r-o<h.y?h.y/(r-o):0;}if(this.lngRange){const e=this.lngRange;n=t.b5(t.G(e[0])*this.worldSize,0,this.worldSize),l=t.b5(t.G(e[1])*this.worldSize,0,this.worldSize),l<n&&(l+=this.worldSize),i=l-n<h.x?h.x/(l-n):0;}const u=this.point,d=Math.max(i||0,e||0);if(d)return this.center=this.unproject(new t.P(i?(l+n)/2:u.x,e?(r+o)/2:u.y)),this.zoom+=this.scaleZoom(d),this._unmodified=c,void(this._constraining=!1);if(this.latRange){const t=u.y,e=h.y/2;t-e<o&&(a=o+e),t+e>r&&(a=r-e);}if(this.lngRange){const e=(n+l)/2,i=t.b5(u.x,e-this.worldSize/2,e+this.worldSize/2),a=h.x/2;i-a<n&&(s=n+a),i+a>l&&(s=l-a);}void 0===s&&void 0===a||(this.center=this.unproject(new t.P(void 0!==s?s:u.x,void 0!==a?a:u.y)).wrap()),this._unmodified=c,this._constraining=!1;}_calcMatrices(){if(!this.height)return;const e=this.centerOffset,i=this.point.x,s=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=t.b7(1,this.center.lat)*this.worldSize;let a=t.ao(new Float64Array(16));t.a0(a,a,[this.width/2,-this.height/2,1]),t.$(a,a,[1,-1,0]),this.labelPlaneMatrix=a,a=t.ao(new Float64Array(16)),t.a0(a,a,[1,-1,1]),t.$(a,a,[-1,-1,0]),t.a0(a,a,[2/this.width,2/this.height,1]),this.glCoordMatrix=a;const o=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),r=Math.min(this.elevation,this._minEleveationForCurrentTile),n=o-r*this._pixelPerMeter/Math.cos(this._pitch),l=r<0?n:o,h=Math.PI/2+this._pitch,c=this._fov*(.5+e.y/this.height),u=Math.sin(c)*l/Math.sin(t.ad(Math.PI-h-c,.01,Math.PI-.01)),d=this.getHorizon(),_=2*Math.atan(d/this.cameraToCenterDistance)*(.5+e.y/(2*d)),p=Math.sin(_)*l/Math.sin(t.ad(Math.PI-h-_,.01,Math.PI-.01)),m=Math.min(u,p),f=1.01*(Math.cos(Math.PI/2-this._pitch)*m+l),g=this.height/50;a=new Float64Array(16),t.b8(a,this._fov,this.width/this.height,g,f),a[8]=2*-e.x/this.width,a[9]=2*e.y/this.height,t.a0(a,a,[1,-1,1]),t.$(a,a,[0,0,-this.cameraToCenterDistance]),t.b9(a,a,this._pitch),t.ae(a,a,this.angle),t.$(a,a,[-i,-s,0]),this.mercatorMatrix=t.a0([],a,[this.worldSize,this.worldSize,this.worldSize]),t.a0(a,a,[1,1,this._pixelPerMeter]),this.pixelMatrix=t.a1(new Float64Array(16),this.labelPlaneMatrix,a),t.$(a,a,[0,0,-this.elevation]),this.projMatrix=a,this.invProjMatrix=t.as([],a),this.pixelMatrix3D=t.a1(new Float64Array(16),this.labelPlaneMatrix,a);const v=this.width%2/2,x=this.height%2/2,y=Math.cos(this.angle),b=Math.sin(this.angle),w=i-Math.round(i)+y*v+b*x,T=s-Math.round(s)+y*x+b*v,I=new Float64Array(a);if(t.$(I,I,[w>.5?w-1:w,T>.5?T-1:T,0]),this.alignedProjMatrix=I,a=t.as(new Float64Array(16),this.pixelMatrix),!a)throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=a,this._posMatrixCache={},this._alignedPosMatrixCache={};}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;const e=this.pointCoordinate(new t.P(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.ag(i,i,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){const e=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.P(0,e))}getCameraQueryGeometry(e){const i=this.getCameraPoint();if(1===e.length)return [e[0],i];{let s=i.x,a=i.y,o=i.x,r=i.y;for(const t of e)s=Math.min(s,t.x),a=Math.min(a,t.y),o=Math.max(o,t.x),r=Math.max(r,t.y);return [new t.P(s,a),new t.P(o,a),new t.P(o,r),new t.P(s,r),new t.P(s,a)]}}}function ns(t,e){let i,s=!1,a=null,o=null;const r=()=>{a=null,s&&(t.apply(o,i),a=setTimeout(r,e),s=!1);};return (...t)=>(s=!0,o=this,i=t,a||r(),a)}class ls{constructor(t){this._getCurrentHash=()=>{const t=window.location.hash.replace(\"#\",\"\");if(this._hashName){let e;return t.split(\"&\").map((t=>t.split(\"=\"))).forEach((t=>{t[0]===this._hashName&&(e=t);})),(e&&e[1]||\"\").split(\"/\")}return t.split(\"/\")},this._onHashChange=()=>{const t=this._getCurrentHash();if(t.length>=3&&!t.some((t=>isNaN(t)))){const e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return !1},this._updateHashUnthrottled=()=>{const t=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,t);}catch(t){}},this._updateHash=ns(this._updateHashUnthrottled,300),this._hashName=t&&encodeURIComponent(t);}addTo(t){return this._map=t,addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this}remove(){return removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this}getHashString(t){const e=this._map.getCenter(),i=Math.round(100*this._map.getZoom())/100,s=Math.ceil((i*Math.LN2+Math.log(512/360/.5))/Math.LN10),a=Math.pow(10,s),o=Math.round(e.lng*a)/a,r=Math.round(e.lat*a)/a,n=this._map.getBearing(),l=this._map.getPitch();let h=\"\";if(h+=t?`/${o}/${r}/${i}`:`${i}/${r}/${o}`,(n||l)&&(h+=\"/\"+Math.round(10*n)/10),l&&(h+=`/${Math.round(l)}`),this._hashName){const t=this._hashName;let e=!1;const i=window.location.hash.slice(1).split(\"&\").map((i=>{const s=i.split(\"=\")[0];return s===t?(e=!0,`${s}=${h}`):i})).filter((t=>t));return e||i.push(`${t}=${h}`),`#${i.join(\"&\")}`}return `#${h}`}}const hs={linearity:.3,easing:t.ba(0,0,.3,1)},cs=t.e({deceleration:2500,maxSpeed:1400},hs),us=t.e({deceleration:20,maxSpeed:1400},hs),ds=t.e({deceleration:1e3,maxSpeed:360},hs),_s=t.e({deceleration:1e3,maxSpeed:90},hs);class ps{constructor(t){this._map=t,this.clear();}clear(){this._inertiaBuffer=[];}record(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:t.h.now(),settings:e});}_drainInertiaBuffer(){const e=this._inertiaBuffer,i=t.h.now();for(;e.length>0&&i-e[0].time>160;)e.shift();}_onMoveEnd(e){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,pan:new t.P(0,0),pinchAround:void 0,around:void 0};for(const{settings:t}of this._inertiaBuffer)i.zoom+=t.zoomDelta||0,i.bearing+=t.bearingDelta||0,i.pitch+=t.pitchDelta||0,t.panDelta&&i.pan._add(t.panDelta),t.around&&(i.around=t.around),t.pinchAround&&(i.pinchAround=t.pinchAround);const s=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,a={};if(i.pan.mag()){const o=fs(i.pan.mag(),s,t.e({},cs,e||{}));a.offset=i.pan.mult(o.amount/i.pan.mag()),a.center=this._map.transform.center,ms(a,o);}if(i.zoom){const t=fs(i.zoom,s,us);a.zoom=this._map.transform.zoom+t.amount,ms(a,t);}if(i.bearing){const e=fs(i.bearing,s,ds);a.bearing=this._map.transform.bearing+t.ad(e.amount,-179,179),ms(a,e);}if(i.pitch){const t=fs(i.pitch,s,_s);a.pitch=this._map.transform.pitch+t.amount,ms(a,t);}if(a.zoom||a.bearing){const t=void 0===i.pinchAround?i.around:i.pinchAround;a.around=t?this._map.unproject(t):this._map.getCenter();}return this.clear(),t.e(a,{noMoveStart:!0})}}function ms(t,e){(!t.duration||t.duration<e.duration)&&(t.duration=e.duration,t.easing=e.easing);}function fs(e,i,s){const{maxSpeed:a,linearity:o,deceleration:r}=s,n=t.ad(e*o/(i/1e3),-a,a),l=Math.abs(n)/(r*o);return {easing:s.easing,duration:1e3*l,amount:n*(l/2)}}class gs extends t.k{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,s,a,o={}){const r=i.mousePos(s.getCanvasContainer(),a),n=s.unproject(r);super(e,t.e({point:r,lngLat:n,originalEvent:a},o)),this._defaultPrevented=!1,this.target=s;}}class vs extends t.k{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,s,a){const o=\"touchend\"===e?a.changedTouches:a.touches,r=i.touchPos(s.getCanvasContainer(),o),n=r.map((t=>s.unproject(t))),l=r.reduce(((t,e,i,s)=>t.add(e.div(s.length))),new t.P(0,0));super(e,{points:r,point:l,lngLats:n,lngLat:s.unproject(l),originalEvent:a}),this._defaultPrevented=!1;}}class xs extends t.k{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(t,e,i){super(t,{originalEvent:i}),this._defaultPrevented=!1;}}class ys{constructor(t,e){this._map=t,this._clickTolerance=e.clickTolerance;}reset(){delete this._mousedownPos;}wheel(t){return this._firePreventable(new xs(t.type,this._map,t))}mousedown(t,e){return this._mousedownPos=e,this._firePreventable(new gs(t.type,this._map,t))}mouseup(t){this._map.fire(new gs(t.type,this._map,t));}click(t,e){this._mousedownPos&&this._mousedownPos.dist(e)>=this._clickTolerance||this._map.fire(new gs(t.type,this._map,t));}dblclick(t){return this._firePreventable(new gs(t.type,this._map,t))}mouseover(t){this._map.fire(new gs(t.type,this._map,t));}mouseout(t){this._map.fire(new gs(t.type,this._map,t));}touchstart(t){return this._firePreventable(new vs(t.type,this._map,t))}touchmove(t){this._map.fire(new vs(t.type,this._map,t));}touchend(t){this._map.fire(new vs(t.type,this._map,t));}touchcancel(t){this._map.fire(new vs(t.type,this._map,t));}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return {}}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class bs{constructor(t){this._map=t;}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent;}mousemove(t){this._map.fire(new gs(t.type,this._map,t));}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1;}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new gs(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._ignoreContextMenu||this._map.fire(new gs(t.type,this._map,t)),this._map.listens(\"contextmenu\")&&t.preventDefault();}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class ws{constructor(t){this._map=t;}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return {lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(e){return this.transform.pointLocation(t.P.convert(e),this._map.terrain)}}class Ts{constructor(t,e){this._map=t,this._tr=new ws(t),this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1;}isEnabled(){return !!this._enabled}isActive(){return !!this._active}enable(){this.isEnabled()||(this._enabled=!0);}disable(){this.isEnabled()&&(this._enabled=!1);}mousedown(t,e){this.isEnabled()&&t.shiftKey&&0===t.button&&(i.disableDrag(),this._startPos=this._lastPos=e,this._active=!0);}mousemoveWindow(t,e){if(!this._active)return;const s=e;if(this._lastPos.equals(s)||!this._box&&s.dist(this._startPos)<this._clickTolerance)return;const a=this._startPos;this._lastPos=s,this._box||(this._box=i.create(\"div\",\"maplibregl-boxzoom\",this._container),this._container.classList.add(\"maplibregl-crosshair\"),this._fireEvent(\"boxzoomstart\",t));const o=Math.min(a.x,s.x),r=Math.max(a.x,s.x),n=Math.min(a.y,s.y),l=Math.max(a.y,s.y);i.setTransform(this._box,`translate(${o}px,${n}px)`),this._box.style.width=r-o+\"px\",this._box.style.height=l-n+\"px\";}mouseupWindow(e,s){if(!this._active)return;if(0!==e.button)return;const a=this._startPos,o=s;if(this.reset(),i.suppressClick(),a.x!==o.x||a.y!==o.y)return this._map.fire(new t.k(\"boxzoomend\",{originalEvent:e})),{cameraAnimation:t=>t.fitScreenCoordinates(a,o,this._tr.bearing,{linear:!0})};this._fireEvent(\"boxzoomcancel\",e);}keydown(t){this._active&&27===t.keyCode&&(this.reset(),this._fireEvent(\"boxzoomcancel\",t));}reset(){this._active=!1,this._container.classList.remove(\"maplibregl-crosshair\"),this._box&&(i.remove(this._box),this._box=null),i.enableDrag(),delete this._startPos,delete this._lastPos;}_fireEvent(e,i){return this._map.fire(new t.k(e,{originalEvent:i}))}}function Is(t,e){if(t.length!==e.length)throw new Error(`The number of touches and points are not equal - touches ${t.length}, points ${e.length}`);const i={};for(let s=0;s<t.length;s++)i[t[s].identifier]=e[s];return i}class Es{constructor(t){this.reset(),this.numTouches=t.numTouches;}reset(){delete this.centroid,delete this.startTime,delete this.touches,this.aborted=!1;}touchstart(e,i,s){(this.centroid||s.length>this.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),s.length===this.numTouches&&(this.centroid=function(e){const i=new t.P(0,0);for(const t of e)i._add(t);return i.div(e.length)}(i),this.touches=Is(s,i)));}touchmove(t,e,i){if(this.aborted||!this.centroid)return;const s=Is(i,e);for(const t in this.touches){const e=s[t];(!e||e.dist(this.touches[t])>30)&&(this.aborted=!0);}}touchend(t,e,i){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const t=!this.aborted&&this.centroid;if(this.reset(),t)return t}}}class Ss{constructor(t){this.singleTap=new Es(t),this.numTaps=t.numTaps,this.reset();}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset();}touchstart(t,e,i){this.singleTap.touchstart(t,e,i);}touchmove(t,e,i){this.singleTap.touchmove(t,e,i);}touchend(t,e,i){const s=this.singleTap.touchend(t,e,i);if(s){const e=t.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(s)<30;if(e&&i||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=s,this.count===this.numTaps)return this.reset(),s}}}class Cs{constructor(t){this._tr=new ws(t),this._zoomIn=new Ss({numTouches:1,numTaps:2}),this._zoomOut=new Ss({numTouches:2,numTaps:1}),this.reset();}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();}touchstart(t,e,i){this._zoomIn.touchstart(t,e,i),this._zoomOut.touchstart(t,e,i);}touchmove(t,e,i){this._zoomIn.touchmove(t,e,i),this._zoomOut.touchmove(t,e,i);}touchend(t,e,i){const s=this._zoomIn.touchend(t,e,i),a=this._zoomOut.touchend(t,e,i),o=this._tr;return s?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:e=>e.easeTo({duration:300,zoom:o.zoom+1,around:o.unproject(s)},{originalEvent:t})}):a?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:e=>e.easeTo({duration:300,zoom:o.zoom-1,around:o.unproject(a)},{originalEvent:t})}):void 0}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Ps{constructor(t){this._enabled=!!t.enable,this._moveStateManager=t.moveStateManager,this._clickTolerance=t.clickTolerance||1,this._moveFunction=t.move,this._activateOnStart=!!t.activateOnStart,t.assignEvents(this),this.reset();}reset(t){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(t);}_move(...t){const e=this._moveFunction(...t);if(e.bearingDelta||e.pitchDelta||e.around||e.panDelta)return this._active=!0,e}dragStart(t,e){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(t)&&(this._moveStateManager.startMove(t),this._lastPoint=e.length?e[0]:e,this._activateOnStart&&this._lastPoint&&(this._active=!0));}dragMove(t,e){if(!this.isEnabled())return;const i=this._lastPoint;if(!i)return;if(t.preventDefault(),!this._moveStateManager.isValidMoveEvent(t))return void this.reset(t);const s=e.length?e[0]:e;return !this._moved&&s.dist(i)<this._clickTolerance?void 0:(this._moved=!0,this._lastPoint=s,this._move(i,s))}dragEnd(t){this.isEnabled()&&this._lastPoint&&this._moveStateManager.isValidEndEvent(t)&&(this._moved&&i.suppressClick(),this.reset(t));}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}getClickTolerance(){return this._clickTolerance}}const Ds={0:1,2:2};class Ms{constructor(t){this._correctEvent=t.checkCorrectEvent;}startMove(t){const e=i.mouseButton(t);this._eventButton=e;}endMove(t){delete this._eventButton;}isValidStartEvent(t){return this._correctEvent(t)}isValidMoveEvent(t){return !function(t,e){const i=Ds[e];return void 0===t.buttons||(t.buttons&i)!==i}(t,this._eventButton)}isValidEndEvent(t){return i.mouseButton(t)===this._eventButton}}class zs{constructor(){this._firstTouch=void 0;}_isOneFingerTouch(t){return 1===t.targetTouches.length}_isSameTouchEvent(t){return t.targetTouches[0].identifier===this._firstTouch}startMove(t){this._firstTouch=t.targetTouches[0].identifier;}endMove(t){delete this._firstTouch;}isValidStartEvent(t){return this._isOneFingerTouch(t)}isValidMoveEvent(t){return this._isOneFingerTouch(t)&&this._isSameTouchEvent(t)}isValidEndEvent(t){return this._isOneFingerTouch(t)&&this._isSameTouchEvent(t)}}const Ls=t=>{t.mousedown=t.dragStart,t.mousemoveWindow=t.dragMove,t.mouseup=t.dragEnd,t.contextmenu=function(t){t.preventDefault();};},As=({enable:t,clickTolerance:e,bearingDegreesPerPixelMoved:s=.8})=>{const a=new Ms({checkCorrectEvent:t=>0===i.mouseButton(t)&&t.ctrlKey||2===i.mouseButton(t)});return new Ps({clickTolerance:e,move:(t,e)=>({bearingDelta:(e.x-t.x)*s}),moveStateManager:a,enable:t,assignEvents:Ls})},Rs=({enable:t,clickTolerance:e,pitchDegreesPerPixelMoved:s=-.5})=>{const a=new Ms({checkCorrectEvent:t=>0===i.mouseButton(t)&&t.ctrlKey||2===i.mouseButton(t)});return new Ps({clickTolerance:e,move:(t,e)=>({pitchDelta:(e.y-t.y)*s}),moveStateManager:a,enable:t,assignEvents:Ls})};class ks{constructor(t,e){this._minTouches=t.cooperativeGestures?2:1,this._clickTolerance=t.clickTolerance||1,this._map=e,this.reset();}reset(){this._active=!1,this._touches={},this._sum=new t.P(0,0),setTimeout((()=>{this._cancelCooperativeMessage=!1;}),200);}touchstart(t,e,i){return this._calculateTransform(t,e,i)}touchmove(t,e,i){if(this._map._cooperativeGestures&&(2===this._minTouches&&i.length<2&&!this._cancelCooperativeMessage?this._map._onCooperativeGesture(t,!1,i.length):this._cancelCooperativeMessage||(this._cancelCooperativeMessage=!0)),this._active&&!(i.length<this._minTouches))return t.preventDefault(),this._calculateTransform(t,e,i)}touchend(t,e,i){this._calculateTransform(t,e,i),this._active&&i.length<this._minTouches&&this.reset();}touchcancel(){this.reset();}_calculateTransform(e,i,s){s.length>0&&(this._active=!0);const a=Is(s,i),o=new t.P(0,0),r=new t.P(0,0);let n=0;for(const t in a){const e=a[t],i=this._touches[t];i&&(o._add(e),r._add(e.sub(i)),n++,a[t]=e);}if(this._touches=a,n<this._minTouches||!r.mag())return;const l=r.div(n);return this._sum._add(l),this._sum.mag()<this._clickTolerance?void 0:{around:o.div(n),panDelta:l}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Fs{constructor(){this.reset();}reset(){this._active=!1,delete this._firstTwoTouches;}touchstart(t,e,i){this._firstTwoTouches||i.length<2||(this._firstTwoTouches=[i[0].identifier,i[1].identifier],this._start([e[0],e[1]]));}touchmove(t,e,i){if(!this._firstTwoTouches)return;t.preventDefault();const[s,a]=this._firstTwoTouches,o=Bs(i,e,s),r=Bs(i,e,a);if(!o||!r)return;const n=this._aroundCenter?null:o.add(r).div(2);return this._move([o,r],n,t)}touchend(t,e,s){if(!this._firstTwoTouches)return;const[a,o]=this._firstTwoTouches,r=Bs(s,e,a),n=Bs(s,e,o);r&&n||(this._active&&i.suppressClick(),this.reset());}touchcancel(){this.reset();}enable(t){this._enabled=!0,this._aroundCenter=!!t&&\"center\"===t.around;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}function Bs(t,e,i){for(let s=0;s<t.length;s++)if(t[s].identifier===i)return e[s]}function Os(t,e){return Math.log(t/e)/Math.LN2}class Ns extends Fs{reset(){super.reset(),delete this._distance,delete this._startDistance;}_start(t){this._startDistance=this._distance=t[0].dist(t[1]);}_move(t,e){const i=this._distance;if(this._distance=t[0].dist(t[1]),this._active||!(Math.abs(Os(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:Os(this._distance,i),pinchAround:e}}}function Us(t,e){return 180*t.angleWith(e)/Math.PI}class Zs extends Fs{reset(){super.reset(),delete this._minDiameter,delete this._startVector,delete this._vector;}_start(t){this._startVector=this._vector=t[0].sub(t[1]),this._minDiameter=t[0].dist(t[1]);}_move(t,e){const i=this._vector;if(this._vector=t[0].sub(t[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:Us(this._vector,i),pinchAround:e}}_isBelowThreshold(t){this._minDiameter=Math.min(this._minDiameter,t.mag());const e=25/(Math.PI*this._minDiameter)*360,i=Us(t,this._startVector);return Math.abs(i)<e}}function Gs(t){return Math.abs(t.y)>Math.abs(t.x)}class js extends Fs{constructor(t){super(),this._map=t;}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints;}touchstart(t,e,i){super.touchstart(t,e,i),this._currentTouchCount=i.length;}_start(t){this._lastPoints=t,Gs(t[0].sub(t[1]))&&(this._valid=!1);}_move(t,e,i){if(this._map._cooperativeGestures&&this._currentTouchCount<3)return;const s=t[0].sub(this._lastPoints[0]),a=t[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(s,a,i.timeStamp),this._valid?(this._lastPoints=t,this._active=!0,{pitchDelta:(s.y+a.y)/2*-.5}):void 0}gestureBeginsVertically(t,e,i){if(void 0!==this._valid)return this._valid;const s=t.mag()>=2,a=e.mag()>=2;if(!s&&!a)return;if(!s||!a)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const o=t.y>0==e.y>0;return Gs(t)&&Gs(e)&&o}}const Vs={panStep:100,bearingStep:15,pitchStep:10};class qs{constructor(t){this._tr=new ws(t);const e=Vs;this._panStep=e.panStep,this._bearingStep=e.bearingStep,this._pitchStep=e.pitchStep,this._rotationDisabled=!1;}reset(){this._active=!1;}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let e=0,i=0,s=0,a=0,o=0;switch(t.keyCode){case 61:case 107:case 171:case 187:e=1;break;case 189:case 109:case 173:e=-1;break;case 37:t.shiftKey?i=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?i=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?s=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?s=-1:(t.preventDefault(),o=1);break;default:return}return this._rotationDisabled&&(i=0,s=0),{cameraAnimation:r=>{const n=this._tr;r.easeTo({duration:300,easeId:\"keyboardHandler\",easing:$s,zoom:e?Math.round(n.zoom)+e*(t.shiftKey?2:1):n.zoom,bearing:n.bearing+i*this._bearingStep,pitch:n.pitch+s*this._pitchStep,offset:[-a*this._panStep,-o*this._panStep],center:n.center},{originalEvent:t});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0;}enableRotation(){this._rotationDisabled=!1;}}function $s(t){return t*(2-t)}const Ws=4.000244140625;class Hs{constructor(t,e){this._onTimeout=t=>{this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(t);},this._map=t,this._tr=new ws(t),this._el=t.getCanvasContainer(),this._triggerRenderFrame=e,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222;}setZoomRate(t){this._defaultZoomRate=t;}setWheelZoomRate(t){this._wheelZoomRate=t;}isEnabled(){return !!this._enabled}isActive(){return !!this._active||void 0!==this._finishTimeout}isZooming(){return !!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!t&&\"center\"===t.around);}disable(){this.isEnabled()&&(this._enabled=!1);}wheel(e){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!e[this._map._metaKey])return;e.preventDefault();}let i=e.deltaMode===WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY;const s=t.h.now(),a=s-(this._lastWheelEventTime||0);this._lastWheelEventTime=s,0!==i&&i%Ws==0?this._type=\"wheel\":0!==i&&Math.abs(i)<4?this._type=\"trackpad\":a>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(a*i)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),e.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=e,this._delta-=i,this._active||this._start(e)),e.preventDefault();}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const s=i.mousePos(this._el,e),a=this._tr;this._around=t.L.convert(this._aroundCenter?a.center:a.unproject(s)),this._aroundPoint=a.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame());}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const e=this._tr.transform;if(0!==this._delta){const t=\"wheel\"===this._type&&Math.abs(this._delta)>Ws?this._wheelZoomRate:this._defaultZoomRate;let i=2/(1+Math.exp(-Math.abs(this._delta*t)));this._delta<0&&0!==i&&(i=1/i);const s=\"number\"==typeof this._targetZoom?e.zoomScale(this._targetZoom):e.scale;this._targetZoom=Math.min(e.maxZoom,Math.max(e.minZoom,e.scaleZoom(s*i))),\"wheel\"===this._type&&(this._startZoom=e.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}const i=\"number\"==typeof this._targetZoom?this._targetZoom:e.zoom,s=this._startZoom,a=this._easing;let o,r=!1;if(\"wheel\"===this._type&&s&&a){const e=Math.min((t.h.now()-this._lastWheelEventTime)/200,1),n=a(e);o=t.B.number(s,i,n),e<1?this._frameId||(this._frameId=!0):r=!0;}else o=i,r=!0;return this._active=!0,r&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout;}),200)),{noInertia:!0,needsRenderFrame:!r,zoomDelta:o-e.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(e){let i=t.bb;if(this._prevEase){const e=this._prevEase,s=(t.h.now()-e.start)/e.duration,a=e.easing(s+.01)-e.easing(s),o=.27/Math.sqrt(a*a+1e-4)*.01,r=Math.sqrt(.0729-o*o);i=t.ba(o,r,.25,1);}return this._prevEase={start:t.h.now(),duration:e,easing:i},i}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);}}class Xs{constructor(t,e){this._clickZoom=t,this._tapZoom=e;}enable(){this._clickZoom.enable(),this._tapZoom.enable();}disable(){this._clickZoom.disable(),this._tapZoom.disable();}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Ks{constructor(t){this._tr=new ws(t),this.reset();}reset(){this._active=!1;}dblclick(t,e){return t.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:this._tr.zoom+(t.shiftKey?-1:1),around:this._tr.unproject(e)},{originalEvent:t});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Qs{constructor(){this._tap=new Ss({numTouches:1,numTaps:1}),this.reset();}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset();}touchstart(t,e,i){if(!this._swipePoint)if(this._tapTime){const s=e[0],a=t.timeStamp-this._tapTime<500,o=this._tapPoint.dist(s)<30;a&&o?i.length>0&&(this._swipePoint=s,this._swipeTouch=i[0].identifier):this.reset();}else this._tap.touchstart(t,e,i);}touchmove(t,e,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const s=e[0],a=s.y-this._swipePoint.y;return this._swipePoint=s,t.preventDefault(),this._active=!0,{zoomDelta:a/128}}}else this._tap.touchmove(t,e,i);}touchend(t,e,i){if(this._tapTime)this._swipePoint&&0===i.length&&this.reset();else {const s=this._tap.touchend(t,e,i);s&&(this._tapTime=t.timeStamp,this._tapPoint=s);}}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Ys{constructor(t,e,i){this._el=t,this._mousePan=e,this._touchPan=i;}enable(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"maplibregl-touch-drag-pan\");}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"maplibregl-touch-drag-pan\");}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Js{constructor(t,e,i){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=i;}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable();}disable(){this._mouseRotate.disable(),this._mousePitch.disable();}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class ta{constructor(t,e,i,s){this._el=t,this._touchZoom=e,this._touchRotate=i,this._tapDragZoom=s,this._rotationDisabled=!1,this._enabled=!0;}enable(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add(\"maplibregl-touch-zoom-rotate\");}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"maplibregl-touch-zoom-rotate\");}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable();}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();}}const ea=t=>t.zoom||t.drag||t.pitch||t.rotate;class ia extends t.k{}function sa(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}class aa{constructor(t,e){this.handleWindowEvent=t=>{this.handleEvent(t,`${t.type}Window`);},this.handleEvent=(t,e)=>{if(\"blur\"===t.type)return void this.stop(!0);this._updatingCamera=!0;const s=\"renderFrame\"===t.type?void 0:t,a={needsRenderFrame:!1},o={},r={},n=t.touches,l=n?this._getMapTouches(n):void 0,h=l?i.touchPos(this._el,l):i.mousePos(this._el,t);for(const{handlerName:i,handler:n,allowed:c}of this._handlers){if(!n.isEnabled())continue;let u;this._blockedByActive(r,c,i)?n.reset():n[e||t.type]&&(u=n[e||t.type](t,h,l),this.mergeHandlerResult(a,o,u,i,s),u&&u.needsRenderFrame&&this._triggerRenderFrame()),(u||n.isActive())&&(r[i]=n);}const c={};for(const t in this._previousActiveHandlers)r[t]||(c[t]=s);this._previousActiveHandlers=r,(Object.keys(c).length||sa(a))&&(this._changes.push([a,o,c]),this._triggerRenderFrame()),(Object.keys(r).length||sa(a))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:u}=a;u&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],u(this._map));},this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new ps(t),this._bearingSnap=e.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(e);const s=this._el;this._listeners=[[s,\"touchstart\",{passive:!0}],[s,\"touchmove\",{passive:!1}],[s,\"touchend\",void 0],[s,\"touchcancel\",void 0],[s,\"mousedown\",void 0],[s,\"mousemove\",void 0],[s,\"mouseup\",void 0],[document,\"mousemove\",{capture:!0}],[document,\"mouseup\",void 0],[s,\"mouseover\",void 0],[s,\"mouseout\",void 0],[s,\"dblclick\",void 0],[s,\"click\",void 0],[s,\"keydown\",{capture:!1}],[s,\"keyup\",void 0],[s,\"wheel\",{passive:!1}],[s,\"contextmenu\",void 0],[window,\"blur\",void 0]];for(const[t,e,s]of this._listeners)i.addEventListener(t,e,t===document?this.handleWindowEvent:this.handleEvent,s);}destroy(){for(const[t,e,s]of this._listeners)i.removeEventListener(t,e,t===document?this.handleWindowEvent:this.handleEvent,s);}_addDefaultHandlers(t){const e=this._map,s=e.getCanvasContainer();this._add(\"mapEvent\",new ys(e,t));const a=e.boxZoom=new Ts(e,t);this._add(\"boxZoom\",a),t.interactive&&t.boxZoom&&a.enable();const o=new Cs(e),r=new Ks(e);e.doubleClickZoom=new Xs(r,o),this._add(\"tapZoom\",o),this._add(\"clickZoom\",r),t.interactive&&t.doubleClickZoom&&e.doubleClickZoom.enable();const n=new Qs;this._add(\"tapDragZoom\",n);const l=e.touchPitch=new js(e);this._add(\"touchPitch\",l),t.interactive&&t.touchPitch&&e.touchPitch.enable(t.touchPitch);const h=As(t),c=Rs(t);e.dragRotate=new Js(t,h,c),this._add(\"mouseRotate\",h,[\"mousePitch\"]),this._add(\"mousePitch\",c,[\"mouseRotate\"]),t.interactive&&t.dragRotate&&e.dragRotate.enable();const u=(({enable:t,clickTolerance:e})=>{const s=new Ms({checkCorrectEvent:t=>0===i.mouseButton(t)&&!t.ctrlKey});return new Ps({clickTolerance:e,move:(t,e)=>({around:e,panDelta:e.sub(t)}),activateOnStart:!0,moveStateManager:s,enable:t,assignEvents:Ls})})(t),d=new ks(t,e);e.dragPan=new Ys(s,u,d),this._add(\"mousePan\",u),this._add(\"touchPan\",d,[\"touchZoom\",\"touchRotate\"]),t.interactive&&t.dragPan&&e.dragPan.enable(t.dragPan);const _=new Zs,p=new Ns;e.touchZoomRotate=new ta(s,p,_,n),this._add(\"touchRotate\",_,[\"touchPan\",\"touchZoom\"]),this._add(\"touchZoom\",p,[\"touchPan\",\"touchRotate\"]),t.interactive&&t.touchZoomRotate&&e.touchZoomRotate.enable(t.touchZoomRotate);const m=e.scrollZoom=new Hs(e,(()=>this._triggerRenderFrame()));this._add(\"scrollZoom\",m,[\"mousePan\"]),t.interactive&&t.scrollZoom&&e.scrollZoom.enable(t.scrollZoom);const f=e.keyboard=new qs(e);this._add(\"keyboard\",f),t.interactive&&t.keyboard&&e.keyboard.enable(),this._add(\"blockableMapEvent\",new bs(e));}_add(t,e,i){this._handlers.push({handlerName:t,handler:e,allowed:i}),this._handlersById[t]=e;}stop(t){if(!this._updatingCamera){for(const{handler:t}of this._handlers)t.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[];}}isActive(){for(const{handler:t}of this._handlers)if(t.isActive())return !0;return !1}isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return !!this._eventsInProgress.rotate}isMoving(){return Boolean(ea(this._eventsInProgress))||this.isZooming()}_blockedByActive(t,e,i){for(const s in t)if(s!==i&&(!e||e.indexOf(s)<0))return !0;return !1}_getMapTouches(t){const e=[];for(const i of t)this._el.contains(i.target)&&e.push(i);return e}mergeHandlerResult(e,i,s,a,o){if(!s)return;t.e(e,s);const r={handlerName:a,originalEvent:s.originalEvent||o};void 0!==s.zoomDelta&&(i.zoom=r),void 0!==s.panDelta&&(i.drag=r),void 0!==s.pitchDelta&&(i.pitch=r),void 0!==s.bearingDelta&&(i.rotate=r);}_applyChanges(){const e={},i={},s={};for(const[a,o,r]of this._changes)a.panDelta&&(e.panDelta=(e.panDelta||new t.P(0,0))._add(a.panDelta)),a.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+a.zoomDelta),a.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+a.bearingDelta),a.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+a.pitchDelta),void 0!==a.around&&(e.around=a.around),void 0!==a.pinchAround&&(e.pinchAround=a.pinchAround),a.noInertia&&(e.noInertia=a.noInertia),t.e(i,o),t.e(s,r);this._updateMapTransform(e,i,s),this._changes=[];}_updateMapTransform(t,e,i){const s=this._map,a=s._getTransformForUpdate(),o=s.terrain;if(!(sa(t)||o&&this._terrainMovement))return this._fireEvents(e,i,!0);let{panDelta:r,zoomDelta:n,bearingDelta:l,pitchDelta:h,around:c,pinchAround:u}=t;void 0!==u&&(c=u),s._stop(!0),c=c||s.transform.centerPoint;const d=a.pointLocation(r?c.sub(r):c);l&&(a.bearing+=l),h&&(a.pitch+=h),n&&(a.zoom+=n),o?this._terrainMovement||!e.drag&&!e.zoom?e.drag&&this._terrainMovement?a.center=a.pointLocation(a.centerPoint.sub(r)):a.setLocationAtPoint(d,c):(this._terrainMovement=!0,this._map._elevationFreeze=!0,a.setLocationAtPoint(d,c),this._map.once(\"moveend\",(()=>{this._map._elevationFreeze=!1,this._terrainMovement=!1,a.recalculateZoom(s.terrain);}))):a.setLocationAtPoint(d,c),s._applyUpdatedTransform(a),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(e,i,!0);}_fireEvents(e,i,s){const a=ea(this._eventsInProgress),o=ea(e),r={};for(const t in e){const{originalEvent:i}=e[t];this._eventsInProgress[t]||(r[`${t}start`]=i),this._eventsInProgress[t]=e[t];}!a&&o&&this._fireEvent(\"movestart\",o.originalEvent);for(const t in r)this._fireEvent(t,r[t]);o&&this._fireEvent(\"move\",o.originalEvent);for(const t in e){const{originalEvent:i}=e[t];this._fireEvent(t,i);}const n={};let l;for(const t in this._eventsInProgress){const{handlerName:e,originalEvent:s}=this._eventsInProgress[t];this._handlersById[e].isActive()||(delete this._eventsInProgress[t],l=i[e]||s,n[`${t}end`]=l);}for(const t in n)this._fireEvent(t,n[t]);const h=ea(this._eventsInProgress);if(s&&(a||o)&&!h){this._updatingCamera=!0;const e=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=t=>0!==t&&-this._bearingSnap<t&&t<this._bearingSnap;!e||!e.essential&&t.h.prefersReducedMotion?(this._map.fire(new t.k(\"moveend\",{originalEvent:l})),i(this._map.getBearing())&&this._map.resetNorth()):(i(e.bearing||this._map.getBearing())&&(e.bearing=0),e.freezeElevation=!0,this._map.easeTo(e,{originalEvent:l})),this._updatingCamera=!1;}}_fireEvent(e,i){this._map.fire(new t.k(e,i?{originalEvent:i}:{}));}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add((t=>{delete this._frameId,this.handleEvent(new ia(\"renderFrame\",{timeStamp:t})),this._applyChanges();}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame());}}class oa extends t.E{constructor(e,i){super(),this._renderFrameCallback=()=>{const e=Math.min((t.h.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();},this._moving=!1,this._zooming=!1,this.transform=e,this._bearingSnap=i.bearingSnap,this.on(\"moveend\",(()=>{delete this._requestedCameraState;}));}getCenter(){return new t.L(this.transform.center.lng,this.transform.center.lat)}setCenter(t,e){return this.jumpTo({center:t},e)}panBy(e,i,s){return e=t.P.convert(e).mult(-1),this.panTo(this.transform.center,t.e({offset:e},i),s)}panTo(e,i,s){return this.easeTo(t.e({center:e},i),s)}getZoom(){return this.transform.zoom}setZoom(t,e){return this.jumpTo({zoom:t},e),this}zoomTo(e,i,s){return this.easeTo(t.e({zoom:e},i),s)}zoomIn(t,e){return this.zoomTo(this.getZoom()+1,t,e),this}zoomOut(t,e){return this.zoomTo(this.getZoom()-1,t,e),this}getBearing(){return this.transform.bearing}setBearing(t,e){return this.jumpTo({bearing:t},e),this}getPadding(){return this.transform.padding}setPadding(t,e){return this.jumpTo({padding:t},e),this}rotateTo(e,i,s){return this.easeTo(t.e({bearing:e},i),s)}resetNorth(e,i){return this.rotateTo(0,t.e({duration:1e3},e),i),this}resetNorthPitch(e,i){return this.easeTo(t.e({bearing:0,pitch:0,duration:1e3},e),i),this}snapToNorth(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this}getPitch(){return this.transform.pitch}setPitch(t,e){return this.jumpTo({pitch:t},e),this}cameraForBounds(t,e){t=L.convert(t);const i=e&&e.bearing||0;return this._cameraForBoxAndBearing(t.getNorthWest(),t.getSouthEast(),i,e)}_cameraForBoxAndBearing(e,i,s,a){const o={top:0,bottom:0,right:0,left:0};if(\"number\"==typeof(a=t.e({padding:o,offset:[0,0],maxZoom:this.transform.maxZoom},a)).padding){const t=a.padding;a.padding={top:t,bottom:t,right:t,left:t};}a.padding=t.e(o,a.padding);const r=this.transform,n=r.padding,l=r.project(t.L.convert(e)),h=r.project(t.L.convert(i)),c=l.rotate(-s*Math.PI/180),u=h.rotate(-s*Math.PI/180),d=new t.P(Math.max(c.x,u.x),Math.max(c.y,u.y)),_=new t.P(Math.min(c.x,u.x),Math.min(c.y,u.y)),p=d.sub(_),m=(r.width-(n.left+n.right+a.padding.left+a.padding.right))/p.x,f=(r.height-(n.top+n.bottom+a.padding.top+a.padding.bottom))/p.y;if(f<0||m<0)return void t.w(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");const g=Math.min(r.scaleZoom(r.scale*Math.min(m,f)),a.maxZoom),v=t.P.convert(a.offset),x=new t.P((a.padding.left-a.padding.right)/2,(a.padding.top-a.padding.bottom)/2).rotate(s*Math.PI/180),y=v.add(x).mult(r.scale/r.zoomScale(g));return {center:r.unproject(l.add(h).div(2).sub(y)),zoom:g,bearing:s}}fitBounds(t,e,i){return this._fitInternal(this.cameraForBounds(t,e),e,i)}fitScreenCoordinates(e,i,s,a,o){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(t.P.convert(e)),this.transform.pointLocation(t.P.convert(i)),s,a),a,o)}_fitInternal(e,i,s){return e?(delete(i=t.e(e,i)).padding,i.linear?this.easeTo(i,s):this.flyTo(i,s)):this}jumpTo(e,i){this.stop();const s=this._getTransformForUpdate();let a=!1,o=!1,r=!1;return \"zoom\"in e&&s.zoom!==+e.zoom&&(a=!0,s.zoom=+e.zoom),void 0!==e.center&&(s.center=t.L.convert(e.center)),\"bearing\"in e&&s.bearing!==+e.bearing&&(o=!0,s.bearing=+e.bearing),\"pitch\"in e&&s.pitch!==+e.pitch&&(r=!0,s.pitch=+e.pitch),null==e.padding||s.isPaddingEqual(e.padding)||(s.padding=e.padding),this._applyUpdatedTransform(s),this.fire(new t.k(\"movestart\",i)).fire(new t.k(\"move\",i)),a&&this.fire(new t.k(\"zoomstart\",i)).fire(new t.k(\"zoom\",i)).fire(new t.k(\"zoomend\",i)),o&&this.fire(new t.k(\"rotatestart\",i)).fire(new t.k(\"rotate\",i)).fire(new t.k(\"rotateend\",i)),r&&this.fire(new t.k(\"pitchstart\",i)).fire(new t.k(\"pitch\",i)).fire(new t.k(\"pitchend\",i)),this.fire(new t.k(\"moveend\",i))}calculateCameraOptionsFromTo(e,i,s,a=0){const o=t.U.fromLngLat(e,i),r=t.U.fromLngLat(s,a),n=r.x-o.x,l=r.y-o.y,h=r.z-o.z,c=Math.hypot(n,l,h);if(0===c)throw new Error(\"Can't calculate camera options with same From and To\");const u=Math.hypot(n,l),d=this.transform.scaleZoom(this.transform.cameraToCenterDistance/c/this.transform.tileSize),_=180*Math.atan2(n,-l)/Math.PI;let p=180*Math.acos(u/c)/Math.PI;return p=h<0?90-p:90+p,{center:r.toLngLat(),zoom:d,pitch:p,bearing:_}}easeTo(e,i){this._stop(!1,e.easeId),(!1===(e=t.e({offset:[0,0],duration:500,easing:t.bb},e)).animate||!e.essential&&t.h.prefersReducedMotion)&&(e.duration=0);const s=this._getTransformForUpdate(),a=this.getZoom(),o=this.getBearing(),r=this.getPitch(),n=this.getPadding(),l=\"zoom\"in e?+e.zoom:a,h=\"bearing\"in e?this._normalizeBearing(e.bearing,o):o,c=\"pitch\"in e?+e.pitch:r,u=\"padding\"in e?e.padding:s.padding,d=t.P.convert(e.offset);let _=s.centerPoint.add(d);const p=s.pointLocation(_),m=t.L.convert(e.center||p);this._normalizeCenter(m);const f=s.project(p),g=s.project(m).sub(f),v=s.zoomScale(l-a);let x,y;e.around&&(x=t.L.convert(e.around),y=s.locationPoint(x));const b={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=this._zooming||l!==a,this._rotating=this._rotating||o!==h,this._pitching=this._pitching||c!==r,this._padding=!s.isPaddingEqual(u),this._easeId=e.easeId,this._prepareEase(i,e.noMoveStart,b),this.terrain&&this._prepareElevation(m),this._ease((p=>{if(this._zooming&&(s.zoom=t.B.number(a,l,p)),this._rotating&&(s.bearing=t.B.number(o,h,p)),this._pitching&&(s.pitch=t.B.number(r,c,p)),this._padding&&(s.interpolatePadding(n,u,p),_=s.centerPoint.add(d)),this.terrain&&!e.freezeElevation&&this._updateElevation(p),x)s.setLocationAtPoint(x,y);else {const t=s.zoomScale(s.zoom-a),e=l>a?Math.min(2,v):Math.max(.5,v),i=Math.pow(e,1-p),o=s.unproject(f.add(g.mult(p*i)).mult(t));s.setLocationAtPoint(s.renderWorldCopies?o.wrap():o,_);}this._applyUpdatedTransform(s),this._fireMoveEvents(i);}),(t=>{this.terrain&&this._finalizeElevation(),this._afterEase(i,t);}),e),this}_prepareEase(e,i,s={}){this._moving=!0,i||s.moving||this.fire(new t.k(\"movestart\",e)),this._zooming&&!s.zooming&&this.fire(new t.k(\"zoomstart\",e)),this._rotating&&!s.rotating&&this.fire(new t.k(\"rotatestart\",e)),this._pitching&&!s.pitching&&this.fire(new t.k(\"pitchstart\",e));}_prepareElevation(t){this._elevationCenter=t,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(t,this.transform.tileZoom),this._elevationFreeze=!0;}_updateElevation(e){this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);const i=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(e<1&&i!==this._elevationTarget){const t=this._elevationTarget-this._elevationStart;this._elevationStart+=e*(t-(i-(t*e+this._elevationStart))/(1-e)),this._elevationTarget=i;}this.transform.elevation=t.B.number(this._elevationStart,this._elevationTarget,e);}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain);}_getTransformForUpdate(){return this.transformCameraUpdate?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_applyUpdatedTransform(t){if(!this.transformCameraUpdate)return;const e=t.clone(),{center:i,zoom:s,pitch:a,bearing:o,elevation:r}=this.transformCameraUpdate(e);i&&(e.center=i),void 0!==s&&(e.zoom=s),void 0!==a&&(e.pitch=a),void 0!==o&&(e.bearing=o),void 0!==r&&(e.elevation=r),this.transform.apply(e);}_fireMoveEvents(e){this.fire(new t.k(\"move\",e)),this._zooming&&this.fire(new t.k(\"zoom\",e)),this._rotating&&this.fire(new t.k(\"rotate\",e)),this._pitching&&this.fire(new t.k(\"pitch\",e));}_afterEase(e,i){if(this._easeId&&i&&this._easeId===i)return;delete this._easeId;const s=this._zooming,a=this._rotating,o=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,s&&this.fire(new t.k(\"zoomend\",e)),a&&this.fire(new t.k(\"rotateend\",e)),o&&this.fire(new t.k(\"pitchend\",e)),this.fire(new t.k(\"moveend\",e));}flyTo(e,i){if(!e.essential&&t.h.prefersReducedMotion){const s=t.F(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(s,i)}this.stop(),e=t.e({offset:[0,0],speed:1.2,curve:1.42,easing:t.bb},e);const s=this._getTransformForUpdate(),a=this.getZoom(),o=this.getBearing(),r=this.getPitch(),n=this.getPadding(),l=\"zoom\"in e?t.ad(+e.zoom,s.minZoom,s.maxZoom):a,h=\"bearing\"in e?this._normalizeBearing(e.bearing,o):o,c=\"pitch\"in e?+e.pitch:r,u=\"padding\"in e?e.padding:s.padding,d=s.zoomScale(l-a),_=t.P.convert(e.offset);let p=s.centerPoint.add(_);const m=s.pointLocation(p),f=t.L.convert(e.center||m);this._normalizeCenter(f);const g=s.project(m),v=s.project(f).sub(g);let x=e.curve;const y=Math.max(s.width,s.height),b=y/d,w=v.mag();if(\"minZoom\"in e){const i=t.ad(Math.min(e.minZoom,a,l),s.minZoom,s.maxZoom),o=y/s.zoomScale(i-a);x=Math.sqrt(o/w*2);}const T=x*x;function I(t){const e=(b*b-y*y+(t?-1:1)*T*T*w*w)/(2*(t?b:y)*T*w);return Math.log(Math.sqrt(e*e+1)-e)}function E(t){return (Math.exp(t)-Math.exp(-t))/2}function S(t){return (Math.exp(t)+Math.exp(-t))/2}const C=I(!1);let P=function(t){return S(C)/S(C+x*t)},D=function(t){return y*((S(C)*(E(e=C+x*t)/S(e))-E(C))/T)/w;var e;},M=(I(!0)-C)/x;if(Math.abs(w)<1e-6||!isFinite(M)){if(Math.abs(y-b)<1e-6)return this.easeTo(e,i);const t=b<y?-1:1;M=Math.abs(Math.log(b/y))/x,D=function(){return 0},P=function(e){return Math.exp(t*x*e)};}return e.duration=\"duration\"in e?+e.duration:1e3*M/(\"screenSpeed\"in e?+e.screenSpeed/x:+e.speed),e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=o!==h,this._pitching=c!==r,this._padding=!s.isPaddingEqual(u),this._prepareEase(i,!1),this.terrain&&this._prepareElevation(f),this._ease((d=>{const m=d*M,x=1/P(m);s.zoom=1===d?l:a+s.scaleZoom(x),this._rotating&&(s.bearing=t.B.number(o,h,d)),this._pitching&&(s.pitch=t.B.number(r,c,d)),this._padding&&(s.interpolatePadding(n,u,d),p=s.centerPoint.add(_)),this.terrain&&!e.freezeElevation&&this._updateElevation(d);const y=1===d?f:s.unproject(g.add(v.mult(D(m))).mult(x));s.setLocationAtPoint(s.renderWorldCopies?y.wrap():y,p),this._applyUpdatedTransform(s),this._fireMoveEvents(i);}),(()=>{this.terrain&&this._finalizeElevation(),this._afterEase(i);}),e),this}isEasing(){return !!this._easeFrameId}stop(){return this._stop()}_stop(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const t=this._onEaseEnd;delete this._onEaseEnd,t.call(this,e);}if(!t){const t=this.handlers;t&&t.stop(!1);}return this}_ease(e,i,s){!1===s.animate||0===s.duration?(e(1),i()):(this._easeStart=t.h.now(),this._easeOptions=s,this._onEaseFrame=e,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));}_normalizeBearing(e,i){e=t.b5(e,-180,180);const s=Math.abs(e-i);return Math.abs(e-360-i)<s&&(e-=360),Math.abs(e+360-i)<s&&(e+=360),e}_normalizeCenter(t){const e=this.transform;if(!e.renderWorldCopies||e.lngRange)return;const i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0;}queryTerrainElevation(e){return this.terrain?this.terrain.getElevationForLngLatZoom(t.L.convert(e),this.transform.tileZoom)-this.transform.elevation:null}}class ra{constructor(t={}){this._toggleAttribution=()=>{this._container.classList.contains(\"maplibregl-compact\")&&(this._container.classList.contains(\"maplibregl-compact-show\")?(this._container.setAttribute(\"open\",\"\"),this._container.classList.remove(\"maplibregl-compact-show\")):(this._container.classList.add(\"maplibregl-compact-show\"),this._container.removeAttribute(\"open\")));},this._updateData=t=>{!t||\"metadata\"!==t.sourceDataType&&\"visibility\"!==t.sourceDataType&&\"style\"!==t.dataType&&\"terrain\"!==t.type||this._updateAttributions();},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1===this._compact?this._container.setAttribute(\"open\",\"\"):this._container.classList.contains(\"maplibregl-compact\")||this._container.classList.contains(\"maplibregl-attrib-empty\")||(this._container.setAttribute(\"open\",\"\"),this._container.classList.add(\"maplibregl-compact\",\"maplibregl-compact-show\")):(this._container.setAttribute(\"open\",\"\"),this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.remove(\"maplibregl-compact\",\"maplibregl-compact-show\"));},this._updateCompactMinimize=()=>{this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.contains(\"maplibregl-compact-show\")&&this._container.classList.remove(\"maplibregl-compact-show\");},this.options=t;}getDefaultPosition(){return \"bottom-right\"}onAdd(t){return this._map=t,this._compact=this.options&&this.options.compact,this._container=i.create(\"details\",\"maplibregl-ctrl maplibregl-ctrl-attrib\"),this._compactButton=i.create(\"summary\",\"maplibregl-ctrl-attrib-button\",this._container),this._compactButton.addEventListener(\"click\",this._toggleAttribution),this._setElementTitle(this._compactButton,\"ToggleAttribution\"),this._innerContainer=i.create(\"div\",\"maplibregl-ctrl-attrib-inner\",this._container),this._updateAttributions(),this._updateCompact(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"terrain\",this._updateData),this._map.on(\"resize\",this._updateCompact),this._map.on(\"drag\",this._updateCompactMinimize),this._container}onRemove(){i.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"terrain\",this._updateData),this._map.off(\"resize\",this._updateCompact),this._map.off(\"drag\",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0;}_setElementTitle(t,e){const i=this._map._getUIString(`AttributionControl.${e}`);t.title=i,t.setAttribute(\"aria-label\",i);}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map((t=>\"string\"!=typeof t?\"\":t))):\"string\"==typeof this.options.customAttribution&&t.push(this.options.customAttribution)),this._map.style.stylesheet){const t=this._map.style.stylesheet;this.styleOwner=t.owner,this.styleId=t.id;}const e=this._map.style.sourceCaches;for(const i in e){const s=e[i];if(s.used||s.usedForTerrain){const e=s.getSource();e.attribution&&t.indexOf(e.attribution)<0&&t.push(e.attribution);}}t=t.filter((t=>String(t).trim())),t.sort(((t,e)=>t.length-e.length)),t=t.filter(((e,i)=>{for(let s=i+1;s<t.length;s++)if(t[s].indexOf(e)>=0)return !1;return !0}));const i=t.join(\" | \");i!==this._attribHTML&&(this._attribHTML=i,t.length?(this._innerContainer.innerHTML=i,this._container.classList.remove(\"maplibregl-attrib-empty\")):this._container.classList.add(\"maplibregl-attrib-empty\"),this._updateCompact(),this._editLink=null);}}class na{constructor(t={}){this._updateCompact=()=>{const t=this._container.children;if(t.length){const e=t[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1!==this._compact&&e.classList.add(\"maplibregl-compact\"):e.classList.remove(\"maplibregl-compact\");}},this.options=t;}getDefaultPosition(){return \"bottom-left\"}onAdd(t){this._map=t,this._compact=this.options&&this.options.compact,this._container=i.create(\"div\",\"maplibregl-ctrl\");const e=i.create(\"a\",\"maplibregl-ctrl-logo\");return e.target=\"_blank\",e.rel=\"noopener nofollow\",e.href=\"https://maplibre.org/\",e.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),e.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(e),this._container.style.display=\"block\",this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container}onRemove(){i.remove(this._container),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._compact=void 0;}}class la{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;}add(t){const e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e}remove(t){const e=this._currentlyRunning,i=e?this._queue.concat(e):this._queue;for(const e of i)if(e.id===t)return void(e.cancelled=!0)}run(t=0){if(this._currentlyRunning)throw new Error(\"Attempting to run(), but is already running.\");const e=this._currentlyRunning=this._queue;this._queue=[];for(const i of e)if(!i.cancelled&&(i.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1;}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];}}const ha={\"AttributionControl.ToggleAttribution\":\"Toggle attribution\",\"AttributionControl.MapFeedback\":\"Map feedback\",\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"Mapbox logo\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"ScaleControl.Feet\":\"ft\",\"ScaleControl.Meters\":\"m\",\"ScaleControl.Kilometers\":\"km\",\"ScaleControl.Miles\":\"mi\",\"ScaleControl.NauticalMiles\":\"nm\",\"TerrainControl.enableTerrain\":\"Enable terrain\",\"TerrainControl.disableTerrain\":\"Disable terrain\"};var ca=t.Q([{name:\"a_pos3d\",type:\"Int16\",components:3}]);class ua extends t.E{constructor(t){super(),this.sourceCache=t,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,t.usedForTerrain=!0,t.tileSize=this.tileSize*2**this.deltaZoom;}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null;}update(e,i){this.sourceCache.update(e,i),this._renderableTilesKeys=[];const s={};for(const a of e.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:i}))s[a.key]=!0,this._renderableTilesKeys.push(a.key),this._tiles[a.key]||(a.posMatrix=new Float64Array(16),t.aS(a.posMatrix,0,t.N,0,t.N,0,1),this._tiles[a.key]=new W(a,this.tileSize));for(const t in this._tiles)s[t]||delete this._tiles[t];}freeRtt(t){for(const e in this._tiles){const i=this._tiles[e];(!t||i.tileID.equals(t)||i.tileID.isChildOf(t)||t.isChildOf(i.tileID))&&(i.rtt=[]);}}getRenderableTiles(){return this._renderableTilesKeys.map((t=>this.getTileByID(t)))}getTileByID(t){return this._tiles[t]}getTerrainCoords(e){const i={};for(const s of this._renderableTilesKeys){const a=this._tiles[s].tileID;if(a.canonical.equals(e.canonical)){const a=e.clone();a.posMatrix=new Float64Array(16),t.aS(a.posMatrix,0,t.N,0,t.N,0,1),i[s]=a;}else if(a.canonical.isChildOf(e.canonical)){const o=e.clone();o.posMatrix=new Float64Array(16);const r=a.canonical.z-e.canonical.z,n=a.canonical.x-(a.canonical.x>>r<<r),l=a.canonical.y-(a.canonical.y>>r<<r),h=t.N>>r;t.aS(o.posMatrix,0,h,0,h,0,1),t.$(o.posMatrix,o.posMatrix,[-n*h,-l*h,0]),i[s]=o;}else if(e.canonical.isChildOf(a.canonical)){const o=e.clone();o.posMatrix=new Float64Array(16);const r=e.canonical.z-a.canonical.z,n=e.canonical.x-(e.canonical.x>>r<<r),l=e.canonical.y-(e.canonical.y>>r<<r),h=t.N>>r;t.aS(o.posMatrix,0,t.N,0,t.N,0,1),t.$(o.posMatrix,o.posMatrix,[n*h,l*h,0]),t.a0(o.posMatrix,o.posMatrix,[1/2**r,1/2**r,0]),i[s]=o;}}return i}getSourceTile(t,e){const i=this.sourceCache._source;let s=t.overscaledZ-this.deltaZoom;if(s>i.maxzoom&&(s=i.maxzoom),s<i.minzoom)return null;this._sourceTileCache[t.key]||(this._sourceTileCache[t.key]=t.scaledTo(s).key);let a=this.sourceCache.getTileByID(this._sourceTileCache[t.key]);if((!a||!a.dem)&&e)for(;s>=i.minzoom&&(!a||!a.dem);)a=this.sourceCache.getTileByID(t.scaledTo(s--).key);return a}tilesAfterTime(t=Date.now()){return Object.values(this._tiles).filter((e=>e.timeAdded>=t))}}class da{constructor(t,e,i){this.painter=t,this.sourceCache=new ua(e),this.options=i,this.exaggeration=\"number\"==typeof i.exaggeration?i.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024;}getDEMElevation(e,i,s,a=t.N){var o;if(!(i>=0&&i<a&&s>=0&&s<a))return 0;const r=this.getTerrainData(e),n=null===(o=r.tile)||void 0===o?void 0:o.dem;if(!n)return 0;const l=function(t,e,i){var s=e[0],a=e[1];return t[0]=i[0]*s+i[4]*a+i[12],t[1]=i[1]*s+i[5]*a+i[13],t}([],[i/a*t.N,s/a*t.N],r.u_terrain_matrix),h=[l[0]*n.dim,l[1]*n.dim],c=Math.floor(h[0]),u=Math.floor(h[1]),d=h[0]-c,_=h[1]-u;return n.get(c,u)*(1-d)*(1-_)+n.get(c+1,u)*d*(1-_)+n.get(c,u+1)*(1-d)*_+n.get(c+1,u+1)*d*_}getElevationForLngLatZoom(e,i){const{tileID:s,mercatorX:a,mercatorY:o}=this._getOverscaledTileIDFromLngLatZoom(e,i);return this.getElevation(s,a%t.N,o%t.N,t.N)}getElevation(e,i,s,a=t.N){return this.getDEMElevation(e,i,s,a)*this.exaggeration}getTerrainData(e){if(!this._emptyDemTexture){const e=this.painter.context,i=new t.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new x(e,i,e.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new x(e,new t.R({width:1,height:1}),e.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=t.ao([]);}const i=this.sourceCache.getSourceTile(e,!0);if(i&&i.dem&&(!i.demTexture||i.needsTerrainPrepare)){const t=this.painter.context;i.demTexture=this.painter.getTileTexture(i.dem.stride),i.demTexture?i.demTexture.update(i.dem.getPixels(),{premultiply:!1}):i.demTexture=new x(t,i.dem.getPixels(),t.gl.RGBA,{premultiply:!1}),i.demTexture.bind(t.gl.NEAREST,t.gl.CLAMP_TO_EDGE),i.needsTerrainPrepare=!1;}const s=i&&i+i.tileID.key+e.key;if(s&&!this._demMatrixCache[s]){const s=this.sourceCache.sourceCache._source.maxzoom;let a=e.canonical.z-i.tileID.canonical.z;e.overscaledZ>e.canonical.z&&(e.canonical.z>=s?a=e.canonical.z-s:t.w(\"cannot calculate elevation if elevation maxzoom > source.maxzoom\"));const o=e.canonical.x-(e.canonical.x>>a<<a),r=e.canonical.y-(e.canonical.y>>a<<a),n=t.bc(new Float64Array(16),[1/(t.N<<a),1/(t.N<<a),0]);t.$(n,n,[o*t.N,r*t.N,0]),this._demMatrixCache[e.key]={matrix:n,coord:e};}return {u_depth:2,u_terrain:3,u_terrain_dim:i&&i.dem&&i.dem.dim||1,u_terrain_matrix:s?this._demMatrixCache[e.key].matrix:this._emptyDemMatrix,u_terrain_unpack:i&&i.dem&&i.dem.getUnpackVector()||this._emptyDemUnpack,u_terrain_exaggeration:this.exaggeration,texture:(i&&i.demTexture||this._emptyDemTexture).texture,depthTexture:(this._fboDepthTexture||this._emptyDepthTexture).texture,tile:i}}getFramebuffer(t){const e=this.painter,i=e.width/devicePixelRatio,s=e.height/devicePixelRatio;return !this._fbo||this._fbo.width===i&&this._fbo.height===s||(this._fbo.destroy(),this._fboCoordsTexture.destroy(),this._fboDepthTexture.destroy(),delete this._fbo,delete this._fboDepthTexture,delete this._fboCoordsTexture),this._fboCoordsTexture||(this._fboCoordsTexture=new x(e.context,{width:i,height:s,data:null},e.context.gl.RGBA,{premultiply:!1}),this._fboCoordsTexture.bind(e.context.gl.NEAREST,e.context.gl.CLAMP_TO_EDGE)),this._fboDepthTexture||(this._fboDepthTexture=new x(e.context,{width:i,height:s,data:null},e.context.gl.RGBA,{premultiply:!1}),this._fboDepthTexture.bind(e.context.gl.NEAREST,e.context.gl.CLAMP_TO_EDGE)),this._fbo||(this._fbo=e.context.createFramebuffer(i,s,!0,!1),this._fbo.depthAttachment.set(e.context.createRenderbuffer(e.context.gl.DEPTH_COMPONENT16,i,s))),this._fbo.colorAttachment.set(\"coords\"===t?this._fboCoordsTexture.texture:this._fboDepthTexture.texture),this._fbo}getCoordsTexture(){const e=this.painter.context;if(this._coordsTexture)return this._coordsTexture;const i=new Uint8Array(this._coordsTextureSize*this._coordsTextureSize*4);for(let t=0,e=0;t<this._coordsTextureSize;t++)for(let s=0;s<this._coordsTextureSize;s++,e+=4)i[e+0]=255&s,i[e+1]=255&t,i[e+2]=s>>8<<4|t>>8,i[e+3]=0;const s=new t.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(i.buffer)),a=new x(e,s,e.gl.RGBA,{premultiply:!1});return a.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._coordsTexture=a,a}pointCoordinate(e){const i=new Uint8Array(4),s=this.painter.context,a=s.gl;s.bindFramebuffer.set(this.getFramebuffer(\"coords\").framebuffer),a.readPixels(e.x,this.painter.height/devicePixelRatio-e.y-1,1,1,a.RGBA,a.UNSIGNED_BYTE,i),s.bindFramebuffer.set(null);const o=i[0]+(i[2]>>4<<8),r=i[1]+((15&i[2])<<8),n=this.coordsIndex[255-i[3]],l=n&&this.sourceCache.getTileByID(n);if(!l)return null;const h=this._coordsTextureSize,c=(1<<l.tileID.canonical.z)*h;return new t.U(this._allowMercatorOverflow(e,(l.tileID.canonical.x*h+o)/c),(l.tileID.canonical.y*h+r)/c,this.getElevation(l.tileID,o,r,h))}getTerrainMesh(){if(this._mesh)return this._mesh;const e=this.painter.context,i=new t.bd,s=new t.b0,a=this.meshSize,o=t.N/a,r=a*a;for(let t=0;t<=a;t++)for(let e=0;e<=a;e++)i.emplaceBack(e*o,t*o,0);for(let t=0;t<r;t+=a+1)for(let e=0;e<a;e++)s.emplaceBack(e+t,a+e+t+1,a+e+t+2),s.emplaceBack(e+t,a+e+t+2,e+t+1);const n=i.length,l=n+2*(a+1);for(const e of [0,1])for(let s=0;s<=a;s++)for(const a of [0,1])i.emplaceBack(s*o,e*t.N,a);for(let t=0;t<2*a;t+=2)s.emplaceBack(l+t,l+t+1,l+t+3),s.emplaceBack(l+t,l+t+3,l+t+2),s.emplaceBack(n+t,n+t+3,n+t+1),s.emplaceBack(n+t,n+t+2,n+t+3);const h=i.length,c=h+2*(a+1);for(const e of [0,1])for(let s=0;s<=a;s++)for(const a of [0,1])i.emplaceBack(e*t.N,s*o,a);for(let t=0;t<2*a;t+=2)s.emplaceBack(h+t,h+t+1,h+t+3),s.emplaceBack(h+t,h+t+3,h+t+2),s.emplaceBack(c+t,c+t+3,c+t+1),s.emplaceBack(c+t,c+t+2,c+t+3);return this._mesh={indexBuffer:e.createIndexBuffer(s),vertexBuffer:e.createVertexBuffer(i,ca.members),segments:t.S.simpleSegment(0,0,i.length,s.length)},this._mesh}getMeshFrameDelta(e){return 2*Math.PI*t.be/Math.pow(2,e)/5}getMinTileElevationForLngLatZoom(t,e){var i;const{tileID:s}=this._getOverscaledTileIDFromLngLatZoom(t,e);return null!==(i=this.getMinMaxElevation(s).minElevation)&&void 0!==i?i:0}getMinMaxElevation(t){const e=this.getTerrainData(t).tile,i={minElevation:null,maxElevation:null};return e&&e.dem&&(i.minElevation=e.dem.min*this.exaggeration,i.maxElevation=e.dem.max*this.exaggeration),i}_getOverscaledTileIDFromLngLatZoom(e,i){const s=t.U.fromLngLat(e.wrap()),a=(1<<i)*t.N,o=s.x*a,r=s.y*a,n=Math.floor(o/t.N),l=Math.floor(r/t.N);return {tileID:new t.O(i,0,i,n,l),mercatorX:o,mercatorY:r}}_allowMercatorOverflow(e,i){const s=e.x<this.painter.width/2;let a=t.bf(i);const o=this.painter.transform.center.lng;return s&&Math.sign(a)>0&&Math.sign(o)<0||!s&&Math.sign(a)<0&&Math.sign(o)>0?(a=360*Math.sign(o)+a,t.G(a)):i}}class _a{constructor(t,e,i){this._context=t,this._size=e,this._tileSize=i,this._objects=[],this._recentlyUsed=[],this._stamp=0;}destruct(){for(const t of this._objects)t.texture.destroy(),t.fbo.destroy();}_createObject(t){const e=this._context.createFramebuffer(this._tileSize,this._tileSize,!0,!0),i=new x(this._context,{width:this._tileSize,height:this._tileSize,data:null},this._context.gl.RGBA);return i.bind(this._context.gl.LINEAR,this._context.gl.CLAMP_TO_EDGE),e.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_STENCIL,this._tileSize,this._tileSize)),e.colorAttachment.set(i.texture),{id:t,fbo:e,texture:i,stamp:-1,inUse:!1}}getObjectForId(t){return this._objects[t]}useObject(t){t.inUse=!0,this._recentlyUsed=this._recentlyUsed.filter((e=>t.id!==e)),this._recentlyUsed.push(t.id);}stampObject(t){t.stamp=++this._stamp;}getOrCreateFreeObject(){for(const t of this._recentlyUsed)if(!this._objects[t].inUse)return this._objects[t];if(this._objects.length>=this._size)throw new Error(\"No free RenderPool available, call freeAllObjects() required!\");const t=this._createObject(this._objects.length);return this._objects.push(t),t}freeObject(t){t.inUse=!1;}freeAllObjects(){for(const t of this._objects)this.freeObject(t);}isFull(){return !(this._objects.length<this._size)&&!1===this._objects.some((t=>!t.inUse))}}const pa={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class ma{constructor(t,e){this.painter=t,this.terrain=e,this.pool=new _a(t.context,30,e.sourceCache.tileSize*e.qualityFactor);}destruct(){this.pool.destruct();}getTexture(t){return this.pool.getObjectForId(t.rtt[this._stacks.length-1].id).texture}prepareForRender(t,e){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=t._order.filter((i=>!t._layers[i].isHidden(e))),this._coordsDescendingInv={};for(const e in t.sourceCaches){this._coordsDescendingInv[e]={};const i=t.sourceCaches[e].getVisibleCoordinates();for(const t of i){const i=this.terrain.sourceCache.getTerrainCoords(t);for(const t in i)this._coordsDescendingInv[e][t]||(this._coordsDescendingInv[e][t]=[]),this._coordsDescendingInv[e][t].push(i[t]);}}this._coordsDescendingInvStr={};for(const e of t._order){const i=t._layers[e],s=i.source;if(pa[i.type]&&!this._coordsDescendingInvStr[s]){this._coordsDescendingInvStr[s]={};for(const t in this._coordsDescendingInv[s])this._coordsDescendingInvStr[s][t]=this._coordsDescendingInv[s][t].map((t=>t.key)).sort().join();}}for(const t of this._renderableTiles)for(const e in this._coordsDescendingInvStr){const i=this._coordsDescendingInvStr[e][t.tileID.key];i&&i!==t.rttCoords[e]&&(t.rtt=[]);}}renderLayer(e){if(e.isHidden(this.painter.transform.zoom))return !1;const i=e.type,s=this.painter,a=this._renderableLayerIds[this._renderableLayerIds.length-1]===e.id;if(pa[i]&&(this._prevType&&pa[this._prevType]||this._stacks.push([]),this._prevType=i,this._stacks[this._stacks.length-1].push(e.id),!a))return !0;if(pa[this._prevType]||pa[i]&&a){this._prevType=i;const e=this._stacks.length-1,a=this._stacks[e]||[];for(const i of this._renderableTiles){if(this.pool.isFull()&&(es(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(i),i.rtt[e]){const t=this.pool.getObjectForId(i.rtt[e].id);if(t.stamp===i.rtt[e].stamp){this.pool.useObject(t);continue}}const o=this.pool.getOrCreateFreeObject();this.pool.useObject(o),this.pool.stampObject(o),i.rtt[e]={id:o.id,stamp:o.stamp},s.context.bindFramebuffer.set(o.fbo.framebuffer),s.context.clear({color:t.aT.transparent,stencil:0}),s.currentStencilSource=void 0;for(let t=0;t<a.length;t++){const e=s.style._layers[a[t]],r=e.source?this._coordsDescendingInv[e.source][i.tileID.key]:[i.tileID];s.context.viewport.set([0,0,o.fbo.width,o.fbo.height]),s._renderTileClippingMasks(e,r),s.renderLayer(s,s.style.sourceCaches[e.source],e,r),e.source&&(i.rttCoords[e.source]=this._coordsDescendingInvStr[e.source][i.tileID.key]);}}return es(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects(),pa[i]}return !1}}const fa=e,ga={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:void 0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,maplibreLogo:!1,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,maxTileCacheZoomLevels:t.c.MAX_TILE_CACHE_ZOOM_LEVELS,localIdeographFontFamily:\"sans-serif\",transformRequest:null,transformCameraUpdate:null,fadeDuration:300,crossSourceCollisions:!0,validateStyle:!0,maxCanvasSize:[4096,4096]},va=t=>{t.touchstart=t.dragStart,t.touchmoveWindow=t.dragMove,t.touchend=t.dragEnd;},xa={showCompass:!0,showZoom:!0,visualizePitch:!1};class ya{constructor(e,s,a=!1){this.mousedown=e=>{this.startMouse(t.e({},e,{ctrlKey:!0,preventDefault:()=>e.preventDefault()}),i.mousePos(this.element,e)),i.addEventListener(window,\"mousemove\",this.mousemove),i.addEventListener(window,\"mouseup\",this.mouseup);},this.mousemove=t=>{this.moveMouse(t,i.mousePos(this.element,t));},this.mouseup=t=>{this.mouseRotate.dragEnd(t),this.mousePitch&&this.mousePitch.dragEnd(t),this.offTemp();},this.touchstart=t=>{1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=i.touchPos(this.element,t.targetTouches)[0],this.startTouch(t,this._startPos),i.addEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),i.addEventListener(window,\"touchend\",this.touchend));},this.touchmove=t=>{1!==t.targetTouches.length?this.reset():(this._lastPos=i.touchPos(this.element,t.targetTouches)[0],this.moveTouch(t,this._lastPos));},this.touchend=t=>{0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),delete this._startPos,delete this._lastPos,this.offTemp();},this.reset=()=>{this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp();},this._clickTolerance=10;const o=e.dragRotate._mouseRotate.getClickTolerance(),r=e.dragRotate._mousePitch.getClickTolerance();this.element=s,this.mouseRotate=As({clickTolerance:o,enable:!0}),this.touchRotate=(({enable:t,clickTolerance:e,bearingDegreesPerPixelMoved:i=.8})=>{const s=new zs;return new Ps({clickTolerance:e,move:(t,e)=>({bearingDelta:(e.x-t.x)*i}),moveStateManager:s,enable:t,assignEvents:va})})({clickTolerance:o,enable:!0}),this.map=e,a&&(this.mousePitch=Rs({clickTolerance:r,enable:!0}),this.touchPitch=(({enable:t,clickTolerance:e,pitchDegreesPerPixelMoved:i=-.5})=>{const s=new zs;return new Ps({clickTolerance:e,move:(t,e)=>({pitchDelta:(e.y-t.y)*i}),moveStateManager:s,enable:t,assignEvents:va})})({clickTolerance:r,enable:!0})),i.addEventListener(s,\"mousedown\",this.mousedown),i.addEventListener(s,\"touchstart\",this.touchstart,{passive:!1}),i.addEventListener(s,\"touchcancel\",this.reset);}startMouse(t,e){this.mouseRotate.dragStart(t,e),this.mousePitch&&this.mousePitch.dragStart(t,e),i.disableDrag();}startTouch(t,e){this.touchRotate.dragStart(t,e),this.touchPitch&&this.touchPitch.dragStart(t,e),i.disableDrag();}moveMouse(t,e){const i=this.map,{bearingDelta:s}=this.mouseRotate.dragMove(t,e)||{};if(s&&i.setBearing(i.getBearing()+s),this.mousePitch){const{pitchDelta:s}=this.mousePitch.dragMove(t,e)||{};s&&i.setPitch(i.getPitch()+s);}}moveTouch(t,e){const i=this.map,{bearingDelta:s}=this.touchRotate.dragMove(t,e)||{};if(s&&i.setBearing(i.getBearing()+s),this.touchPitch){const{pitchDelta:s}=this.touchPitch.dragMove(t,e)||{};s&&i.setPitch(i.getPitch()+s);}}off(){const t=this.element;i.removeEventListener(t,\"mousedown\",this.mousedown),i.removeEventListener(t,\"touchstart\",this.touchstart,{passive:!1}),i.removeEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),i.removeEventListener(window,\"touchend\",this.touchend),i.removeEventListener(t,\"touchcancel\",this.reset),this.offTemp();}offTemp(){i.enableDrag(),i.removeEventListener(window,\"mousemove\",this.mousemove),i.removeEventListener(window,\"mouseup\",this.mouseup),i.removeEventListener(window,\"touchmove\",this.touchmove,{passive:!1}),i.removeEventListener(window,\"touchend\",this.touchend);}}let ba;function wa(e,i,s){if(e=new t.L(e.lng,e.lat),i){const a=new t.L(e.lng-360,e.lat),o=new t.L(e.lng+360,e.lat),r=s.locationPoint(e).distSqr(i);s.locationPoint(a).distSqr(i)<r?e=a:s.locationPoint(o).distSqr(i)<r&&(e=o);}for(;Math.abs(e.lng-s.center.lng)>180;){const t=s.locationPoint(e);if(t.x>=0&&t.y>=0&&t.x<=s.width&&t.y<=s.height)break;e.lng>s.center.lng?e.lng-=360:e.lng+=360;}return e}const Ta={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function Ia(t,e,i){const s=t.classList;for(const t in Ta)s.remove(`maplibregl-${i}-anchor-${t}`);s.add(`maplibregl-${i}-anchor-${e}`);}class Ea extends t.E{constructor(e){if(super(),this._onKeyPress=t=>{const e=t.code,i=t.charCode||t.keyCode;\"Space\"!==e&&\"Enter\"!==e&&32!==i&&13!==i||this.togglePopup();},this._onMapClick=t=>{const e=t.originalEvent.target,i=this._element;this._popup&&(e===i||i.contains(e))&&this.togglePopup();},this._update=t=>{if(!this._map)return;const e=this._map.loaded()&&!this._map.isMoving();(\"terrain\"===(null==t?void 0:t.type)||\"render\"===(null==t?void 0:t.type)&&!e)&&this._map.once(\"render\",this._update),this._map.transform.renderWorldCopies&&(this._lngLat=wa(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let s=\"\";\"viewport\"===this._rotationAlignment||\"auto\"===this._rotationAlignment?s=`rotateZ(${this._rotation}deg)`:\"map\"===this._rotationAlignment&&(s=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let a=\"\";\"viewport\"===this._pitchAlignment||\"auto\"===this._pitchAlignment?a=\"rotateX(0deg)\":\"map\"===this._pitchAlignment&&(a=`rotateX(${this._map.getPitch()}deg)`),t&&\"moveend\"!==t.type||(this._pos=this._pos.round()),i.setTransform(this._element,`${Ta[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${a} ${s}`),this._map.terrain&&!this._opacityTimeout&&(this._opacityTimeout=setTimeout((()=>{const t=this._map.unproject(this._pos),e=40075016.686*Math.abs(Math.cos(this._lngLat.lat*Math.PI/180))/Math.pow(2,this._map.transform.tileZoom+8);this._element.style.opacity=t.distanceTo(this._lngLat)>20*e?\"0.2\":\"1.0\",this._opacityTimeout=null;}),100));},this._onMove=e=>{if(!this._isDragging){const t=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=t;}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",\"pending\"===this._state&&(this._state=\"active\",this.fire(new t.k(\"dragstart\"))),this.fire(new t.k(\"drag\")));},this._onUp=()=>{this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),\"active\"===this._state&&this.fire(new t.k(\"dragend\")),this._state=\"inactive\";},this._addDragHandler=t=>{this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(this._pos).add(this._offset),this._pointerdownPos=t.point,this._state=\"pending\",this._map.on(\"mousemove\",this._onMove),this._map.on(\"touchmove\",this._onMove),this._map.once(\"mouseup\",this._onUp),this._map.once(\"touchend\",this._onUp));},this._anchor=e&&e.anchor||\"center\",this._color=e&&e.color||\"#3FB1CE\",this._scale=e&&e.scale||1,this._draggable=e&&e.draggable||!1,this._clickTolerance=e&&e.clickTolerance||0,this._isDragging=!1,this._state=\"inactive\",this._rotation=e&&e.rotation||0,this._rotationAlignment=e&&e.rotationAlignment||\"auto\",this._pitchAlignment=e&&e.pitchAlignment&&\"auto\"!==e.pitchAlignment?e.pitchAlignment:this._rotationAlignment,e&&e.element)this._element=e.element,this._offset=t.P.convert(e&&e.offset||[0,0]);else {this._defaultMarker=!0,this._element=i.create(\"div\"),this._element.setAttribute(\"aria-label\",\"Map marker\");const s=i.createNS(\"http://www.w3.org/2000/svg\",\"svg\"),a=41,o=27;s.setAttributeNS(null,\"display\",\"block\"),s.setAttributeNS(null,\"height\",`${a}px`),s.setAttributeNS(null,\"width\",`${o}px`),s.setAttributeNS(null,\"viewBox\",`0 0 ${o} ${a}`);const r=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");r.setAttributeNS(null,\"stroke\",\"none\"),r.setAttributeNS(null,\"stroke-width\",\"1\"),r.setAttributeNS(null,\"fill\",\"none\"),r.setAttributeNS(null,\"fill-rule\",\"evenodd\");const n=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");n.setAttributeNS(null,\"fill-rule\",\"nonzero\");const l=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");l.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),l.setAttributeNS(null,\"fill\",\"#000000\");const h=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];for(const t of h){const e=i.createNS(\"http://www.w3.org/2000/svg\",\"ellipse\");e.setAttributeNS(null,\"opacity\",\"0.04\"),e.setAttributeNS(null,\"cx\",\"10.5\"),e.setAttributeNS(null,\"cy\",\"5.80029008\"),e.setAttributeNS(null,\"rx\",t.rx),e.setAttributeNS(null,\"ry\",t.ry),l.appendChild(e);}const c=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");c.setAttributeNS(null,\"fill\",this._color);const u=i.createNS(\"http://www.w3.org/2000/svg\",\"path\");u.setAttributeNS(null,\"d\",\"M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z\"),c.appendChild(u);const d=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");d.setAttributeNS(null,\"opacity\",\"0.25\"),d.setAttributeNS(null,\"fill\",\"#000000\");const _=i.createNS(\"http://www.w3.org/2000/svg\",\"path\");_.setAttributeNS(null,\"d\",\"M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z\"),d.appendChild(_);const p=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");p.setAttributeNS(null,\"transform\",\"translate(6.0, 7.0)\"),p.setAttributeNS(null,\"fill\",\"#FFFFFF\");const m=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");m.setAttributeNS(null,\"transform\",\"translate(8.0, 8.0)\");const f=i.createNS(\"http://www.w3.org/2000/svg\",\"circle\");f.setAttributeNS(null,\"fill\",\"#000000\"),f.setAttributeNS(null,\"opacity\",\"0.25\"),f.setAttributeNS(null,\"cx\",\"5.5\"),f.setAttributeNS(null,\"cy\",\"5.5\"),f.setAttributeNS(null,\"r\",\"5.4999962\");const g=i.createNS(\"http://www.w3.org/2000/svg\",\"circle\");g.setAttributeNS(null,\"fill\",\"#FFFFFF\"),g.setAttributeNS(null,\"cx\",\"5.5\"),g.setAttributeNS(null,\"cy\",\"5.5\"),g.setAttributeNS(null,\"r\",\"5.4999962\"),m.appendChild(f),m.appendChild(g),n.appendChild(l),n.appendChild(c),n.appendChild(d),n.appendChild(p),n.appendChild(m),s.appendChild(n),s.setAttributeNS(null,\"height\",a*this._scale+\"px\"),s.setAttributeNS(null,\"width\",o*this._scale+\"px\"),this._element.appendChild(s),this._offset=t.P.convert(e&&e.offset||[0,-14]);}if(this._element.classList.add(\"maplibregl-marker\"),this._element.addEventListener(\"dragstart\",(t=>{t.preventDefault();})),this._element.addEventListener(\"mousedown\",(t=>{t.preventDefault();})),Ia(this._element,this._anchor,\"marker\"),e&&e.className)for(const t of e.className.split(\" \"))this._element.classList.add(t);this._popup=null;}addTo(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on(\"move\",this._update),t.on(\"moveend\",this._update),t.on(\"terrain\",this._update),this.setDraggable(this._draggable),this._update(),this._map.on(\"click\",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler),this._map.off(\"mouseup\",this._onUp),this._map.off(\"touchend\",this._onUp),this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),delete this._map),i.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.L.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),t){if(!(\"offset\"in t.options)){const e=38.1,i=13.5,s=Math.abs(i)/Math.SQRT2;t.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-e],\"bottom-left\":[s,-1*(e-i+s)],\"bottom-right\":[-s,-1*(e-i+s)],left:[i,-1*(e-i)],right:[-i,-1*(e-i)]}:this._offset;}this._popup=t,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress);}return this}getPopup(){return this._popup}togglePopup(){const t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this}getOffset(){return this._offset}setOffset(e){return this._offset=t.P.convert(e),this._update(),this}addClassName(t){this._element.classList.add(t);}removeClassName(t){this._element.classList.remove(t);}toggleClassName(t){return this._element.classList.toggle(t)}setDraggable(t){return this._draggable=!!t,this._map&&(t?(this._map.on(\"mousedown\",this._addDragHandler),this._map.on(\"touchstart\",this._addDragHandler)):(this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||\"auto\",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t&&\"auto\"!==t?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}const Sa={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let Ca=0,Pa=!1;const Da={maxWidth:100,unit:\"metric\"};function Ma(t,e,i){const s=i&&i.maxWidth||100,a=t._container.clientHeight/2,o=t.unproject([0,a]),r=t.unproject([s,a]),n=o.distanceTo(r);if(i&&\"imperial\"===i.unit){const i=3.2808*n;i>5280?za(e,s,i/5280,t._getUIString(\"ScaleControl.Miles\")):za(e,s,i,t._getUIString(\"ScaleControl.Feet\"));}else i&&\"nautical\"===i.unit?za(e,s,n/1852,t._getUIString(\"ScaleControl.NauticalMiles\")):n>=1e3?za(e,s,n/1e3,t._getUIString(\"ScaleControl.Kilometers\")):za(e,s,n,t._getUIString(\"ScaleControl.Meters\"));}function za(t,e,i,s){const a=function(t){const e=Math.pow(10,`${Math.floor(t)}`.length-1);let i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(t){const e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(i),e*i}(i);t.style.width=e*(a/i)+\"px\",t.innerHTML=`${a}&nbsp;${s}`;}const La={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:\"\",maxWidth:\"240px\"},Aa=[\"a[href]\",\"[tabindex]:not([tabindex='-1'])\",\"[contenteditable]:not([contenteditable='false'])\",\"button:not([disabled])\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].join(\", \");function Ra(e){if(e){if(\"number\"==typeof e){const i=Math.round(Math.abs(e)/Math.SQRT2);return {center:new t.P(0,0),top:new t.P(0,e),\"top-left\":new t.P(i,i),\"top-right\":new t.P(-i,i),bottom:new t.P(0,-e),\"bottom-left\":new t.P(i,-i),\"bottom-right\":new t.P(-i,-i),left:new t.P(e,0),right:new t.P(-e,0)}}if(e instanceof t.P||Array.isArray(e)){const i=t.P.convert(e);return {center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return {center:t.P.convert(e.center||[0,0]),top:t.P.convert(e.top||[0,0]),\"top-left\":t.P.convert(e[\"top-left\"]||[0,0]),\"top-right\":t.P.convert(e[\"top-right\"]||[0,0]),bottom:t.P.convert(e.bottom||[0,0]),\"bottom-left\":t.P.convert(e[\"bottom-left\"]||[0,0]),\"bottom-right\":t.P.convert(e[\"bottom-right\"]||[0,0]),left:t.P.convert(e.left||[0,0]),right:t.P.convert(e.right||[0,0])}}return Ra(new t.P(0,0))}const ka={extend:(e,...i)=>t.e(e,...i),run(t){t();},logToElement(t,e=!1,i=\"log\"){const s=window.document.getElementById(i);s&&(e&&(s.innerHTML=\"\"),s.innerHTML+=`<br>${t}`);}},Fa=e;class Ba{static get version(){return Fa}static get workerCount(){return tt.workerCount}static set workerCount(t){tt.workerCount=t;}static get maxParallelImageRequests(){return t.c.MAX_PARALLEL_IMAGE_REQUESTS}static set maxParallelImageRequests(e){t.c.MAX_PARALLEL_IMAGE_REQUESTS=e;}static get workerUrl(){return t.c.WORKER_URL}static set workerUrl(e){t.c.WORKER_URL=e;}static addProtocol(e,i){t.c.REGISTERED_PROTOCOLS[e]=i;}static removeProtocol(e){delete t.c.REGISTERED_PROTOCOLS[e];}}return Ba.Map=class extends oa{constructor(e){if(t.bg.mark(t.bh.create),null!=(e=t.e({},ga,e)).minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=e.minPitch&&e.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=e.maxPitch&&e.maxPitch>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(super(new rs(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies),{bearingSnap:e.bearingSnap}),this._cooperativeGesturesOnWheel=t=>{this._onCooperativeGesture(t,t[this._metaKey],1);},this._contextLost=e=>{e.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new t.k(\"webglcontextlost\",{originalEvent:e}));},this._contextRestored=e=>{this._setupPainter(),this.resize(),this._update(),this.fire(new t.k(\"webglcontextrestored\",{originalEvent:e}));},this._onMapScroll=t=>{if(t.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update();},this._interactive=e.interactive,this._cooperativeGestures=e.cooperativeGestures,this._metaKey=0===navigator.platform.indexOf(\"Mac\")?\"metaKey\":\"ctrlKey\",this._maxTileCacheSize=e.maxTileCacheSize,this._maxTileCacheZoomLevels=e.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new la,this._controls=[],this._mapId=t.a2(),this._locale=t.e({},ha,e.locale),this._clickTolerance=e.clickTolerance,this._overridePixelRatio=e.pixelRatio,this._maxCanvasSize=e.maxCanvasSize,this.transformCameraUpdate=e.transformCameraUpdate,this._imageQueueHandle=h.addThrottleControl((()=>this.isMoving())),this._requestManager=new u(e.transformRequest),\"string\"==typeof e.container){if(this._container=document.getElementById(e.container),!this._container)throw new Error(`Container '${e.container}' not found.`)}else {if(!(e.container instanceof HTMLElement))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container;}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),this._setupContainer(),this._setupPainter(),this.on(\"move\",(()=>this._update(!1))),this.on(\"moveend\",(()=>this._update(!1))),this.on(\"zoom\",(()=>this._update(!0))),this.on(\"terrain\",(()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0);})),this.once(\"idle\",(()=>{this._idleTriggered=!0;})),\"undefined\"!=typeof window){addEventListener(\"online\",this._onWindowOnline,!1);let t=!1;const e=ns((t=>{this._trackResize&&!this._removed&&this.resize(t)._update();}),50);this._resizeObserver=new ResizeObserver((i=>{t?e(i):t=!0;})),this._resizeObserver.observe(this._container);}this.handlers=new aa(this,e),this._cooperativeGestures&&this._setupCooperativeGestures(),this._hash=e.hash&&new ls(\"string\"==typeof e.hash&&e.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.e({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,this._validateStyle=e.validateStyle,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new ra({customAttribution:e.customAttribution})),e.maplibreLogo&&this.addControl(new na,e.logoPosition),this.on(\"style.load\",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet);})),this.on(\"data\",(e=>{this._update(\"style\"===e.dataType),this.fire(new t.k(`${e.dataType}data`,e));})),this.on(\"dataloading\",(e=>{this.fire(new t.k(`${e.dataType}dataloading`,e));})),this.on(\"dataabort\",(e=>{this.fire(new t.k(\"sourcedataabort\",e));}));}_getMapId(){return this._mapId}addControl(e,i){if(void 0===i&&(i=e.getDefaultPosition?e.getDefaultPosition():\"top-right\"),!e||!e.onAdd)return this.fire(new t.j(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));const s=e.onAdd(this);this._controls.push(e);const a=this._controlPositions[i];return -1!==i.indexOf(\"bottom\")?a.insertBefore(s,a.firstChild):a.appendChild(s),this}removeControl(e){if(!e||!e.onRemove)return this.fire(new t.j(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));const i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this}hasControl(t){return this._controls.indexOf(t)>-1}calculateCameraOptionsFromTo(t,e,i,s){return null==s&&this.terrain&&(s=this.terrain.getElevationForLngLatZoom(i,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(t,e,i,s)}resize(e){var i;const s=this._containerDimensions(),a=s[0],o=s[1],r=this._getClampedPixelRatio(a,o);if(this._resizeCanvas(a,o,r),this.painter.resize(a,o,r),this.painter.overLimit()){const t=this.painter.context.gl;this._maxCanvasSize=[t.drawingBufferWidth,t.drawingBufferHeight];const e=this._getClampedPixelRatio(a,o);this._resizeCanvas(a,o,e),this.painter.resize(a,o,e);}this.transform.resize(a,o),null===(i=this._requestedCameraState)||void 0===i||i.resize(a,o);const n=!this._moving;return n&&(this.stop(),this.fire(new t.k(\"movestart\",e)).fire(new t.k(\"move\",e))),this.fire(new t.k(\"resize\",e)),n&&this.fire(new t.k(\"moveend\",e)),this}_getClampedPixelRatio(t,e){const{0:i,1:s}=this._maxCanvasSize,a=this.getPixelRatio(),o=t*a,r=e*a;return Math.min(o>i?i/o:1,r>s?s/r:1)*a}getPixelRatio(){var t;return null!==(t=this._overridePixelRatio)&&void 0!==t?t:devicePixelRatio}setPixelRatio(t){this._overridePixelRatio=t,this.resize();}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(t){return this.transform.setMaxBounds(L.convert(t)),this._update()}setMinZoom(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error(\"minZoom must be between -2 and the current maxZoom, inclusive\")}getMinZoom(){return this.transform.minZoom}setMaxZoom(t){if((t=null==t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()<t&&this.setPitch(t),this;throw new Error(\"minPitch must be between 0 and the current maxPitch, inclusive\")}getMinPitch(){return this.transform.minPitch}setMaxPitch(t){if((t=null==t?60:t)>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error(\"maxPitch must be greater than the current minPitch\")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(t){return this.transform.renderWorldCopies=t,this._update()}getCooperativeGestures(){return this._cooperativeGestures}setCooperativeGestures(t){return this._cooperativeGestures=t,this._cooperativeGestures?this._setupCooperativeGestures():this._destroyCooperativeGestures(),this}project(e){return this.transform.locationPoint(t.L.convert(e),this.style&&this.terrain)}unproject(e){return this.transform.pointLocation(t.P.convert(e),this.terrain)}isMoving(){var t;return this._moving||(null===(t=this.handlers)||void 0===t?void 0:t.isMoving())}isZooming(){var t;return this._zooming||(null===(t=this.handlers)||void 0===t?void 0:t.isZooming())}isRotating(){var t;return this._rotating||(null===(t=this.handlers)||void 0===t?void 0:t.isRotating())}_createDelegatedListener(t,e,i){if(\"mouseenter\"===t||\"mouseover\"===t){let s=!1;const a=a=>{const o=this.getLayer(e)?this.queryRenderedFeatures(a.point,{layers:[e]}):[];o.length?s||(s=!0,i.call(this,new gs(t,this,a.originalEvent,{features:o}))):s=!1;};return {layer:e,listener:i,delegates:{mousemove:a,mouseout:()=>{s=!1;}}}}if(\"mouseleave\"===t||\"mouseout\"===t){let s=!1;const a=a=>{(this.getLayer(e)?this.queryRenderedFeatures(a.point,{layers:[e]}):[]).length?s=!0:s&&(s=!1,i.call(this,new gs(t,this,a.originalEvent)));},o=e=>{s&&(s=!1,i.call(this,new gs(t,this,e.originalEvent)));};return {layer:e,listener:i,delegates:{mousemove:a,mouseout:o}}}{const s=t=>{const s=this.getLayer(e)?this.queryRenderedFeatures(t.point,{layers:[e]}):[];s.length&&(t.features=s,i.call(this,t),delete t.features);};return {layer:e,listener:i,delegates:{[t]:s}}}}on(t,e,i){if(void 0===i)return super.on(t,e);const s=this._createDelegatedListener(t,e,i);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(s);for(const t in s.delegates)this.on(t,s.delegates[t]);return this}once(t,e,i){if(void 0===i)return super.once(t,e);const s=this._createDelegatedListener(t,e,i);for(const t in s.delegates)this.once(t,s.delegates[t]);return this}off(t,e,i){return void 0===i?super.off(t,e):(this._delegatedListeners&&this._delegatedListeners[t]&&(s=>{const a=this._delegatedListeners[t];for(let t=0;t<a.length;t++){const s=a[t];if(s.layer===e&&s.listener===i){for(const t in s.delegates)this.off(t,s.delegates[t]);return a.splice(t,1),this}}})(),this)}queryRenderedFeatures(e,i){if(!this.style)return [];let s;const a=e instanceof t.P||Array.isArray(e),o=a?e:[[0,0],[this.transform.width,this.transform.height]];if(i=i||(a?{}:e)||{},o instanceof t.P||\"number\"==typeof o[0])s=[t.P.convert(o)];else {const e=t.P.convert(o[0]),i=t.P.convert(o[1]);s=[e,new t.P(i.x,e.y),i,new t.P(e.x,i.y),e];}return this.style.queryRenderedFeatures(s,i,this.transform)}querySourceFeatures(t,e){return this.style.querySourceFeatures(t,e)}setStyle(e,i){return !1!==(i=t.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._updateStyle(e,i))}setTransformRequest(t){return this._requestManager.setTransformRequest(t),this}_getUIString(t){const e=this._locale[t];if(null==e)throw new Error(`Missing UI string '${t}'`);return e}_updateStyle(t,e){if(e.transformStyle&&this.style&&!this.style._loaded)return void this.style.once(\"style.load\",(()=>this._updateStyle(t,e)));const i=this.style&&e.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!t)),t?(this.style=new se(this,e||{}),this.style.setEventedParent(this,{style:this.style}),\"string\"==typeof t?this.style.loadURL(t,e,i):this.style.loadJSON(t,e,i),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new se(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty());}_diffStyle(e,i){if(\"string\"==typeof e){const s=this._requestManager.transformRequest(e,c.Style);t.f(s,((e,s)=>{e?this.fire(new t.j(e)):s&&this._updateDiff(s,i);}));}else \"object\"==typeof e&&this._updateDiff(e,i);}_updateDiff(e,i){try{this.style.setState(e,i)&&this._update(!0);}catch(s){t.w(`Unable to perform style diff: ${s.message||s.error||s}.  Rebuilding the style from scratch.`),this._updateStyle(e,i);}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():t.w(\"There is no style added to the map.\")}addSource(t,e){return this._lazyInitEmptyStyle(),this.style.addSource(t,e),this._update(!0)}isSourceLoaded(e){const i=this.style&&this.style.sourceCaches[e];if(void 0!==i)return i.loaded();this.fire(new t.j(new Error(`There is no source with ID '${e}'`)));}setTerrain(e){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off(\"data\",this._terrainDataCallback),e){const i=this.style.sourceCaches[e.source];if(!i)throw new Error(`cannot load terrain, because there exists no source with ID: ${e.source}`);for(const i in this.style._layers){const s=this.style._layers[i];\"hillshade\"===s.type&&s.source===e.source&&t.w(\"You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.\");}this.terrain=new da(this.painter,i,e),this.painter.renderToTexture=new ma(this.painter,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=t=>{\"style\"===t.dataType?this.terrain.sourceCache.freeRtt():\"source\"===t.dataType&&t.tile&&(t.sourceId!==e.source||this._elevationFreeze||(this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(t.tile.tileID));},this.style.on(\"data\",this._terrainDataCallback);}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0;return this.fire(new t.k(\"terrain\",{terrain:e})),this}getTerrain(){var t,e;return null!==(e=null===(t=this.terrain)||void 0===t?void 0:t.options)&&void 0!==e?e:null}areTilesLoaded(){const t=this.style&&this.style.sourceCaches;for(const e in t){const i=t[e]._tiles;for(const t in i){const e=i[t];if(\"loaded\"!==e.state&&\"errored\"!==e.state)return !1}}return !0}addSourceType(t,e,i){return this._lazyInitEmptyStyle(),this.style.addSourceType(t,e,i)}removeSource(t){return this.style.removeSource(t),this._update(!0)}getSource(t){return this.style.getSource(t)}addImage(e,i,s={}){const{pixelRatio:a=1,sdf:o=!1,stretchX:r,stretchY:n,content:l}=s;if(this._lazyInitEmptyStyle(),!(i instanceof HTMLImageElement||t.a(i))){if(void 0===i.width||void 0===i.height)return this.fire(new t.j(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));{const{width:s,height:h,data:c}=i,u=i;return this.style.addImage(e,{data:new t.R({width:s,height:h},new Uint8Array(c)),pixelRatio:a,stretchX:r,stretchY:n,content:l,sdf:o,version:0,userImage:u}),u.onAdd&&u.onAdd(this,e),this}}{const{width:s,height:h,data:c}=t.h.getImageData(i);this.style.addImage(e,{data:new t.R({width:s,height:h},c),pixelRatio:a,stretchX:r,stretchY:n,content:l,sdf:o,version:0});}}updateImage(e,i){const s=this.style.getImage(e);if(!s)return this.fire(new t.j(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));const a=i instanceof HTMLImageElement||t.a(i)?t.h.getImageData(i):i,{width:o,height:r,data:n}=a;if(void 0===o||void 0===r)return this.fire(new t.j(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));if(o!==s.data.width||r!==s.data.height)return this.fire(new t.j(new Error(\"The width and height of the updated image must be that same as the previous version of the image\")));const l=!(i instanceof HTMLImageElement||t.a(i));return s.data.replace(n,l),this.style.updateImage(e,s),this}getImage(t){return this.style.getImage(t)}hasImage(e){return e?!!this.style.getImage(e):(this.fire(new t.j(new Error(\"Missing required image id\"))),!1)}removeImage(t){this.style.removeImage(t);}loadImage(t,e){h.getImage(this._requestManager.transformRequest(t,c.Image),e);}listImages(){return this.style.listImages()}addLayer(t,e){return this._lazyInitEmptyStyle(),this.style.addLayer(t,e),this._update(!0)}moveLayer(t,e){return this.style.moveLayer(t,e),this._update(!0)}removeLayer(t){return this.style.removeLayer(t),this._update(!0)}getLayer(t){return this.style.getLayer(t)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(t,e,i){return this.style.setLayerZoomRange(t,e,i),this._update(!0)}setFilter(t,e,i={}){return this.style.setFilter(t,e,i),this._update(!0)}getFilter(t){return this.style.getFilter(t)}setPaintProperty(t,e,i,s={}){return this.style.setPaintProperty(t,e,i,s),this._update(!0)}getPaintProperty(t,e){return this.style.getPaintProperty(t,e)}setLayoutProperty(t,e,i,s={}){return this.style.setLayoutProperty(t,e,i,s),this._update(!0)}getLayoutProperty(t,e){return this.style.getLayoutProperty(t,e)}setGlyphs(t,e={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(t,e),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(t,e,i={}){return this._lazyInitEmptyStyle(),this.style.addSprite(t,e,i,(t=>{t||this._update(!0);})),this}removeSprite(t){return this._lazyInitEmptyStyle(),this.style.removeSprite(t),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(t,e={}){return this._lazyInitEmptyStyle(),this.style.setSprite(t,e,(t=>{t||this._update(!0);})),this}setLight(t,e={}){return this._lazyInitEmptyStyle(),this.style.setLight(t,e),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(t,e){return this.style.setFeatureState(t,e),this._update()}removeFeatureState(t,e){return this.style.removeFeatureState(t,e),this._update()}getFeatureState(t){return this.style.getFeatureState(t)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let t=0,e=0;return this._container&&(t=this._container.clientWidth||400,e=this._container.clientHeight||300),[t,e]}_setupContainer(){const t=this._container;t.classList.add(\"maplibregl-map\");const e=this._canvasContainer=i.create(\"div\",\"maplibregl-canvas-container\",t);this._interactive&&e.classList.add(\"maplibregl-interactive\"),this._canvas=i.create(\"canvas\",\"maplibregl-canvas\",e),this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\"),this._canvas.setAttribute(\"role\",\"region\");const s=this._containerDimensions(),a=this._getClampedPixelRatio(s[0],s[1]);this._resizeCanvas(s[0],s[1],a);const o=this._controlContainer=i.create(\"div\",\"maplibregl-control-container\",t),r=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach((t=>{r[t]=i.create(\"div\",`maplibregl-ctrl-${t} `,o);})),this._container.addEventListener(\"scroll\",this._onMapScroll,!1);}_setupCooperativeGestures(){this._cooperativeGesturesScreen=i.create(\"div\",\"maplibregl-cooperative-gesture-screen\",this._container);let t=\"boolean\"!=typeof this._cooperativeGestures&&this._cooperativeGestures.windowsHelpText?this._cooperativeGestures.windowsHelpText:\"Use Ctrl + scroll to zoom the map\";0===navigator.platform.indexOf(\"Mac\")&&(t=\"boolean\"!=typeof this._cooperativeGestures&&this._cooperativeGestures.macHelpText?this._cooperativeGestures.macHelpText:\"Use ⌘ + scroll to zoom the map\"),this._cooperativeGesturesScreen.innerHTML=`\\n            <div class=\"maplibregl-desktop-message\">${t}</div>\\n            <div class=\"maplibregl-mobile-message\">${\"boolean\"!=typeof this._cooperativeGestures&&this._cooperativeGestures.mobileHelpText?this._cooperativeGestures.mobileHelpText:\"Use two fingers to move the map\"}</div>\\n        `,this._cooperativeGesturesScreen.setAttribute(\"aria-hidden\",\"true\"),this._canvasContainer.addEventListener(\"wheel\",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.add(\"maplibregl-cooperative-gestures\");}_destroyCooperativeGestures(){i.remove(this._cooperativeGesturesScreen),this._canvasContainer.removeEventListener(\"wheel\",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.remove(\"maplibregl-cooperative-gestures\");}_resizeCanvas(t,e,i){this._canvas.width=Math.floor(i*t),this._canvas.height=Math.floor(i*e),this._canvas.style.width=`${t}px`,this._canvas.style.height=`${e}px`;}_setupPainter(){const t={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1};let e=null;this._canvas.addEventListener(\"webglcontextcreationerror\",(i=>{e={requestedAttributes:t},i&&(e.statusMessage=i.statusMessage,e.type=i.type);}),{once:!0});const i=this._canvas.getContext(\"webgl2\",t)||this._canvas.getContext(\"webgl\",t);if(!i){const t=\"Failed to initialize WebGL\";throw e?(e.message=t,new Error(JSON.stringify(e))):new Error(t)}this.painter=new is(i,this.transform),s.testSupport(i);}_onCooperativeGesture(t,e,i){return !e&&i<2&&(this._cooperativeGesturesScreen.classList.add(\"maplibregl-show\"),setTimeout((()=>{this._cooperativeGesturesScreen.classList.remove(\"maplibregl-show\");}),100)),!1}loaded(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(t){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(t){return this._update(),this._renderTaskQueue.add(t)}_cancelRenderFrame(t){this._renderTaskQueue.remove(t);}_render(e){const i=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),this._removed)return;let s=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const e=this.transform.zoom,a=t.h.now();this.style.zoomHistory.update(e,a);const o=new t.a8(e,{now:a,fadeDuration:i,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),r=o.crossFadingFactor();1===r&&r===this._crossFadingFactor||(s=!0,this._crossFadingFactor=r),this.style.update(o);}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,i,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:i,showPadding:this.showPadding}),this.fire(new t.k(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,t.bg.mark(t.bh.load),this.fire(new t.k(\"load\"))),this.style&&(this.style.hasTransitions()||s)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const a=this._sourcesDirty||this._styleDirty||this._placementDirty;return a||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.k(\"idle\")),!this._loaded||this._fullyLoaded||a||(this._fullyLoaded=!0,t.bg.mark(t.bh.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){var e;this._hash&&this._hash.remove();for(const t of this._controls)t.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),\"undefined\"!=typeof window&&removeEventListener(\"online\",this._onWindowOnline,!1),h.removeThrottleControl(this._imageQueueHandle),null===(e=this._resizeObserver)||void 0===e||e.disconnect();const s=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");s&&s.loseContext(),this._canvas.removeEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.removeEventListener(\"webglcontextlost\",this._contextLost,!1),i.remove(this._canvasContainer),i.remove(this._controlContainer),this._cooperativeGestures&&this._destroyCooperativeGestures(),this._container.classList.remove(\"maplibregl-map\"),t.bg.clearMetrics(),this._removed=!0,this.fire(new t.k(\"remove\"));}triggerRepaint(){this.style&&!this._frame&&(this._frame=t.h.frame((e=>{t.bg.frame(e),this._frame=null,this._render(e);})));}get showTileBoundaries(){return !!this._showTileBoundaries}set showTileBoundaries(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update());}get showPadding(){return !!this._showPadding}set showPadding(t){this._showPadding!==t&&(this._showPadding=t,this._update());}get showCollisionBoxes(){return !!this._showCollisionBoxes}set showCollisionBoxes(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,t?this.style._generateCollisionBoxes():this._update());}get showOverdrawInspector(){return !!this._showOverdrawInspector}set showOverdrawInspector(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update());}get repaint(){return !!this._repaint}set repaint(t){this._repaint!==t&&(this._repaint=t,this.triggerRepaint());}get vertices(){return !!this._vertices}set vertices(t){this._vertices=t,this._update();}get version(){return fa}getCameraTargetElevation(){return this.transform.elevation}},Ba.NavigationControl=class{constructor(e){this._updateZoomButtons=()=>{const t=this._map.getZoom(),e=t===this._map.getMaxZoom(),i=t===this._map.getMinZoom();this._zoomInButton.disabled=e,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute(\"aria-disabled\",e.toString()),this._zoomOutButton.setAttribute(\"aria-disabled\",i.toString());},this._rotateCompassArrow=()=>{const t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=t;},this._setButtonTitle=(t,e)=>{const i=this._map._getUIString(`NavigationControl.${e}`);t.title=i,t.setAttribute(\"aria-label\",i);},this.options=t.e({},xa,e),this._container=i.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",(t=>t.preventDefault())),this.options.showZoom&&(this._zoomInButton=this._createButton(\"maplibregl-ctrl-zoom-in\",(t=>this._map.zoomIn({},{originalEvent:t}))),i.create(\"span\",\"maplibregl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",\"true\"),this._zoomOutButton=this._createButton(\"maplibregl-ctrl-zoom-out\",(t=>this._map.zoomOut({},{originalEvent:t}))),i.create(\"span\",\"maplibregl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",\"true\")),this.options.showCompass&&(this._compass=this._createButton(\"maplibregl-ctrl-compass\",(t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t});})),this._compassIcon=i.create(\"span\",\"maplibregl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",\"true\"));}onAdd(t){return this._map=t,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),this._map.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&this._map.on(\"pitch\",this._rotateCompassArrow),this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new ya(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){i.remove(this._container),this.options.showZoom&&this._map.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off(\"pitch\",this._rotateCompassArrow),this._map.off(\"rotate\",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map;}_createButton(t,e){const s=i.create(\"button\",t,this._container);return s.type=\"button\",s.addEventListener(\"click\",e),s}},Ba.GeolocateControl=class extends t.E{constructor(e){super(),this._onSuccess=e=>{if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.k(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"maplibregl-user-location-dot-stale\"),this.fire(new t.k(\"geolocate\",e)),this._finish();}},this._updateCamera=e=>{const i=new t.L(e.coords.longitude,e.coords.latitude),s=e.coords.accuracy,a=this._map.getBearing(),o=t.e({bearing:a},this.options.fitBoundsOptions),r=L.fromLngLat(i,s);this._map.fitBounds(r,o,{geolocateSource:!0});},this._updateMarker=e=>{if(e){const i=new t.L(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();},this._onError=e=>{if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;const t=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=t,this._geolocateButton.setAttribute(\"aria-label\",t),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===e.code&&Pa)return;this._setErrorState();}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"maplibregl-user-location-dot-stale\"),this.fire(new t.k(\"error\",e)),this._finish();}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;},this._setupUI=e=>{if(this._map){if(this._container.addEventListener(\"contextmenu\",(t=>t.preventDefault())),this._geolocateButton=i.create(\"button\",\"maplibregl-ctrl-geolocate\",this._container),i.create(\"span\",\"maplibregl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",\"true\"),this._geolocateButton.type=\"button\",!1===e){t.w(\"Geolocation support is not available so the GeolocateControl will be disabled.\");const e=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=e,this._geolocateButton.setAttribute(\"aria-label\",e);}else {const t=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=t,this._geolocateButton.setAttribute(\"aria-label\",t);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=i.create(\"div\",\"maplibregl-user-location-dot\"),this._userLocationDotMarker=new Ea({element:this._dotElement}),this._circleElement=i.create(\"div\",\"maplibregl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new Ea({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(e=>{e.geolocateSource||\"ACTIVE_LOCK\"!==this._watchState||e.originalEvent&&\"resize\"===e.originalEvent.type||(this._watchState=\"BACKGROUND\",this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this.fire(new t.k(\"trackuserlocationend\")));}));}},this.options=t.e({},Sa,e);}onAdd(t){return this._map=t,this._container=i.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),function(t,e=!1){void 0===ba||e?void 0!==window.navigator.permissions?window.navigator.permissions.query({name:\"geolocation\"}).then((e=>{ba=\"denied\"!==e.state,t(ba);})).catch((()=>{ba=!!window.navigator.geolocation,t(ba);})):(ba=!!window.navigator.geolocation,t(ba)):t(ba);}(this._setupUI),this._container}onRemove(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),i.remove(this._container),this._map.off(\"zoom\",this._onZoom),this._map=void 0,Ca=0,Pa=!1;}_isOutOfMapMaxBounds(t){const e=this._map.getMaxBounds(),i=t.coords;return e&&(i.longitude<e.getWest()||i.longitude>e.getEast()||i.latitude<e.getSouth()||i.latitude>e.getNorth())}_setErrorState(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\");break;case\"ACTIVE_ERROR\":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){const t=this._map.getBounds(),e=t.getSouthEast(),i=t.getNorthEast(),s=e.distanceTo(i),a=Math.ceil(this._accuracy/(s/this._map._container.clientHeight)*2);this._circleElement.style.width=`${a}px`,this._circleElement.style.height=`${a}px`;}trigger(){if(!this._setup)return t.w(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.k(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":Ca--,Pa=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\"),this.fire(new t.k(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.k(\"trackuserlocationstart\"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\");break;case\"OFF\":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let t;this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),Ca++,Ca>1?(t={maximumAge:6e5,timeout:0},Pa=!0):(t=this.options.positionOptions,Pa=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,t);}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null);}},Ba.AttributionControl=ra,Ba.LogoControl=na,Ba.ScaleControl=class{constructor(e){this._onMove=()=>{Ma(this._map,this._container,this.options);},this.setUnit=t=>{this.options.unit=t,Ma(this._map,this._container,this.options);},this.options=t.e({},Da,e);}getDefaultPosition(){return \"bottom-left\"}onAdd(t){return this._map=t,this._container=i.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container}onRemove(){i.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0;}},Ba.FullscreenControl=class extends t.E{constructor(e={}){super(),this._onFullscreenChange=()=>{(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&this._handleFullscreenChange();},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen();},this._fullscreen=!1,e&&e.container&&(e.container instanceof HTMLElement?this._container=e.container:t.w(\"Full screen control 'container' must be a DOM element.\")),\"onfullscreenchange\"in document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in document&&(this._fullscreenchange=\"MSFullscreenChange\");}onAdd(t){return this._map=t,this._container||(this._container=this._map.getContainer()),this._controlContainer=i.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._setupUI(),this._controlContainer}onRemove(){i.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange);}_setupUI(){const t=this._fullscreenButton=i.create(\"button\",\"maplibregl-ctrl-fullscreen\",this._controlContainer);i.create(\"span\",\"maplibregl-ctrl-icon\",t).setAttribute(\"aria-hidden\",\"true\"),t.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange);}_updateTitle(){const t=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",t),this._fullscreenButton.title=t;}_getTitle(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-fullscreen\"),this._updateTitle(),this._fullscreen?(this.fire(new t.k(\"fullscreenstart\")),this._map._cooperativeGestures&&(this._prevCooperativeGestures=this._map._cooperativeGestures,this._map.setCooperativeGestures())):(this.fire(new t.k(\"fullscreenend\")),this._prevCooperativeGestures&&(this._map.setCooperativeGestures(this._prevCooperativeGestures),delete this._prevCooperativeGestures));}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen();}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen();}_togglePseudoFullScreen(){this._container.classList.toggle(\"maplibregl-pseudo-fullscreen\"),this._handleFullscreenChange(),this._map.resize();}},Ba.TerrainControl=class{constructor(t){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon();},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove(\"maplibregl-ctrl-terrain\"),this._terrainButton.classList.remove(\"maplibregl-ctrl-terrain-enabled\"),this._map.terrain?(this._terrainButton.classList.add(\"maplibregl-ctrl-terrain-enabled\"),this._terrainButton.title=this._map._getUIString(\"TerrainControl.disableTerrain\")):(this._terrainButton.classList.add(\"maplibregl-ctrl-terrain\"),this._terrainButton.title=this._map._getUIString(\"TerrainControl.enableTerrain\"));},this.options=t;}onAdd(t){return this._map=t,this._container=i.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group\"),this._terrainButton=i.create(\"button\",\"maplibregl-ctrl-terrain\",this._container),i.create(\"span\",\"maplibregl-ctrl-icon\",this._terrainButton).setAttribute(\"aria-hidden\",\"true\"),this._terrainButton.type=\"button\",this._terrainButton.addEventListener(\"click\",this._toggleTerrain),this._updateTerrainIcon(),this._map.on(\"terrain\",this._updateTerrainIcon),this._container}onRemove(){i.remove(this._container),this._map.off(\"terrain\",this._updateTerrainIcon),this._map=void 0;}},Ba.Popup=class extends t.E{constructor(e){super(),this.remove=()=>(this._content&&i.remove(this._content),this._container&&(i.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new t.k(\"close\")),this),this._onMouseUp=t=>{this._update(t.point);},this._onMouseMove=t=>{this._update(t.point);},this._onDrag=t=>{this._update(t.point);},this._update=t=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=i.create(\"div\",\"maplibregl-popup\",this._map.getContainer()),this._tip=i.create(\"div\",\"maplibregl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className)for(const t of this.options.className.split(\" \"))this._container.classList.add(t);this._trackPointer&&this._container.classList.add(\"maplibregl-popup-track-pointer\");}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=wa(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!t)return;const e=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat);let s=this.options.anchor;const a=Ra(this.options.offset);if(!s){const t=this._container.offsetWidth,i=this._container.offsetHeight;let o;o=e.y+a.bottom.y<i?[\"top\"]:e.y>this._map.transform.height-i?[\"bottom\"]:[],e.x<t/2?o.push(\"left\"):e.x>this._map.transform.width-t/2&&o.push(\"right\"),s=0===o.length?\"bottom\":o.join(\"-\");}const o=e.add(a[s]).round();i.setTransform(this._container,`${Ta[s]} translate(${o.x}px,${o.y}px)`),Ia(this._container,s,\"popup\");},this._onClose=()=>{this.remove();},this.options=t.e(Object.create(La),e);}addTo(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.k(\"open\")),this}isOpen(){return !!this._map}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.L.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"maplibregl-track-pointer\")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\")),this}getElement(){return this._container}setText(t){return this.setDOMContent(document.createTextNode(t))}setHTML(t){const e=document.createDocumentFragment(),i=document.createElement(\"body\");let s;for(i.innerHTML=t;s=i.firstChild,s;)e.appendChild(s);return this.setDOMContent(e)}getMaxWidth(){var t;return null===(t=this._container)||void 0===t?void 0:t.style.maxWidth}setMaxWidth(t){return this.options.maxWidth=t,this._update(),this}setDOMContent(t){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=i.create(\"div\",\"maplibregl-popup-content\",this._container);return this._content.appendChild(t),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(t){this._container&&this._container.classList.add(t);}removeClassName(t){this._container&&this._container.classList.remove(t);}setOffset(t){return this.options.offset=t,this._update(),this}toggleClassName(t){if(this._container)return this._container.classList.toggle(t)}_createCloseButton(){this.options.closeButton&&(this._closeButton=i.create(\"button\",\"maplibregl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"&#215;\",this._closeButton.addEventListener(\"click\",this._onClose));}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const t=this._container.querySelector(Aa);t&&t.focus();}},Ba.Marker=Ea,Ba.Style=se,Ba.LngLat=t.L,Ba.LngLatBounds=L,Ba.Point=t.P,Ba.MercatorCoordinate=t.U,Ba.Evented=t.E,Ba.AJAXError=t.bi,Ba.config=t.c,Ba.CanvasSource=Z,Ba.GeoJSONSource=B,Ba.ImageSource=N,Ba.RasterDEMTileSource=F,Ba.RasterTileSource=k,Ba.VectorTileSource=R,Ba.VideoSource=U,Ba.setRTLTextPlugin=t.bj,Ba.getRTLTextPluginStatus=t.bk,Ba.prewarm=function(){st().acquire(J);},Ba.clearPrewarmedResources=function(){const t=it;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(J),it=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"));},ka.extend(Ba,{isSafari:t.ac,getPerformanceMetrics:t.bg.getPerformanceMetrics}),Ba}));\n\n//\n// Our custom intro provides a specialized \"define()\" function, called by the\n// AMD modules below, that sets up the worker blob URL and then executes the\n// main module, storing its exported value as 'maplibregl'\n\n\nvar maplibregl$1 = maplibregl;\n\nreturn maplibregl$1;\n\n}));\n//# sourceMappingURL=maplibre-gl.js.map\n","export const splitURIForNamespaceAndTerm = (string: string) => {\n  try {\n    const url = new URL(string);\n    let [namespace, term] = [string, \"\"];\n    if (url.hash !== \"\") {\n      [namespace, term] = [\n        `${url.origin}${url.pathname}`,\n        url.hash.substring(1),\n      ];\n    } else if (url.pathname !== \"\") {\n      const split = url.pathname.split(\"/\");\n      [term, namespace] = [\n        split.pop() ?? \"\",\n        `${url.origin}${split.join(\"/\")}`,\n      ];\n    }\n    return [namespace, term];\n  } catch (e) {\n    // eslint-disable-next-line no-console\n    console.error(`URI '${string}' is not valid, ${e}`);\n    return [string, \"\"];\n  }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Copyright (c) 2011, Sun Ning.\n *\n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use, copy,\n * modify, merge, publish, distribute, sublicense, and/or sell copies\n * of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n */\n\n/* eslint-disable func-style */\n\nconst BASE32_CODES = \"0123456789bcdefghjkmnpqrstuvwxyz\";\nconst BASE32_CODES_DICT: any = {};\nfor (let i = 0; i < BASE32_CODES.length; i++) {\n  BASE32_CODES_DICT[BASE32_CODES.charAt(i)] = i;\n}\n\nconst ENCODE_AUTO = \"auto\";\n\nconst MIN_LAT = -90;\nconst MAX_LAT = 90;\nconst MIN_LON = -180;\nconst MAX_LON = 180;\n/**\n * Significant Figure Hash Length\n *\n * This is a quick and dirty lookup to figure out how long our hash\n * should be in order to guarantee a certain amount of trailing\n * significant figures. This was calculated by determining the error:\n * 45/2^(n-1) where n is the number of bits for a latitude or\n * longitude. Key is # of desired sig figs, value is minimum length of\n * the geohash.\n * @type Array\n */\n//     Desired sig figs:  0  1  2  3  4   5   6   7   8   9  10\nconst SIGFIG_HASH_LENGTH: number[] = [0, 5, 7, 8, 11, 12, 13, 15, 16, 17, 18];\n/**\n * Encode\n *\n * Create a Geohash out of a latitude and longitude that is\n * `numberOfChars` long.\n *\n * @param {Number|String} latitude\n * @param {Number|String} longitude\n * @param {Number} numberOfChars\n * @returns {String}\n */\nconst encode = function (latitude: any, longitude: any, numberOfChars: any) {\n  if (numberOfChars === ENCODE_AUTO) {\n    if (typeof latitude === \"number\" || typeof longitude === \"number\") {\n      throw new Error(\"string notation required for auto precision.\");\n    }\n    const decSigFigsLat = latitude.split(\".\")[1].length;\n    const decSigFigsLong = longitude.split(\".\")[1].length;\n    const numberOfSigFigs = Math.max(decSigFigsLat, decSigFigsLong);\n    numberOfChars = SIGFIG_HASH_LENGTH[numberOfSigFigs];\n  } else if (numberOfChars === undefined) {\n    numberOfChars = 9;\n  }\n\n  const chars: string[] = [];\n  let mid,\n    bits = 0,\n    bitsTotal = 0,\n    hash_value = 0,\n    minLon = MIN_LON,\n    maxLon = MAX_LON,\n    minLat = MIN_LAT,\n    maxLat = MAX_LAT;\n\n  while (chars.length < numberOfChars) {\n    if (bitsTotal % 2 === 0) {\n      mid = (maxLon + minLon) / 2;\n      if (longitude > mid) {\n        hash_value = (hash_value << 1) + 1;\n        minLon = mid;\n      } else {\n        hash_value = (hash_value << 1) + 0;\n        maxLon = mid;\n      }\n    } else {\n      mid = (maxLat + minLat) / 2;\n      if (latitude > mid) {\n        hash_value = (hash_value << 1) + 1;\n        minLat = mid;\n      } else {\n        hash_value = (hash_value << 1) + 0;\n        maxLat = mid;\n      }\n    }\n\n    bits++;\n    bitsTotal++;\n    if (bits === 5) {\n      const code = BASE32_CODES[hash_value];\n      chars.push(code);\n      bits = 0;\n      hash_value = 0;\n    }\n  }\n  return chars.join(\"\");\n};\n\n/**\n * Encode Integer\n *\n * Create a Geohash out of a latitude and longitude that is of 'bitDepth'.\n *\n * @param {Number} latitude\n * @param {Number} longitude\n * @param {Number} bitDepth\n * @returns {Number}\n */\nconst encode_int = function (latitude: any, longitude: any, bitDepth: any) {\n  bitDepth = bitDepth || 52;\n\n  let bitsTotal = 0,\n    maxLat = MAX_LAT,\n    minLat = MIN_LAT,\n    maxLon = MAX_LON,\n    minLon = MIN_LON,\n    mid,\n    combinedBits = 0;\n\n  while (bitsTotal < bitDepth) {\n    combinedBits *= 2;\n    if (bitsTotal % 2 === 0) {\n      mid = (maxLon + minLon) / 2;\n      if (longitude > mid) {\n        combinedBits += 1;\n        minLon = mid;\n      } else {\n        maxLon = mid;\n      }\n    } else {\n      mid = (maxLat + minLat) / 2;\n      if (latitude > mid) {\n        combinedBits += 1;\n        minLat = mid;\n      } else {\n        maxLat = mid;\n      }\n    }\n    bitsTotal++;\n  }\n  return combinedBits;\n};\n\n/**\n * Decode Bounding Box\n *\n * Decode hashString into a bound box matches it. Data returned in a four-element array: [minlat, minlon, maxlat, maxlon]\n * @param {String} hash_string\n * @returns {Array}\n */\nconst decode_bbox = function (hash_string: string) {\n  let isLon = true,\n    maxLat = MAX_LAT,\n    minLat = MIN_LAT,\n    maxLon = MAX_LON,\n    minLon = MIN_LON,\n    mid;\n\n  let hashValue = 0;\n  for (let i = 0, l = hash_string.length; i < l; i++) {\n    const code = hash_string[i].toLowerCase();\n    hashValue = BASE32_CODES_DICT[code];\n\n    for (let bits = 4; bits >= 0; bits--) {\n      const bit = (hashValue >> bits) & 1;\n      if (isLon) {\n        mid = (maxLon + minLon) / 2;\n        if (bit === 1) {\n          minLon = mid;\n        } else {\n          maxLon = mid;\n        }\n      } else {\n        mid = (maxLat + minLat) / 2;\n        if (bit === 1) {\n          minLat = mid;\n        } else {\n          maxLat = mid;\n        }\n      }\n      isLon = !isLon;\n    }\n  }\n  return [minLat, minLon, maxLat, maxLon];\n};\n\n/**\n * Decode Bounding Box Integer\n *\n * Decode hash number into a bound box matches it. Data returned in a four-element array: [minlat, minlon, maxlat, maxlon]\n * @param {Number} hashInt\n * @param {Number} bitDepth\n * @returns {Array}\n */\nconst decode_bbox_int = function (hashInt: any, bitDepth: any) {\n  bitDepth = bitDepth || 52;\n\n  let maxLat = MAX_LAT,\n    minLat = MIN_LAT,\n    maxLon = MAX_LON,\n    minLon = MIN_LON;\n\n  let latBit = 0,\n    lonBit = 0;\n  const step = bitDepth / 2;\n\n  for (let i = 0; i < step; i++) {\n    lonBit = get_bit(hashInt, (step - i) * 2 - 1);\n    latBit = get_bit(hashInt, (step - i) * 2 - 2);\n\n    if (latBit === 0) {\n      maxLat = (maxLat + minLat) / 2;\n    } else {\n      minLat = (maxLat + minLat) / 2;\n    }\n\n    if (lonBit === 0) {\n      maxLon = (maxLon + minLon) / 2;\n    } else {\n      minLon = (maxLon + minLon) / 2;\n    }\n  }\n  return [minLat, minLon, maxLat, maxLon];\n};\n\nfunction get_bit(bits: any, position: any) {\n  return (bits / Math.pow(2, position)) & 0x01;\n}\n\n/**\n * Decode\n *\n * Decode a hash string into pair of latitude and longitude. A javascript object is returned with keys `latitude`,\n * `longitude` and `error`.\n * @param {String} hashString\n * @returns {Object}\n */\nconst decode = function (hashString: string) {\n  const bbox = decode_bbox(hashString);\n  const lat = (bbox[0] + bbox[2]) / 2;\n  const lon = (bbox[1] + bbox[3]) / 2;\n  const latErr = bbox[2] - lat;\n  const lonErr = bbox[3] - lon;\n  return {\n    latitude: lat,\n    longitude: lon,\n    error: { latitude: latErr, longitude: lonErr },\n  };\n};\n\n/**\n * Decode Integer\n *\n * Decode a hash number into pair of latitude and longitude. A javascript object is returned with keys `latitude`,\n * `longitude` and `error`.\n * @param {Number} hash_int\n * @param {Number} bitDepth\n * @returns {Object}\n */\nconst decode_int = function (hash_int: number, bitDepth: number) {\n  const bbox = decode_bbox_int(hash_int, bitDepth);\n  const lat = (bbox[0] + bbox[2]) / 2;\n  const lon = (bbox[1] + bbox[3]) / 2;\n  const latErr = bbox[2] - lat;\n  const lonErr = bbox[3] - lon;\n  return {\n    latitude: lat,\n    longitude: lon,\n    error: { latitude: latErr, longitude: lonErr },\n  };\n};\n\n/**\n * Neighbor\n *\n * Find neighbor of a geohash string in certain direction. Direction is a two-element array, i.e. [1,0] means north, [-1,-1] means southwest.\n * direction [lat, lon], i.e.\n * [1,0] - north\n * [1,1] - northeast\n * ...\n * @param {String} hashString\n * @param {Array} Direction as a 2D normalized vector.\n * @returns {String}\n */\nconst neighbor = function (hashString: string, direction: any[]) {\n  const lonLat = decode(hashString);\n  let neighborLat = lonLat.latitude + direction[0] * lonLat.error.latitude * 2;\n  let neighborLon =\n    lonLat.longitude + direction[1] * lonLat.error.longitude * 2;\n  neighborLon = ensure_valid_lon(neighborLon);\n  neighborLat = ensure_valid_lat(neighborLat);\n  return encode(neighborLat, neighborLon, hashString.length);\n};\n\n/**\n * Neighbor Integer\n *\n * Find neighbor of a geohash integer in certain direction. Direction is a two-element array, i.e. [1,0] means north, [-1,-1] means southwest.\n * direction [lat, lon], i.e.\n * [1,0] - north\n * [1,1] - northeast\n * ...\n * @param {String} hash_string\n * @returns {Array}\n */\nconst neighbor_int = function (hash_int: any, direction: any, bitDepth: any) {\n  bitDepth = bitDepth || 52;\n  const lonlat = decode_int(hash_int, bitDepth);\n  let neighbor_lat = lonlat.latitude + direction[0] * lonlat.error.latitude * 2;\n  let neighbor_lon =\n    lonlat.longitude + direction[1] * lonlat.error.longitude * 2;\n  neighbor_lon = ensure_valid_lon(neighbor_lon);\n  neighbor_lat = ensure_valid_lat(neighbor_lat);\n  return encode_int(neighbor_lat, neighbor_lon, bitDepth);\n};\n\n/**\n * Neighbors\n *\n * Returns all neighbors' hashstrings clockwise from north around to northwest\n * 7 0 1\n * 6 x 2\n * 5 4 3\n * @param {String} hash_string\n * @returns {encoded neighborHashList|Array}\n */\nconst neighbors = function (hash_string: string) {\n  const hashstringLength = hash_string.length;\n\n  const lonlat = decode(hash_string);\n  const lat = lonlat.latitude;\n  const lon = lonlat.longitude;\n  const latErr = lonlat.error.latitude * 2;\n  const lonErr = lonlat.error.longitude * 2;\n\n  let neighbor_lat, neighbor_lon;\n\n  const neighborHashList = [\n    encodeNeighbor(1, 0),\n    encodeNeighbor(1, 1),\n    encodeNeighbor(0, 1),\n    encodeNeighbor(-1, 1),\n    encodeNeighbor(-1, 0),\n    encodeNeighbor(-1, -1),\n    encodeNeighbor(0, -1),\n    encodeNeighbor(1, -1),\n  ];\n\n  function encodeNeighbor(neighborLatDir: any, neighborLonDir: any) {\n    neighbor_lat = lat + neighborLatDir * latErr;\n    neighbor_lon = lon + neighborLonDir * lonErr;\n    neighbor_lon = ensure_valid_lon(neighbor_lon);\n    neighbor_lat = ensure_valid_lat(neighbor_lat);\n    return encode(neighbor_lat, neighbor_lon, hashstringLength);\n  }\n\n  return neighborHashList;\n};\n\n/**\n * Neighbors Integer\n *\n * Returns all neighbors' hash integers clockwise from north around to northwest\n * 7 0 1\n * 6 x 2\n * 5 4 3\n * @param {Number} hash_int\n * @param {Number} bitDepth\n * @returns {encode_int'd neighborHashIntList|Array}\n */\nconst neighbors_int = function (hash_int: any, bitDepth: any) {\n  bitDepth = bitDepth || 52;\n\n  const lonlat = decode_int(hash_int, bitDepth);\n  const lat = lonlat.latitude;\n  const lon = lonlat.longitude;\n  const latErr = lonlat.error.latitude * 2;\n  const lonErr = lonlat.error.longitude * 2;\n\n  let neighbor_lat, neighbor_lon;\n\n  const neighborHashIntList = [\n    encodeNeighbor_int(1, 0),\n    encodeNeighbor_int(1, 1),\n    encodeNeighbor_int(0, 1),\n    encodeNeighbor_int(-1, 1),\n    encodeNeighbor_int(-1, 0),\n    encodeNeighbor_int(-1, -1),\n    encodeNeighbor_int(0, -1),\n    encodeNeighbor_int(1, -1),\n  ];\n\n  function encodeNeighbor_int(neighborLatDir: any, neighborLonDir: any) {\n    neighbor_lat = lat + neighborLatDir * latErr;\n    neighbor_lon = lon + neighborLonDir * lonErr;\n    neighbor_lon = ensure_valid_lon(neighbor_lon);\n    neighbor_lat = ensure_valid_lat(neighbor_lat);\n    return encode_int(neighbor_lat, neighbor_lon, bitDepth);\n  }\n\n  return neighborHashIntList;\n};\n\n/**\n * Bounding Boxes\n *\n * Return all the hashString between minLat, minLon, maxLat, maxLon in numberOfChars\n * @param {Number} minLat\n * @param {Number} minLon\n * @param {Number} maxLat\n * @param {Number} maxLon\n * @param {Number} numberOfChars\n * @returns {bboxes.hashList|Array}\n */\nconst bboxes = function (\n  minLat: any,\n  minLon: any,\n  maxLat: any,\n  maxLon: any,\n  numberOfChars: any\n) {\n  if (numberOfChars <= 0) {\n    throw new Error(\"numberOfChars must be strictly positive\");\n  }\n  numberOfChars = numberOfChars || 9;\n\n  const hashSouthWest = encode(minLat, minLon, numberOfChars);\n  const hashNorthEast = encode(maxLat, maxLon, numberOfChars);\n\n  const latLon = decode(hashSouthWest);\n\n  const perLat = latLon.error.latitude * 2;\n  const perLon = latLon.error.longitude * 2;\n\n  const boxSouthWest = decode_bbox(hashSouthWest);\n  const boxNorthEast = decode_bbox(hashNorthEast);\n\n  const latStep = Math.round((boxNorthEast[0] - boxSouthWest[0]) / perLat);\n  const lonStep = Math.round((boxNorthEast[1] - boxSouthWest[1]) / perLon);\n\n  const hashList: string[] = [];\n\n  for (let lat = 0; lat <= latStep; lat++) {\n    for (let lon = 0; lon <= lonStep; lon++) {\n      hashList.push(neighbor(hashSouthWest, [lat, lon]));\n    }\n  }\n\n  return hashList;\n};\n\n/**\n * Bounding Boxes Integer\n *\n * Return all the hash integers between minLat, minLon, maxLat, maxLon in bitDepth\n * @param {Number} minLat\n * @param {Number} minLon\n * @param {Number} maxLat\n * @param {Number} maxLon\n * @param {Number} bitDepth\n * @returns {bboxes_int.hashList|Array}\n */\nconst bboxes_int = function (\n  minLat: any,\n  minLon: any,\n  maxLat: any,\n  maxLon: any,\n  bitDepth: any\n) {\n  bitDepth = bitDepth || 52;\n\n  const hashSouthWest = encode_int(minLat, minLon, bitDepth);\n  const hashNorthEast = encode_int(maxLat, maxLon, bitDepth);\n\n  const latlon = decode_int(hashSouthWest, bitDepth);\n\n  const perLat = latlon.error.latitude * 2;\n  const perLon = latlon.error.longitude * 2;\n\n  const boxSouthWest = decode_bbox_int(hashSouthWest, bitDepth);\n  const boxNorthEast = decode_bbox_int(hashNorthEast, bitDepth);\n\n  const latStep = Math.round((boxNorthEast[0] - boxSouthWest[0]) / perLat);\n  const lonStep = Math.round((boxNorthEast[1] - boxSouthWest[1]) / perLon);\n\n  const hashList: number[] = [];\n\n  for (let lat = 0; lat <= latStep; lat++) {\n    for (let lon = 0; lon <= lonStep; lon++) {\n      hashList.push(neighbor_int(hashSouthWest, [lat, lon], bitDepth));\n    }\n  }\n\n  return hashList;\n};\n\nfunction ensure_valid_lon(lon: any) {\n  if (lon > MAX_LON) return MIN_LON + (lon % MAX_LON);\n  if (lon < MIN_LON) return MAX_LON + (lon % MAX_LON);\n  return lon;\n}\n\nfunction ensure_valid_lat(lat: any) {\n  if (lat > MAX_LAT) return MAX_LAT;\n  if (lat < MIN_LAT) return MIN_LAT;\n  return lat;\n}\n\nconst geohash = {\n  ENCODE_AUTO: ENCODE_AUTO,\n  encode: encode,\n  encode_uint64: encode_int, // keeping for backwards compatibility, will deprecate\n  encode_int: encode_int,\n  decode: decode,\n  decode_int: decode_int,\n  decode_uint64: decode_int, // keeping for backwards compatibility, will deprecate\n  decode_bbox: decode_bbox,\n  decode_bbox_uint64: decode_bbox_int, // keeping for backwards compatibility, will deprecate\n  decode_bbox_int: decode_bbox_int,\n  neighbor: neighbor,\n  neighbor_int: neighbor_int,\n  neighbors: neighbors,\n  neighbors_int: neighbors_int,\n  bboxes: bboxes,\n  bboxes_int: bboxes_int,\n};\n\nexport default geohash;\n","import maplibregl from \"maplibre-gl\";\nimport { Geometry, FeatureCollection, Feature } from \"geojson\";\nimport { ResultMarker } from \"../../primitives/ResultsMarkers/ResultsMarkers\";\nimport { splitURIForNamespaceAndTerm } from \"../strings\";\nimport geohash from \"../geohash/geohash\";\n\nexport const getIconLabel = (uri: string) => {\n  const [namespace, term] = splitURIForNamespaceAndTerm(uri);\n  let label = namespace;\n  if (term !== \"\") {\n    label = term;\n  }\n  return label;\n};\n\nexport const getLabelCharacters = (label: string): string =>\n  label.substring(0, 3);\n\nexport const checkIsValidPosition = (arr: unknown[]): boolean =>\n  Array.isArray(arr) &&\n  arr.length === 2 &&\n  !Array.isArray(arr[0]) &&\n  !Array.isArray(arr[1]);\n\nexport const recursiveFlatten = (array: any[]) =>\n  checkIsValidPosition(array)\n    ? [array]\n    : array.reduce((acc, val) => acc.concat(recursiveFlatten(val)), []);\n\nexport const getCoordinates = (geometry: Geometry) => {\n  if (geometry.type !== \"Polygon\" && geometry.type !== \"MultiPolygon\") {\n    throw new Error(`Unsupported geometry type: Expected \"Polygon\" or \"MultiPolygon\", instead got \"${geometry.type}\"`);\n  }\n\n  return recursiveFlatten(geometry.coordinates);\n};\n\nexport const calculateBounds = (\n  markers: ResultMarker[] = [],\n  polygons: Feature[] = []\n) => {\n  const bounds = new maplibregl.LngLatBounds();\n\n  polygons.reduce((bounds: maplibregl.LngLatBounds, feature: Feature) => {\n    const coordinates = getCoordinates(feature.geometry);\n\n    coordinates.forEach((coord: number[]) =>\n      bounds.extend(new maplibregl.LngLat(coord[0], coord[1]))\n    );\n\n    return bounds;\n  }, bounds);\n\n  markers.forEach((marker) => {\n    const { longitude, latitude } = geohash.decode(\n      marker.geohash.split(\"http://geohash.org/\")[1]\n    );\n    bounds.extend(new maplibregl.LngLat(longitude, latitude));\n  });\n\n  return bounds;\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","// src/components/useMapCanvas.ts\nimport { useRef, useState, useEffect } from \"react\";\nimport { MapRef } from \"react-map-gl/maplibre\";\nimport { FeatureCollection, Feature } from \"geojson\";\nimport { ResultMarker } from \"../ResultsMarkers/ResultsMarkers\";\nimport { calculateBounds } from \"../../utils/helper/helper\";\nimport { LngLatBounds } from \"maplibre-gl\";\nimport debounce from \"lodash.debounce\";\n\nexport function useMapCanvas(params: {\n  markers: ResultMarker[];\n  geoPolygons: FeatureCollection;\n  selected: string[];\n}) {\n  const { markers, geoPolygons, selected } = params;\n  const mapRef = useRef<MapRef>(null);\n  const [cursor, setCursor] = useState(\"auto\");\n  const offsetRef = useRef<[number, number]>([0, 0]);\n\n  const resetCursor = () => {\n    setCursor(\"auto\");\n  };\n\n  const fitMarkerAndPolygonBounds = debounce(\n    () => {\n      if (\n        !mapRef.current ||\n        (geoPolygons.features.length < 1 && markers.length < 1)\n      )\n        return;\n      const map = mapRef.current;\n\n      let bounds: LngLatBounds;\n      if (selected.length < 1) {\n        bounds = calculateBounds(markers, geoPolygons.features);\n      } else {\n        const selectedMarkers = markers.reduce((acc, marker) => {\n          if (selected.find((s) => marker.uri === s)) {\n            acc.push(marker);\n          }\n          return acc;\n        }, [] as ResultMarker[]);\n\n        const selectedPolygons = geoPolygons.features.reduce((acc, polygon) => {\n          if (\n            selected.find((s) =>\n              polygon.properties?.iso3166_a3.endsWith(s.split(\"#\")[1])\n            )\n          ) {\n            acc.push(polygon);\n          }\n          return acc;\n        }, [] as Feature[]);\n\n        bounds = calculateBounds(selectedMarkers, selectedPolygons);\n      }\n\n      map.resize();\n      map.fitBounds(bounds, {\n        padding: 20,\n        maxZoom: 8,\n        duration: 500,\n        offset: offsetRef.current,\n      });\n    },\n    0,\n    { leading: false, trailing: true }\n  );\n\n  useEffect(() => {\n    fitMarkerAndPolygonBounds();\n  }, [geoPolygons, markers, selected]);\n\n  const onLoad = () => {\n    fitMarkerAndPolygonBounds();\n  };\n\n  return {\n    mapRef,\n    cursor,\n    onDragStart: () => setCursor(\"move\"),\n    onDragEnd: resetCursor,\n    onMouseEnter: () => setCursor(\"pointer\"),\n    onMouseLeave: resetCursor,\n    onLoad,\n    setOffset: (off: [number, number]) => {\n      offsetRef.current = off;\n      fitMarkerAndPolygonBounds();\n    },\n  };\n}\n","import * as React from 'react';\nimport { useState, useCallback, useMemo, useContext } from 'react';\nimport { MapContext } from './map';\nexport const MountedMapsContext = React.createContext(null);\nexport const MapProvider = props => {\n    const [maps, setMaps] = useState({});\n    const onMapMount = useCallback((map, id = 'default') => {\n        setMaps(currMaps => {\n            if (id === 'current') {\n                throw new Error(\"'current' cannot be used as map id\");\n            }\n            if (currMaps[id]) {\n                throw new Error(`Multiple maps with the same id: ${id}`);\n            }\n            return { ...currMaps, [id]: map };\n        });\n    }, []);\n    const onMapUnmount = useCallback((id = 'default') => {\n        setMaps(currMaps => {\n            if (currMaps[id]) {\n                const nextMaps = { ...currMaps };\n                delete nextMaps[id];\n                return nextMaps;\n            }\n            return currMaps;\n        });\n    }, []);\n    return (React.createElement(MountedMapsContext.Provider, { value: {\n            maps,\n            onMapMount,\n            onMapUnmount\n        } }, props.children));\n};\nexport function useMap() {\n    var _a;\n    const maps = (_a = useContext(MountedMapsContext)) === null || _a === void 0 ? void 0 : _a.maps;\n    const currentMap = useContext(MapContext);\n    const mapsWithCurrent = useMemo(() => {\n        return { ...maps, current: currentMap === null || currentMap === void 0 ? void 0 : currentMap.map };\n    }, [maps, currentMap]);\n    return mapsWithCurrent;\n}\n//# sourceMappingURL=use-map.js.map","/**\n * Compare two points\n * @param a\n * @param b\n * @returns true if the points are equal\n */\nexport function arePointsEqual(a, b) {\n    const ax = Array.isArray(a) ? a[0] : a ? a.x : 0;\n    const ay = Array.isArray(a) ? a[1] : a ? a.y : 0;\n    const bx = Array.isArray(b) ? b[0] : b ? b.x : 0;\n    const by = Array.isArray(b) ? b[1] : b ? b.y : 0;\n    return ax === bx && ay === by;\n}\n/* eslint-disable complexity */\n/**\n * Compare any two objects\n * @param a\n * @param b\n * @returns true if the objects are deep equal\n */\nexport function deepEqual(a, b) {\n    if (a === b) {\n        return true;\n    }\n    if (!a || !b) {\n        return false;\n    }\n    if (Array.isArray(a)) {\n        if (!Array.isArray(b) || a.length !== b.length) {\n            return false;\n        }\n        for (let i = 0; i < a.length; i++) {\n            if (!deepEqual(a[i], b[i])) {\n                return false;\n            }\n        }\n        return true;\n    }\n    else if (Array.isArray(b)) {\n        return false;\n    }\n    if (typeof a === 'object' && typeof b === 'object') {\n        const aKeys = Object.keys(a);\n        const bKeys = Object.keys(b);\n        if (aKeys.length !== bKeys.length) {\n            return false;\n        }\n        for (const key of aKeys) {\n            if (!b.hasOwnProperty(key)) {\n                return false;\n            }\n            if (!deepEqual(a[key], b[key])) {\n                return false;\n            }\n        }\n        return true;\n    }\n    return false;\n}\n//# sourceMappingURL=deep-equal.js.map","import { deepEqual } from './deep-equal';\n/**\n * Make a copy of a transform\n * @param tr\n */\nexport function cloneTransform(tr) {\n    const newTransform = tr.clone();\n    // Work around mapbox bug - this value is not assigned in clone(), only in resize()\n    newTransform.pixelsToGLUnits = tr.pixelsToGLUnits;\n    return newTransform;\n}\n/**\n * Copy projection from one transform to another. This only applies to mapbox-gl transforms\n * @param src the transform to copy projection settings from\n * @param dest to transform to copy projection settings to\n */\nexport function syncProjection(src, dest) {\n    if (!src.getProjection) {\n        return;\n    }\n    const srcProjection = src.getProjection();\n    const destProjection = dest.getProjection();\n    if (!deepEqual(srcProjection, destProjection)) {\n        dest.setProjection(srcProjection);\n    }\n}\n/**\n * Capture a transform's current state\n * @param transform\n * @returns descriptor of the view state\n */\nexport function transformToViewState(tr) {\n    return {\n        longitude: tr.center.lng,\n        latitude: tr.center.lat,\n        zoom: tr.zoom,\n        pitch: tr.pitch,\n        bearing: tr.bearing,\n        padding: tr.padding\n    };\n}\n/* eslint-disable complexity */\n/**\n * Mutate a transform to match the given view state\n * @param transform\n * @param viewState\n * @returns true if the transform has changed\n */\nexport function applyViewStateToTransform(tr, props) {\n    const v = props.viewState || props;\n    let changed = false;\n    if ('zoom' in v) {\n        const zoom = tr.zoom;\n        tr.zoom = v.zoom;\n        changed = changed || zoom !== tr.zoom;\n    }\n    if ('bearing' in v) {\n        const bearing = tr.bearing;\n        tr.bearing = v.bearing;\n        changed = changed || bearing !== tr.bearing;\n    }\n    if ('pitch' in v) {\n        const pitch = tr.pitch;\n        tr.pitch = v.pitch;\n        changed = changed || pitch !== tr.pitch;\n    }\n    if (v.padding && !tr.isPaddingEqual(v.padding)) {\n        changed = true;\n        tr.padding = v.padding;\n    }\n    if ('longitude' in v && 'latitude' in v) {\n        const center = tr.center;\n        // @ts-ignore\n        tr.center = new center.constructor(v.longitude, v.latitude);\n        changed = changed || center !== tr.center;\n    }\n    return changed;\n}\n//# sourceMappingURL=transform.js.map","const refProps = ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n// Prepare a map style object for diffing\n// If immutable - convert to plain object\n// Work around some issues in older styles that would fail Mapbox's diffing\nexport function normalizeStyle(style) {\n    if (!style) {\n        return null;\n    }\n    if (typeof style === 'string') {\n        return style;\n    }\n    if ('toJS' in style) {\n        style = style.toJS();\n    }\n    if (!style.layers) {\n        return style;\n    }\n    const layerIndex = {};\n    for (const layer of style.layers) {\n        layerIndex[layer.id] = layer;\n    }\n    const layers = style.layers.map(layer => {\n        let normalizedLayer = null;\n        if ('interactive' in layer) {\n            normalizedLayer = Object.assign({}, layer);\n            // Breaks style diffing :(\n            // @ts-ignore legacy field not typed\n            delete normalizedLayer.interactive;\n        }\n        // Style diffing doesn't work with refs so expand them out manually before diffing.\n        // @ts-ignore legacy field not typed\n        const layerRef = layerIndex[layer.ref];\n        if (layerRef) {\n            normalizedLayer = normalizedLayer || Object.assign({}, layer);\n            // @ts-ignore\n            delete normalizedLayer.ref;\n            // https://github.com/mapbox/mapbox-gl-js/blob/master/src/style-spec/deref.js\n            for (const propName of refProps) {\n                if (propName in layerRef) {\n                    normalizedLayer[propName] = layerRef[propName];\n                }\n            }\n        }\n        return normalizedLayer || layer;\n    });\n    // Do not mutate the style object provided by the user\n    return { ...style, layers };\n}\n//# sourceMappingURL=style-utils.js.map","import { transformToViewState, applyViewStateToTransform, cloneTransform, syncProjection } from '../utils/transform';\nimport { normalizeStyle } from '../utils/style-utils';\nimport { deepEqual } from '../utils/deep-equal';\nconst DEFAULT_STYLE = { version: 8, sources: {}, layers: [] };\nconst pointerEvents = {\n    mousedown: 'onMouseDown',\n    mouseup: 'onMouseUp',\n    mouseover: 'onMouseOver',\n    mousemove: 'onMouseMove',\n    click: 'onClick',\n    dblclick: 'onDblClick',\n    mouseenter: 'onMouseEnter',\n    mouseleave: 'onMouseLeave',\n    mouseout: 'onMouseOut',\n    contextmenu: 'onContextMenu',\n    touchstart: 'onTouchStart',\n    touchend: 'onTouchEnd',\n    touchmove: 'onTouchMove',\n    touchcancel: 'onTouchCancel'\n};\nconst cameraEvents = {\n    movestart: 'onMoveStart',\n    move: 'onMove',\n    moveend: 'onMoveEnd',\n    dragstart: 'onDragStart',\n    drag: 'onDrag',\n    dragend: 'onDragEnd',\n    zoomstart: 'onZoomStart',\n    zoom: 'onZoom',\n    zoomend: 'onZoomEnd',\n    rotatestart: 'onRotateStart',\n    rotate: 'onRotate',\n    rotateend: 'onRotateEnd',\n    pitchstart: 'onPitchStart',\n    pitch: 'onPitch',\n    pitchend: 'onPitchEnd'\n};\nconst otherEvents = {\n    wheel: 'onWheel',\n    boxzoomstart: 'onBoxZoomStart',\n    boxzoomend: 'onBoxZoomEnd',\n    boxzoomcancel: 'onBoxZoomCancel',\n    resize: 'onResize',\n    load: 'onLoad',\n    render: 'onRender',\n    idle: 'onIdle',\n    remove: 'onRemove',\n    data: 'onData',\n    styledata: 'onStyleData',\n    sourcedata: 'onSourceData',\n    error: 'onError'\n};\nconst settingNames = [\n    'minZoom',\n    'maxZoom',\n    'minPitch',\n    'maxPitch',\n    'maxBounds',\n    'projection',\n    'renderWorldCopies'\n];\nconst handlerNames = [\n    'scrollZoom',\n    'boxZoom',\n    'dragRotate',\n    'dragPan',\n    'keyboard',\n    'doubleClickZoom',\n    'touchZoomRotate',\n    'touchPitch'\n];\n/**\n * A wrapper for mapbox-gl's Map class\n */\nexport default class Mapbox {\n    constructor(MapClass, props, container) {\n        // mapboxgl.Map instance\n        this._map = null;\n        // Internal states\n        this._internalUpdate = false;\n        this._inRender = false;\n        this._hoveredFeatures = null;\n        this._deferredEvents = {\n            move: false,\n            zoom: false,\n            pitch: false,\n            rotate: false\n        };\n        this._onEvent = (e) => {\n            // @ts-ignore\n            const cb = this.props[otherEvents[e.type]];\n            if (cb) {\n                cb(e);\n            }\n            else if (e.type === 'error') {\n                console.error(e.error); // eslint-disable-line\n            }\n        };\n        this._onPointerEvent = (e) => {\n            if (e.type === 'mousemove' || e.type === 'mouseout') {\n                this._updateHover(e);\n            }\n            // @ts-ignore\n            const cb = this.props[pointerEvents[e.type]];\n            if (cb) {\n                if (this.props.interactiveLayerIds && e.type !== 'mouseover' && e.type !== 'mouseout') {\n                    e.features = this._hoveredFeatures || this._queryRenderedFeatures(e.point);\n                }\n                cb(e);\n                delete e.features;\n            }\n        };\n        this._onCameraEvent = (e) => {\n            if (!this._internalUpdate) {\n                // @ts-ignore\n                const cb = this.props[cameraEvents[e.type]];\n                if (cb) {\n                    cb(e);\n                }\n            }\n            if (e.type in this._deferredEvents) {\n                this._deferredEvents[e.type] = false;\n            }\n        };\n        this._MapClass = MapClass;\n        this.props = props;\n        this._initialize(container);\n    }\n    get map() {\n        return this._map;\n    }\n    get transform() {\n        return this._renderTransform;\n    }\n    setProps(props) {\n        const oldProps = this.props;\n        this.props = props;\n        const settingsChanged = this._updateSettings(props, oldProps);\n        if (settingsChanged) {\n            this._createShadowTransform(this._map);\n        }\n        const sizeChanged = this._updateSize(props);\n        const viewStateChanged = this._updateViewState(props, true);\n        this._updateStyle(props, oldProps);\n        this._updateStyleComponents(props, oldProps);\n        this._updateHandlers(props, oldProps);\n        // If 1) view state has changed to match props and\n        //    2) the props change is not triggered by map events,\n        // it's driven by an external state change. Redraw immediately\n        if (settingsChanged || sizeChanged || (viewStateChanged && !this._map.isMoving())) {\n            this.redraw();\n        }\n    }\n    static reuse(props, container) {\n        const that = Mapbox.savedMaps.pop();\n        if (!that) {\n            return null;\n        }\n        const map = that.map;\n        // When reusing the saved map, we need to reparent the map(canvas) and other child nodes\n        // intoto the new container from the props.\n        // Step 1: reparenting child nodes from old container to new container\n        const oldContainer = map.getContainer();\n        container.className = oldContainer.className;\n        while (oldContainer.childNodes.length > 0) {\n            container.appendChild(oldContainer.childNodes[0]);\n        }\n        // Step 2: replace the internal container with new container from the react component\n        // @ts-ignore\n        map._container = container;\n        // With maplibre-gl as mapLib, map uses ResizeObserver to observe when its container resizes.\n        // When reusing the saved map, we need to disconnect the observer and observe the new container.\n        // Step 3: telling the ResizeObserver to disconnect and observe the new container\n        // @ts-ignore\n        const resizeObserver = map._resizeObserver;\n        if (resizeObserver) {\n            resizeObserver.disconnect();\n            resizeObserver.observe(container);\n        }\n        // Step 4: apply new props\n        that.setProps({ ...props, styleDiffing: false });\n        map.resize();\n        const { initialViewState } = props;\n        if (initialViewState) {\n            if (initialViewState.bounds) {\n                map.fitBounds(initialViewState.bounds, { ...initialViewState.fitBoundsOptions, duration: 0 });\n            }\n            else {\n                that._updateViewState(initialViewState, false);\n            }\n        }\n        // Simulate load event\n        if (map.isStyleLoaded()) {\n            map.fire('load');\n        }\n        else {\n            map.once('styledata', () => map.fire('load'));\n        }\n        // Force reload\n        // @ts-ignore\n        map._update();\n        return that;\n    }\n    /* eslint-disable complexity,max-statements */\n    _initialize(container) {\n        const { props } = this;\n        const { mapStyle = DEFAULT_STYLE } = props;\n        const mapOptions = {\n            ...props,\n            ...props.initialViewState,\n            accessToken: props.mapboxAccessToken || getAccessTokenFromEnv() || null,\n            container,\n            style: normalizeStyle(mapStyle)\n        };\n        const viewState = mapOptions.initialViewState || mapOptions.viewState || mapOptions;\n        Object.assign(mapOptions, {\n            center: [viewState.longitude || 0, viewState.latitude || 0],\n            zoom: viewState.zoom || 0,\n            pitch: viewState.pitch || 0,\n            bearing: viewState.bearing || 0\n        });\n        if (props.gl) {\n            // eslint-disable-next-line\n            const getContext = HTMLCanvasElement.prototype.getContext;\n            // Hijack canvas.getContext to return our own WebGLContext\n            // This will be called inside the mapboxgl.Map constructor\n            // @ts-expect-error\n            HTMLCanvasElement.prototype.getContext = () => {\n                // Unhijack immediately\n                HTMLCanvasElement.prototype.getContext = getContext;\n                return props.gl;\n            };\n        }\n        const map = new this._MapClass(mapOptions);\n        // Props that are not part of constructor options\n        if (viewState.padding) {\n            map.setPadding(viewState.padding);\n        }\n        if (props.cursor) {\n            map.getCanvas().style.cursor = props.cursor;\n        }\n        this._createShadowTransform(map);\n        // Hack\n        // Insert code into map's render cycle\n        const renderMap = map._render;\n        map._render = (arg) => {\n            this._inRender = true;\n            renderMap.call(map, arg);\n            this._inRender = false;\n        };\n        const runRenderTaskQueue = map._renderTaskQueue.run;\n        map._renderTaskQueue.run = (arg) => {\n            runRenderTaskQueue.call(map._renderTaskQueue, arg);\n            this._onBeforeRepaint();\n        };\n        map.on('render', () => this._onAfterRepaint());\n        // Insert code into map's event pipeline\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        const fireEvent = map.fire;\n        map.fire = this._fireEvent.bind(this, fireEvent);\n        // add listeners\n        map.on('resize', () => {\n            this._renderTransform.resize(map.transform.width, map.transform.height);\n        });\n        map.on('styledata', () => {\n            this._updateStyleComponents(this.props, {});\n            // Projection can be set in stylesheet\n            syncProjection(map.transform, this._renderTransform);\n        });\n        map.on('sourcedata', () => this._updateStyleComponents(this.props, {}));\n        for (const eventName in pointerEvents) {\n            map.on(eventName, this._onPointerEvent);\n        }\n        for (const eventName in cameraEvents) {\n            map.on(eventName, this._onCameraEvent);\n        }\n        for (const eventName in otherEvents) {\n            map.on(eventName, this._onEvent);\n        }\n        this._map = map;\n    }\n    /* eslint-enable complexity,max-statements */\n    recycle() {\n        // Clean up unnecessary elements before storing for reuse.\n        const container = this.map.getContainer();\n        const children = container.querySelector('[mapboxgl-children]');\n        children === null || children === void 0 ? void 0 : children.remove();\n        Mapbox.savedMaps.push(this);\n    }\n    destroy() {\n        this._map.remove();\n    }\n    // Force redraw the map now. Typically resize() and jumpTo() is reflected in the next\n    // render cycle, which is managed by Mapbox's animation loop.\n    // This removes the synchronization issue caused by requestAnimationFrame.\n    redraw() {\n        const map = this._map;\n        // map._render will throw error if style does not exist\n        // https://github.com/mapbox/mapbox-gl-js/blob/fb9fc316da14e99ff4368f3e4faa3888fb43c513\n        //   /src/ui/map.js#L1834\n        if (!this._inRender && map.style) {\n            // cancel the scheduled update\n            if (map._frame) {\n                map._frame.cancel();\n                map._frame = null;\n            }\n            // the order is important - render() may schedule another update\n            map._render();\n        }\n    }\n    _createShadowTransform(map) {\n        const renderTransform = cloneTransform(map.transform);\n        map.painter.transform = renderTransform;\n        this._renderTransform = renderTransform;\n    }\n    /* Trigger map resize if size is controlled\n       @param {object} nextProps\n       @returns {bool} true if size has changed\n     */\n    _updateSize(nextProps) {\n        // Check if size is controlled\n        const { viewState } = nextProps;\n        if (viewState) {\n            const map = this._map;\n            if (viewState.width !== map.transform.width || viewState.height !== map.transform.height) {\n                map.resize();\n                return true;\n            }\n        }\n        return false;\n    }\n    // Adapted from map.jumpTo\n    /* Update camera to match props\n       @param {object} nextProps\n       @param {bool} triggerEvents - should fire camera events\n       @returns {bool} true if anything is changed\n     */\n    _updateViewState(nextProps, triggerEvents) {\n        if (this._internalUpdate) {\n            return false;\n        }\n        const map = this._map;\n        const tr = this._renderTransform;\n        // Take a snapshot of the transform before mutation\n        const { zoom, pitch, bearing } = tr;\n        const isMoving = map.isMoving();\n        if (isMoving) {\n            // All movement of the camera is done relative to the sea level\n            tr.cameraElevationReference = 'sea';\n        }\n        const changed = applyViewStateToTransform(tr, {\n            ...transformToViewState(map.transform),\n            ...nextProps\n        });\n        if (isMoving) {\n            // Reset camera reference\n            tr.cameraElevationReference = 'ground';\n        }\n        if (changed && triggerEvents) {\n            const deferredEvents = this._deferredEvents;\n            // Delay DOM control updates to the next render cycle\n            deferredEvents.move = true;\n            deferredEvents.zoom || (deferredEvents.zoom = zoom !== tr.zoom);\n            deferredEvents.rotate || (deferredEvents.rotate = bearing !== tr.bearing);\n            deferredEvents.pitch || (deferredEvents.pitch = pitch !== tr.pitch);\n        }\n        // Avoid manipulating the real transform when interaction/animation is ongoing\n        // as it would interfere with Mapbox's handlers\n        if (!isMoving) {\n            applyViewStateToTransform(map.transform, nextProps);\n        }\n        return changed;\n    }\n    /* Update camera constraints and projection settings to match props\n       @param {object} nextProps\n       @param {object} currProps\n       @returns {bool} true if anything is changed\n     */\n    _updateSettings(nextProps, currProps) {\n        const map = this._map;\n        let changed = false;\n        for (const propName of settingNames) {\n            if (propName in nextProps && !deepEqual(nextProps[propName], currProps[propName])) {\n                changed = true;\n                const setter = map[`set${propName[0].toUpperCase()}${propName.slice(1)}`];\n                setter === null || setter === void 0 ? void 0 : setter.call(map, nextProps[propName]);\n            }\n        }\n        return changed;\n    }\n    /* Update map style to match props\n       @param {object} nextProps\n       @param {object} currProps\n       @returns {bool} true if style is changed\n     */\n    _updateStyle(nextProps, currProps) {\n        if (nextProps.cursor !== currProps.cursor) {\n            this._map.getCanvas().style.cursor = nextProps.cursor || '';\n        }\n        if (nextProps.mapStyle !== currProps.mapStyle) {\n            const { mapStyle = DEFAULT_STYLE, styleDiffing = true } = nextProps;\n            const options = {\n                diff: styleDiffing\n            };\n            if ('localIdeographFontFamily' in nextProps) {\n                // @ts-ignore Mapbox specific prop\n                options.localIdeographFontFamily = nextProps.localIdeographFontFamily;\n            }\n            this._map.setStyle(normalizeStyle(mapStyle), options);\n            return true;\n        }\n        return false;\n    }\n    /* Update fog, light and terrain to match props\n       @param {object} nextProps\n       @param {object} currProps\n       @returns {bool} true if anything is changed\n     */\n    _updateStyleComponents(nextProps, currProps) {\n        const map = this._map;\n        let changed = false;\n        if (map.isStyleLoaded()) {\n            if ('light' in nextProps && map.setLight && !deepEqual(nextProps.light, currProps.light)) {\n                changed = true;\n                map.setLight(nextProps.light);\n            }\n            if ('fog' in nextProps && map.setFog && !deepEqual(nextProps.fog, currProps.fog)) {\n                changed = true;\n                map.setFog(nextProps.fog);\n            }\n            if ('terrain' in nextProps &&\n                map.setTerrain &&\n                !deepEqual(nextProps.terrain, currProps.terrain)) {\n                if (!nextProps.terrain || map.getSource(nextProps.terrain.source)) {\n                    changed = true;\n                    map.setTerrain(nextProps.terrain);\n                }\n            }\n        }\n        return changed;\n    }\n    /* Update interaction handlers to match props\n       @param {object} nextProps\n       @param {object} currProps\n       @returns {bool} true if anything is changed\n     */\n    _updateHandlers(nextProps, currProps) {\n        var _a, _b;\n        const map = this._map;\n        let changed = false;\n        for (const propName of handlerNames) {\n            const newValue = (_a = nextProps[propName]) !== null && _a !== void 0 ? _a : true;\n            const oldValue = (_b = currProps[propName]) !== null && _b !== void 0 ? _b : true;\n            if (!deepEqual(newValue, oldValue)) {\n                changed = true;\n                if (newValue) {\n                    map[propName].enable(newValue);\n                }\n                else {\n                    map[propName].disable();\n                }\n            }\n        }\n        return changed;\n    }\n    _queryRenderedFeatures(point) {\n        const map = this._map;\n        const tr = map.transform;\n        const { interactiveLayerIds = [] } = this.props;\n        try {\n            map.transform = this._renderTransform;\n            return map.queryRenderedFeatures(point, {\n                layers: interactiveLayerIds.filter(map.getLayer.bind(map))\n            });\n        }\n        catch (_a) {\n            // May fail if style is not loaded\n            return [];\n        }\n        finally {\n            map.transform = tr;\n        }\n    }\n    _updateHover(e) {\n        var _a;\n        const { props } = this;\n        const shouldTrackHoveredFeatures = props.interactiveLayerIds && (props.onMouseMove || props.onMouseEnter || props.onMouseLeave);\n        if (shouldTrackHoveredFeatures) {\n            const eventType = e.type;\n            const wasHovering = ((_a = this._hoveredFeatures) === null || _a === void 0 ? void 0 : _a.length) > 0;\n            const features = this._queryRenderedFeatures(e.point);\n            const isHovering = features.length > 0;\n            if (!isHovering && wasHovering) {\n                e.type = 'mouseleave';\n                this._onPointerEvent(e);\n            }\n            this._hoveredFeatures = features;\n            if (isHovering && !wasHovering) {\n                e.type = 'mouseenter';\n                this._onPointerEvent(e);\n            }\n            e.type = eventType;\n        }\n        else {\n            this._hoveredFeatures = null;\n        }\n    }\n    _fireEvent(baseFire, event, properties) {\n        const map = this._map;\n        const tr = map.transform;\n        const eventType = typeof event === 'string' ? event : event.type;\n        if (eventType === 'move') {\n            this._updateViewState(this.props, false);\n        }\n        if (eventType in cameraEvents) {\n            if (typeof event === 'object') {\n                event.viewState = transformToViewState(tr);\n            }\n            if (this._map.isMoving()) {\n                // Replace map.transform with ours during the callbacks\n                map.transform = this._renderTransform;\n                baseFire.call(map, event, properties);\n                map.transform = tr;\n                return map;\n            }\n        }\n        baseFire.call(map, event, properties);\n        return map;\n    }\n    // All camera manipulations are complete, ready to repaint\n    _onBeforeRepaint() {\n        const map = this._map;\n        // If there are camera changes driven by props, invoke camera events so that DOM controls are synced\n        this._internalUpdate = true;\n        for (const eventType in this._deferredEvents) {\n            if (this._deferredEvents[eventType]) {\n                map.fire(eventType);\n            }\n        }\n        this._internalUpdate = false;\n        const tr = this._map.transform;\n        // Make sure camera matches the current props\n        map.transform = this._renderTransform;\n        this._onAfterRepaint = () => {\n            // Mapbox transitions between non-mercator projection and mercator during render time\n            // Copy it back to the other\n            syncProjection(this._renderTransform, tr);\n            // Restores camera state before render/load events are fired\n            map.transform = tr;\n        };\n    }\n}\nMapbox.savedMaps = [];\n/**\n * Access token can be provided via one of:\n *   mapboxAccessToken prop\n *   access_token query parameter\n *   MapboxAccessToken environment variable\n *   REACT_APP_MAPBOX_ACCESS_TOKEN environment variable\n * @returns access token\n */\nfunction getAccessTokenFromEnv() {\n    let accessToken = null;\n    /* global location, process */\n    if (typeof location !== 'undefined') {\n        const match = /access_token=([^&\\/]*)/.exec(location.search);\n        accessToken = match && match[1];\n    }\n    // Note: This depends on bundler plugins (e.g. webpack) importing environment correctly\n    try {\n        accessToken = accessToken || process.env.MapboxAccessToken;\n    }\n    catch (_a) {\n        // ignore\n    }\n    try {\n        accessToken = accessToken || process.env.REACT_APP_MAPBOX_ACCESS_TOKEN;\n    }\n    catch (_b) {\n        // ignore\n    }\n    return accessToken;\n}\n//# sourceMappingURL=mapbox.js.map","/** These methods may break the react binding if called directly */\nconst skipMethods = [\n    'setMaxBounds',\n    'setMinZoom',\n    'setMaxZoom',\n    'setMinPitch',\n    'setMaxPitch',\n    'setRenderWorldCopies',\n    'setProjection',\n    'setStyle',\n    'addSource',\n    'removeSource',\n    'addLayer',\n    'removeLayer',\n    'setLayerZoomRange',\n    'setFilter',\n    'setPaintProperty',\n    'setLayoutProperty',\n    'setLight',\n    'setTerrain',\n    'setFog',\n    'remove'\n];\nexport default function createRef(mapInstance) {\n    if (!mapInstance) {\n        return null;\n    }\n    const map = mapInstance.map;\n    const result = {\n        getMap: () => map,\n        // Overwrite getters to use our shadow transform\n        getCenter: () => mapInstance.transform.center,\n        getZoom: () => mapInstance.transform.zoom,\n        getBearing: () => mapInstance.transform.bearing,\n        getPitch: () => mapInstance.transform.pitch,\n        getPadding: () => mapInstance.transform.padding,\n        getBounds: () => mapInstance.transform.getBounds(),\n        project: (lnglat) => {\n            const tr = map.transform;\n            map.transform = mapInstance.transform;\n            const result = map.project(lnglat);\n            map.transform = tr;\n            return result;\n        },\n        unproject: (point) => {\n            const tr = map.transform;\n            map.transform = mapInstance.transform;\n            const result = map.unproject(point);\n            map.transform = tr;\n            return result;\n        },\n        // options diverge between mapbox and maplibre\n        queryTerrainElevation: (lnglat, options) => {\n            const tr = map.transform;\n            map.transform = mapInstance.transform;\n            const result = map.queryTerrainElevation(lnglat, options);\n            map.transform = tr;\n            return result;\n        },\n        queryRenderedFeatures: (geometry, options) => {\n            const tr = map.transform;\n            map.transform = mapInstance.transform;\n            const result = map.queryRenderedFeatures(geometry, options);\n            map.transform = tr;\n            return result;\n        }\n    };\n    for (const key of getMethodNames(map)) {\n        // @ts-expect-error\n        if (!(key in result) && !skipMethods.includes(key)) {\n            result[key] = map[key].bind(map);\n        }\n    }\n    return result;\n}\nfunction getMethodNames(obj) {\n    const result = new Set();\n    let proto = obj;\n    while (proto) {\n        for (const key of Object.getOwnPropertyNames(proto)) {\n            if (key[0] !== '_' &&\n                typeof obj[key] === 'function' &&\n                key !== 'fire' &&\n                key !== 'setEventedParent') {\n                result.add(key);\n            }\n        }\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Array.from(result);\n}\n//# sourceMappingURL=create-ref.js.map","// From https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts\n// useLayoutEffect but does not trigger warning in server-side rendering\nimport { useEffect, useLayoutEffect } from 'react';\nconst useIsomorphicLayoutEffect = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n//# sourceMappingURL=use-isomorphic-layout-effect.js.map","const globalSettings = [\n    'baseApiUrl',\n    'maxParallelImageRequests',\n    'workerClass',\n    'workerCount',\n    'workerUrl'\n];\nexport default function setGlobals(mapLib, props) {\n    for (const key of globalSettings) {\n        if (key in props) {\n            mapLib[key] = props[key];\n        }\n    }\n    const { RTLTextPlugin = 'https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.3/mapbox-gl-rtl-text.js' } = props;\n    if (RTLTextPlugin &&\n        mapLib.getRTLTextPluginStatus &&\n        mapLib.getRTLTextPluginStatus() === 'unavailable') {\n        mapLib.setRTLTextPlugin(RTLTextPlugin, (error) => {\n            if (error) {\n                // eslint-disable-next-line\n                console.error(error);\n            }\n        }, true);\n    }\n}\n//# sourceMappingURL=set-globals.js.map","import * as React from 'react';\nimport { useState, useRef, useEffect, useContext, useMemo, useImperativeHandle } from 'react';\nimport { MountedMapsContext } from './use-map';\nimport Mapbox from '../mapbox/mapbox';\nimport createRef from '../mapbox/create-ref';\nimport useIsomorphicLayoutEffect from '../utils/use-isomorphic-layout-effect';\nimport setGlobals from '../utils/set-globals';\nexport const MapContext = React.createContext(null);\nexport default function Map(props, ref, defaultLib) {\n    const mountedMapsContext = useContext(MountedMapsContext);\n    const [mapInstance, setMapInstance] = useState(null);\n    const containerRef = useRef();\n    const { current: contextValue } = useRef({ mapLib: null, map: null });\n    useEffect(() => {\n        const mapLib = props.mapLib;\n        let isMounted = true;\n        let mapbox;\n        Promise.resolve(mapLib || defaultLib)\n            .then((module) => {\n            if (!isMounted) {\n                return;\n            }\n            if (!module) {\n                throw new Error('Invalid mapLib');\n            }\n            const mapboxgl = 'Map' in module ? module : module.default;\n            if (!mapboxgl.Map) {\n                throw new Error('Invalid mapLib');\n            }\n            // workerUrl & workerClass may change the result of supported()\n            // https://github.com/visgl/react-map-gl/discussions/2027\n            setGlobals(mapboxgl, props);\n            if (!mapboxgl.supported || mapboxgl.supported(props)) {\n                if (props.reuseMaps) {\n                    mapbox = Mapbox.reuse(props, containerRef.current);\n                }\n                if (!mapbox) {\n                    mapbox = new Mapbox(mapboxgl.Map, props, containerRef.current);\n                }\n                contextValue.map = createRef(mapbox);\n                contextValue.mapLib = mapboxgl;\n                setMapInstance(mapbox);\n                mountedMapsContext === null || mountedMapsContext === void 0 ? void 0 : mountedMapsContext.onMapMount(contextValue.map, props.id);\n            }\n            else {\n                throw new Error('Map is not supported by this browser');\n            }\n        })\n            .catch(error => {\n            const { onError } = props;\n            if (onError) {\n                onError({\n                    type: 'error',\n                    target: null,\n                    originalEvent: null,\n                    error\n                });\n            }\n            else {\n                console.error(error); // eslint-disable-line\n            }\n        });\n        return () => {\n            isMounted = false;\n            if (mapbox) {\n                mountedMapsContext === null || mountedMapsContext === void 0 ? void 0 : mountedMapsContext.onMapUnmount(props.id);\n                if (props.reuseMaps) {\n                    mapbox.recycle();\n                }\n                else {\n                    mapbox.destroy();\n                }\n            }\n        };\n    }, []);\n    useIsomorphicLayoutEffect(() => {\n        if (mapInstance) {\n            mapInstance.setProps(props);\n        }\n    });\n    useImperativeHandle(ref, () => contextValue.map, [mapInstance]);\n    const style = useMemo(() => ({\n        position: 'relative',\n        width: '100%',\n        height: '100%',\n        ...props.style\n    }), [props.style]);\n    const CHILD_CONTAINER_STYLE = {\n        height: '100%'\n    };\n    return (React.createElement(\"div\", { id: props.id, ref: containerRef, style: style }, mapInstance && (React.createElement(MapContext.Provider, { value: contextValue },\n        React.createElement(\"div\", { \"mapboxgl-children\": \"\", style: CHILD_CONTAINER_STYLE }, props.children)))));\n}\n//# sourceMappingURL=map.js.map","// This is a simplified version of\n// https://github.com/facebook/react/blob/4131af3e4bf52f3a003537ec95a1655147c81270/src/renderers/dom/shared/CSSPropertyOperations.js#L62\nconst unitlessNumber = /box|flex|grid|column|lineHeight|fontWeight|opacity|order|tabSize|zIndex/;\nexport function applyReactStyle(element, styles) {\n    if (!element || !styles) {\n        return;\n    }\n    const style = element.style;\n    for (const key in styles) {\n        const value = styles[key];\n        if (Number.isFinite(value) && !unitlessNumber.test(key)) {\n            style[key] = `${value}px`;\n        }\n        else {\n            style[key] = value;\n        }\n    }\n}\n//# sourceMappingURL=apply-react-style.js.map","/* global document */\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { useImperativeHandle, useEffect, useMemo, useRef, useContext, forwardRef, memo } from 'react';\nimport { applyReactStyle } from '../utils/apply-react-style';\nimport { MapContext } from './map';\nimport { arePointsEqual } from '../utils/deep-equal';\n/* eslint-disable complexity,max-statements */\nfunction Marker(props, ref) {\n    const { map, mapLib } = useContext(MapContext);\n    const thisRef = useRef({ props });\n    thisRef.current.props = props;\n    const marker = useMemo(() => {\n        let hasChildren = false;\n        React.Children.forEach(props.children, el => {\n            if (el) {\n                hasChildren = true;\n            }\n        });\n        const options = {\n            ...props,\n            element: hasChildren ? document.createElement('div') : null\n        };\n        const mk = new mapLib.Marker(options);\n        mk.setLngLat([props.longitude, props.latitude]);\n        mk.getElement().addEventListener('click', (e) => {\n            var _a, _b;\n            (_b = (_a = thisRef.current.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, {\n                type: 'click',\n                target: mk,\n                originalEvent: e\n            });\n        });\n        mk.on('dragstart', e => {\n            var _a, _b;\n            const evt = e;\n            evt.lngLat = marker.getLngLat();\n            (_b = (_a = thisRef.current.props).onDragStart) === null || _b === void 0 ? void 0 : _b.call(_a, evt);\n        });\n        mk.on('drag', e => {\n            var _a, _b;\n            const evt = e;\n            evt.lngLat = marker.getLngLat();\n            (_b = (_a = thisRef.current.props).onDrag) === null || _b === void 0 ? void 0 : _b.call(_a, evt);\n        });\n        mk.on('dragend', e => {\n            var _a, _b;\n            const evt = e;\n            evt.lngLat = marker.getLngLat();\n            (_b = (_a = thisRef.current.props).onDragEnd) === null || _b === void 0 ? void 0 : _b.call(_a, evt);\n        });\n        return mk;\n    }, []);\n    useEffect(() => {\n        marker.addTo(map.getMap());\n        return () => {\n            marker.remove();\n        };\n    }, []);\n    const { longitude, latitude, offset, style, draggable = false, popup = null, rotation = 0, rotationAlignment = 'auto', pitchAlignment = 'auto' } = props;\n    useEffect(() => {\n        applyReactStyle(marker.getElement(), style);\n    }, [style]);\n    useImperativeHandle(ref, () => marker, []);\n    if (marker.getLngLat().lng !== longitude || marker.getLngLat().lat !== latitude) {\n        marker.setLngLat([longitude, latitude]);\n    }\n    if (offset && !arePointsEqual(marker.getOffset(), offset)) {\n        marker.setOffset(offset);\n    }\n    if (marker.isDraggable() !== draggable) {\n        marker.setDraggable(draggable);\n    }\n    if (marker.getRotation() !== rotation) {\n        marker.setRotation(rotation);\n    }\n    if (marker.getRotationAlignment() !== rotationAlignment) {\n        marker.setRotationAlignment(rotationAlignment);\n    }\n    if (marker.getPitchAlignment() !== pitchAlignment) {\n        marker.setPitchAlignment(pitchAlignment);\n    }\n    if (marker.getPopup() !== popup) {\n        marker.setPopup(popup);\n    }\n    return createPortal(props.children, marker.getElement());\n}\nexport default memo(forwardRef(Marker));\n//# sourceMappingURL=marker.js.map","import { createPortal } from 'react-dom';\nimport { useImperativeHandle, useEffect, useMemo, useRef, useContext, forwardRef, memo } from 'react';\nimport { applyReactStyle } from '../utils/apply-react-style';\nimport { MapContext } from './map';\nimport { deepEqual } from '../utils/deep-equal';\n// Adapted from https://github.com/mapbox/mapbox-gl-js/blob/v1.13.0/src/ui/popup.js\nfunction getClassList(className) {\n    return new Set(className ? className.trim().split(/\\s+/) : []);\n}\n/* eslint-disable complexity,max-statements */\nfunction Popup(props, ref) {\n    const { map, mapLib } = useContext(MapContext);\n    const container = useMemo(() => {\n        return document.createElement('div');\n    }, []);\n    const thisRef = useRef({ props });\n    thisRef.current.props = props;\n    const popup = useMemo(() => {\n        const options = { ...props };\n        const pp = new mapLib.Popup(options);\n        pp.setLngLat([props.longitude, props.latitude]);\n        pp.once('open', e => {\n            var _a, _b;\n            (_b = (_a = thisRef.current.props).onOpen) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n        });\n        return pp;\n    }, []);\n    useEffect(() => {\n        const onClose = e => {\n            var _a, _b;\n            (_b = (_a = thisRef.current.props).onClose) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n        };\n        popup.on('close', onClose);\n        popup.setDOMContent(container).addTo(map.getMap());\n        return () => {\n            // https://github.com/visgl/react-map-gl/issues/1825\n            // onClose should not be fired if the popup is removed by unmounting\n            // When using React strict mode, the component is mounted twice.\n            // Firing the onClose callback here would be a false signal to remove the component.\n            popup.off('close', onClose);\n            if (popup.isOpen()) {\n                popup.remove();\n            }\n        };\n    }, []);\n    useEffect(() => {\n        applyReactStyle(popup.getElement(), props.style);\n    }, [props.style]);\n    useImperativeHandle(ref, () => popup, []);\n    if (popup.isOpen()) {\n        if (popup.getLngLat().lng !== props.longitude || popup.getLngLat().lat !== props.latitude) {\n            popup.setLngLat([props.longitude, props.latitude]);\n        }\n        if (props.offset && !deepEqual(popup.options.offset, props.offset)) {\n            popup.setOffset(props.offset);\n        }\n        if (popup.options.anchor !== props.anchor || popup.options.maxWidth !== props.maxWidth) {\n            popup.options.anchor = props.anchor;\n            popup.setMaxWidth(props.maxWidth);\n        }\n        if (popup.options.className !== props.className) {\n            const prevClassList = getClassList(popup.options.className);\n            const nextClassList = getClassList(props.className);\n            for (const c of prevClassList) {\n                if (!nextClassList.has(c)) {\n                    popup.removeClassName(c);\n                }\n            }\n            for (const c of nextClassList) {\n                if (!prevClassList.has(c)) {\n                    popup.addClassName(c);\n                }\n            }\n            popup.options.className = props.className;\n        }\n    }\n    return createPortal(props.children, container);\n}\nexport default memo(forwardRef(Popup));\n//# sourceMappingURL=popup.js.map","import { useContext, useMemo, useEffect } from 'react';\nimport { MapContext } from './map';\nfunction useControl(onCreate, arg1, arg2, arg3) {\n    const context = useContext(MapContext);\n    const ctrl = useMemo(() => onCreate(context), []);\n    useEffect(() => {\n        const opts = (arg3 || arg2 || arg1);\n        const onAdd = typeof arg1 === 'function' && typeof arg2 === 'function' ? arg1 : null;\n        const onRemove = typeof arg2 === 'function' ? arg2 : typeof arg1 === 'function' ? arg1 : null;\n        const { map } = context;\n        if (!map.hasControl(ctrl)) {\n            map.addControl(ctrl, opts === null || opts === void 0 ? void 0 : opts.position);\n            if (onAdd) {\n                onAdd(context);\n            }\n        }\n        return () => {\n            if (onRemove) {\n                onRemove(context);\n            }\n            // Map might have been removed (parent effects are destroyed before child ones)\n            if (map.hasControl(ctrl)) {\n                map.removeControl(ctrl);\n            }\n        };\n    }, []);\n    return ctrl;\n}\nexport default useControl;\n//# sourceMappingURL=use-control.js.map","import { useEffect, memo } from 'react';\nimport { applyReactStyle } from '../utils/apply-react-style';\nimport useControl from './use-control';\nfunction AttributionControl(props) {\n    const ctrl = useControl(({ mapLib }) => new mapLib.AttributionControl(props), {\n        position: props.position\n    });\n    useEffect(() => {\n        applyReactStyle(ctrl._container, props.style);\n    }, [props.style]);\n    return null;\n}\nexport default memo(AttributionControl);\n//# sourceMappingURL=attribution-control.js.map","import { useEffect, memo } from 'react';\nimport { applyReactStyle } from '../utils/apply-react-style';\nimport useControl from './use-control';\nfunction FullscreenControl(props) {\n    const ctrl = useControl(({ mapLib }) => new mapLib.FullscreenControl({\n        container: props.containerId && document.getElementById(props.containerId)\n    }), { position: props.position });\n    useEffect(() => {\n        applyReactStyle(ctrl._controlContainer, props.style);\n    }, [props.style]);\n    return null;\n}\nexport default memo(FullscreenControl);\n//# sourceMappingURL=fullscreen-control.js.map","import { useImperativeHandle, useRef, useEffect, forwardRef, memo } from 'react';\nimport { applyReactStyle } from '../utils/apply-react-style';\nimport useControl from './use-control';\nfunction GeolocateControl(props, ref) {\n    const thisRef = useRef({ props });\n    const ctrl = useControl(({ mapLib }) => {\n        const gc = new mapLib.GeolocateControl(props);\n        // Hack: fix GeolocateControl reuse\n        // When using React strict mode, the component is mounted twice.\n        // GeolocateControl's UI creation is asynchronous. Removing and adding it back causes the UI to be initialized twice.\n        // @ts-expect-error private method\n        const setupUI = gc._setupUI;\n        // @ts-expect-error private method\n        gc._setupUI = args => {\n            if (!gc._container.hasChildNodes()) {\n                setupUI(args);\n            }\n        };\n        gc.on('geolocate', e => {\n            var _a, _b;\n            (_b = (_a = thisRef.current.props).onGeolocate) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n        });\n        gc.on('error', e => {\n            var _a, _b;\n            (_b = (_a = thisRef.current.props).onError) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n        });\n        gc.on('outofmaxbounds', e => {\n            var _a, _b;\n            (_b = (_a = thisRef.current.props).onOutOfMaxBounds) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n        });\n        gc.on('trackuserlocationstart', e => {\n            var _a, _b;\n            (_b = (_a = thisRef.current.props).onTrackUserLocationStart) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n        });\n        gc.on('trackuserlocationend', e => {\n            var _a, _b;\n            (_b = (_a = thisRef.current.props).onTrackUserLocationEnd) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n        });\n        return gc;\n    }, { position: props.position });\n    thisRef.current.props = props;\n    useImperativeHandle(ref, () => ctrl, []);\n    useEffect(() => {\n        applyReactStyle(ctrl._container, props.style);\n    }, [props.style]);\n    return null;\n}\nexport default memo(forwardRef(GeolocateControl));\n//# sourceMappingURL=geolocate-control.js.map","import { useEffect, memo } from 'react';\nimport { applyReactStyle } from '../utils/apply-react-style';\nimport useControl from './use-control';\nfunction NavigationControl(props) {\n    const ctrl = useControl(({ mapLib }) => new mapLib.NavigationControl(props), {\n        position: props.position\n    });\n    useEffect(() => {\n        applyReactStyle(ctrl._container, props.style);\n    }, [props.style]);\n    return null;\n}\nexport default memo(NavigationControl);\n//# sourceMappingURL=navigation-control.js.map","import { useEffect, useRef, memo } from 'react';\nimport { applyReactStyle } from '../utils/apply-react-style';\nimport useControl from './use-control';\nfunction ScaleControl(props) {\n    const ctrl = useControl(({ mapLib }) => new mapLib.ScaleControl(props), {\n        position: props.position\n    });\n    const propsRef = useRef(props);\n    const prevProps = propsRef.current;\n    propsRef.current = props;\n    const { style } = props;\n    if (props.maxWidth !== undefined && props.maxWidth !== prevProps.maxWidth) {\n        ctrl.options.maxWidth = props.maxWidth;\n    }\n    if (props.unit !== undefined && props.unit !== prevProps.unit) {\n        ctrl.setUnit(props.unit);\n    }\n    useEffect(() => {\n        applyReactStyle(ctrl._container, style);\n    }, [style]);\n    return null;\n}\nexport default memo(ScaleControl);\n//# sourceMappingURL=scale-control.js.map","export default function assert(condition, message) {\n    if (!condition) {\n        throw new Error(message);\n    }\n}\n//# sourceMappingURL=assert.js.map","import { useContext, useEffect, useMemo, useState, useRef } from 'react';\nimport { MapContext } from './map';\nimport assert from '../utils/assert';\nimport { deepEqual } from '../utils/deep-equal';\n/* eslint-disable complexity, max-statements */\nfunction updateLayer(map, id, props, prevProps) {\n    assert(props.id === prevProps.id, 'layer id changed');\n    assert(props.type === prevProps.type, 'layer type changed');\n    if (props.type === 'custom' || prevProps.type === 'custom') {\n        return;\n    }\n    const { layout = {}, paint = {}, filter, minzoom, maxzoom, beforeId } = props;\n    if (beforeId !== prevProps.beforeId) {\n        map.moveLayer(id, beforeId);\n    }\n    if (layout !== prevProps.layout) {\n        const prevLayout = prevProps.layout || {};\n        for (const key in layout) {\n            if (!deepEqual(layout[key], prevLayout[key])) {\n                map.setLayoutProperty(id, key, layout[key]);\n            }\n        }\n        for (const key in prevLayout) {\n            if (!layout.hasOwnProperty(key)) {\n                map.setLayoutProperty(id, key, undefined);\n            }\n        }\n    }\n    if (paint !== prevProps.paint) {\n        const prevPaint = prevProps.paint || {};\n        for (const key in paint) {\n            if (!deepEqual(paint[key], prevPaint[key])) {\n                map.setPaintProperty(id, key, paint[key]);\n            }\n        }\n        for (const key in prevPaint) {\n            if (!paint.hasOwnProperty(key)) {\n                map.setPaintProperty(id, key, undefined);\n            }\n        }\n    }\n    if (!deepEqual(filter, prevProps.filter)) {\n        map.setFilter(id, filter);\n    }\n    if (minzoom !== prevProps.minzoom || maxzoom !== prevProps.maxzoom) {\n        map.setLayerZoomRange(id, minzoom, maxzoom);\n    }\n}\nfunction createLayer(map, id, props) {\n    // @ts-ignore\n    if (map.style && map.style._loaded && (!('source' in props) || map.getSource(props.source))) {\n        const options = { ...props, id };\n        delete options.beforeId;\n        // @ts-ignore\n        map.addLayer(options, props.beforeId);\n    }\n}\n/* eslint-enable complexity, max-statements */\nlet layerCounter = 0;\nfunction Layer(props) {\n    const map = useContext(MapContext).map.getMap();\n    const propsRef = useRef(props);\n    const [, setStyleLoaded] = useState(0);\n    const id = useMemo(() => props.id || `jsx-layer-${layerCounter++}`, []);\n    useEffect(() => {\n        if (map) {\n            const forceUpdate = () => setStyleLoaded(version => version + 1);\n            map.on('styledata', forceUpdate);\n            forceUpdate();\n            return () => {\n                map.off('styledata', forceUpdate);\n                // @ts-ignore\n                if (map.style && map.style._loaded && map.getLayer(id)) {\n                    map.removeLayer(id);\n                }\n            };\n        }\n        return undefined;\n    }, [map]);\n    // @ts-ignore\n    const layer = map && map.style && map.getLayer(id);\n    if (layer) {\n        try {\n            updateLayer(map, id, props, propsRef.current);\n        }\n        catch (error) {\n            console.warn(error); // eslint-disable-line\n        }\n    }\n    else {\n        createLayer(map, id, props);\n    }\n    // Store last rendered props\n    propsRef.current = props;\n    return null;\n}\nexport default Layer;\n//# sourceMappingURL=layer.js.map","import * as React from 'react';\nimport { useContext, useEffect, useMemo, useState, useRef } from 'react';\nimport { cloneElement } from 'react';\nimport { MapContext } from './map';\nimport assert from '../utils/assert';\nimport { deepEqual } from '../utils/deep-equal';\nlet sourceCounter = 0;\nfunction createSource(map, id, props) {\n    // @ts-ignore\n    if (map.style && map.style._loaded) {\n        const options = { ...props };\n        delete options.id;\n        delete options.children;\n        // @ts-ignore\n        map.addSource(id, options);\n        return map.getSource(id);\n    }\n    return null;\n}\n/* eslint-disable complexity */\nfunction updateSource(source, props, prevProps) {\n    assert(props.id === prevProps.id, 'source id changed');\n    assert(props.type === prevProps.type, 'source type changed');\n    let changedKey = '';\n    let changedKeyCount = 0;\n    for (const key in props) {\n        if (key !== 'children' && key !== 'id' && !deepEqual(prevProps[key], props[key])) {\n            changedKey = key;\n            changedKeyCount++;\n        }\n    }\n    if (!changedKeyCount) {\n        return;\n    }\n    const type = props.type;\n    if (type === 'geojson') {\n        source.setData(props.data);\n    }\n    else if (type === 'image') {\n        source.updateImage({\n            url: props.url,\n            coordinates: props.coordinates\n        });\n    }\n    else if ('setCoordinates' in source && changedKeyCount === 1 && changedKey === 'coordinates') {\n        source.setCoordinates(props.coordinates);\n    }\n    else if ('setUrl' in source && changedKey === 'url') {\n        source.setUrl(props.url);\n    }\n    else if ('setTiles' in source && changedKey === 'tiles') {\n        source.setTiles(props.tiles);\n    }\n    else {\n        // eslint-disable-next-line\n        console.warn(`Unable to update <Source> prop: ${changedKey}`);\n    }\n}\n/* eslint-enable complexity */\nfunction Source(props) {\n    const map = useContext(MapContext).map.getMap();\n    const propsRef = useRef(props);\n    const [, setStyleLoaded] = useState(0);\n    const id = useMemo(() => props.id || `jsx-source-${sourceCounter++}`, []);\n    useEffect(() => {\n        if (map) {\n            /* global setTimeout */\n            const forceUpdate = () => setTimeout(() => setStyleLoaded(version => version + 1), 0);\n            map.on('styledata', forceUpdate);\n            forceUpdate();\n            return () => {\n                var _a;\n                map.off('styledata', forceUpdate);\n                // @ts-ignore\n                if (map.style && map.style._loaded && map.getSource(id)) {\n                    // Parent effects are destroyed before child ones, see\n                    // https://github.com/facebook/react/issues/16728\n                    // Source can only be removed after all child layers are removed\n                    const allLayers = (_a = map.getStyle()) === null || _a === void 0 ? void 0 : _a.layers;\n                    if (allLayers) {\n                        for (const layer of allLayers) {\n                            // @ts-ignore (2339) source does not exist on all layer types\n                            if (layer.source === id) {\n                                map.removeLayer(layer.id);\n                            }\n                        }\n                    }\n                    map.removeSource(id);\n                }\n            };\n        }\n        return undefined;\n    }, [map]);\n    // @ts-ignore\n    let source = map && map.style && map.getSource(id);\n    if (source) {\n        updateSource(source, props, propsRef.current);\n    }\n    else {\n        source = createSource(map, id, props);\n    }\n    propsRef.current = props;\n    return ((source &&\n        React.Children.map(props.children, child => child &&\n            cloneElement(child, {\n                source: id\n            }))) ||\n        null);\n}\nexport default Source;\n//# sourceMappingURL=source.js.map","import * as React from 'react';\nimport { default as _Map } from './components/map';\nimport { default as _Marker } from './components/marker';\nimport { default as _Popup } from './components/popup';\nimport { default as _AttributionControl } from './components/attribution-control';\nimport { default as _FullscreenControl } from './components/fullscreen-control';\nimport { default as _GeolocateControl } from './components/geolocate-control';\nimport { default as _NavigationControl } from './components/navigation-control';\nimport { default as _ScaleControl } from './components/scale-control';\nimport { default as _Layer } from './components/layer';\nimport { default as _Source } from './components/source';\nimport { useMap as _useMap } from './components/use-map';\nexport function useMap() {\n    return _useMap();\n}\nconst mapLib = import('maplibre-gl');\nexport const Map = (() => {\n    return React.forwardRef(function Map(props, ref) {\n        return _Map(props, ref, mapLib);\n    });\n})();\nexport const Marker = _Marker;\nexport const Popup = _Popup;\nexport const AttributionControl = _AttributionControl;\nexport const FullscreenControl = _FullscreenControl;\nexport const NavigationControl = _NavigationControl;\nexport const GeolocateControl = _GeolocateControl;\nexport const ScaleControl = _ScaleControl;\nexport const Layer = _Layer;\nexport const Source = _Source;\nexport { default as useControl } from './components/use-control';\nexport { MapProvider } from './components/use-map';\nexport default Map;\n// Types\nexport * from './types/public';\nexport * from './types/style-spec-maplibre';\n//# sourceMappingURL=exports-maplibre.js.map","/*!\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 React from \"react\";\nimport {\n  Marker,\n  Source,\n} from \"react-map-gl/maplibre\";\nimport classNames from \"classnames\";\n\nimport { getLabelCharacters } from \"../../utils/helper/helper\";\nimport { splitURIForNamespaceAndTerm } from \"../../utils/strings\";\nimport { FlattenedStyleType } from \"@telicent-oss/ontologyservice\";\nimport { ClassIcon } from \"../../utils/schema\";\nimport geohash from \"../../utils/geohash/geohash\";\n// ignore story-coverage.test.ts\n\nexport const GEOJSON = \"geojson\";\nexport const FEATURE_COLLECTION = \"FeatureCollection\";\n\n\nexport type LocationFeature = {\n  type: \"Feature\";\n  properties: {\n    id: string;\n    longitude: number;\n    latitude: number;\n    name: string;\n    types: string[];\n    uri: string;\n  };\n  geometry: {\n    type: \"Point\";\n    coordinates: [number, number];\n  };\n};\n\n\ntype ResultsMarkersProps = {\n  onClick?: (marker: ResultMarker) => void;\n  selected: any;\n  findByClassUri: (maybeClassUri: string) => ClassIcon;\n  markers: ResultMarker[];\n};\n\nexport const ResultsMarkers: React.FC<ResultsMarkersProps> = ({\n  markers = [],\n  selected,\n  findByClassUri,\n  onClick\n}) => {\n  return (\n    <Source\n      id=\"document-locations\"\n      type={GEOJSON}\n      data={{ type: FEATURE_COLLECTION, features: markers }}\n      generateId\n    >\n      {markers.map((marker: ResultMarker) => (\n        <DocumentMarker key={marker.uri} marker={marker} onClick={onClick} findByClassUri={findByClassUri} selected={selected} />\n      ))}\n    </Source>\n  );\n};\n\nexport type ResultMarker = {\n  geohash: string;\n  type: string;\n  uri: string;\n  name: string;\n};\n\ntype DocumentMarkerProps = {\n  marker: ResultMarker;\n  selected: any;\n  onClick?: (marker: ResultMarker) => void;\n  findByClassUri: (maybeClassUri: string) => ClassIcon;\n};\n\nconst DocumentMarker: React.FC<DocumentMarkerProps> = ({ marker, findByClassUri, selected, onClick }) => {\n  const { latitude, longitude } = geohash.decode(marker.geohash.split(\"http://geohash.org/\")[1]);\n\n  // TODO Don't cast as FlattenedStyleType\n  // WHY its not accurate (but doesn't currently impact this code)\n  // HOW Fix upstream types\n  // WHEN have time; Perhaps after TELFE-652, TELFE-653, TELFE-654\n  const iconProps = findByClassUri(marker.type) as FlattenedStyleType;\n  const faIcon = iconProps.faIcon;\n  const color = iconProps.color;\n  const [namespace, term] = splitURIForNamespaceAndTerm(marker.type);\n  const label = term !== \"\" ? term : namespace;\n  const labelCharacters = getLabelCharacters(label);\n  const isSelected = selected.includes(marker.uri);\n\n  const handleOnClick = () => {\n    if (!onClick) return\n    onClick(marker)\n  };\n\n  return (\n    <span data-name={marker.name}>\n      <Marker\n        key={marker.uri}\n        longitude={longitude}\n        latitude={latitude}\n        onClick={handleOnClick}\n        pitchAlignment=\"map\"\n        anchor=\"center\"\n        style={{\n          backgroundColor: iconProps.backgroundColor,\n          color: color,\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          borderColor: isSelected ? \"rgb(220, 98, 251)\" : color,\n          borderRadius: \"9999px\",\n          cursor: \"pointer\",\n          borderWidth: isSelected ? \"2px\" : \"1px\",\n          width: \"28px\",\n          height: \"28px\",\n        }}\n      >\n        {faIcon ? (\n          <i data-icon={faIcon} className={classNames(faIcon, \"px-1\")} />\n        ) : (\n          <p className=\"p-1 font-body\">{labelCharacters}</p>\n        )}\n      </Marker>\n    </span>\n  );\n};\n\nexport default ResultsMarkers;\n","import * as React from 'react';\nimport { default as _Map } from './components/map';\nimport { default as _Marker } from './components/marker';\nimport { default as _Popup } from './components/popup';\nimport { default as _AttributionControl } from './components/attribution-control';\nimport { default as _FullscreenControl } from './components/fullscreen-control';\nimport { default as _GeolocateControl } from './components/geolocate-control';\nimport { default as _NavigationControl } from './components/navigation-control';\nimport { default as _ScaleControl } from './components/scale-control';\nimport { default as _Layer } from './components/layer';\nimport { default as _Source } from './components/source';\nimport { useMap as _useMap } from './components/use-map';\nexport function useMap() {\n    return _useMap();\n}\nconst mapLib = import('mapbox-gl');\nexport const Map = (() => {\n    return React.forwardRef(function Map(props, ref) {\n        return _Map(props, ref, mapLib);\n    });\n})();\nexport const Marker = _Marker;\nexport const Popup = _Popup;\nexport const AttributionControl = _AttributionControl;\nexport const FullscreenControl = _FullscreenControl;\nexport const NavigationControl = _NavigationControl;\nexport const GeolocateControl = _GeolocateControl;\nexport const ScaleControl = _ScaleControl;\nexport const Layer = _Layer;\nexport const Source = _Source;\nexport { default as useControl } from './components/use-control';\nexport { MapProvider } from './components/use-map';\nexport default Map;\n// Types\nexport * from './types/public';\nexport * from './types/style-spec-mapbox';\n//# sourceMappingURL=exports-mapbox.js.map","import { FillLayer, LineLayer, SymbolLayer } from \"react-map-gl\";\n\nconst polygon: FillLayer = {\n  id: \"polygon\",\n  type: \"fill\",\n  source: \"polygon\",\n  layout: {},\n  paint: {\n    \"fill-color\": \"#059ec0\",\n    \"fill-opacity\": 0.4,\n  },\n};\n\nconst polygonOutline: LineLayer = {\n  id: \"outline\",\n  type: \"line\",\n  source: \"polygon-outline\",\n  layout: {},\n  paint: {\n    \"line-color\": \"#5495cc\",\n    \"line-opacity\": 0.6,\n    \"line-width\": 1,\n  },\n};\n\nconst labels: SymbolLayer = {\n  id: \"labels\",\n  type: \"symbol\",\n  source: \"labels\",\n  layout: {\n    \"text-field\": [\"get\", \"TA_NAME\"],\n    \"text-variable-anchor\": [\"top\", \"bottom\", \"left\", \"right\"],\n    \"text-radial-offset\": 100,\n    \"text-offset\": [10, -10],\n    \"text-justify\": \"auto\",\n    \"text-font\": [\"Figtree\"],\n    \"text-size\": 14,\n    \"icon-image\": \"circle\",\n    \"icon-anchor\": \"center\",\n    \"icon-size\": 0,\n    \"symbol-placement\": \"line\",\n  },\n  paint: {\n    \"icon-opacity\": 0,\n    \"text-color\": \"#DDDDDD\",\n    \"icon-color\": \"#DDDDDD\",\n    \"text-halo-color\": \"#1D1D1D\",\n    \"text-halo-width\": 2,\n  },\n};\n\nconst POLYGON_LAYERS = [polygon, polygonOutline, labels];\nexport default POLYGON_LAYERS;\n","import { Source, Layer } from \"react-map-gl\"\nimport { FeatureCollection, Feature } from \"geojson\";\nimport POLYGON_LAYERS from \"../utils/polygonStyles\"\nimport React from \"react\";\n\n// ignore story-coverage.test.ts\ninterface PolygonMarkersProps {\n  geometryCollection: FeatureCollection;\n  layers?: (mapboxgl.FillLayer | mapboxgl.LineLayer | mapboxgl.SymbolLayer)[];\n}\n\nconst PolygonMarkers: React.FC<PolygonMarkersProps> = ({ geometryCollection, layers = POLYGON_LAYERS}) => {\n  return (\n    <Source\n      id=\"polygons\"\n      type=\"geojson\"\n      data={geometryCollection}\n    >\n      {layers.map((layer) => (\n        <Layer key={layer.id} {...layer} />\n      ))}\n    </Source>\n  )\n}\n\nexport default PolygonMarkers;\n","// src/features/mapCanvas/MapCanvasContext.tsx\n// TODO rename AppWideMapCanvasProvider\nimport React, {\n  createContext,\n  useState,\n  useCallback,\n  useMemo,\n  useContext,\n  ReactNode,\n} from \"react\";\nimport { z } from \"zod\";\n\nimport { StyleOption } from \"../../utils/schema\";\nimport { LayerOption } from \"../LayerSelector/primitives/LayerSelectorPresentational\";\n\n\nexport const MapBoxSourceSchema = z.object({\n  label: z.string(),\n  uri: z.string(),\n  image: z.string(),\n});\ntype MapBoxSource = z.infer<typeof MapBoxSourceSchema>;\n\ninterface MapStyleConfig {\n  vectorStyles?: StyleOption | StyleOption[];\n  tileSets?: StyleOption[];\n}\ntype MapCanvasConfig = {\n  tileSets: StyleOption[];\n  vectorStyles?: StyleOption | StyleOption[];\n};\n\ninterface StyleSelectorState {\n  selected: MapBoxSource | null;\n  mapConfig: MapCanvasConfig;\n  props: {\n    onChange: (v: LayerOption) => void;\n    data: StyleOption[];\n  };\n}\n\nexport interface MapCanvasState {\n  styleSelector: StyleSelectorState;\n  // add more global state here (zoom, center, overlays…)\n}\n\nconst MapCanvasContext = createContext<MapCanvasState | undefined>(undefined);\n\n/**\n * For state that is shared throughout the app\n */\nexport const MapCanvasProvider: React.FC<{\n  initialMapStyleConfig: MapStyleConfig;\n  children: ReactNode;\n}> = ({ initialMapStyleConfig, children }) => {\n  const [selected, setSelected] = useState<MapBoxSource | null>(null);\n  const [mapConfig] = useState<MapCanvasConfig>(() => ({\n    tileSets: [],\n    ...initialMapStyleConfig,\n  }));\n  const onChange = useCallback((v: LayerOption) => setSelected(v), []);\n  const data = useMemo(() => {\n    const vectorStylesArr = Array.isArray(mapConfig.vectorStyles)\n      ? mapConfig.vectorStyles\n      : mapConfig.vectorStyles\n      ? [mapConfig.vectorStyles]\n      : [];\n    return [...vectorStylesArr, ...mapConfig.tileSets];\n  }, [mapConfig.vectorStyles, mapConfig.tileSets]);\n\n  return (\n    <MapCanvasContext.Provider\n      value={{\n        styleSelector: { selected, mapConfig, props: { onChange, data } },\n      }}\n    >\n      {children}\n    </MapCanvasContext.Provider>\n  );\n};\n\nexport const useMapCanvasContext = (): MapCanvasState => {\n  const ctx = useContext(MapCanvasContext);\n  if (!ctx) throw new Error(\"useMapCanvas must be used within MapCanvasProvider\");\n  return ctx;\n};\n","// src/components/MapCanvas.tsx\nimport React from \"react\";\nimport Map, {\n  Source,\n  Layer,\n  MapRef,\n} from \"react-map-gl/maplibre\";\nimport ResultsMarkers, { ResultMarker } from \"../ResultsMarkers/ResultsMarkers\";\nimport PolygonMarkers from \"../Polygons\";\nimport { useTheme, GlobalStyles } from \"@mui/material\";\nimport { useMapCanvasContext } from \"./MapCanvasProvider\";\n\n// Note: without these styles the map container will be unrestrained,\n// and can cause it to resize - triggering other logic.\nimport \"maplibre-gl/dist/maplibre-gl.css\";\nimport \"./map.css\";\n\nexport interface MapCanvasProps {\n  mapRef: React.RefObject<MapRef | null>;\n  initialViewState: {\n    latitude: number;\n    longitude: number;\n    zoom: number;\n    maxZoom: number;\n  };\n  cursor?: string;\n  onDragStart: () => void;\n  onDragEnd: () => void;\n  onMouseEnter: () => void;\n  onMouseLeave: () => void;\n  onLoad: () => void;\n  defaultStyle?: string;\n  attributionControl: boolean;\n  markers: ResultMarker[];\n  geoPolygons: GeoJSON.FeatureCollection;\n  selected: string[];\n  onClickMarker?: (m: ResultMarker) => void;\n  findByClassUri: (u: string) => any;\n  polygonLayers?: (\n    | mapboxgl.FillLayer\n    | mapboxgl.LineLayer\n    | mapboxgl.SymbolLayer\n  )[];\n}\n\nconst W_H_100 = { width: \"100%\", height: \"100%\" };\n\nexport const MapCanvas: React.FC<MapCanvasProps> = ({\n  mapRef,\n  initialViewState,\n  cursor,\n  onDragStart,\n  onDragEnd,\n  onMouseEnter,\n  onMouseLeave,\n  onLoad,\n  defaultStyle,\n  attributionControl,\n  markers,\n  geoPolygons,\n  selected,\n  onClickMarker,\n  findByClassUri,\n  polygonLayers,\n}) => {\n  const { styleSelector } = useMapCanvasContext();\n  const theme = useTheme();\n\n  return (\n    <>\n      <GlobalStyles\n        styles={{\n          [`#TelicentMap .maplibregl-ctrl-attrib, \n          #TelicentMap .maplibregl-ctrl-attrib a\n          `]: {\n            backgroundColor:\n              theme.palette.mode === \"dark\"\n                ? theme.palette.background.default\n                : theme.palette.background.paper,\n            color: theme.palette.text.primary,\n          },\n          // Uses a background-image of a black info icon.\n          [`#TelicentMap .maplibregl-ctrl-attrib-button`]: {\n            backgroundColor: 'transparent',\n            ...(theme.palette.mode === \"dark\" ? { filter: 'invert(100%)' } : { filter: 'invert(10%)' })\n          }\n        }}\n      />\n      <Map\n        ref={mapRef}\n        id=\"TelicentMap\"\n        onLoad={onLoad}\n        initialViewState={initialViewState}\n        cursor={cursor}\n        interactiveLayerIds={[\"document-locations-layer\"]}\n        scrollZoom\n        mapStyle={defaultStyle}\n        attributionControl={attributionControl}\n        onDragStart={onDragStart}\n        onDragEnd={onDragEnd}\n        onMouseEnter={onMouseEnter}\n        onMouseLeave={onMouseLeave}\n        style={W_H_100}\n      >\n        {styleSelector.mapConfig.tileSets.map((el) => (\n          <Source\n            key={el.label}\n            id={`tile-${el.label}`}\n            type=\"raster\"\n            tiles={[el.uri]}\n            tileSize={256}\n          >\n            <Layer\n              id={`layer-${el.label}`}\n              type=\"raster\"\n              layout={{\n                visibility:\n                  styleSelector.selected?.uri === el.uri\n                    ? \"visible\"\n                    : \"none\",\n              }}\n            />\n          </Source>\n        ))}\n        <ResultsMarkers\n          markers={markers}\n          selected={selected}\n          onClick={onClickMarker}\n          findByClassUri={findByClassUri}\n        />\n        <PolygonMarkers\n          geometryCollection={geoPolygons}\n          layers={polygonLayers}\n        />\n      </Map>\n    </>\n  );\n};\n","import { FeatureCollection } from \"geojson\";\n\nexport const DEFAULT_VIEW = {\n  latitude: 53.42148743839479,\n  longitude: -3.863068679356047,\n  zoom: 3,\n  maxZoom: 16,\n};\nexport const DEFAULT_GEO_POLYGONS:FeatureCollection = { type: \"FeatureCollection\", features: [] }","// src/components/BasicMap.tsx\nimport React from \"react\";\nimport { FlexGrid, FlexGridItem } from \"../../../../export\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { useMapCanvas } from \"../../primitives/MapCanvas/useMapCanvas\";\nimport { MapCanvas } from \"../../primitives/MapCanvas/MapCanvas\";\nimport { DEFAULT_GEO_POLYGONS, DEFAULT_VIEW } from \"../../constants\";\nimport { FeatureMapProps } from \"../FeatureMap/FeatureMap\";\n \nexport type BasicMapProps = FeatureMapProps;\n\nexport const BasicMap: React.FC<FeatureMapProps> = ({\n  markers = [],\n  selected,\n  geoPolygons = DEFAULT_GEO_POLYGONS,\n  initialViewState = DEFAULT_VIEW,\n  defaultStyle,\n  onClickMarker,\n  findByClassUri,\n  attributionControl = true,\n  polygonLayers,\n}) => {\n  const {\n    mapRef,\n    cursor,\n    onDragStart,\n    onDragEnd,\n    onMouseEnter,\n    onMouseLeave,\n    onLoad,\n  } = useMapCanvas({ markers, geoPolygons, selected });\n\n  return (\n    <ErrorBoundary fallback={<p>Failed to load map</p>}>\n      <FlexGrid\n        m={0}\n        direction=\"column\"\n        style={{ width: \"100%\", height: \"100%\" }}\n      >\n        <FlexGridItem flexGrow={1}>\n          <MapCanvas\n            mapRef={mapRef}\n            initialViewState={initialViewState}\n            cursor={cursor}\n            onDragStart={onDragStart}\n            onDragEnd={onDragEnd}\n            onMouseEnter={onMouseEnter}\n            onMouseLeave={onMouseLeave}\n            onLoad={onLoad}\n            defaultStyle={defaultStyle}\n            attributionControl={attributionControl}\n            markers={markers}\n            geoPolygons={geoPolygons}\n            selected={selected}\n            onClickMarker={onClickMarker}\n            findByClassUri={findByClassUri}\n            polygonLayers={polygonLayers}\n          />\n        </FlexGridItem>\n      </FlexGrid>\n    </ErrorBoundary>\n  );\n};\n","import React from \"react\";\nimport { Box } from \"@mui/material\";\n// ignore story-coverage.test.ts\n\ninterface ImageProps {\n  borderColor?: string;\n  src: string;\n  alt?: string;\n  title: string;\n  role?: React.AriaRole;\n}\n\nexport const Image: React.FC<ImageProps> = ({ borderColor, src, alt, title, role }) => (\n  <Box\n    sx={{\n      border: `2px solid ${borderColor}`,\n      borderRadius: \"3px\",\n      overflow: \"hidden\",\n      // Copied from MUI SVGs\n      display: \"inline-block\",\n      height: \"1em\",\n      fontSize: \"1.5rem\",\n    }}\n    mr={1}\n  >\n    <img\n      src={src}\n      alt={alt}\n      role={role}\n      title={title}\n      style={{\n        width: 25,\n        height: 20,\n      }}\n    />\n  </Box>\n);\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faAngleDown, faAngleUp } from \"@fortawesome/free-solid-svg-icons\";\nimport { PopOver, FlexGrid, FlexGridItem, Button, Text, useExtendedTheme, ButtonProps } from \"../../../../../export\";\nimport { Image } from \"./Image\";\nimport { PopOverProps } from \"../../../../../components/surfaces/PopOver/Popover\";\n\n// ignore story-coverage.test.ts\n\nexport interface LayerOption {\n  uri: string;\n  image: string;\n  label: string;\n}\n\nexport interface PresentationalProps extends Pick<ButtonProps, \"sx\" | \"variant\" | \"color\" | \"size\"> {\n  selectedIndex: number;\n  data: LayerOption[];\n  anchorEl: HTMLButtonElement | null;\n  onCloseDropdown: PopOverProps[\"onClose\"];\n  onClickDropdown: ButtonProps[\"onClick\"];\n  onListItemClick: (index: number) => void;\n}\n\nexport const LayerSelectorPresentationalButton: React.FC<PresentationalProps> = ({\n  data,\n  selectedIndex,\n  anchorEl,\n  onClickDropdown,\n  sx,\n  variant,\n  color,\n}) => {\n  const extendedTheme = useExtendedTheme();\n  const isOpen = Boolean(anchorEl);\n  const id = isOpen ? \"layer-selector-popover\" : undefined;\n  if (data?.[selectedIndex]?.image === undefined) {\n    console.warn(`No image at ${selectedIndex} in ${JSON.stringify(data)}`);\n  }\n  return (\n    <Button\n      id=\"layer-selector\"\n      size=\"large\"\n      aria-describedby={id}\n      onClick={onClickDropdown}\n      sx={sx}\n      variant={variant}\n      color={color}\n    >\n      <Image\n        borderColor={extendedTheme.palette.primary.main}\n        src={data[selectedIndex].image}\n        alt={data[selectedIndex].label}\n        title={data[selectedIndex].label}\n      />\n      <FontAwesomeIcon icon={isOpen ? faAngleUp : faAngleDown} />\n    </Button>\n  );\n};\n\nexport const LayerSelectorPresentationalPopOver: React.FC<PresentationalProps> = ({\n  data,\n  selectedIndex,\n  anchorEl,\n  onCloseDropdown,\n  onListItemClick,\n}) => {\n  const extendedTheme = useExtendedTheme();\n  const isOpen = Boolean(anchorEl);\n  const id = isOpen ? \"layer-selector-popover\" : undefined;\n\n  return (\n    <PopOver\n      id={id}\n      open={isOpen}\n      anchorEl={anchorEl}\n      onClose={onCloseDropdown}\n      anchorOrigin={{\n        vertical: \"bottom\",\n        horizontal: \"left\",\n      }}\n      transformOrigin={{\n        vertical: \"top\",\n        horizontal: \"left\",\n      }}\n    >\n      {\n        <FlexGrid direction=\"column\">\n          {data.map((item, index) => (\n            <FlexGridItem alignContent={\"flex-start\"} key={item.label}>\n              <Button\n                disabled={index === selectedIndex}\n                onClick={() => onListItemClick(index)}\n                variant=\"text\"\n                key={item.label}\n                sx={{ width: \"100%\", justifyContent: \"flex-start\" }}\n              >\n                <Image\n                  borderColor={index === selectedIndex ? extendedTheme.palette.primary.main : \"transparent\"}\n                  src={item.image}\n                  alt={item.label}\n                  title={item.label}\n                />\n                <Text textTransform=\"capitalize\" variant=\"body2\">\n                  {item.label}\n                </Text>\n              </Button>\n            </FlexGridItem>\n          ))}\n        </FlexGrid>\n      }\n    </PopOver>\n  );\n};\n","import React, { useState } from \"react\";\nimport { LayerOption } from \"./LayerSelectorPresentational\";\n// ignore story-coverage.test.ts\n\nexport const useLayerSelector = ({\n  data,\n  onChange,\n}: {\n  data: LayerOption[];\n  onChange: (layer: LayerOption) => void;\n}) => {\n  const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n  const [selectedIndex, setSelectedIndex] = useState(0);\n  React.useEffect(() => {\n    onChange(data[selectedIndex]);\n  }, []);\n\n  const handleClickDropdown = (event: React.MouseEvent<HTMLButtonElement>) => {\n    if (anchorEl) {\n      cycleSelection();\n    } else {\n      setAnchorEl(event.currentTarget);\n    }\n  };\n\n  const handleCloseDropdown = () => {\n    setAnchorEl(null);\n  };\n\n  const cycleSelection = () => {\n    const nextIndex = (selectedIndex + 1) % data.length;\n    setSelectedIndex(nextIndex);\n    onChange(data[nextIndex]);\n  };\n\n  const handleListItemClick = (index: number) => {\n    setSelectedIndex(index);\n    onChange(data[index]);\n    handleCloseDropdown();\n  };\n\n  return {\n    data,\n    selectedIndex,\n    anchorEl,\n    onClickDropdown: handleClickDropdown,\n    onCloseDropdown: handleCloseDropdown,\n    onListItemClick: handleListItemClick,\n  };\n};\n","import React from 'react';\nimport { useMapCanvasContext } from '../../../MapCanvas/MapCanvasProvider';\nimport { LayerSelectorPresentationalButton, LayerSelectorPresentationalPopOver } from '../../primitives/LayerSelectorPresentational';\nimport { useLayerSelector } from '../../primitives/useLayerSelector';\n// ignore story-coverage.test.ts\n\nexport const LayerSelector: React.FC = () => {\n  const context = useMapCanvasContext();\n  const hook = useLayerSelector(context.styleSelector.props);\n  if (context.styleSelector.props.data.length <= 1) {\n    return null;\n  }\n  return (\n    <div>\n      <LayerSelectorPresentationalButton variant=\"text\" {...hook} />\n      <LayerSelectorPresentationalPopOver {...hook} />\n    </div>\n  );\n};\n","// src/components/FeatureMap/FeatureMap.tsx\nimport React from \"react\";\nimport { LayerSelector } from \"../../primitives/LayerSelector/composites/LayerSelector/LayerSelector\";\nimport { FlexGrid, FlexGridItem, UIThemeProvider, UITheme } from \"../../../../export\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { useMapCanvas } from \"../../primitives/MapCanvas/useMapCanvas\";\nimport { MapCanvas, MapCanvasProps } from \"../../primitives/MapCanvas/MapCanvas\";\nimport { DEFAULT_GEO_POLYGONS, DEFAULT_VIEW } from \"../../constants\";\nimport { MapProvider } from \"react-map-gl/maplibre\";\n\n// TODO bad type\ntype Picked = Pick<\n  MapCanvasProps,\n  | \"initialViewState\"\n  | \"defaultStyle\"\n  | \"attributionControl\"\n  | \"markers\"\n  | \"geoPolygons\"\n  | \"selected\"\n  | \"onClickMarker\"\n  | \"findByClassUri\"\n>;\n\ntype Optional = Pick<\n  Picked,\n  \"initialViewState\" | \"geoPolygons\" | \"attributionControl\"\n>;\n\ntype Optionalized = Partial<Optional>;\n\ntype RequiredRest = Omit<Picked, keyof Optional>;\n\nexport interface FeatureMapProps\n  extends RequiredRest,       // everything except initialViewState & geoPolygons\n          Optionalized       // those two, now optional\n{\n  theme?: UITheme;\n  polygonLayers?: (\n    | mapboxgl.FillLayer\n    | mapboxgl.LineLayer\n    | mapboxgl.SymbolLayer\n  )[];\n}\n\n\n\nconst FeatureMap: React.FC<FeatureMapProps> = ({\n  markers = [],\n  selected,\n  theme = \"DocumentPink\",\n  geoPolygons = DEFAULT_GEO_POLYGONS,\n  initialViewState = DEFAULT_VIEW,\n  defaultStyle,\n  onClickMarker,\n  findByClassUri,\n  attributionControl = true,\n  polygonLayers,\n}) => {\n  \n  const { mapRef, cursor, onDragStart, onDragEnd, onMouseEnter, onMouseLeave, onLoad } =\n    useMapCanvas({ markers, geoPolygons, selected });\n\n  return (\n    <UIThemeProvider dark theme={theme}>\n      <ErrorBoundary fallback={<p>Failed to load map</p>}>\n        <div className=\"contents\">\n          <FlexGrid\n            m={0}\n            direction=\"column\"\n            style={{ width: \"100%\", height: \"100%\" }}\n          >\n            <FlexGridItem flexGrow={1}>\n              <MapProvider>\n                <MapCanvas\n                  mapRef={mapRef}\n                  initialViewState={initialViewState}\n                  cursor={cursor}\n                  onDragStart={onDragStart}\n                  onDragEnd={onDragEnd}\n                  onMouseEnter={onMouseEnter}\n                  onMouseLeave={onMouseLeave}\n                  onLoad={onLoad}\n                  defaultStyle={defaultStyle}\n                  attributionControl={attributionControl}\n                  markers={markers}\n                  geoPolygons={geoPolygons}\n                  selected={selected}\n                  onClickMarker={onClickMarker}\n                  findByClassUri={findByClassUri}\n                  polygonLayers={polygonLayers}\n                />\n              </MapProvider>\n            </FlexGridItem>\n            <FlexGridItem flexGrow={0} p={1}>\n              <LayerSelector />\n            </FlexGridItem>\n          </FlexGrid>\n        </div>\n      </ErrorBoundary>\n    </UIThemeProvider>\n  );\n};\n\nexport default FeatureMap;\n","import React from \"react\";\nimport { useMapCanvasContext } from \"../../../MapCanvas/MapCanvasProvider\";\nimport {\n  LayerSelectorPresentationalPopOver,\n  PresentationalProps,\n} from \"../../primitives/LayerSelectorPresentational\";\nimport { useLayerSelector } from \"../../primitives/useLayerSelector\";\nimport { Image } from \"../../primitives/Image\";\nimport { Box, Paper } from \"@mui/material\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Button, useExtendedTheme } from \"../../../../../../export\";\nimport { faAngleUp, faAngleDown } from \"@fortawesome/free-solid-svg-icons\";\n// ignore story-coverage.test.ts\n\nexport const PresentationalButton: React.FC<PresentationalProps> = ({\n  data,\n  selectedIndex,\n  anchorEl,\n  onClickDropdown,\n  sx,\n  color,\n  variant,\n}) => {\n  const extendedTheme = useExtendedTheme();\n  const isOpen = Boolean(anchorEl);\n  const id = isOpen ? \"layer-selector-popover\" : undefined;\n  return (\n    <Box>\n      <Paper>\n        <Button\n          size=\"large\"\n          id=\"layer-selector\"\n          aria-describedby={id}\n          onClick={onClickDropdown}\n          sx={{\n            display: \"flex\",\n            alignItems: \"center\",\n            height: \"100%\",\n            width: \"100%\",\n            ...sx,\n          }}\n          color={color}\n          variant={variant}\n        >\n          <Image\n            borderColor={extendedTheme.palette.primary.main}\n            src={data[selectedIndex].image}\n            alt={data[selectedIndex].label}\n            title={data[selectedIndex].label}\n          />\n          &nbsp;\n          <Box component=\"span\" sx={{ ml: 1, display: \"flex\" }}>\n            <FontAwesomeIcon icon={isOpen ? faAngleUp : faAngleDown} />\n          </Box>\n        </Button>\n      </Paper>\n    </Box>\n  );\n};\n\nexport const LayerSelectorInsetInMap: React.FC<\n  Pick<PresentationalProps, \"color\" | \"sx\" | \"variant\">\n> = ({ variant, color, sx }) => {\n  const context = useMapCanvasContext();\n  const hook = useLayerSelector(context.styleSelector.props);\n  if (context.styleSelector.props.data.length <= 1) {\n    return null;\n  }\n  return (\n    <>\n      <PresentationalButton {...{ variant, color, sx }} {...hook} />\n      <LayerSelectorPresentationalPopOver {...hook} />\n    </>\n  );\n};\n","// pages/Search/ButtonZoomIn.tsx\nimport React from \"react\";\nimport { IconButton } from \"@mui/material\";\nimport { Add as AddIcon } from \"@telicent-oss/mui-icons-material\";\n\nexport const ButtonZoomIn: React.FC<{ onClick?: () => void }> = ({\n  onClick,\n}) => (\n  <IconButton onClick={onClick} size=\"small\">\n    <AddIcon />\n  </IconButton>\n);\n","// pages/Search/ButtonZoomOut.tsx\nimport React from \"react\";\nimport { IconButton } from \"@mui/material\";\nimport { Remove as RemoveIcon } from \"@telicent-oss/mui-icons-material\";\n\nexport const ButtonZoomOut: React.FC<{ onClick?: () => void }> = ({\n  onClick,\n}) => (\n  <IconButton onClick={onClick} size=\"small\">\n    <RemoveIcon />\n  </IconButton>\n);\n","// pages/Search/MapToggleButton.tsx\nimport React from \"react\";\nimport { Box, FormControlLabel, IconButton, Paper } from \"@mui/material\";\n\nimport { List as ListIcon } from \"@telicent-oss/mui-icons-material\";\nimport SecondaryButton, { SecondaryButtonProps } from \"../../../../components/buttons/Button/SecondaryButton\";\n\nexport const MapToggleButtonPresentational: React.FC<SecondaryButtonProps> = (props) => {\n  return (\n    <Box>\n      <Paper>\n        <SecondaryButton {...props}>\n          Back to list view\n          <IconButton>\n            <ListIcon />\n          </IconButton>\n        </SecondaryButton>\n      </Paper>\n    </Box>\n  );\n};\n","export const STYLES = {\n  left: {\n    paper: {\n      border: \"none\",\n      borderRadius: \"8 !important\",\n      borderTopLeftRadius: \"0 !important\",\n      borderBottomLeftRadius: \"0 !important\",\n    },\n  },\n  HACK_NO_BORDER: {\n    // Currently (18July2025) I don't trust theme\n    border: \"none !important\",\n    borderRadius: \"0 !important\",\n  },\n};\n","import React from \"react\";\nimport { Box, BoxProps, IconButtonProps, SxProps, Theme } from \"@mui/material\";\nimport { Paper } from \"../../../export\";\nimport { IconButton } from \"../../../components/buttons\";\nimport { STYLES } from \"./constants\";\n// ignore story-coverage.test.ts\n\nexport type TabButtonProps = {\n  id: string;\n  BoxSx: BoxProps[\"sx\"]; // IDEA normalize against theme (when sx is a fn)\n  onClick: IconButtonProps[\"onClick\"];\n  children: React.ReactNode;\n  PaperSx?: SxProps<Theme>;\n};\n\nexport const TabButton: React.FC<TabButtonProps> = ({ id: dataTestId, BoxSx, PaperSx, onClick, children }) => (\n  <Box\n    id={dataTestId}\n    sx={{\n      position: \"absolute\",\n      top: \"50%\",\n      transform: \"translateY(-50%)\",\n      height: \"100%\",\n      maxHeight: 185,\n      width: 34,\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"visible\",\n      pointerEvents: \"auto\",\n      ...BoxSx,\n    }}\n  >\n    <Paper\n      id={`${dataTestId}-Paper`}\n      elevation={0}\n      variant=\"outlined\"\n      sx={{\n        boxShadow: \"none !important\",\n        height: \"100%\",\n        width: \"100%\",\n        ...STYLES.HACK_NO_BORDER,\n        ...STYLES.left.paper,\n        ...PaperSx,\n      }}\n    >\n      <IconButton\n        id={`${dataTestId}-IconButton`}\n        color=\"inherit\"\n        onClick={onClick}\n        disableRipple\n        sx={{\n          \"&:hover\": {\n            backgroundColor: \"transparent\",\n          },\n          height: \"100%\",\n          width: \"100%\",\n          p: 0,\n        }}\n      >\n        {children}\n      </IconButton>\n    </Paper>\n  </Box>\n);\n","import React, { forwardRef, ReactNode } from \"react\";\nimport MuiDrawer, {\n  DrawerProps as MuiMuiDrawerProps,\n} from \"@mui/material/Drawer\";\nimport { Box } from \"@mui/material\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\nimport { ChevronRight as ChevronRightIcon } from \"@telicent-oss/mui-icons-material\";\nimport { ChevronLeft as ChevronLeftIcon } from \"@telicent-oss/mui-icons-material\";\nimport { TabButton } from \"./TabButton\";\nimport { STYLES } from \"./constants\";\n// ignore story-coverage.test.ts\nexport const NAME = \"drawer-presentational\";\n\nexport interface DrawerPresentationalProps\n  extends Omit<MuiMuiDrawerProps, \"PaperProps\" | \"onToggle\">,\n  Omit<React.HTMLAttributes<HTMLDivElement>, \"onToggle\"> {\n  PaperProps?: MuiMuiDrawerProps[\"PaperProps\"];\n  // IDEA Alternative to PaperSx is a theme\n  PaperSx?: SxProps<Theme>;\n  drawerWidth?: number;\n  children: ReactNode;\n  onToggle?: React.MouseEventHandler<HTMLButtonElement>;\n  id?: string;\n}\n\nexport const resolveWidth = (\n  drawerWidth?: number,\n  styleWidth?: number | string,\n  defaultWidth = 800\n): number => {\n  if (drawerWidth != null) return drawerWidth;\n  const parsed = parseFloat(String(styleWidth));\n  return Number.isFinite(parsed) ? parsed : defaultWidth;\n};\n\nexport const DrawerPresentational = forwardRef<\n  HTMLDivElement,\n  DrawerPresentationalProps\n>(function DrawerPresentational(\n  {\n    open,\n    onClose,\n    onToggle,\n    PaperProps,\n    PaperSx,\n    drawerWidth,\n    style,\n    children,\n    [\"id\"]: id = \"\",\n    ...props\n  },\n  ref\n) {\n  const width = resolveWidth(drawerWidth, style?.width, 800);\n  const defaultPaperSx: SxProps<Theme> = {\n    width,\n    boxSizing: \"border-box\",\n    position: \"relative\",\n    overflow: \"visible\",\n    transform: open ? \"translateX(0)\" : `translateX(-${width}px) `,\n    transition: \"transform 300ms ease\",\n    ...STYLES.HACK_NO_BORDER,\n  };\n\n  const mergedPaperSx = Object.assign(\n    {},\n    defaultPaperSx,\n    ...(Array.isArray(PaperSx) ? PaperSx : [PaperSx]),\n    ...(PaperProps?.sx\n      ? Array.isArray(PaperProps.sx)\n        ? PaperProps.sx\n        : [PaperProps.sx]\n      : [])\n  );\n\n  return (\n    <Box\n      id={id || NAME}\n      sx={{ position: \"relative\", overflow: \"visible\", height: \"100%\" }}\n    >\n      <MuiDrawer\n        id={`${NAME}--drawer`}\n        variant=\"persistent\"\n        anchor=\"left\"\n        open={open}\n        onClose={onClose}\n        ModalProps={{\n          keepMounted: true,\n          sx: { overflow: \"visible\" },\n        }}\n        SlideProps={{\n          style: { overflow: \"visible\" },\n        }}\n        PaperProps={{\n          [\"id\"]: `${NAME}--muidrawer-paper`,\n          elevation: 0,\n          square: true,\n          sx: {\n            ...mergedPaperSx,\n            ...STYLES.HACK_NO_BORDER,\n          },\n          ...PaperProps,\n        }}\n        style={style}\n        {...props}\n      >\n        <Box\n          id={`${NAME}--box-scrollable`}\n          ref={ref}\n          sx={{\n            width,\n            height: \"100%\",\n            overflowY: \"auto\",\n            position: \"relative\",\n          }}\n        >\n          {children}\n        </Box>\n\n        {onToggle && open && (\n          <TabButton\n            BoxSx={{\n              right: -34,\n            }}\n            PaperSx={PaperSx}\n            onClick={onToggle}\n            id={`${NAME}--toggle-stand-in`}\n          >\n            <ChevronLeftIcon id=\"chevron-left-icon\" fontSize=\"large\" />\n          </TabButton>\n        )}\n      </MuiDrawer>\n      {onToggle && (\n        <TabButton\n          BoxSx={{\n            transform: \"translate(0%, -50%)\",\n            zIndex: (theme) => theme.zIndex.drawer + 1,\n            transition: \"transform 300ms ease 300ms, opacity 0ms ease\",\n            opacity: open ? 0 : 1,\n            pointerEvents: open ? \"none\" : \"auto\",\n            left: 0,\n          }}\n          PaperSx={PaperSx}\n          onClick={onToggle}\n          id={`${NAME}--toggle-animated-slide`}\n        >\n          <ChevronRightIcon id=\"chevron-right-icon\" fontSize=\"large\" />\n        </TabButton>\n      )}\n    </Box>\n  );\n});\n\nDrawerPresentational.displayName = \"DrawerPresentational\";\n","import {\n  useState,\n  useCallback,\n  useRef,\n  useEffect,\n  useImperativeHandle,\n  ForwardedRef,\n} from \"react\";\n\nexport interface DrawerController {\n  openDrawer(): void;\n  closeDrawer(): void;\n  toggleDrawer(): void;\n  getContainer(): HTMLDivElement | null;\n}\n/**\n *\n * @param ref ref from fowardedRef.\n * @param initialOpen\n * @param onVisibilityChange\n * @returns\n */\nexport function useDrawer(args: {\n  ref: ForwardedRef<DrawerController>;\n  initialOpen: boolean;\n  onVisibilityChange?: (open: boolean) => void\n}) {\n  const [open, setOpen] = useState(args.initialOpen);\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const openDrawer = useCallback(() => setOpen(true), []);\n  const closeDrawer = useCallback(() => setOpen(false), []);\n  const toggleDrawer = useCallback(() => setOpen((o) => !o), []);\n\n  useEffect(() => {\n    args.onVisibilityChange?.(open);\n  }, [open, args.onVisibilityChange]);\n\n  useImperativeHandle(\n    args.ref,\n    () => ({\n      openDrawer,\n      closeDrawer,\n      toggleDrawer,\n      getContainer: () => containerRef.current,\n    }),\n    [openDrawer, closeDrawer, toggleDrawer]\n  );\n\n  return {\n    open,\n    openDrawer,\n    closeDrawer,\n    toggleDrawer,\n    ref: containerRef,\n    // Conveniance to lessen chance of forgetting to apply containerRef\n    drawerProps: {\n      ref: containerRef,\n      onToggle: toggleDrawer,\n      onClose: closeDrawer,\n      open,\n    },\n  };\n}\n","import React, { forwardRef } from \"react\";\nimport {\n  DrawerPresentational,\n  DrawerPresentationalProps,\n} from \"../primitives/DrawerPresentational\";\nimport { useDrawer, DrawerController } from \"../primitives/useDrawer\";\nimport { SxProps, Theme } from \"@mui/material\";\nexport { useDrawer, type DrawerController } from \"../primitives/useDrawer\";\n\nexport interface DrawerProps\n  extends Omit<\n    DrawerPresentationalProps,\n    \"open\" | \"onClose\" | \"ref\" // required by app TS checks\n  > {\n  /** (default: true) */\n  initialOpen?: boolean;\n  onVisibilityChange?: (open: boolean) => void;\n  PaperSx?: SxProps<Theme>;\n}\n\nexport const Drawer = forwardRef<DrawerController, DrawerProps>(\n  ({ initialOpen = true, onVisibilityChange, children, ...rest }, ref) => {\n    const { drawerProps } = useDrawer({\n      ref,\n      initialOpen,\n      onVisibilityChange,\n    });\n\n    return (\n      <DrawerPresentational {...drawerProps} {...rest}>\n        {children}\n      </DrawerPresentational>\n    );\n  }\n);\n\nDrawer.displayName = \"Drawer\";\n","import React from \"react\";\nimport { Box, BoxProps, Button } from \"@mui/material\";\nimport { Position } from \"../InsetInMap\";\nexport * from '../../Drawer/composites/Drawer';\n\n\n\n// omit BoxProps['position'] to avoid collision\nexport interface ControlAreaProps extends Omit<BoxProps, 'position'> {\n  position: Position;\n}\n\nexport const ControlArea: React.FC<ControlAreaProps> = ({ position, children, sx, ...props }) => {\n  const posStyles: React.CSSProperties = { position: \"absolute\" };\n  switch (position) {\n    case \"left\":\n      Object.assign(posStyles, { left: 0, top: \"50%\", transform: \"translateY(-50%)\" });\n      break;\n    case \"topLeft\":\n      Object.assign(posStyles, { left: 0, top: 0 });\n      break;\n    case \"bottomLeft\":\n      Object.assign(posStyles, { left: 0, bottom: 0 });\n      break;\n    case \"right\":\n      Object.assign(posStyles, { right: 0, top: \"50%\", transform: \"translateY(-50%)\" });\n      break;\n    case \"topRight\":\n      Object.assign(posStyles, { right: 0, top: 0 });\n      break;\n    case \"bottomRight\":\n      Object.assign(posStyles, { right: 0, bottom: 0 });\n      break;\n    case \"top\":\n      Object.assign(posStyles, { top: 0, left: \"50%\", transform: \"translateX(-50%)\" });\n      break;\n    case \"center\":\n      Object.assign(posStyles, { top: \"50%\", left: \"50%\", transform: \"translate(-50%, -50%)\" });\n      break;\n    case \"bottom\":\n      Object.assign(posStyles, { bottom: 0, left: \"50%\", transform: \"translateX(-50%)\" });\n      break;\n  }\n  return (\n    <Box {...props} sx={{ ...posStyles, ...sx }}>\n      {children}\n    </Box>\n  );\n};\n\nexport const Background: React.FC<BoxProps> = ({ sx = null, ...rest}) => (\n  <Box\n    sx={{ position: \"relative\", width: \"100%\", height: \"100%\", ...sx }}\n    {...rest}\n  />\n);\n\nexport const Content: React.FC<BoxProps> = (props) => (\n  <Box\n    {...props}\n    sx={{\n      position: \"absolute\",\n      top: 0,\n      left: 0,\n      right: 0,\n      bottom: 0,\n      overflow: \"hidden\",\n      ...props.sx,\n    }}\n  />\n);\n\nexport const workspace = {\n  Background,\n  Content,\n  ControlArea,\n};\n\nexport const MapLayerSelector: React.FC = () => (\n  <Button variant=\"contained\" size=\"small\">\n    Layers\n  </Button>\n);\n","import React from \"react\";\nimport {\n  workspace,\n} from \"./components/components\";\nexport {\n  workspace as insetInMap,\n} from \"./components/components\";\nimport { BoxProps } from \"@mui/material\";\n\nconst { Background, Content, ControlArea } = workspace;\n\n// TODO don't limit to Div\nexport type Scrollable = HTMLDivElement | (Window & typeof globalThis);\n\nexport type Position =\n  | \"topLeft\"\n  | \"top\"\n  | \"topRight\"\n  | \"right\"\n  | \"bottomRight\"\n  | \"bottom\"\n  | \"bottomLeft\"\n  | \"left\"\n  | \"center\";\n\ntype RootPropsType = Omit<BoxProps, 'children' | 'content'>;\n\nexport const InsetInMap: React.FC<RootPropsType & {\n  content: React.ReactNode;\n  children?: React.ReactNode;\n  controlArea?: Partial<Record<Position, React.ReactNode>>;\n}> = ({ content, controlArea = {}, sx, children, ...rest }) => {\n  return (\n    <Background sx={sx} {...rest}>\n      <Content>{content}</Content>\n      {(Object.entries(controlArea) as [Position, React.ReactNode][]).map(([position, node]) => (\n        <ControlArea position={position} key={position}>\n          {node}\n        </ControlArea>\n      ))}\n      {children}\n    </Background>\n  );\n};\n","/**\n * @module ol/extent/Relationship\n */\n\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n  UNKNOWN: 0,\n  INTERSECTING: 1,\n  ABOVE: 2,\n  RIGHT: 4,\n  BELOW: 8,\n  LEFT: 16,\n};\n","/**\n * @module ol/extent\n */\nimport Relationship from './extent/Relationship.js';\n\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array<number>} Extent\n * @api\n */\n\n/**\n * Extent corner.\n * @typedef {'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'} Corner\n */\n\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array<import(\"./coordinate.js\").Coordinate>} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n  const extent = createEmpty();\n  for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n    extendCoordinate(extent, coordinates[i]);\n  }\n  return extent;\n}\n\n/**\n * @param {Array<number>} xs Xs.\n * @param {Array<number>} ys Ys.\n * @param {Extent} [dest] Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, dest) {\n  const minX = Math.min.apply(null, xs);\n  const minY = Math.min.apply(null, ys);\n  const maxX = Math.max.apply(null, xs);\n  const maxY = Math.max.apply(null, ys);\n  return createOrUpdate(minX, minY, maxX, maxY, dest);\n}\n\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, dest) {\n  if (dest) {\n    dest[0] = extent[0] - value;\n    dest[1] = extent[1] - value;\n    dest[2] = extent[2] + value;\n    dest[3] = extent[3] + value;\n    return dest;\n  }\n  return [\n    extent[0] - value,\n    extent[1] - value,\n    extent[2] + value,\n    extent[3] + value,\n  ];\n}\n\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent} [dest] Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, dest) {\n  if (dest) {\n    dest[0] = extent[0];\n    dest[1] = extent[1];\n    dest[2] = extent[2];\n    dest[3] = extent[3];\n    return dest;\n  }\n  return extent.slice();\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n  let dx, dy;\n  if (x < extent[0]) {\n    dx = extent[0] - x;\n  } else if (extent[2] < x) {\n    dx = x - extent[2];\n  } else {\n    dx = 0;\n  }\n  if (y < extent[1]) {\n    dy = extent[1] - y;\n  } else if (extent[3] < y) {\n    dy = y - extent[3];\n  } else {\n    dy = 0;\n  }\n  return dx * dx + dy * dy;\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n  return containsXY(extent, coordinate[0], coordinate[1]);\n}\n\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n *     first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n  return (\n    extent1[0] <= extent2[0] &&\n    extent2[2] <= extent1[2] &&\n    extent1[1] <= extent2[1] &&\n    extent2[3] <= extent1[3]\n  );\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n  return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n *     import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n  const minX = extent[0];\n  const minY = extent[1];\n  const maxX = extent[2];\n  const maxY = extent[3];\n  const x = coordinate[0];\n  const y = coordinate[1];\n  let relationship = Relationship.UNKNOWN;\n  if (x < minX) {\n    relationship = relationship | Relationship.LEFT;\n  } else if (x > maxX) {\n    relationship = relationship | Relationship.RIGHT;\n  }\n  if (y < minY) {\n    relationship = relationship | Relationship.BELOW;\n  } else if (y > maxY) {\n    relationship = relationship | Relationship.ABOVE;\n  }\n  if (relationship === Relationship.UNKNOWN) {\n    relationship = Relationship.INTERSECTING;\n  }\n  return relationship;\n}\n\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n  return [Infinity, Infinity, -Infinity, -Infinity];\n}\n\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, dest) {\n  if (dest) {\n    dest[0] = minX;\n    dest[1] = minY;\n    dest[2] = maxX;\n    dest[3] = maxY;\n    return dest;\n  }\n  return [minX, minY, maxX, maxY];\n}\n\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(dest) {\n  return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, dest);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, dest) {\n  const x = coordinate[0];\n  const y = coordinate[1];\n  return createOrUpdate(x, y, x, y, dest);\n}\n\n/**\n * @param {Array<import(\"./coordinate.js\").Coordinate>} coordinates Coordinates.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, dest) {\n  const extent = createOrUpdateEmpty(dest);\n  return extendCoordinates(extent, coordinates);\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  dest,\n) {\n  const extent = createOrUpdateEmpty(dest);\n  return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n\n/**\n * @param {Array<Array<import(\"./coordinate.js\").Coordinate>>} rings Rings.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, dest) {\n  const extent = createOrUpdateEmpty(dest);\n  return extendRings(extent, rings);\n}\n\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n  return (\n    extent1[0] == extent2[0] &&\n    extent1[2] == extent2[2] &&\n    extent1[1] == extent2[1] &&\n    extent1[3] == extent2[3]\n  );\n}\n\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n  return (\n    Math.abs(extent1[0] - extent2[0]) < tolerance &&\n    Math.abs(extent1[2] - extent2[2]) < tolerance &&\n    Math.abs(extent1[1] - extent2[1]) < tolerance &&\n    Math.abs(extent1[3] - extent2[3]) < tolerance\n  );\n}\n\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n  if (extent2[0] < extent1[0]) {\n    extent1[0] = extent2[0];\n  }\n  if (extent2[2] > extent1[2]) {\n    extent1[2] = extent2[2];\n  }\n  if (extent2[1] < extent1[1]) {\n    extent1[1] = extent2[1];\n  }\n  if (extent2[3] > extent1[3]) {\n    extent1[3] = extent2[3];\n  }\n  return extent1;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n  if (coordinate[0] < extent[0]) {\n    extent[0] = coordinate[0];\n  }\n  if (coordinate[0] > extent[2]) {\n    extent[2] = coordinate[0];\n  }\n  if (coordinate[1] < extent[1]) {\n    extent[1] = coordinate[1];\n  }\n  if (coordinate[1] > extent[3]) {\n    extent[3] = coordinate[1];\n  }\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array<import(\"./coordinate.js\").Coordinate>} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n  for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n    extendCoordinate(extent, coordinates[i]);\n  }\n  return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(\n  extent,\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n) {\n  for (; offset < end; offset += stride) {\n    extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n  }\n  return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array<Array<import(\"./coordinate.js\").Coordinate>>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n  for (let i = 0, ii = rings.length; i < ii; ++i) {\n    extendCoordinates(extent, rings[i]);\n  }\n  return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n  extent[0] = Math.min(extent[0], x);\n  extent[1] = Math.min(extent[1], y);\n  extent[2] = Math.max(extent[2], x);\n  extent[3] = Math.max(extent[3], y);\n}\n\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n  let val;\n  val = callback(getBottomLeft(extent));\n  if (val) {\n    return val;\n  }\n  val = callback(getBottomRight(extent));\n  if (val) {\n    return val;\n  }\n  val = callback(getTopRight(extent));\n  if (val) {\n    return val;\n  }\n  val = callback(getTopLeft(extent));\n  if (val) {\n    return val;\n  }\n  return false;\n}\n\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n  let area = 0;\n  if (!isEmpty(extent)) {\n    area = getWidth(extent) * getHeight(extent);\n  }\n  return area;\n}\n\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n  return [extent[0], extent[1]];\n}\n\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n  return [extent[2], extent[1]];\n}\n\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n  return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {Corner} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n  let coordinate;\n  if (corner === 'bottom-left') {\n    coordinate = getBottomLeft(extent);\n  } else if (corner === 'bottom-right') {\n    coordinate = getBottomRight(extent);\n  } else if (corner === 'top-left') {\n    coordinate = getTopLeft(extent);\n  } else if (corner === 'top-right') {\n    coordinate = getTopRight(extent);\n  } else {\n    throw new Error('Invalid corner');\n  }\n  return coordinate;\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n  const minX = Math.min(extent1[0], extent2[0]);\n  const minY = Math.min(extent1[1], extent2[1]);\n  const maxX = Math.max(extent1[2], extent2[2]);\n  const maxY = Math.max(extent1[3], extent2[3]);\n  return (maxX - minX) * (maxY - minY);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, dest) {\n  const [x0, y0, x1, y1, x2, y2, x3, y3] = getRotatedViewport(\n    center,\n    resolution,\n    rotation,\n    size,\n  );\n  return createOrUpdate(\n    Math.min(x0, x1, x2, x3),\n    Math.min(y0, y1, y2, y3),\n    Math.max(x0, x1, x2, x3),\n    Math.max(y0, y1, y2, y3),\n    dest,\n  );\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array<number>} Linear ring representing the viewport.\n */\nexport function getRotatedViewport(center, resolution, rotation, size) {\n  const dx = (resolution * size[0]) / 2;\n  const dy = (resolution * size[1]) / 2;\n  const cosRotation = Math.cos(rotation);\n  const sinRotation = Math.sin(rotation);\n  const xCos = dx * cosRotation;\n  const xSin = dx * sinRotation;\n  const yCos = dy * cosRotation;\n  const ySin = dy * sinRotation;\n  const x = center[0];\n  const y = center[1];\n  return [\n    x - xCos + ySin,\n    y - xSin - yCos,\n    x - xCos - ySin,\n    y - xSin + yCos,\n    x + xCos - ySin,\n    y + xSin + yCos,\n    x + xCos + ySin,\n    y + xSin - yCos,\n    x - xCos + ySin,\n    y - xSin - yCos,\n  ];\n}\n\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n  return extent[3] - extent[1];\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n  const intersection = getIntersection(extent1, extent2);\n  return getArea(intersection);\n}\n\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent} [dest] Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, dest) {\n  const intersection = dest ? dest : createEmpty();\n  if (intersects(extent1, extent2)) {\n    if (extent1[0] > extent2[0]) {\n      intersection[0] = extent1[0];\n    } else {\n      intersection[0] = extent2[0];\n    }\n    if (extent1[1] > extent2[1]) {\n      intersection[1] = extent1[1];\n    } else {\n      intersection[1] = extent2[1];\n    }\n    if (extent1[2] < extent2[2]) {\n      intersection[2] = extent1[2];\n    } else {\n      intersection[2] = extent2[2];\n    }\n    if (extent1[3] < extent2[3]) {\n      intersection[3] = extent1[3];\n    } else {\n      intersection[3] = extent2[3];\n    }\n  } else {\n    createOrUpdateEmpty(intersection);\n  }\n  return intersection;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n  return getWidth(extent) + getHeight(extent);\n}\n\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n  return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n  return [extent[0], extent[3]];\n}\n\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n  return [extent[2], extent[3]];\n}\n\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n  return extent[2] - extent[0];\n}\n\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n  return (\n    extent1[0] <= extent2[2] &&\n    extent1[2] >= extent2[0] &&\n    extent1[1] <= extent2[3] &&\n    extent1[3] >= extent2[1]\n  );\n}\n\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n  return extent[2] < extent[0] || extent[3] < extent[1];\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, dest) {\n  if (dest) {\n    dest[0] = extent[0];\n    dest[1] = extent[1];\n    dest[2] = extent[2];\n    dest[3] = extent[3];\n    return dest;\n  }\n  return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n  const deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n  const deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n  extent[0] -= deltaX;\n  extent[2] += deltaX;\n  extent[1] -= deltaY;\n  extent[3] += deltaY;\n}\n\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n  let intersects = false;\n  const startRel = coordinateRelationship(extent, start);\n  const endRel = coordinateRelationship(extent, end);\n  if (\n    startRel === Relationship.INTERSECTING ||\n    endRel === Relationship.INTERSECTING\n  ) {\n    intersects = true;\n  } else {\n    const minX = extent[0];\n    const minY = extent[1];\n    const maxX = extent[2];\n    const maxY = extent[3];\n    const startX = start[0];\n    const startY = start[1];\n    const endX = end[0];\n    const endY = end[1];\n    const slope = (endY - startY) / (endX - startX);\n    let x, y;\n    if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n      // potentially intersects top\n      x = endX - (endY - maxY) / slope;\n      intersects = x >= minX && x <= maxX;\n    }\n    if (\n      !intersects &&\n      !!(endRel & Relationship.RIGHT) &&\n      !(startRel & Relationship.RIGHT)\n    ) {\n      // potentially intersects right\n      y = endY - (endX - maxX) * slope;\n      intersects = y >= minY && y <= maxY;\n    }\n    if (\n      !intersects &&\n      !!(endRel & Relationship.BELOW) &&\n      !(startRel & Relationship.BELOW)\n    ) {\n      // potentially intersects bottom\n      x = endX - (endY - minY) / slope;\n      intersects = x >= minX && x <= maxX;\n    }\n    if (\n      !intersects &&\n      !!(endRel & Relationship.LEFT) &&\n      !(startRel & Relationship.LEFT)\n    ) {\n      // potentially intersects left\n      y = endY - (endX - minX) * slope;\n      intersects = y >= minY && y <= maxY;\n    }\n  }\n  return intersects;\n}\n\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent} [dest] Destination extent.\n * @param {number} [stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, dest, stops) {\n  if (isEmpty(extent)) {\n    return createOrUpdateEmpty(dest);\n  }\n  let coordinates = [];\n  if (stops > 1) {\n    const width = extent[2] - extent[0];\n    const height = extent[3] - extent[1];\n    for (let i = 0; i < stops; ++i) {\n      coordinates.push(\n        extent[0] + (width * i) / stops,\n        extent[1],\n        extent[2],\n        extent[1] + (height * i) / stops,\n        extent[2] - (width * i) / stops,\n        extent[3],\n        extent[0],\n        extent[3] - (height * i) / stops,\n      );\n    }\n  } else {\n    coordinates = [\n      extent[0],\n      extent[1],\n      extent[2],\n      extent[1],\n      extent[2],\n      extent[3],\n      extent[0],\n      extent[3],\n    ];\n  }\n  transformFn(coordinates, coordinates, 2);\n  const xs = [];\n  const ys = [];\n  for (let i = 0, l = coordinates.length; i < l; i += 2) {\n    xs.push(coordinates[i]);\n    ys.push(coordinates[i + 1]);\n  }\n  return _boundingExtentXYs(xs, ys, dest);\n}\n\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n  const projectionExtent = projection.getExtent();\n  const center = getCenter(extent);\n  if (\n    projection.canWrapX() &&\n    (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])\n  ) {\n    const worldWidth = getWidth(projectionExtent);\n    const worldsAway = Math.floor(\n      (center[0] - projectionExtent[0]) / worldWidth,\n    );\n    const offset = worldsAway * worldWidth;\n    extent[0] -= offset;\n    extent[2] -= offset;\n  }\n  return extent;\n}\n\n/**\n * Fits the extent to the real world\n *\n * If the extent does not cross the anti meridian, this will return the extent in an array\n * If the extent crosses the anti meridian, the extent will be sliced, so each part fits within the\n * real world\n *\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @param {boolean} [multiWorld] Return all worlds\n * @return {Array<Extent>} The extent within the real world extent.\n */\nexport function wrapAndSliceX(extent, projection, multiWorld) {\n  if (projection.canWrapX()) {\n    const projectionExtent = projection.getExtent();\n\n    if (!isFinite(extent[0]) || !isFinite(extent[2])) {\n      return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n    }\n\n    wrapX(extent, projection);\n    const worldWidth = getWidth(projectionExtent);\n\n    if (getWidth(extent) > worldWidth && !multiWorld) {\n      // the extent wraps around on itself\n      return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n    }\n    if (extent[0] < projectionExtent[0]) {\n      // the extent crosses the anti meridian, so it needs to be sliced\n      return [\n        [extent[0] + worldWidth, extent[1], projectionExtent[2], extent[3]],\n        [projectionExtent[0], extent[1], extent[2], extent[3]],\n      ];\n    }\n    if (extent[2] > projectionExtent[2]) {\n      // the extent crosses the anti meridian, so it needs to be sliced\n      return [\n        [extent[0], extent[1], projectionExtent[2], extent[3]],\n        [projectionExtent[0], extent[1], extent[2] - worldWidth, extent[3]],\n      ];\n    }\n  }\n\n  return [extent];\n}\n","/**\n * @module ol/math\n */\n\n/**\n * Takes a number and clamps it to within the provided bounds.\n * @param {number} value The input number.\n * @param {number} min The minimum value to return.\n * @param {number} max The maximum value to return.\n * @return {number} The input number if it is within bounds, or the nearest\n *     number within the bounds.\n */\nexport function clamp(value, min, max) {\n  return Math.min(Math.max(value, min), max);\n}\n\n/**\n * Returns the square of the closest distance between the point (x, y) and the\n * line segment (x1, y1) to (x2, y2).\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {\n  const dx = x2 - x1;\n  const dy = y2 - y1;\n  if (dx !== 0 || dy !== 0) {\n    const t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n    if (t > 1) {\n      x1 = x2;\n      y1 = y2;\n    } else if (t > 0) {\n      x1 += dx * t;\n      y1 += dy * t;\n    }\n  }\n  return squaredDistance(x, y, x1, y1);\n}\n\n/**\n * Returns the square of the distance between the points (x1, y1) and (x2, y2).\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredDistance(x1, y1, x2, y2) {\n  const dx = x2 - x1;\n  const dy = y2 - y1;\n  return dx * dx + dy * dy;\n}\n\n/**\n * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array<Array<number>>} mat Augmented matrix (n x n + 1 column)\n *                                     in row-major order.\n * @return {Array<number>|null} The resulting vector.\n */\nexport function solveLinearSystem(mat) {\n  const n = mat.length;\n\n  for (let i = 0; i < n; i++) {\n    // Find max in the i-th column (ignoring i - 1 first rows)\n    let maxRow = i;\n    let maxEl = Math.abs(mat[i][i]);\n    for (let r = i + 1; r < n; r++) {\n      const absValue = Math.abs(mat[r][i]);\n      if (absValue > maxEl) {\n        maxEl = absValue;\n        maxRow = r;\n      }\n    }\n\n    if (maxEl === 0) {\n      return null; // matrix is singular\n    }\n\n    // Swap max row with i-th (current) row\n    const tmp = mat[maxRow];\n    mat[maxRow] = mat[i];\n    mat[i] = tmp;\n\n    // Subtract the i-th row to make all the remaining rows 0 in the i-th column\n    for (let j = i + 1; j < n; j++) {\n      const coef = -mat[j][i] / mat[i][i];\n      for (let k = i; k < n + 1; k++) {\n        if (i == k) {\n          mat[j][k] = 0;\n        } else {\n          mat[j][k] += coef * mat[i][k];\n        }\n      }\n    }\n  }\n\n  // Solve Ax=b for upper triangular matrix A (mat)\n  const x = new Array(n);\n  for (let l = n - 1; l >= 0; l--) {\n    x[l] = mat[l][n] / mat[l][l];\n    for (let m = l - 1; m >= 0; m--) {\n      mat[m][n] -= mat[m][l] * x[l];\n    }\n  }\n  return x;\n}\n\n/**\n * Converts radians to to degrees.\n *\n * @param {number} angleInRadians Angle in radians.\n * @return {number} Angle in degrees.\n */\nexport function toDegrees(angleInRadians) {\n  return (angleInRadians * 180) / Math.PI;\n}\n\n/**\n * Converts degrees to radians.\n *\n * @param {number} angleInDegrees Angle in degrees.\n * @return {number} Angle in radians.\n */\nexport function toRadians(angleInDegrees) {\n  return (angleInDegrees * Math.PI) / 180;\n}\n\n/**\n * Returns the modulo of a / b, depending on the sign of b.\n *\n * @param {number} a Dividend.\n * @param {number} b Divisor.\n * @return {number} Modulo.\n */\nexport function modulo(a, b) {\n  const r = a % b;\n  return r * b < 0 ? r + b : r;\n}\n\n/**\n * Calculates the linearly interpolated value of x between a and b.\n *\n * @param {number} a Number\n * @param {number} b Number\n * @param {number} x Value to be interpolated.\n * @return {number} Interpolated value.\n */\nexport function lerp(a, b, x) {\n  return a + x * (b - a);\n}\n\n/**\n * Returns a number with a limited number of decimal digits.\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The input number with a limited number of decimal digits.\n */\nexport function toFixed(n, decimals) {\n  const factor = Math.pow(10, decimals);\n  return Math.round(n * factor) / factor;\n}\n\n/**\n * Rounds a number to the nearest integer value considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The nearest integer.\n */\nexport function round(n, decimals) {\n  return Math.round(toFixed(n, decimals));\n}\n\n/**\n * Rounds a number to the next smaller integer considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The next smaller integer.\n */\nexport function floor(n, decimals) {\n  return Math.floor(toFixed(n, decimals));\n}\n\n/**\n * Rounds a number to the next bigger integer considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The next bigger integer.\n */\nexport function ceil(n, decimals) {\n  return Math.ceil(toFixed(n, decimals));\n}\n\n/**\n * Wraps a number between some minimum and maximum values.\n * @param {number} n The number to wrap.\n * @param {number} min The minimum of the range (inclusive).\n * @param {number} max The maximum of the range (exclusive).\n * @return {number} The wrapped number.\n */\nexport function wrap(n, min, max) {\n  if (n >= min && n < max) {\n    return n;\n  }\n  const range = max - min;\n  return ((((n - min) % range) + range) % range) + min;\n}\n","/**\n * @module ol/util\n */\n\n/**\n * @return {never} Any return.\n */\nexport function abstract() {\n  throw new Error('Unimplemented abstract method.');\n}\n\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nlet uidCounter_ = 0;\n\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n  return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport const VERSION = '10.8.0';\n","/**\n * @module ol/ObjectEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  /**\n   * Triggered when a property is changed.\n   * @event module:ol/Object.ObjectEvent#propertychange\n   * @api\n   */\n  PROPERTYCHANGE: 'propertychange',\n};\n\n/**\n * @typedef {'propertychange'} Types\n */\n","/**\n * @module ol/events/EventType\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n  /**\n   * Generic change event. Triggered when the revision counter is increased.\n   * @event module:ol/events/Event~BaseEvent#change\n   * @api\n   */\n  CHANGE: 'change',\n\n  /**\n   * Generic error event. Triggered when an error occurs.\n   * @event module:ol/events/Event~BaseEvent#error\n   * @api\n   */\n  ERROR: 'error',\n\n  BLUR: 'blur',\n  CLEAR: 'clear',\n  CONTEXTMENU: 'contextmenu',\n  CLICK: 'click',\n  DBLCLICK: 'dblclick',\n  DRAGENTER: 'dragenter',\n  DRAGOVER: 'dragover',\n  DROP: 'drop',\n  FOCUS: 'focus',\n  KEYDOWN: 'keydown',\n  KEYPRESS: 'keypress',\n  LOAD: 'load',\n  RESIZE: 'resize',\n  TOUCHMOVE: 'touchmove',\n  WHEEL: 'wheel',\n};\n","/**\n * @module ol/Disposable\n */\n\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nclass Disposable {\n  constructor() {\n    /**\n     * The object has already been disposed.\n     * @type {boolean}\n     * @protected\n     */\n    this.disposed = false;\n  }\n\n  /**\n   * Clean up.\n   */\n  dispose() {\n    if (!this.disposed) {\n      this.disposed = true;\n      this.disposeInternal();\n    }\n  }\n\n  /**\n   * Extension point for disposable objects.\n   * @protected\n   */\n  disposeInternal() {}\n}\n\nexport default Disposable;\n","/**\n * @module ol/array\n */\n\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function} [comparator] Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, comparator) {\n  let mid, cmp;\n  comparator = comparator || ascending;\n  let low = 0;\n  let high = haystack.length;\n  let found = false;\n\n  while (low < high) {\n    /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n     * to double (which gives the wrong results). */\n    mid = low + ((high - low) >> 1);\n    cmp = +comparator(haystack[mid], needle);\n\n    if (cmp < 0.0) {\n      /* Too low. */\n      low = mid + 1;\n    } else {\n      /* Key found or too high */\n      high = mid;\n      found = !cmp;\n    }\n  }\n\n  /* Key not found. */\n  return found ? low : ~low;\n}\n\n/**\n * Compare function sorting arrays in ascending order.  Safe to use for numeric values.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n *     argument is less than, equal to, or greater than the second.\n */\nexport function ascending(a, b) {\n  return a > b ? 1 : a < b ? -1 : 0;\n}\n\n/**\n * Compare function sorting arrays in descending order.  Safe to use for numeric values.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n *     argument is greater than, equal to, or less than the second.\n */\nexport function descending(a, b) {\n  return a < b ? 1 : a > b ? -1 : 0;\n}\n\n/**\n * {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution} can use a function\n * of this type to determine which nearest resolution to use.\n *\n * This function takes a `{number}` representing a value between two array entries,\n * a `{number}` representing the value of the nearest higher entry and\n * a `{number}` representing the value of the nearest lower entry\n * as arguments and returns a `{number}`. If a negative number or zero is returned\n * the lower value will be used, if a positive number is returned the higher value\n * will be used.\n * @typedef {function(number, number, number): number} NearestDirectionFunction\n * @api\n */\n\n/**\n * @param {Array<number>} arr Array in descending order.\n * @param {number} target Target.\n * @param {number|NearestDirectionFunction} direction\n *    0 means return the nearest,\n *    > 0 means return the largest nearest,\n *    < 0 means return the smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n  if (arr[0] <= target) {\n    return 0;\n  }\n\n  const n = arr.length;\n  if (target <= arr[n - 1]) {\n    return n - 1;\n  }\n\n  if (typeof direction === 'function') {\n    for (let i = 1; i < n; ++i) {\n      const candidate = arr[i];\n      if (candidate === target) {\n        return i;\n      }\n      if (candidate < target) {\n        if (direction(target, arr[i - 1], candidate) > 0) {\n          return i - 1;\n        }\n        return i;\n      }\n    }\n    return n - 1;\n  }\n\n  if (direction > 0) {\n    for (let i = 1; i < n; ++i) {\n      if (arr[i] < target) {\n        return i - 1;\n      }\n    }\n    return n - 1;\n  }\n\n  if (direction < 0) {\n    for (let i = 1; i < n; ++i) {\n      if (arr[i] <= target) {\n        return i;\n      }\n    }\n    return n - 1;\n  }\n\n  for (let i = 1; i < n; ++i) {\n    if (arr[i] == target) {\n      return i;\n    }\n    if (arr[i] < target) {\n      if (arr[i - 1] - target < target - arr[i]) {\n        return i - 1;\n      }\n      return i;\n    }\n  }\n  return n - 1;\n}\n\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n  while (begin < end) {\n    const tmp = arr[begin];\n    arr[begin] = arr[end];\n    arr[end] = tmp;\n    ++begin;\n    --end;\n  }\n}\n\n/**\n * @param {Array<VALUE>} arr The array to modify.\n * @param {!Array<VALUE>|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n  const extension = Array.isArray(data) ? data : [data];\n  const length = extension.length;\n  for (let i = 0; i < length; i++) {\n    arr[arr.length] = extension[i];\n  }\n}\n\n/**\n * @param {Array<VALUE>} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n  const i = arr.indexOf(obj);\n  const found = i > -1;\n  if (found) {\n    arr.splice(i, 1);\n  }\n  return found;\n}\n\n/**\n * @param {Array<any>|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array<any>|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n  const len1 = arr1.length;\n  if (len1 !== arr2.length) {\n    return false;\n  }\n  for (let i = 0; i < len1; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Sort the passed array such that the relative order of equal elements is preserved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n * @deprecated\n */\nexport function stableSort(arr, compareFnc) {\n  const length = arr.length;\n  const tmp = Array(arr.length);\n  let i;\n  for (i = 0; i < length; i++) {\n    tmp[i] = {index: i, value: arr[i]};\n  }\n  tmp.sort(function (a, b) {\n    return compareFnc(a.value, b.value) || a.index - b.index;\n  });\n  for (i = 0; i < arr.length; i++) {\n    arr[i] = tmp[i].value;\n  }\n}\n\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function} [func] Comparison function.\n * @param {boolean} [strict] Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, func, strict) {\n  const compare = func || ascending;\n  return arr.every(function (currentVal, index) {\n    if (index === 0) {\n      return true;\n    }\n    const res = compare(arr[index - 1], currentVal);\n    return !(res > 0 || (strict && res === 0));\n  });\n}\n","/**\n * @module ol/functions\n */\n\nimport {equals as arrayEquals} from './array.js';\n\n/**\n * Always returns true.\n * @return {boolean} true.\n */\nexport function TRUE() {\n  return true;\n}\n\n/**\n * Always returns false.\n * @return {boolean} false.\n */\nexport function FALSE() {\n  return false;\n}\n\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() {}\n\n/**\n * Wrap a function in another function that remembers the last return.  If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n  /** @type {ReturnType} */\n  let lastResult;\n\n  /** @type {Array<any>|undefined} */\n  let lastArgs;\n\n  let lastThis;\n\n  /**\n   * @this {*} Only need to know if `this` changed, don't care what type\n   * @return {ReturnType} Memoized value\n   */\n  return function () {\n    const nextArgs = Array.prototype.slice.call(arguments);\n    if (!lastArgs || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n      lastThis = this;\n      lastArgs = nextArgs;\n      lastResult = fn.apply(this, arguments);\n    }\n    return lastResult;\n  };\n}\n\n/**\n * @template T\n * @param {function(): (T | Promise<T>)} getter A function that returns a value or a promise for a value.\n * @return {Promise<T>} A promise for the value.\n */\nexport function toPromise(getter) {\n  function promiseGetter() {\n    let value;\n    try {\n      value = getter();\n    } catch (err) {\n      return Promise.reject(err);\n    }\n    if (value instanceof Promise) {\n      return value;\n    }\n    return Promise.resolve(value);\n  }\n  return promiseGetter();\n}\n","/**\n * @module ol/obj\n */\n\n/**\n * Removes all properties from an object.\n * @param {Object<string, unknown>} object The object to clear.\n */\nexport function clear(object) {\n  for (const property in object) {\n    delete object[property];\n  }\n}\n\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n  let property;\n  for (property in object) {\n    return false;\n  }\n  return !property;\n}\n","/**\n * @module ol/events/Event\n */\n\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nclass BaseEvent {\n  /**\n   * @param {string} type Type.\n   */\n  constructor(type) {\n    /**\n     * @type {boolean}\n     */\n    this.propagationStopped;\n\n    /**\n     * @type {boolean}\n     */\n    this.defaultPrevented;\n\n    /**\n     * The event type.\n     * @type {string}\n     * @api\n     */\n    this.type = type;\n\n    /**\n     * The event target.\n     * @type {Object}\n     * @api\n     */\n    this.target = null;\n  }\n\n  /**\n   * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events\n   * will be fired.\n   * @api\n   */\n  preventDefault() {\n    this.defaultPrevented = true;\n  }\n\n  /**\n   * Stop event propagation.\n   * @api\n   */\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n  evt.stopPropagation();\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n  evt.preventDefault();\n}\n\nexport default BaseEvent;\n","/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport {VOID} from '../functions.js';\nimport {clear} from '../obj.js';\nimport Event from './Event.js';\n\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n *    `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n *    There is no event target hierarchy. When a listener calls\n *    `stopPropagation` or `preventDefault` on an event object, it means that no\n *    more listeners after this one will be called. Same as when the listener\n *    returns false.\n */\nclass Target extends Disposable {\n  /**\n   * @param {*} [target] Default event target for dispatched events.\n   */\n  constructor(target) {\n    super();\n\n    /**\n     * @private\n     * @type {*}\n     */\n    this.eventTarget_ = target;\n\n    /**\n     * @private\n     * @type {Object<string, number>|null}\n     */\n    this.pendingRemovals_ = null;\n\n    /**\n     * @private\n     * @type {Object<string, number>|null}\n     */\n    this.dispatching_ = null;\n\n    /**\n     * @private\n     * @type {Object<string, Array<import(\"../events.js\").Listener>>|null}\n     */\n    this.listeners_ = null;\n  }\n\n  /**\n   * @param {string} type Type.\n   * @param {import(\"../events.js\").Listener} listener Listener.\n   */\n  addEventListener(type, listener) {\n    if (!type || !listener) {\n      return;\n    }\n    const listeners = this.listeners_ || (this.listeners_ = {});\n    const listenersForType = listeners[type] || (listeners[type] = []);\n    if (!listenersForType.includes(listener)) {\n      listenersForType.push(listener);\n    }\n  }\n\n  /**\n   * Dispatches an event and calls all listeners listening for events\n   * of this type. The event parameter can either be a string or an\n   * Object with a `type` property.\n   *\n   * @param {import(\"./Event.js\").default|string} event Event object.\n   * @return {boolean|undefined} `false` if anyone called preventDefault on the\n   *     event object or if any of the listeners returned false.\n   * @api\n   */\n  dispatchEvent(event) {\n    const isString = typeof event === 'string';\n    const type = isString ? event : event.type;\n    const listeners = this.listeners_ && this.listeners_[type];\n    if (!listeners) {\n      return;\n    }\n\n    const evt = isString ? new Event(event) : /** @type {Event} */ (event);\n    if (!evt.target) {\n      evt.target = this.eventTarget_ || this;\n    }\n    const dispatching = this.dispatching_ || (this.dispatching_ = {});\n    const pendingRemovals =\n      this.pendingRemovals_ || (this.pendingRemovals_ = {});\n    if (!(type in dispatching)) {\n      dispatching[type] = 0;\n      pendingRemovals[type] = 0;\n    }\n    ++dispatching[type];\n    let propagate;\n    for (let i = 0, ii = listeners.length; i < ii; ++i) {\n      if ('handleEvent' in listeners[i]) {\n        propagate = /** @type {import(\"../events.js\").ListenerObject} */ (\n          listeners[i]\n        ).handleEvent(evt);\n      } else {\n        propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (\n          listeners[i]\n        ).call(this, evt);\n      }\n      if (propagate === false || evt.propagationStopped) {\n        propagate = false;\n        break;\n      }\n    }\n    if (--dispatching[type] === 0) {\n      let pr = pendingRemovals[type];\n      delete pendingRemovals[type];\n      while (pr--) {\n        this.removeEventListener(type, VOID);\n      }\n      delete dispatching[type];\n    }\n    return propagate;\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.listeners_ && clear(this.listeners_);\n  }\n\n  /**\n   * Get the listeners for a specified event type. Listeners are returned in the\n   * order that they will be called in.\n   *\n   * @param {string} type Type.\n   * @return {Array<import(\"../events.js\").Listener>|undefined} Listeners.\n   */\n  getListeners(type) {\n    return (this.listeners_ && this.listeners_[type]) || undefined;\n  }\n\n  /**\n   * @param {string} [type] Type. If not provided,\n   *     `true` will be returned if this event target has any listeners.\n   * @return {boolean} Has listeners.\n   */\n  hasListener(type) {\n    if (!this.listeners_) {\n      return false;\n    }\n    return type\n      ? type in this.listeners_\n      : Object.keys(this.listeners_).length > 0;\n  }\n\n  /**\n   * @param {string} type Type.\n   * @param {import(\"../events.js\").Listener} listener Listener.\n   */\n  removeEventListener(type, listener) {\n    if (!this.listeners_) {\n      return;\n    }\n    const listeners = this.listeners_[type];\n    if (!listeners) {\n      return;\n    }\n    const index = listeners.indexOf(listener);\n    if (index !== -1) {\n      if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n        // make listener a no-op, and remove later in #dispatchEvent()\n        listeners[index] = VOID;\n        ++this.pendingRemovals_[type];\n      } else {\n        listeners.splice(index, 1);\n        if (listeners.length === 0) {\n          delete this.listeners_[type];\n        }\n      }\n    }\n  }\n}\n\nexport default Target;\n","/**\n * @module ol/events\n */\nimport {clear} from './obj.js';\n\n/**\n * Key to use with {@link module:ol/Observable.unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type Type.\n * @api\n */\n\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events.unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n *     listener. Default is the `target`.\n * @param {boolean} [once] If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, thisArg, once) {\n  if (once) {\n    const originalListener = listener;\n    /**\n     * @param {Event|import('./events/Event.js').default} event The event\n     * @return {void|boolean} When the function returns `false`, event propagation will stop.\n     * @this {typeof target}\n     */\n    listener = function (event) {\n      target.removeEventListener(type, listener);\n      return originalListener.call(thisArg ?? this, event);\n    };\n  } else if (thisArg && thisArg !== target) {\n    listener = listener.bind(thisArg);\n  }\n  const eventsKey = {\n    target: target,\n    type: type,\n    listener: listener,\n  };\n  target.addEventListener(type, listener);\n  return eventsKey;\n}\n\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events.unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events.listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n *     listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, thisArg) {\n  return listen(target, type, listener, thisArg, true);\n}\n\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events.listen} or {@link module:ol/events.listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n  if (key && key.target) {\n    key.target.removeEventListener(key.type, key.listener);\n    clear(key);\n  }\n}\n","/**\n * @module ol/Observable\n */\nimport EventType from './events/EventType.js';\nimport EventTarget from './events/Target.js';\nimport {listen, listenOnce, unlistenByKey} from './events.js';\n\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type, listener: (event: EventClass) => ?) => Return} OnSignature\n */\n\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return extends void ? void : Return[]} CombinedOnSignature\n */\n\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n\n/***\n * @template Return\n * @typedef {OnSignature<EventTypes, import(\"./events/Event.js\").default, Return> & CombinedOnSignature<EventTypes, Return>} ObservableOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nclass Observable extends EventTarget {\n  constructor() {\n    super();\n\n    this.on =\n      /** @type {ObservableOnSignature<import(\"./events\").EventsKey>} */ (\n        this.onInternal\n      );\n\n    this.once =\n      /** @type {ObservableOnSignature<import(\"./events\").EventsKey>} */ (\n        this.onceInternal\n      );\n\n    this.un = /** @type {ObservableOnSignature<void>} */ (this.unInternal);\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.revision_ = 0;\n  }\n\n  /**\n   * Increases the revision counter and dispatches a 'change' event.\n   * @api\n   */\n  changed() {\n    ++this.revision_;\n    this.dispatchEvent(EventType.CHANGE);\n  }\n\n  /**\n   * Get the version number for this object.  Each time the object is modified,\n   * its version number will be incremented.\n   * @return {number} Revision.\n   * @api\n   */\n  getRevision() {\n    return this.revision_;\n  }\n\n  /**\n   * @param {string|Array<string>} type Type.\n   * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n   * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} Event key.\n   * @protected\n   */\n  onInternal(type, listener) {\n    if (Array.isArray(type)) {\n      const len = type.length;\n      const keys = new Array(len);\n      for (let i = 0; i < len; ++i) {\n        keys[i] = listen(this, type[i], listener);\n      }\n      return keys;\n    }\n    return listen(this, /** @type {string} */ (type), listener);\n  }\n\n  /**\n   * @param {string|Array<string>} type Type.\n   * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n   * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} Event key.\n   * @protected\n   */\n  onceInternal(type, listener) {\n    let key;\n    if (Array.isArray(type)) {\n      const len = type.length;\n      key = new Array(len);\n      for (let i = 0; i < len; ++i) {\n        key[i] = listenOnce(this, type[i], listener);\n      }\n    } else {\n      key = listenOnce(this, /** @type {string} */ (type), listener);\n    }\n    /** @type {Object} */ (listener).ol_key = key;\n    return key;\n  }\n\n  /**\n   * Unlisten for a certain type of event.\n   * @param {string|Array<string>} type Type.\n   * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n   * @protected\n   */\n  unInternal(type, listener) {\n    const key = /** @type {Object} */ (listener).ol_key;\n    if (key) {\n      unByKey(key);\n    } else if (Array.isArray(type)) {\n      for (let i = 0, ii = type.length; i < ii; ++i) {\n        this.removeEventListener(type[i], listener);\n      }\n    } else {\n      this.removeEventListener(type, listener);\n    }\n  }\n}\n\n/**\n * Listen for a certain type of event.\n * @function\n * @param {string|Array<string>} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} Unique key for the listener. If\n *     called with an array of event types as the first argument, the return\n *     will be an array of keys.\n * @api\n */\nObservable.prototype.on;\n\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array<string>} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} Unique key for the listener. If\n *     called with an array of event types as the first argument, the return\n *     will be an array of keys.\n * @api\n */\nObservable.prototype.once;\n\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array<string>} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\n\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} key The key returned by `on()`\n *     or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n  if (Array.isArray(key)) {\n    for (let i = 0, ii = key.length; i < ii; ++i) {\n      unlistenByKey(key[i]);\n    }\n  } else {\n    unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n  }\n}\n\nexport default Observable;\n","/**\n * @module ol/Object\n */\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport Event from './events/Event.js';\nimport {isEmpty} from './obj.js';\nimport {getUid} from './util.js';\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nexport class ObjectEvent extends Event {\n  /**\n   * @param {string} type The event type.\n   * @param {string} key The property name.\n   * @param {*} oldValue The old value for `key`.\n   */\n  constructor(type, key, oldValue) {\n    super(type);\n\n    /**\n     * The name of the property whose value is changing.\n     * @type {string}\n     * @api\n     */\n    this.key = key;\n\n    /**\n     * The old value. To get the new value use `e.target.get(e.key)` where\n     * `e` is the event object.\n     * @type {*}\n     * @api\n     */\n    this.oldValue = oldValue;\n  }\n}\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *    import(\"./Observable\").OnSignature<import(\"./ObjectEventType\").Types, ObjectEvent, Return> &\n *    import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|import(\"./ObjectEventType\").Types, Return>} ObjectOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable~Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @template {Object<string, *>} [Properties=Object<string, *>]\n * @api\n */\nclass BaseObject extends Observable {\n  /**\n   * @param {NoInfer<Properties>} [values] An object with key-value pairs.\n   */\n  constructor(values) {\n    super();\n\n    /***\n     * @type {ObjectOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {ObjectOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {ObjectOnSignature<void>}\n     */\n    this.un;\n\n    // Call {@link module:ol/util.getUid} to ensure that the order of objects' ids is\n    // the same as the order in which they were created.  This also helps to\n    // ensure that object properties are always added in the same order, which\n    // helps many JavaScript engines generate faster code.\n    getUid(this);\n\n    /**\n     * @private\n     * @type {Partial<NoInfer<Properties>>|null}\n     */\n    this.values_ = null;\n\n    if (values !== undefined) {\n      this.setProperties(values);\n    }\n  }\n\n  /**\n   * Gets a value.\n   * @param {string} key Key name.\n   * @return {*} Value.\n   * @api\n   */\n  get(key) {\n    let value;\n    if (this.values_ && this.values_.hasOwnProperty(key)) {\n      value = this.values_[key];\n    }\n    return value;\n  }\n\n  /**\n   * Get a list of object property names.\n   * @return {Array<string>} List of property names.\n   * @api\n   */\n  getKeys() {\n    return (this.values_ && Object.keys(this.values_)) || [];\n  }\n\n  /**\n   * Get an object of all property names and values.\n   * @return {NoInfer<Properties>} Object.\n   * @api\n   */\n  getProperties() {\n    return /** @type {NoInfer<Properties>} */ (\n      (this.values_ && Object.assign({}, this.values_)) || {}\n    );\n  }\n\n  /**\n   * Get an object of all property names and values.\n   * @return {Partial<NoInfer<Properties>>?} Object.\n   */\n  getPropertiesInternal() {\n    return this.values_;\n  }\n\n  /**\n   * @return {boolean} The object has properties.\n   */\n  hasProperties() {\n    return !!this.values_;\n  }\n\n  /**\n   * @param {string} key Key name.\n   * @param {*} oldValue Old value.\n   */\n  notify(key, oldValue) {\n    let eventType;\n    eventType = `change:${key}`;\n    if (this.hasListener(eventType)) {\n      this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n    }\n    eventType = ObjectEventType.PROPERTYCHANGE;\n    if (this.hasListener(eventType)) {\n      this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n    }\n  }\n\n  /**\n   * @param {string} key Key name.\n   * @param {import(\"./events.js\").Listener} listener Listener.\n   */\n  addChangeListener(key, listener) {\n    this.addEventListener(`change:${key}`, listener);\n  }\n\n  /**\n   * @param {string} key Key name.\n   * @param {import(\"./events.js\").Listener} listener Listener.\n   */\n  removeChangeListener(key, listener) {\n    this.removeEventListener(`change:${key}`, listener);\n  }\n\n  /**\n   * Sets a value.\n   * @param {string} key Key name.\n   * @param {*} value Value.\n   * @param {boolean} [silent] Update without triggering an event.\n   * @api\n   */\n  set(key, value, silent) {\n    const values = this.values_ || (this.values_ = {});\n    if (silent) {\n      values[key] = value;\n    } else {\n      const oldValue = values[key];\n      values[key] = value;\n      if (oldValue !== value) {\n        this.notify(key, oldValue);\n      }\n    }\n  }\n\n  /**\n   * Sets a collection of key-value pairs.  Note that this changes any existing\n   * properties and adds new ones (it does not remove any existing properties).\n   * @param {Partial<NoInfer<Properties>>} values Values.\n   * @param {boolean} [silent] Update without triggering an event.\n   * @api\n   */\n  setProperties(values, silent) {\n    for (const key in values) {\n      this.set(key, values[key], silent);\n    }\n  }\n\n  /**\n   * Apply any properties from another object without triggering events.\n   * @param {BaseObject} source The source object.\n   * @protected\n   */\n  applyProperties(source) {\n    if (!source.values_) {\n      return;\n    }\n    Object.assign(this.values_ || (this.values_ = {}), source.values_);\n  }\n\n  /**\n   * Unsets a property.\n   * @param {string} key Key name.\n   * @param {boolean} [silent] Unset without triggering an event.\n   * @api\n   */\n  unset(key, silent) {\n    if (this.values_ && key in this.values_) {\n      const oldValue = this.values_[key];\n      delete this.values_[key];\n      if (isEmpty(this.values_)) {\n        this.values_ = null;\n      }\n      if (!silent) {\n        this.notify(key, oldValue);\n      }\n    }\n  }\n}\n\nexport default BaseObject;\n","/**\n * @module ol/console\n */\n\n/**\n * @typedef {'info'|'warn'|'error'|'none'} Level\n */\n\n/**\n * @type {Object<Level, number>}\n */\nconst levels = {\n  info: 1,\n  warn: 2,\n  error: 3,\n  none: 4,\n};\n\n/**\n * @type {number}\n */\nlet level = levels.info;\n\n/**\n * Set the logging level.  By default, the level is set to 'info' and all\n * messages will be logged.  Set to 'warn' to only display warnings and errors.\n * Set to 'error' to only display errors.  Set to 'none' to silence all messages.\n *\n * @param {Level} l The new level.\n */\nexport function setLevel(l) {\n  level = levels[l];\n}\n\n/**\n * @param  {...any} args Arguments to log\n */\nexport function log(...args) {\n  if (level > levels.info) {\n    return;\n  }\n  console.log(...args); // eslint-disable-line no-console\n}\n\n/**\n * @param  {...any} args Arguments to log\n */\nexport function warn(...args) {\n  if (level > levels.warn) {\n    return;\n  }\n  console.warn(...args); // eslint-disable-line no-console\n}\n\n/**\n * @param  {...any} args Arguments to log\n */\nexport function error(...args) {\n  if (level > levels.error) {\n    return;\n  }\n  console.error(...args); // eslint-disable-line no-console\n}\n","/**\n * @module ol/coordinate\n */\nimport {getWidth} from './extent.js';\nimport {clamp, modulo, toFixed} from './math.js';\nimport {padNumber} from './string.js';\n\n/**\n * An array of numbers representing an `xy`, `xyz` or `xyzm` coordinate.\n * Example: `[16, 48]`.\n * @typedef {Array<number>} Coordinate\n * @api\n */\n\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n *     import {add} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     add(coord, [-2, 4]);\n *     // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n  coordinate[0] += +delta[0];\n  coordinate[1] += +delta[1];\n  return coordinate;\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n  const r = circle.getRadius();\n  const center = circle.getCenter();\n  const x0 = center[0];\n  const y0 = center[1];\n  const x1 = coordinate[0];\n  const y1 = coordinate[1];\n\n  let dx = x1 - x0;\n  const dy = y1 - y0;\n  if (dx === 0 && dy === 0) {\n    dx = 1;\n  }\n  const d = Math.sqrt(dx * dx + dy * dy);\n\n  const x = x0 + (r * dx) / d;\n  const y = y0 + (r * dy) / d;\n\n  return [x, y];\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array<Coordinate>} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n  const x0 = coordinate[0];\n  const y0 = coordinate[1];\n  const start = segment[0];\n  const end = segment[1];\n  const x1 = start[0];\n  const y1 = start[1];\n  const x2 = end[0];\n  const y2 = end[1];\n  const dx = x2 - x1;\n  const dy = y2 - y1;\n  const along =\n    dx === 0 && dy === 0\n      ? 0\n      : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n  let x, y;\n  if (along <= 0) {\n    x = x1;\n    y = y1;\n  } else if (along >= 1) {\n    x = x2;\n    y = y2;\n  } else {\n    x = x1 + along * dx;\n    y = y1 + along * dy;\n  }\n  return [x, y];\n}\n\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n *     import {createStringXY} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const stringifyFunc = createStringXY();\n *     const out = stringifyFunc(coord);\n *     // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n *     import {createStringXY} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const stringifyFunc = createStringXY(2);\n *     const out = stringifyFunc(coord);\n *     // out is now '7.85, 47.98'\n *\n * @param {number} [fractionDigits] The number of digits to include\n *    after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(fractionDigits) {\n  return (\n    /**\n     * @param {Coordinate} coordinate Coordinate.\n     * @return {string} String XY.\n     */\n    function (coordinate) {\n      return toStringXY(coordinate, fractionDigits);\n    }\n  );\n}\n\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number} [fractionDigits] The number of digits to include\n *    after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, fractionDigits) {\n  const normalizedDegrees = modulo(degrees + 180, 360) - 180;\n  const x = Math.abs(3600 * normalizedDegrees);\n  const decimals = fractionDigits || 0;\n\n  let deg = Math.floor(x / 3600);\n  let min = Math.floor((x - deg * 3600) / 60);\n  let sec = toFixed(x - deg * 3600 - min * 60, decimals);\n\n  if (sec >= 60) {\n    sec = 0;\n    min += 1;\n  }\n\n  if (min >= 60) {\n    min = 0;\n    deg += 1;\n  }\n\n  let hdms = deg + '\\u00b0';\n  if (min !== 0 || sec !== 0) {\n    hdms += ' ' + padNumber(min, 2) + '\\u2032';\n  }\n  if (sec !== 0) {\n    hdms += ' ' + padNumber(sec, 2, decimals) + '\\u2033';\n  }\n  if (normalizedDegrees !== 0) {\n    hdms += ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0);\n  }\n\n  return hdms;\n}\n\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n *     import {format} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const template = 'Coordinate is ({x}|{y}).';\n *     const out = format(coord, template);\n *     // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n *     import {format} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const template = 'Coordinate is ({x}|{y}).';\n *     const out = format(coord, template, 2);\n *     // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n *     that will be replaced by first and second coordinate values.\n * @param {number} [fractionDigits] The number of digits to include\n *    after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, fractionDigits) {\n  if (coordinate) {\n    return template\n      .replace('{x}', coordinate[0].toFixed(fractionDigits))\n      .replace('{y}', coordinate[1].toFixed(fractionDigits));\n  }\n  return '';\n}\n\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n  let equals = true;\n  for (let i = coordinate1.length - 1; i >= 0; --i) {\n    if (coordinate1[i] != coordinate2[i]) {\n      equals = false;\n      break;\n    }\n  }\n  return equals;\n}\n\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n *     import {rotate} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const rotateRadians = Math.PI / 2; // 90 degrees\n *     rotate(coord, rotateRadians);\n *     // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n  const cosAngle = Math.cos(angle);\n  const sinAngle = Math.sin(angle);\n  const x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n  const y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n  coordinate[0] = x;\n  coordinate[1] = y;\n  return coordinate;\n}\n\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n *     import {scale as scaleCoordinate} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const scale = 1.2;\n *     scaleCoordinate(coord, scale);\n *     // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n  coordinate[0] *= scale;\n  coordinate[1] *= scale;\n  return coordinate;\n}\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n  const dx = coord1[0] - coord2[0];\n  const dy = coord1[1] - coord2[1];\n  return dx * dx + dy * dy;\n}\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n  return Math.sqrt(squaredDistance(coord1, coord2));\n}\n\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array<Coordinate>} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n  return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n *     import {toStringHDMS} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const out = toStringHDMS(coord);\n *     // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n *     import {toStringHDMS} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const out = toStringHDMS(coord, 1);\n *     // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n *    after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, fractionDigits) {\n  if (coordinate) {\n    return (\n      degreesToStringHDMS('NS', coordinate[1], fractionDigits) +\n      ' ' +\n      degreesToStringHDMS('EW', coordinate[0], fractionDigits)\n    );\n  }\n  return '';\n}\n\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n *     import {toStringXY} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const out = toStringXY(coord);\n *     // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n *     import {toStringXY} from 'ol/coordinate.js';\n *\n *     const coord = [7.85, 47.983333];\n *     const out = toStringXY(coord, 1);\n *     // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n *    after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, fractionDigits) {\n  return format(coordinate, '{x}, {y}', fractionDigits);\n}\n\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n  if (projection.canWrapX()) {\n    const worldWidth = getWidth(projection.getExtent());\n    const worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n    if (worldsAway) {\n      coordinate[0] -= worldsAway * worldWidth;\n    }\n  }\n  return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number} [sourceExtentWidth] Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, sourceExtentWidth) {\n  const projectionExtent = projection.getExtent();\n  let worldsAway = 0;\n  if (\n    projection.canWrapX() &&\n    (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])\n  ) {\n    sourceExtentWidth = sourceExtentWidth || getWidth(projectionExtent);\n    worldsAway = Math.floor(\n      (coordinate[0] - projectionExtent[0]) / sourceExtentWidth,\n    );\n  }\n  return worldsAway;\n}\n\n/**\n * Compute the angle between p0pA and p0pB\n * @param {Coordinate} p0 Point 0\n * @param {Coordinate} pA Point A\n * @param {Coordinate} pB Point B\n * @return {number} a value in [0, 2PI]\n */\nexport function angleBetween(p0, pA, pB) {\n  const lenA = Math.sqrt(\n    (pA[0] - p0[0]) * (pA[0] - p0[0]) + (pA[1] - p0[1]) * (pA[1] - p0[1]),\n  );\n  const tangentA = [(pA[0] - p0[0]) / lenA, (pA[1] - p0[1]) / lenA];\n  const orthoA = [-tangentA[1], tangentA[0]];\n  const lenB = Math.sqrt(\n    (pB[0] - p0[0]) * (pB[0] - p0[0]) + (pB[1] - p0[1]) * (pB[1] - p0[1]),\n  );\n  const tangentB = [(pB[0] - p0[0]) / lenB, (pB[1] - p0[1]) / lenB];\n\n  // this angle can be clockwise or anticlockwise; hence the computation afterwards\n  let angle =\n    lenA === 0 || lenB === 0\n      ? 0\n      : Math.acos(\n          clamp(tangentB[0] * tangentA[0] + tangentB[1] * tangentA[1], -1, 1),\n        );\n  angle = Math.max(angle, 0.00001); // avoid a zero angle otherwise this is detected as a line cap\n  const isClockwise = tangentB[0] * orthoA[0] + tangentB[1] * orthoA[1] > 0;\n  return !isClockwise ? Math.PI * 2 - angle : angle;\n}\n","/**\n * @module ol/proj/Units\n */\n\n/**\n * @typedef {'radians' | 'degrees' | 'ft' | 'm' | 'pixels' | 'tile-pixels' | 'us-ft'} Units\n * Projection units.\n */\n\n/**\n * See http://duff.ess.washington.edu/data/raster/drg/docs/geotiff.txt\n * @type {Object<number, Units>}\n */\nconst unitByCode = {\n  '9001': 'm',\n  '9002': 'ft',\n  '9003': 'us-ft',\n  '9101': 'radians',\n  '9102': 'degrees',\n};\n\n/**\n * @param {number} code Unit code.\n * @return {Units} Units.\n */\nexport function fromCode(code) {\n  return unitByCode[code];\n}\n\n/**\n * @typedef {Object} MetersPerUnitLookup\n * @property {number} radians Radians\n * @property {number} degrees Degrees\n * @property {number} ft  Feet\n * @property {number} m Meters\n * @property {number} us-ft US feet\n */\n\n/**\n * Meters per unit lookup table.\n * @const\n * @type {MetersPerUnitLookup}\n * @api\n */\nexport const METERS_PER_UNIT = {\n  // use the radius of the Normal sphere\n  'radians': 6370997 / (2 * Math.PI),\n  'degrees': (2 * Math.PI * 6370997) / 360,\n  'ft': 0.3048,\n  'm': 1,\n  'us-ft': 1200 / 3937,\n};\n","/**\n * @module ol/proj/Projection\n */\nimport {METERS_PER_UNIT} from './Units.js';\n\n/**\n * The function is called with a `number` view resolution and a\n * {@link module:ol/coordinate~Coordinate} as arguments, and returns the `number` resolution\n * in projection units at the passed coordinate.\n * @typedef {function(number, import(\"../coordinate.js\").Coordinate):number} GetPointResolution\n * @api\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").Units} [units] Units. Required unless a\n * proj4 projection is defined for `code`.\n * @property {import(\"../extent.js\").Extent} [extent] The validity extent for the SRS.\n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.\n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.\n * @property {number} [metersPerUnit] The meters per unit for the SRS.\n * If not provided, the `units` are used to get the meters per unit from the {@link METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {GetPointResolution} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `number` view resolution and a {@link module:ol/coordinate~Coordinate} as arguments, and returns\n * the `number` resolution in projection units at the passed coordinate. If this is `undefined`,\n * the default {@link module:ol/proj.getPointResolution} function will be used.\n */\n\n/**\n * @classdesc\n * In most cases, you should not need to create instances of this class.\n * Instead, where projection information is required, you can use a string\n * projection code or identifier (e.g. `EPSG:4326`) instead of a projection\n * instance.\n *\n * The library includes support for transforming coordinates between the following\n * projections:\n *\n *  WGS 84 / Geographic - Using codes `EPSG:4326`, `CRS:84`, `urn:ogc:def:crs:EPSG:6.6:4326`,\n *    `urn:ogc:def:crs:OGC:1.3:CRS84`, `urn:ogc:def:crs:OGC:2:84`, `http://www.opengis.net/gml/srs/epsg.xml#4326`,\n *    or `urn:x-ogc:def:crs:EPSG:4326`\n *  WGS 84 / Spherical Mercator - Using codes `EPSG:3857`, `EPSG:102100`, `EPSG:102113`, `EPSG:900913`,\n *    `urn:ogc:def:crs:EPSG:6.18:3:3857`, or `http://www.opengis.net/gml/srs/epsg.xml#3857`\n *  WGS 84 / UTM zones - Using codes `EPSG:32601` through `EPSG:32660` for northern zones\n *    and `EPSG:32701` through `EPSG:32760` for southern zones. Note that the built-in UTM transforms\n *    are lower accuracy (with errors on the order of 0.1 m) than those that you might get in a\n *    library like [proj4js](https://github.com/proj4js/proj4js).\n *\n * For additional projection support, or to use higher accuracy transforms than the built-in ones, you can use\n * the [proj4js](https://github.com/proj4js/proj4js) library. With `proj4js`, after adding any new projection\n * definitions, call the {@link module:ol/proj/proj4.register} function.\n *\n * You can use the {@link module:ol/proj.get} function to retrieve a projection instance\n * for one of the registered projections.\n *\n * @api\n */\nclass Projection {\n  /**\n   * @param {Options} options Projection options.\n   */\n  constructor(options) {\n    /**\n     * @private\n     * @type {string}\n     */\n    this.code_ = options.code;\n\n    /**\n     * Units of projected coordinates. When set to `TILE_PIXELS`, a\n     * `this.extent_` and `this.worldExtent_` must be configured properly for each\n     * tile.\n     * @private\n     * @type {import(\"./Units.js\").Units}\n     */\n    this.units_ = /** @type {import(\"./Units.js\").Units} */ (options.units);\n\n    /**\n     * Validity extent of the projection in projected coordinates. For projections\n     * with `TILE_PIXELS` units, this is the extent of the tile in\n     * tile pixel space.\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.extent_ = options.extent !== undefined ? options.extent : null;\n\n    /**\n     * Extent of the world in EPSG:4326. For projections with\n     * `TILE_PIXELS` units, this is the extent of the tile in\n     * projected coordinate space.\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.worldExtent_ =\n      options.worldExtent !== undefined ? options.worldExtent : null;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.axisOrientation_ =\n      options.axisOrientation !== undefined ? options.axisOrientation : 'enu';\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.global_ = options.global !== undefined ? options.global : false;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.canWrapX_ = !!(this.global_ && this.extent_);\n\n    /**\n     * @private\n     * @type {GetPointResolution|undefined}\n     */\n    this.getPointResolutionFunc_ = options.getPointResolution;\n\n    /**\n     * @private\n     * @type {import(\"../tilegrid/TileGrid.js\").default}\n     */\n    this.defaultTileGrid_ = null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.metersPerUnit_ = options.metersPerUnit;\n  }\n\n  /**\n   * @return {boolean} The projection is suitable for wrapping the x-axis\n   */\n  canWrapX() {\n    return this.canWrapX_;\n  }\n\n  /**\n   * Get the code for this projection, e.g. 'EPSG:4326'.\n   * @return {string} Code.\n   * @api\n   */\n  getCode() {\n    return this.code_;\n  }\n\n  /**\n   * Get the validity extent for this projection.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   * @api\n   */\n  getExtent() {\n    return this.extent_;\n  }\n\n  /**\n   * Get the units of this projection.\n   * @return {import(\"./Units.js\").Units} Units.\n   * @api\n   */\n  getUnits() {\n    return this.units_;\n  }\n\n  /**\n   * Get the amount of meters per unit of this projection.  If the projection is\n   * not configured with `metersPerUnit` or a units identifier, the return is\n   * `undefined`.\n   * @return {number|undefined} Meters.\n   * @api\n   */\n  getMetersPerUnit() {\n    return this.metersPerUnit_ || METERS_PER_UNIT[this.units_];\n  }\n\n  /**\n   * Get the world extent for this projection.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   * @api\n   */\n  getWorldExtent() {\n    return this.worldExtent_;\n  }\n\n  /**\n   * Get the axis orientation of this projection.\n   * Example values are:\n   * enu - the default easting, northing, elevation.\n   * neu - northing, easting, up - useful for \"lat/long\" geographic coordinates,\n   *     or south orientated transverse mercator.\n   * wnu - westing, northing, up - some planetary coordinate systems have\n   *     \"west positive\" coordinate systems\n   * @return {string} Axis orientation.\n   * @api\n   */\n  getAxisOrientation() {\n    return this.axisOrientation_;\n  }\n\n  /**\n   * Is this projection a global projection which spans the whole world?\n   * @return {boolean} Whether the projection is global.\n   * @api\n   */\n  isGlobal() {\n    return this.global_;\n  }\n\n  /**\n   * Set if the projection is a global projection which spans the whole world\n   * @param {boolean} global Whether the projection is global.\n   * @api\n   */\n  setGlobal(global) {\n    this.global_ = global;\n    this.canWrapX_ = !!(global && this.extent_);\n  }\n\n  /**\n   * @return {import(\"../tilegrid/TileGrid.js\").default} The default tile grid.\n   */\n  getDefaultTileGrid() {\n    return this.defaultTileGrid_;\n  }\n\n  /**\n   * @param {import(\"../tilegrid/TileGrid.js\").default} tileGrid The default tile grid.\n   */\n  setDefaultTileGrid(tileGrid) {\n    this.defaultTileGrid_ = tileGrid;\n  }\n\n  /**\n   * Set the validity extent for this projection.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @api\n   */\n  setExtent(extent) {\n    this.extent_ = extent;\n    this.canWrapX_ = !!(this.global_ && extent);\n  }\n\n  /**\n   * Set the world extent for this projection.\n   * @param {import(\"../extent.js\").Extent} worldExtent World extent\n   *     [minlon, minlat, maxlon, maxlat].\n   * @api\n   */\n  setWorldExtent(worldExtent) {\n    this.worldExtent_ = worldExtent;\n  }\n\n  /**\n   * Set the getPointResolution function (see {@link module:ol/proj.getPointResolution}\n   * for this projection.\n   * @param {function(number, import(\"../coordinate.js\").Coordinate):number} func Function\n   * @api\n   */\n  setGetPointResolution(func) {\n    this.getPointResolutionFunc_ = func;\n  }\n\n  /**\n   * Get the custom point resolution function for this projection (if set).\n   * @return {GetPointResolution|undefined} The custom point\n   * resolution function (if set).\n   */\n  getPointResolutionFunc() {\n    return this.getPointResolutionFunc_;\n  }\n}\n\nexport default Projection;\n","/**\n * @module ol/proj/epsg3857\n */\nimport Projection from './Projection.js';\n\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport const RADIUS = 6378137;\n\n/**\n * @const\n * @type {number}\n */\nexport const HALF_SIZE = Math.PI * RADIUS;\n\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const EXTENT = [-HALF_SIZE, -HALF_SIZE, HALF_SIZE, HALF_SIZE];\n\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const WORLD_EXTENT = [-180, -85, 180, 85];\n\n/**\n * Maximum safe value in y direction\n * @const\n * @type {number}\n */\nexport const MAX_SAFE_Y = RADIUS * Math.log(Math.tan(Math.PI / 2));\n\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nclass EPSG3857Projection extends Projection {\n  /**\n   * @param {string} code Code.\n   */\n  constructor(code) {\n    super({\n      code: code,\n      units: 'm',\n      extent: EXTENT,\n      global: true,\n      worldExtent: WORLD_EXTENT,\n      getPointResolution: function (resolution, point) {\n        return resolution / Math.cosh(point[1] / RADIUS);\n      },\n    });\n  }\n}\n\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array<import(\"./Projection.js\").default>}\n */\nexport const PROJECTIONS = [\n  new EPSG3857Projection('EPSG:3857'),\n  new EPSG3857Projection('EPSG:102100'),\n  new EPSG3857Projection('EPSG:102113'),\n  new EPSG3857Projection('EPSG:900913'),\n  new EPSG3857Projection('http://www.opengis.net/def/crs/EPSG/0/3857'),\n  new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857'),\n];\n\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array<number>} input Input array of coordinate values.\n * @param {Array<number>} [output] Output array of coordinate values.\n * @param {number} [dimension] Dimension (default is `2`).\n * @param {number} [stride] Stride (default is `dimension`).\n * @return {Array<number>} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, output, dimension, stride) {\n  const length = input.length;\n  dimension = dimension > 1 ? dimension : 2;\n  stride = stride ?? dimension;\n  if (output === undefined) {\n    if (dimension > 2) {\n      // preserve values beyond second dimension\n      output = input.slice();\n    } else {\n      output = new Array(length);\n    }\n  }\n  for (let i = 0; i < length; i += stride) {\n    output[i] = (HALF_SIZE * input[i]) / 180;\n    let y = RADIUS * Math.log(Math.tan((Math.PI * (+input[i + 1] + 90)) / 360));\n    if (y > MAX_SAFE_Y) {\n      y = MAX_SAFE_Y;\n    } else if (y < -MAX_SAFE_Y) {\n      y = -MAX_SAFE_Y;\n    }\n    output[i + 1] = y;\n  }\n  return output;\n}\n\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array<number>} input Input array of coordinate values.\n * @param {Array<number>} [output] Output array of coordinate values.\n * @param {number} [dimension] Dimension (default is `2`).\n * @param {number} [stride] Stride (default is `dimension`).\n * @return {Array<number>} Output array of coordinate values.\n */\nexport function toEPSG4326(input, output, dimension, stride) {\n  const length = input.length;\n  dimension = dimension > 1 ? dimension : 2;\n  stride = stride ?? dimension;\n  if (output === undefined) {\n    if (dimension > 2) {\n      // preserve values beyond second dimension\n      output = input.slice();\n    } else {\n      output = new Array(length);\n    }\n  }\n  for (let i = 0; i < length; i += stride) {\n    output[i] = (180 * input[i]) / HALF_SIZE;\n    output[i + 1] =\n      (360 * Math.atan(Math.exp(input[i + 1] / RADIUS))) / Math.PI - 90;\n  }\n  return output;\n}\n","/**\n * @module ol/proj/epsg4326\n */\nimport Projection from './Projection.js';\n\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport const RADIUS = 6378137;\n\n/**\n * Extent of the EPSG:4326 projection which is the whole world.\n *\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const EXTENT = [-180, -90, 180, 90];\n\n/**\n * @const\n * @type {number}\n */\nexport const METERS_PER_UNIT = (Math.PI * RADIUS) / 180;\n\n/**\n * @classdesc\n * Projection object for WGS84 geographic coordinates (EPSG:4326).\n *\n * Note that OpenLayers does not strictly comply with the EPSG definition.\n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).\n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.\n */\nclass EPSG4326Projection extends Projection {\n  /**\n   * @param {string} code Code.\n   * @param {string} [axisOrientation] Axis orientation.\n   */\n  constructor(code, axisOrientation) {\n    super({\n      code: code,\n      units: 'degrees',\n      extent: EXTENT,\n      axisOrientation: axisOrientation,\n      global: true,\n      metersPerUnit: METERS_PER_UNIT,\n      worldExtent: EXTENT,\n    });\n  }\n}\n\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array<import(\"./Projection.js\").default>}\n */\nexport const PROJECTIONS = [\n  new EPSG4326Projection('CRS:84'),\n  new EPSG4326Projection('EPSG:4326', 'neu'),\n  new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),\n  new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n  new EPSG4326Projection('http://www.opengis.net/def/crs/OGC/1.3/CRS84'),\n  new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n  new EPSG4326Projection('http://www.opengis.net/def/crs/EPSG/0/4326', 'neu'),\n];\n","/**\n * @module ol/proj/projections\n */\n\n/**\n * @type {Object<string, import(\"./Projection.js\").default>}\n */\nlet cache = {};\n\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n  cache = {};\n}\n\n/**\n * Get a cached projection by code.\n * @param {string} code The code for the projection.\n * @return {import(\"./Projection.js\").default|null} The projection (if cached).\n */\nexport function get(code) {\n  return (\n    cache[code] ||\n    cache[code.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\\w+)$/, 'EPSG:$3')] ||\n    null\n  );\n}\n\n/**\n * Add a projection to the cache.\n * @param {string} code The projection code.\n * @param {import(\"./Projection.js\").default} projection The projection to cache.\n */\nexport function add(code, projection) {\n  cache[code] = projection;\n}\n","/**\n * @module ol/proj/transforms\n */\nimport {isEmpty} from '../obj.js';\n\n/**\n * @private\n * @type {!Object<string, Object<string, import(\"../proj.js\").TransformFunction>>}\n */\nlet transforms = {};\n\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n  transforms = {};\n}\n\n/**\n * Registers a conversion function to convert coordinates from the source\n * projection to the destination projection.\n *\n * @param {import(\"./Projection.js\").default} source Source.\n * @param {import(\"./Projection.js\").default} destination Destination.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\nexport function add(source, destination, transformFn) {\n  const sourceCode = source.getCode();\n  const destinationCode = destination.getCode();\n  if (!(sourceCode in transforms)) {\n    transforms[sourceCode] = {};\n  }\n  transforms[sourceCode][destinationCode] = transformFn;\n}\n\n/**\n * Unregisters the conversion function to convert coordinates from the source\n * projection to the destination projection.  This method is used to clean up\n * cached transforms during testing.\n *\n * @param {import(\"./Projection.js\").default} source Source projection.\n * @param {import(\"./Projection.js\").default} destination Destination projection.\n * @return {import(\"../proj.js\").TransformFunction} transformFn The unregistered transform.\n */\nexport function remove(source, destination) {\n  const sourceCode = source.getCode();\n  const destinationCode = destination.getCode();\n  const transform = transforms[sourceCode][destinationCode];\n  delete transforms[sourceCode][destinationCode];\n  if (isEmpty(transforms[sourceCode])) {\n    delete transforms[sourceCode];\n  }\n  return transform;\n}\n\n/**\n * Get a transform given a source code and a destination code.\n * @param {string} sourceCode The code for the source projection.\n * @param {string} destinationCode The code for the destination projection.\n * @return {import(\"../proj.js\").TransformFunction|null} The transform function (if found).\n */\nexport function get(sourceCode, destinationCode) {\n  if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n    return transforms[sourceCode][destinationCode];\n  }\n  return null;\n}\n","/**\n * @module ol/proj/utm\n */\n\n/**\n * Adapted from https://github.com/Turbo87/utm\n * Copyright (c) 2012-2017 Tobias Bieniek\n *\n * The functions here provide approximate transforms to and from UTM.\n * They are not appropriate for use beyond the validity extend of a UTM\n * zone, and the accuracy of the transform decreases toward the zone\n * edges.\n */\n\nimport {toDegrees, toRadians, wrap} from '../math.js';\nimport Projection from './Projection.js';\n\n/**\n * @typedef {Object} UTMZone\n * @property {number} number The zone number (1 - 60).\n * @property {boolean} north The northern hemisphere.\n */\n\nconst K0 = 0.9996;\n\nconst E = 0.00669438;\nconst E2 = E * E;\nconst E3 = E2 * E;\nconst E_P2 = E / (1 - E);\n\nconst SQRT_E = Math.sqrt(1 - E);\nconst _E = (1 - SQRT_E) / (1 + SQRT_E);\nconst _E2 = _E * _E;\nconst _E3 = _E2 * _E;\nconst _E4 = _E3 * _E;\nconst _E5 = _E4 * _E;\n\nconst M1 = 1 - E / 4 - (3 * E2) / 64 - (5 * E3) / 256;\nconst M2 = (3 * E) / 8 + (3 * E2) / 32 + (45 * E3) / 1024;\nconst M3 = (15 * E2) / 256 + (45 * E3) / 1024;\nconst M4 = (35 * E3) / 3072;\n\nconst P2 = (3 / 2) * _E - (27 / 32) * _E3 + (269 / 512) * _E5;\nconst P3 = (21 / 16) * _E2 - (55 / 32) * _E4;\nconst P4 = (151 / 96) * _E3 - (417 / 128) * _E5;\nconst P5 = (1097 / 512) * _E4;\n\nconst R = 6378137;\n\n/**\n * @param {number} easting Easting value of coordinate.\n * @param {number} northing Northing value of coordinate.\n * @param {UTMZone} zone The UTM zone.\n * @return {import(\"../coordinate.js\").Coordinate} The transformed coordinate.\n */\nfunction toLonLat(easting, northing, zone) {\n  const x = easting - 500000;\n  const y = zone.north ? northing : northing - 10000000;\n\n  const m = y / K0;\n  const mu = m / (R * M1);\n\n  const pRad =\n    mu +\n    P2 * Math.sin(2 * mu) +\n    P3 * Math.sin(4 * mu) +\n    P4 * Math.sin(6 * mu) +\n    P5 * Math.sin(8 * mu);\n\n  const pSin = Math.sin(pRad);\n  const pSin2 = pSin * pSin;\n\n  const pCos = Math.cos(pRad);\n\n  const pTan = pSin / pCos;\n  const pTan2 = pTan * pTan;\n  const pTan4 = pTan2 * pTan2;\n\n  const epSin = 1 - E * pSin2;\n  const epSinSqrt = Math.sqrt(1 - E * pSin2);\n\n  const n = R / epSinSqrt;\n  const r = (1 - E) / epSin;\n\n  const c = E_P2 * pCos ** 2;\n  const c2 = c * c;\n\n  const d = x / (n * K0);\n  const d2 = d * d;\n  const d3 = d2 * d;\n  const d4 = d3 * d;\n  const d5 = d4 * d;\n  const d6 = d5 * d;\n\n  const latitude =\n    pRad -\n    (pTan / r) *\n      (d2 / 2 - (d4 / 24) * (5 + 3 * pTan2 + 10 * c - 4 * c2 - 9 * E_P2)) +\n    (d6 / 720) * (61 + 90 * pTan2 + 298 * c + 45 * pTan4 - 252 * E_P2 - 3 * c2);\n\n  let longitude =\n    (d -\n      (d3 / 6) * (1 + 2 * pTan2 + c) +\n      (d5 / 120) * (5 - 2 * c + 28 * pTan2 - 3 * c2 + 8 * E_P2 + 24 * pTan4)) /\n    pCos;\n\n  longitude = wrap(\n    longitude + toRadians(zoneToCentralLongitude(zone.number)),\n    -Math.PI,\n    Math.PI,\n  );\n\n  return [toDegrees(longitude), toDegrees(latitude)];\n}\n\nconst MIN_LATITUDE = -80;\nconst MAX_LATITUDE = 84;\nconst MIN_LONGITUDE = -180;\nconst MAX_LONGITUDE = 180;\n\n/**\n * @param {number} longitude The longitude.\n * @param {number} latitude The latitude.\n * @param {UTMZone} zone The UTM zone.\n * @return {import('../coordinate.js').Coordinate} The UTM coordinate.\n */\nfunction fromLonLat(longitude, latitude, zone) {\n  longitude = wrap(longitude, MIN_LONGITUDE, MAX_LONGITUDE);\n\n  if (latitude < MIN_LATITUDE) {\n    latitude = MIN_LATITUDE;\n  } else if (latitude > MAX_LATITUDE) {\n    latitude = MAX_LATITUDE;\n  }\n\n  const latRad = toRadians(latitude);\n  const latSin = Math.sin(latRad);\n  const latCos = Math.cos(latRad);\n\n  const latTan = latSin / latCos;\n  const latTan2 = latTan * latTan;\n  const latTan4 = latTan2 * latTan2;\n\n  const lonRad = toRadians(longitude);\n  const centralLon = zoneToCentralLongitude(zone.number);\n  const centralLonRad = toRadians(centralLon);\n\n  const n = R / Math.sqrt(1 - E * latSin ** 2);\n  const c = E_P2 * latCos ** 2;\n\n  const a = latCos * wrap(lonRad - centralLonRad, -Math.PI, Math.PI);\n  const a2 = a * a;\n  const a3 = a2 * a;\n  const a4 = a3 * a;\n  const a5 = a4 * a;\n  const a6 = a5 * a;\n\n  const m =\n    R *\n    (M1 * latRad -\n      M2 * Math.sin(2 * latRad) +\n      M3 * Math.sin(4 * latRad) -\n      M4 * Math.sin(6 * latRad));\n\n  const easting =\n    K0 *\n      n *\n      (a +\n        (a3 / 6) * (1 - latTan2 + c) +\n        (a5 / 120) * (5 - 18 * latTan2 + latTan4 + 72 * c - 58 * E_P2)) +\n    500000;\n\n  let northing =\n    K0 *\n    (m +\n      n *\n        latTan *\n        (a2 / 2 +\n          (a4 / 24) * (5 - latTan2 + 9 * c + 4 * c ** 2) +\n          (a6 / 720) * (61 - 58 * latTan2 + latTan4 + 600 * c - 330 * E_P2)));\n\n  if (!zone.north) {\n    northing += 10000000;\n  }\n\n  return [easting, northing];\n}\n\n/**\n * @param {number} zone The zone number.\n * @return {number} The central longitude in degrees.\n */\nfunction zoneToCentralLongitude(zone) {\n  return (zone - 1) * 6 - 180 + 3;\n}\n\n/**\n * @type {Array<RegExp>}\n */\nconst epsgRegExes = [\n  /^EPSG:(\\d+)$/,\n  /^urn:ogc:def:crs:EPSG::(\\d+)$/,\n  /^http:\\/\\/www\\.opengis\\.net\\/def\\/crs\\/EPSG\\/0\\/(\\d+)$/,\n];\n\n/**\n * @param {string} code The projection code.\n * @return {UTMZone|null} The UTM zone info (or null if not UTM).\n */\nexport function zoneFromCode(code) {\n  let epsgId = 0;\n  for (const re of epsgRegExes) {\n    const match = code.match(re);\n    if (match) {\n      epsgId = parseInt(match[1]);\n      break;\n    }\n  }\n  if (!epsgId) {\n    return null;\n  }\n\n  let number = 0;\n  let north = false;\n  if (epsgId > 32700 && epsgId < 32761) {\n    number = epsgId - 32700;\n  } else if (epsgId > 32600 && epsgId < 32661) {\n    north = true;\n    number = epsgId - 32600;\n  }\n  if (!number) {\n    return null;\n  }\n\n  return {number, north};\n}\n\n/**\n * @param {function(number, number, UTMZone): import('../coordinate.js').Coordinate} transformer The transformer.\n * @param {UTMZone} zone The UTM zone.\n * @return {import('../proj.js').TransformFunction} The transform function.\n */\nfunction makeTransformFunction(transformer, zone) {\n  return function (input, output, dimension, stride) {\n    const length = input.length;\n    dimension = dimension > 1 ? dimension : 2;\n    stride = stride ?? dimension;\n    if (!output) {\n      if (dimension > 2) {\n        output = input.slice();\n      } else {\n        output = new Array(length);\n      }\n    }\n    for (let i = 0; i < length; i += stride) {\n      const x = input[i];\n      const y = input[i + 1];\n      const coord = transformer(x, y, zone);\n      output[i] = coord[0];\n      output[i + 1] = coord[1];\n    }\n    return output;\n  };\n}\n\n/**\n * @param {string} code The projection code.\n * @return {import('./Projection.js').default|null} A projection or null if unable to create one.\n */\nexport function makeProjection(code) {\n  const zone = zoneFromCode(code);\n  if (!zone) {\n    return null;\n  }\n  return new Projection({code, units: 'm'});\n}\n\n/**\n * @param {import('./Projection.js').default} projection The projection.\n * @return {import('../proj.js').Transforms|null} The transforms lookup or null if unable to handle projection.\n */\nexport function makeTransforms(projection) {\n  const zone = zoneFromCode(projection.getCode());\n  if (!zone) {\n    return null;\n  }\n\n  return {\n    forward: makeTransformFunction(fromLonLat, zone),\n    inverse: makeTransformFunction(toLonLat, zone),\n  };\n}\n","/**\n * @module ol/sphere\n */\nimport {toDegrees, toRadians} from './math.js';\n\n/**\n * Object literal with options for the {@link getLength} or {@link getArea}\n * functions.\n * @typedef {Object} SphereMetricOptions\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857']\n * Projection of the  geometry.  By default, the geometry is assumed to be in\n * Web Mercator.\n * @property {number} [radius=6371008.8] Sphere radius.  By default, the\n * [mean Earth radius](https://en.wikipedia.org/wiki/Earth_radius#Mean_radius)\n * for the WGS84 ellipsoid is used.\n */\n\n/**\n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.\n * https://en.wikipedia.org/wiki/Earth_radius#Mean_radius\n * @type {number}\n */\nexport const DEFAULT_RADIUS = 6371008.8;\n\n/**\n * Get the great circle distance (in meters) between two geographic coordinates.\n * @param {Array} c1 Starting coordinate.\n * @param {Array} c2 Ending coordinate.\n * @param {number} [radius] The sphere radius to use.  Defaults to the Earth's\n *     mean radius using the WGS84 ellipsoid.\n * @return {number} The great circle distance between the points (in meters).\n * @api\n */\nexport function getDistance(c1, c2, radius) {\n  radius = radius || DEFAULT_RADIUS;\n  const lat1 = toRadians(c1[1]);\n  const lat2 = toRadians(c2[1]);\n  const deltaLatBy2 = (lat2 - lat1) / 2;\n  const deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2;\n  const a =\n    Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n    Math.sin(deltaLonBy2) *\n      Math.sin(deltaLonBy2) *\n      Math.cos(lat1) *\n      Math.cos(lat2);\n  return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n}\n\n/**\n * Get the cumulative great circle length of linestring coordinates (geographic).\n * @param {Array} coordinates Linestring coordinates.\n * @param {number} radius The sphere radius to use.\n * @return {number} The length (in meters).\n */\nfunction getLengthInternal(coordinates, radius) {\n  let length = 0;\n  for (let i = 0, ii = coordinates.length; i < ii - 1; ++i) {\n    length += getDistance(coordinates[i], coordinates[i + 1], radius);\n  }\n  return length;\n}\n\n/**\n * Get the spherical length of a geometry.  This length is the sum of the\n * great circle distances between coordinates.  For polygons, the length is\n * the sum of all rings.  For points, the length is zero.  For multi-part\n * geometries, the length is the sum of the length of each part.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions} [options] Options for the\n * length calculation.  By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical length (in meters).\n * @api\n */\nexport function getLength(geometry, options) {\n  options = options || {};\n  const radius = options.radius || DEFAULT_RADIUS;\n  const projection = options.projection || 'EPSG:3857';\n  const type = geometry.getType();\n  if (type !== 'GeometryCollection') {\n    geometry = geometry.clone().transform(projection, 'EPSG:4326');\n  }\n  let length = 0;\n  let coordinates, coords, i, ii, j, jj;\n  switch (type) {\n    case 'Point':\n    case 'MultiPoint': {\n      break;\n    }\n    case 'LineString':\n    case 'LinearRing': {\n      coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n        geometry\n      ).getCoordinates();\n      length = getLengthInternal(coordinates, radius);\n      break;\n    }\n    case 'MultiLineString':\n    case 'Polygon': {\n      coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n        geometry\n      ).getCoordinates();\n      for (i = 0, ii = coordinates.length; i < ii; ++i) {\n        length += getLengthInternal(coordinates[i], radius);\n      }\n      break;\n    }\n    case 'MultiPolygon': {\n      coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n        geometry\n      ).getCoordinates();\n      for (i = 0, ii = coordinates.length; i < ii; ++i) {\n        coords = coordinates[i];\n        for (j = 0, jj = coords.length; j < jj; ++j) {\n          length += getLengthInternal(coords[j], radius);\n        }\n      }\n      break;\n    }\n    case 'GeometryCollection': {\n      const geometries =\n        /** @type {import(\"./geom/GeometryCollection.js\").default} */ (\n          geometry\n        ).getGeometries();\n      for (i = 0, ii = geometries.length; i < ii; ++i) {\n        length += getLength(geometries[i], options);\n      }\n      break;\n    }\n    default: {\n      throw new Error('Unsupported geometry type: ' + type);\n    }\n  }\n  return length;\n}\n\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs.jpl.nasa.gov/handle/2014/40409)\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007\n *\n * @param {Array<import(\"./coordinate.js\").Coordinate>} coordinates List of coordinates of a linear\n * ring. If the ring is oriented clockwise, the area will be positive,\n * otherwise it will be negative.\n * @param {number} radius The sphere radius.\n * @return {number} Area (in square meters).\n */\nfunction getAreaInternal(coordinates, radius) {\n  let area = 0;\n  const len = coordinates.length;\n  let x1 = coordinates[len - 1][0];\n  let y1 = coordinates[len - 1][1];\n  for (let i = 0; i < len; i++) {\n    const x2 = coordinates[i][0];\n    const y2 = coordinates[i][1];\n    area +=\n      toRadians(x2 - x1) *\n      (2 + Math.sin(toRadians(y1)) + Math.sin(toRadians(y2)));\n    x1 = x2;\n    y1 = y2;\n  }\n  return (area * radius * radius) / 2.0;\n}\n\n/**\n * Get the spherical area of a geometry.  This is the area (in meters) assuming\n * that polygon edges are segments of great circles on a sphere.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions} [options] Options for the area\n *     calculation.  By default, geometries are assumed to be in 'EPSG:3857'.\n *     You can change this by providing a `projection` option.\n * @return {number} The spherical area (in square meters).\n * @api\n */\nexport function getArea(geometry, options) {\n  options = options || {};\n  const radius = options.radius || DEFAULT_RADIUS;\n  const projection = options.projection || 'EPSG:3857';\n  const type = geometry.getType();\n  if (type !== 'GeometryCollection') {\n    geometry = geometry.clone().transform(projection, 'EPSG:4326');\n  }\n  let area = 0;\n  let coordinates, coords, i, ii, j, jj;\n  switch (type) {\n    case 'Point':\n    case 'MultiPoint':\n    case 'LineString':\n    case 'MultiLineString':\n    case 'LinearRing': {\n      break;\n    }\n    case 'Polygon': {\n      coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (\n        geometry\n      ).getCoordinates();\n      area = Math.abs(getAreaInternal(coordinates[0], radius));\n      for (i = 1, ii = coordinates.length; i < ii; ++i) {\n        area -= Math.abs(getAreaInternal(coordinates[i], radius));\n      }\n      break;\n    }\n    case 'MultiPolygon': {\n      coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n        geometry\n      ).getCoordinates();\n      for (i = 0, ii = coordinates.length; i < ii; ++i) {\n        coords = coordinates[i];\n        area += Math.abs(getAreaInternal(coords[0], radius));\n        for (j = 1, jj = coords.length; j < jj; ++j) {\n          area -= Math.abs(getAreaInternal(coords[j], radius));\n        }\n      }\n      break;\n    }\n    case 'GeometryCollection': {\n      const geometries =\n        /** @type {import(\"./geom/GeometryCollection.js\").default} */ (\n          geometry\n        ).getGeometries();\n      for (i = 0, ii = geometries.length; i < ii; ++i) {\n        area += getArea(geometries[i], options);\n      }\n      break;\n    }\n    default: {\n      throw new Error('Unsupported geometry type: ' + type);\n    }\n  }\n  return area;\n}\n\n/**\n * Returns the coordinate at the given distance and bearing from `c1`.\n *\n * @param {import(\"./coordinate.js\").Coordinate} c1 The origin point (`[lon, lat]` in degrees).\n * @param {number} distance The great-circle distance between the origin\n *     point and the target point.\n * @param {number} bearing The bearing (in radians).\n * @param {number} [radius] The sphere radius to use.  Defaults to the Earth's\n *     mean radius using the WGS84 ellipsoid.\n * @return {import(\"./coordinate.js\").Coordinate} The target point.\n */\nexport function offset(c1, distance, bearing, radius) {\n  radius = radius || DEFAULT_RADIUS;\n  const lat1 = toRadians(c1[1]);\n  const lon1 = toRadians(c1[0]);\n  const dByR = distance / radius;\n  const lat = Math.asin(\n    Math.sin(lat1) * Math.cos(dByR) +\n      Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing),\n  );\n  const lon =\n    lon1 +\n    Math.atan2(\n      Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1),\n      Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat),\n    );\n  return [toDegrees(lon), toDegrees(lat)];\n}\n","/**\n * @module ol/proj\n */\n\n/**\n * The ol/proj module stores:\n * a list of {@link module:ol/proj/Projection~Projection}\n * objects, one for each projection supported by the application\n * a list of transform functions needed to convert coordinates in one projection\n * into another.\n *\n * The static functions are the methods used to maintain these.\n * Each transform function can handle not only simple coordinate pairs, but also\n * large arrays of coordinates such as vector geometries.\n *\n * When loaded, the library adds projection objects for EPSG:4326 (WGS84\n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used\n * for example by Bing Maps or OpenStreetMap), together with the relevant\n * transform functions.\n *\n * Additional transforms may be added by using the http://proj4js.org/\n * library (version 2.2 or later). You can use the full build supplied by\n * Proj4js, or create a custom build to support those projections you need; see\n * the Proj4js website for how to do this. You also need the Proj4js definitions\n * for the required projections. These definitions can be obtained from\n * https://spatialreference.org/, and are a JS function, so can be loaded in a\n * script tag (as in the examples) or pasted into your application.\n *\n * After all required projection definitions are added to proj4's registry (by\n * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`\n * package. Existing transforms are not changed by this function. See\n * examples/wms-image-custom-proj for an example of this.\n *\n * Additional projection definitions can be registered with `proj4.defs()` any\n * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't\n * know in advance what projections are needed, you can initially load minimal\n * support and then load whichever are requested.\n *\n * Note that Proj4js does not support projection extents. If you want to add\n * one for creating default tile grids, you can add it after the Projection\n * object has been created with `setExtent`, for example,\n * `get('EPSG:1234').setExtent(extent)`.\n *\n * In addition to Proj4js support, any transform functions can be added with\n * {@link module:ol/proj.addCoordinateTransforms}. To use this, you must first create\n * a {@link module:ol/proj/Projection~Projection} object for the new projection and add it with\n * {@link module:ol/proj.addProjection}. You can then add the forward and inverse\n * functions with {@link module:ol/proj.addCoordinateTransforms}. See\n * examples/wms-custom-proj for an example of this.\n *\n * Note that if no transforms are needed and you only need to define the\n * projection, just add a {@link module:ol/proj/Projection~Projection} with\n * {@link module:ol/proj.addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport {warn} from './console.js';\nimport {equals, getWorldsAway} from './coordinate.js';\nimport {applyTransform, getWidth} from './extent.js';\nimport {clamp, modulo} from './math.js';\nimport Projection from './proj/Projection.js';\nimport {METERS_PER_UNIT} from './proj/Units.js';\nimport {\n  PROJECTIONS as EPSG3857_PROJECTIONS,\n  fromEPSG4326,\n  toEPSG4326,\n} from './proj/epsg3857.js';\nimport {PROJECTIONS as EPSG4326_PROJECTIONS} from './proj/epsg4326.js';\nimport {\n  add as addProj,\n  clear as clearProj,\n  get as getProj,\n} from './proj/projections.js';\nimport {\n  add as addTransformFunc,\n  clear as clearTransformFuncs,\n  get as getTransformFunc,\n} from './proj/transforms.js';\nimport {\n  makeProjection as makeUTMProjection,\n  makeTransforms as makeUTMTransforms,\n} from './proj/utm.js';\nimport {getDistance} from './sphere.js';\n\n/**\n * A projection as {@link module:ol/proj/Projection~Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n\n/**\n * @typedef {Object} Transforms\n * @property {TransformFunction} forward The forward transform (from geographic).\n * @property {TransformFunction} inverse The inverse transform (to geographic).\n */\n\n/**\n * @type {Array<function(Projection): Transforms|null>}\n */\nconst transformFactories = [makeUTMTransforms];\n\n/**\n * @type {Array<function(string): Projection|null>}\n */\nconst projectionFactories = [makeUTMProjection];\n\n/**\n * A transform function accepts an array of input coordinate values, an optional\n * output array, and an optional dimension (default should be 2).  The function\n * transforms the input coordinate values, populates the output array, and\n * returns the output array.\n *\n * @callback TransformFunction\n * @param {Array<number>} input\n * @param {Array<number>} [output]\n * @param {number} [dimension]\n * @param {number} [stride]\n * @return {Array<number>}\n *\n * @api\n */\n\nexport {METERS_PER_UNIT};\n\nexport {Projection};\n\nlet showCoordinateWarning = true;\n\n/**\n * @param {boolean} [disable] Disable console info about `useGeographic()`\n */\nexport function disableCoordinateWarning(disable) {\n  const hide = disable === undefined ? true : disable;\n  showCoordinateWarning = !hide;\n}\n\n/**\n * @param {Array<number>} input Input coordinate array.\n * @param {Array<number>} [output] Output array of coordinate values.\n * @return {Array<number>} Output coordinate array (new array, same coordinate\n *     values).\n */\nexport function cloneTransform(input, output) {\n  if (output !== undefined) {\n    for (let i = 0, ii = input.length; i < ii; ++i) {\n      output[i] = input[i];\n    }\n    output = output;\n  } else {\n    output = input.slice();\n  }\n  return output;\n}\n\n/**\n * @param {Array<number>} input Input coordinate array.\n * @param {Array<number>} [output] Output array of coordinate values.\n * @return {Array<number>} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, output) {\n  if (output !== undefined && input !== output) {\n    for (let i = 0, ii = input.length; i < ii; ++i) {\n      output[i] = input[i];\n    }\n    input = output;\n  }\n  return input;\n}\n\n/**\n * Add a Projection object to the list of supported projections that can be\n * looked up by their code.\n *\n * @param {Projection} projection Projection instance.\n * @api\n */\nexport function addProjection(projection) {\n  addProj(projection.getCode(), projection);\n  addTransformFunc(projection, projection, cloneTransform);\n}\n\n/**\n * @param {Array<Projection>} projections Projections.\n */\nexport function addProjections(projections) {\n  projections.forEach(addProjection);\n}\n\n/**\n * Fetches a Projection object for the code specified.\n *\n * @param {ProjectionLike} projectionLike Either a code string which is\n *     a combination of authority and identifier such as \"EPSG:4326\", or an\n *     existing projection object, or undefined.\n * @return {Projection|null} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n  if (!(typeof projectionLike === 'string')) {\n    return projectionLike;\n  }\n  const projection = getProj(projectionLike);\n  if (projection) {\n    return projection;\n  }\n  for (const makeProjection of projectionFactories) {\n    const projection = makeProjection(projectionLike);\n    if (projection) {\n      return projection;\n    }\n  }\n  return null;\n}\n\n/**\n * Get the resolution of the point in degrees or distance units.\n * For projections with degrees as the unit this will simply return the\n * provided resolution. For other projections the point resolution is\n * by default estimated by transforming the `point` pixel to EPSG:4326,\n * measuring its width and height on the normal sphere,\n * and taking the average of the width and height.\n * A custom function can be provided for a specific projection, either\n * by setting the `getPointResolution` option in the\n * {@link module:ol/proj/Projection~Projection} constructor or by using\n * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existing\n * projection object.\n * @param {ProjectionLike} projection The projection.\n * @param {number} resolution Nominal resolution in projection units.\n * @param {import(\"./coordinate.js\").Coordinate} point Point to find adjusted resolution at.\n * @param {import(\"./proj/Units.js\").Units} [units] Units to get the point resolution in.\n * Default is the projection's units.\n * @return {number} Point resolution.\n * @api\n */\nexport function getPointResolution(projection, resolution, point, units) {\n  projection = get(projection);\n  let pointResolution;\n  const getter = projection.getPointResolutionFunc();\n  if (getter) {\n    pointResolution = getter(resolution, point);\n    if (units && units !== projection.getUnits()) {\n      const metersPerUnit = projection.getMetersPerUnit();\n      if (metersPerUnit) {\n        pointResolution =\n          (pointResolution * metersPerUnit) / METERS_PER_UNIT[units];\n      }\n    }\n  } else {\n    const projUnits = projection.getUnits();\n    if ((projUnits == 'degrees' && !units) || units == 'degrees') {\n      pointResolution = resolution;\n    } else {\n      // Estimate point resolution by transforming the center pixel to EPSG:4326,\n      // measuring its width and height on the normal sphere, and taking the\n      // average of the width and height.\n      const toEPSG4326 = getTransformFromProjections(\n        projection,\n        get('EPSG:4326'),\n      );\n      if (!toEPSG4326 && projUnits !== 'degrees') {\n        // no transform is available\n        pointResolution = resolution * projection.getMetersPerUnit();\n      } else {\n        let vertices = [\n          point[0] - resolution / 2,\n          point[1],\n          point[0] + resolution / 2,\n          point[1],\n          point[0],\n          point[1] - resolution / 2,\n          point[0],\n          point[1] + resolution / 2,\n        ];\n        vertices = toEPSG4326(vertices, vertices, 2);\n        const width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));\n        const height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));\n        pointResolution = (width + height) / 2;\n      }\n      const metersPerUnit = units\n        ? METERS_PER_UNIT[units]\n        : projection.getMetersPerUnit();\n      if (metersPerUnit !== undefined) {\n        pointResolution /= metersPerUnit;\n      }\n    }\n  }\n  return pointResolution;\n}\n\n/**\n * Registers transformation functions that don't alter coordinates. Those allow\n * to transform between projections with equal meaning.\n *\n * @param {Array<Projection>} projections Projections.\n * @api\n */\nexport function addEquivalentProjections(projections) {\n  addProjections(projections);\n  projections.forEach(function (source) {\n    projections.forEach(function (destination) {\n      if (source !== destination) {\n        addTransformFunc(source, destination, cloneTransform);\n      }\n    });\n  });\n}\n\n/**\n * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array<Projection>} projections1 Projections with equal\n *     meaning.\n * @param {Array<Projection>} projections2 Projections with equal\n *     meaning.\n * @param {TransformFunction} forwardTransform Transformation from any\n *   projection in projection1 to any projection in projection2.\n * @param {TransformFunction} inverseTransform Transform from any projection\n *   in projection2 to any projection in projection1..\n */\nexport function addEquivalentTransforms(\n  projections1,\n  projections2,\n  forwardTransform,\n  inverseTransform,\n) {\n  projections1.forEach(function (projection1) {\n    projections2.forEach(function (projection2) {\n      addTransformFunc(projection1, projection2, forwardTransform);\n      addTransformFunc(projection2, projection1, inverseTransform);\n    });\n  });\n}\n\n/**\n * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n  clearProj();\n  clearTransformFuncs();\n}\n\n/**\n * @param {Projection|string|undefined} projection Projection.\n * @param {string} defaultCode Default code.\n * @return {Projection} Projection.\n */\nexport function createProjection(projection, defaultCode) {\n  if (!projection) {\n    return get(defaultCode);\n  }\n  if (typeof projection === 'string') {\n    return get(projection);\n  }\n  return /** @type {Projection} */ (projection);\n}\n\n/**\n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transform\n * function.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} coordTransform Coordinate\n *     transform.\n * @return {TransformFunction} Transform function.\n */\nexport function createTransformFromCoordinateTransform(coordTransform) {\n  return (\n    /**\n     * @param {Array<number>} input Input.\n     * @param {Array<number>} [output] Output.\n     * @param {number} [dimension] Dimensions that should be transformed.\n     * @param {number} [stride] Stride.\n     * @return {Array<number>} Output.\n     */\n    function (input, output, dimension, stride) {\n      const length = input.length;\n      dimension = dimension !== undefined ? dimension : 2;\n      stride = stride ?? dimension;\n      output = output !== undefined ? output : new Array(length);\n      for (let i = 0; i < length; i += stride) {\n        const point = coordTransform(input.slice(i, i + dimension));\n        const pointLength = point.length;\n        for (let j = 0, jj = stride; j < jj; ++j) {\n          output[i + j] = j >= pointLength ? input[i + j] : point[j];\n        }\n      }\n      return output;\n    }\n  );\n}\n\n/**\n * Registers coordinate transform functions to convert coordinates between the\n * source projection and the destination projection.\n * The forward and inverse functions convert coordinate pairs; this function\n * converts these into the functions used internally which also handle\n * extents and coordinate arrays.\n *\n * @param {ProjectionLike} source Source projection.\n * @param {ProjectionLike} destination Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} forward The forward transform\n *     function (that is, from the source projection to the destination\n *     projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n *     the transformed {@link module:ol/coordinate~Coordinate}.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} inverse The inverse transform\n *     function (that is, from the destination projection to the source\n *     projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n *     the transformed {@link module:ol/coordinate~Coordinate}. If the transform function can only\n *     transform less dimensions than the input coordinate, it is supposeed to return a coordinate\n *     with only the length it can transform. The other dimensions will be taken unchanged from the\n *     source.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n  const sourceProj = get(source);\n  const destProj = get(destination);\n  addTransformFunc(\n    sourceProj,\n    destProj,\n    createTransformFromCoordinateTransform(forward),\n  );\n  addTransformFunc(\n    destProj,\n    sourceProj,\n    createTransformFromCoordinateTransform(inverse),\n  );\n}\n\n/**\n * Transforms a coordinate from longitude/latitude to a different projection.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate as longitude and latitude, i.e.\n *     an array with longitude as 1st and latitude as 2nd element.\n * @param {ProjectionLike} [projection] Target projection. The\n *     default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate projected to the target projection.\n * @api\n */\nexport function fromLonLat(coordinate, projection) {\n  disableCoordinateWarning();\n  return transform(\n    coordinate,\n    'EPSG:4326',\n    projection !== undefined ? projection : 'EPSG:3857',\n  );\n}\n\n/**\n * Transforms a coordinate to longitude/latitude.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Projected coordinate.\n * @param {ProjectionLike} [projection] Projection of the coordinate.\n *     The default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate as longitude and latitude, i.e. an array\n *     with longitude as 1st and latitude as 2nd element.\n * @api\n */\nexport function toLonLat(coordinate, projection) {\n  const lonLat = transform(\n    coordinate,\n    projection !== undefined ? projection : 'EPSG:3857',\n    'EPSG:4326',\n  );\n  const lon = lonLat[0];\n  if (lon < -180 || lon > 180) {\n    lonLat[0] = modulo(lon + 180, 360) - 180;\n  }\n  return lonLat;\n}\n\n/**\n * Checks if two projections are the same, that is every coordinate in one\n * projection does represent the same geographic point as the same coordinate in\n * the other projection.\n *\n * @param {Projection} projection1 Projection 1.\n * @param {Projection} projection2 Projection 2.\n * @return {boolean} Equivalent.\n * @api\n */\nexport function equivalent(projection1, projection2) {\n  if (projection1 === projection2) {\n    return true;\n  }\n  const equalUnits = projection1.getUnits() === projection2.getUnits();\n  if (projection1.getCode() === projection2.getCode()) {\n    return equalUnits;\n  }\n  const transformFunc = getTransformFromProjections(projection1, projection2);\n  return transformFunc === cloneTransform && equalUnits;\n}\n\n/**\n * Searches in the list of transform functions for the function for converting\n * coordinates from the source projection to the destination projection.\n *\n * @param {Projection} source Source Projection object.\n * @param {Projection} destination Destination Projection\n *     object.\n * @return {TransformFunction|null} Transform function.\n */\nexport function getTransformFromProjections(source, destination) {\n  const sourceCode = source.getCode();\n  const destinationCode = destination.getCode();\n  let transformFunc = getTransformFunc(sourceCode, destinationCode);\n  if (transformFunc) {\n    return transformFunc;\n  }\n\n  /**\n   * @type {Transforms|null}\n   */\n  let sourceTransforms = null;\n\n  /**\n   * @type {Transforms|null}\n   */\n  let destinationTransforms = null;\n\n  // lazily add projections if we have supported transforms\n  for (const makeTransforms of transformFactories) {\n    if (!sourceTransforms) {\n      sourceTransforms = makeTransforms(source);\n    }\n    if (!destinationTransforms) {\n      destinationTransforms = makeTransforms(destination);\n    }\n  }\n\n  if (!sourceTransforms && !destinationTransforms) {\n    return null;\n  }\n\n  const intermediateCode = 'EPSG:4326';\n  if (!destinationTransforms) {\n    const toDestination = getTransformFunc(intermediateCode, destinationCode);\n    if (toDestination) {\n      transformFunc = composeTransformFuncs(\n        sourceTransforms.inverse,\n        toDestination,\n      );\n    }\n  } else if (!sourceTransforms) {\n    const fromSource = getTransformFunc(sourceCode, intermediateCode);\n    if (fromSource) {\n      transformFunc = composeTransformFuncs(\n        fromSource,\n        destinationTransforms.forward,\n      );\n    }\n  } else {\n    transformFunc = composeTransformFuncs(\n      sourceTransforms.inverse,\n      destinationTransforms.forward,\n    );\n  }\n\n  if (transformFunc) {\n    addProjection(source);\n    addProjection(destination);\n    addTransformFunc(source, destination, transformFunc);\n  }\n\n  return transformFunc;\n}\n\n/**\n * @param {TransformFunction} t1 The first transform function.\n * @param {TransformFunction} t2 The second transform function.\n * @return {TransformFunction} The composed transform function.\n */\nfunction composeTransformFuncs(t1, t2) {\n  return function (input, output, dimensions, stride) {\n    output = t1(input, output, dimensions, stride);\n    return t2(output, output, dimensions, stride);\n  };\n}\n\n/**\n * Given the projection-like objects, searches for a transformation\n * function to convert a coordinates array from the source projection to the\n * destination projection.\n *\n * @param {ProjectionLike} source Source.\n * @param {ProjectionLike} destination Destination.\n * @return {TransformFunction} Transform function.\n * @api\n */\nexport function getTransform(source, destination) {\n  const sourceProjection = get(source);\n  const destinationProjection = get(destination);\n  return getTransformFromProjections(sourceProjection, destinationProjection);\n}\n\n/**\n * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original). If there\n * is no available transform between the two projection, the function will throw\n * an error.\n *\n * See {@link module:ol/proj.transformExtent} for extent transformation.\n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and its\n * subclasses for geometry transforms.\n *\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\nexport function transform(coordinate, source, destination) {\n  const transformFunc = getTransform(source, destination);\n  if (!transformFunc) {\n    const sourceCode = get(source).getCode();\n    const destinationCode = get(destination).getCode();\n    throw new Error(\n      `No transform available between ${sourceCode} and ${destinationCode}`,\n    );\n  }\n  return transformFunc(coordinate, undefined, coordinate.length);\n}\n\n/**\n * Transforms an extent from source projection to destination projection.  This\n * returns a new extent (and does not modify the original).\n *\n * @param {import(\"./extent.js\").Extent} extent The extent to transform.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @param {number} [stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination, stops) {\n  const transformFunc = getTransform(source, destination);\n  return applyTransform(extent, transformFunc, undefined, stops);\n}\n\n/**\n * Transforms the given point to the destination projection.\n *\n * @param {import(\"./coordinate.js\").Coordinate} point Point.\n * @param {Projection} sourceProjection Source projection.\n * @param {Projection} destinationProjection Destination projection.\n * @return {import(\"./coordinate.js\").Coordinate} Point.\n */\nexport function transformWithProjections(\n  point,\n  sourceProjection,\n  destinationProjection,\n) {\n  const transformFunc = getTransformFromProjections(\n    sourceProjection,\n    destinationProjection,\n  );\n  return transformFunc(point);\n}\n\n/**\n * @type {Projection|null}\n */\nlet userProjection = null;\n\n/**\n * Set the projection for coordinates supplied from and returned by API methods.\n * This includes all API methods except for those interacting with tile grids,\n * plus {@link import(\"./Map.js\").FrameState} and {@link import(\"./View.js\").State}.\n * @param {ProjectionLike} projection The user projection.\n * @api\n */\nexport function setUserProjection(projection) {\n  userProjection = get(projection);\n}\n\n/**\n * Clear the user projection if set.\n * @api\n */\nexport function clearUserProjection() {\n  userProjection = null;\n}\n\n/**\n * Get the projection for coordinates supplied from and returned by API methods.\n * @return {Projection|null} The user projection (or null if not set).\n * @api\n */\nexport function getUserProjection() {\n  return userProjection;\n}\n\n/**\n * Use geographic coordinates (WGS-84 datum) in API methods.\n * This includes all API methods except for those interacting with tile grids,\n * plus {@link import(\"./Map.js\").FrameState} and {@link import(\"./View.js\").State}.\n * @api\n */\nexport function useGeographic() {\n  setUserProjection('EPSG:4326');\n}\n\n/**\n * Return a coordinate transformed into the user projection.  If no user projection\n * is set, the original coordinate is returned.\n * @param {Array<number>} coordinate Input coordinate.\n * @param {ProjectionLike} sourceProjection The input coordinate projection.\n * @return {Array<number>} The input coordinate in the user projection.\n */\nexport function toUserCoordinate(coordinate, sourceProjection) {\n  if (!userProjection) {\n    return coordinate;\n  }\n  return transform(coordinate, sourceProjection, userProjection);\n}\n\n/**\n * Return a coordinate transformed from the user projection.  If no user projection\n * is set, the original coordinate is returned.\n * @param {Array<number>} coordinate Input coordinate.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {Array<number>} The input coordinate transformed.\n */\nexport function fromUserCoordinate(coordinate, destProjection) {\n  if (!userProjection) {\n    if (\n      showCoordinateWarning &&\n      !equals(coordinate, [0, 0]) &&\n      coordinate[0] >= -180 &&\n      coordinate[0] <= 180 &&\n      coordinate[1] >= -90 &&\n      coordinate[1] <= 90\n    ) {\n      showCoordinateWarning = false;\n      warn(\n        'Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.',\n      );\n    }\n    return coordinate;\n  }\n  return transform(coordinate, userProjection, destProjection);\n}\n\n/**\n * Return an extent transformed into the user projection.  If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} sourceProjection The input extent projection.\n * @return {import(\"./extent.js\").Extent} The input extent in the user projection.\n */\nexport function toUserExtent(extent, sourceProjection) {\n  if (!userProjection) {\n    return extent;\n  }\n  return transformExtent(extent, sourceProjection, userProjection);\n}\n\n/**\n * Return an extent transformed from the user projection.  If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {import(\"./extent.js\").Extent} The input extent transformed.\n */\nexport function fromUserExtent(extent, destProjection) {\n  if (!userProjection) {\n    return extent;\n  }\n  return transformExtent(extent, userProjection, destProjection);\n}\n\n/**\n * Return the resolution in user projection units per pixel. If no user projection\n * is set, or source or user projection are missing units, the original resolution\n * is returned.\n * @param {number} resolution Resolution in input projection units per pixel.\n * @param {ProjectionLike} sourceProjection The input projection.\n * @return {number} Resolution in user projection units per pixel.\n */\nexport function toUserResolution(resolution, sourceProjection) {\n  if (!userProjection) {\n    return resolution;\n  }\n  const sourceMetersPerUnit = get(sourceProjection).getMetersPerUnit();\n  const userMetersPerUnit = userProjection.getMetersPerUnit();\n  return sourceMetersPerUnit && userMetersPerUnit\n    ? (resolution * sourceMetersPerUnit) / userMetersPerUnit\n    : resolution;\n}\n\n/**\n * Return the resolution in user projection units per pixel. If no user projection\n * is set, or source or user projection are missing units, the original resolution\n * is returned.\n * @param {number} resolution Resolution in user projection units per pixel.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {number} Resolution in destination projection units per pixel.\n */\nexport function fromUserResolution(resolution, destProjection) {\n  if (!userProjection) {\n    return resolution;\n  }\n  const destMetersPerUnit = get(destProjection).getMetersPerUnit();\n  const userMetersPerUnit = userProjection.getMetersPerUnit();\n  return destMetersPerUnit && userMetersPerUnit\n    ? (resolution * userMetersPerUnit) / destMetersPerUnit\n    : resolution;\n}\n\n/**\n * Creates a safe coordinate transform function from a coordinate transform function.\n * \"Safe\" means that it can handle wrapping of x-coordinates for global projections,\n * and that coordinates exceeding the source projection validity extent's range will be\n * clamped to the validity range.\n * @param {Projection} sourceProj Source projection.\n * @param {Projection} destProj Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} transform Transform function (source to destination).\n * @return {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} Safe transform function (source to destination).\n */\nexport function createSafeCoordinateTransform(sourceProj, destProj, transform) {\n  return function (coord) {\n    let transformed, worldsAway;\n    if (sourceProj.canWrapX()) {\n      const sourceExtent = sourceProj.getExtent();\n      const sourceExtentWidth = getWidth(sourceExtent);\n      coord = coord.slice(0);\n      worldsAway = getWorldsAway(coord, sourceProj, sourceExtentWidth);\n      if (worldsAway) {\n        // Move x to the real world\n        coord[0] = coord[0] - worldsAway * sourceExtentWidth;\n      }\n      coord[0] = clamp(coord[0], sourceExtent[0], sourceExtent[2]);\n      coord[1] = clamp(coord[1], sourceExtent[1], sourceExtent[3]);\n      transformed = transform(coord);\n    } else {\n      transformed = transform(coord);\n    }\n    if (worldsAway && destProj.canWrapX()) {\n      // Move transformed coordinate back to the offset world\n      transformed[0] += worldsAway * getWidth(destProj.getExtent());\n    }\n    return transformed;\n  };\n}\n\n/**\n * Add transforms to and from EPSG:4326 and EPSG:3857.  This function is called\n * by when this module is executed and should only need to be called again after\n * `clearAllProjections()` is called (e.g. in tests).\n */\nexport function addCommon() {\n  // Add transformations that don't alter coordinates to convert within set of\n  // projections with equal meaning.\n  addEquivalentProjections(EPSG3857_PROJECTIONS);\n  addEquivalentProjections(EPSG4326_PROJECTIONS);\n  // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 like\n  // coordinates and back.\n  addEquivalentTransforms(\n    EPSG4326_PROJECTIONS,\n    EPSG3857_PROJECTIONS,\n    fromEPSG4326,\n    toEPSG4326,\n  );\n}\n\naddCommon();\n","/**\n * @module ol/asserts\n */\n\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {string} errorMessage Error message.\n */\nexport function assert(assertion, errorMessage) {\n  if (!assertion) {\n    throw new Error(errorMessage);\n  }\n}\n","/**\n * @module ol/transform\n */\nimport {assert} from './asserts.js';\n\n/**\n * An array representing an affine 2d transformation for use with\n * {@link module:ol/transform} functions. The array has 6 elements.\n * @typedef {!Array<number>} Transform\n * @api\n */\n\n/**\n * Collection of affine 2d transformation functions. The functions work on an\n * array of 6 elements. The element order is compatible with the [SVGMatrix\n * interface](https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and is\n * a subset (elements a to f) of a 3×3 matrix:\n * ```\n * [ a c e ]\n * [ b d f ]\n * [ 0 0 1 ]\n * ```\n */\n\n/**\n * @private\n * @type {Transform}\n */\nconst tmp_ = new Array(6);\n\n/**\n * Create an identity transform.\n * @return {!Transform} Identity transform.\n */\nexport function create() {\n  return [1, 0, 0, 1, 0, 0];\n}\n\n/**\n * Resets the given transform to an identity transform.\n * @param {!Transform} transform Transform.\n * @return {!Transform} Transform.\n */\nexport function reset(transform) {\n  return set(transform, 1, 0, 0, 1, 0, 0);\n}\n\n/**\n * Multiply the underlying matrices of two transforms and return the result in\n * the first transform.\n * @param {!Transform} transform1 Transform parameters of matrix 1.\n * @param {!Transform} transform2 Transform parameters of matrix 2.\n * @return {!Transform} transform1 multiplied with transform2.\n */\nexport function multiply(transform1, transform2) {\n  const a1 = transform1[0];\n  const b1 = transform1[1];\n  const c1 = transform1[2];\n  const d1 = transform1[3];\n  const e1 = transform1[4];\n  const f1 = transform1[5];\n  const a2 = transform2[0];\n  const b2 = transform2[1];\n  const c2 = transform2[2];\n  const d2 = transform2[3];\n  const e2 = transform2[4];\n  const f2 = transform2[5];\n\n  transform1[0] = a1 * a2 + c1 * b2;\n  transform1[1] = b1 * a2 + d1 * b2;\n  transform1[2] = a1 * c2 + c1 * d2;\n  transform1[3] = b1 * c2 + d1 * d2;\n  transform1[4] = a1 * e2 + c1 * f2 + e1;\n  transform1[5] = b1 * e2 + d1 * f2 + f1;\n\n  return transform1;\n}\n\n/**\n * Set the transform components a-f on a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} a The a component of the transform.\n * @param {number} b The b component of the transform.\n * @param {number} c The c component of the transform.\n * @param {number} d The d component of the transform.\n * @param {number} e The e component of the transform.\n * @param {number} f The f component of the transform.\n * @return {!Transform} Matrix with transform applied.\n */\nexport function set(transform, a, b, c, d, e, f) {\n  transform[0] = a;\n  transform[1] = b;\n  transform[2] = c;\n  transform[3] = d;\n  transform[4] = e;\n  transform[5] = f;\n  return transform;\n}\n\n/**\n * Set transform on one matrix from another matrix.\n * @param {!Transform} transform1 Matrix to set transform to.\n * @param {!Transform} transform2 Matrix to set transform from.\n * @return {!Transform} transform1 with transform from transform2 applied.\n */\nexport function setFromArray(transform1, transform2) {\n  transform1[0] = transform2[0];\n  transform1[1] = transform2[1];\n  transform1[2] = transform2[2];\n  transform1[3] = transform2[3];\n  transform1[4] = transform2[4];\n  transform1[5] = transform2[5];\n  return transform1;\n}\n\n/**\n * Transforms the given coordinate with the given transform returning the\n * resulting, transformed coordinate. The coordinate will be modified in-place.\n *\n * @param {Transform} transform The transformation.\n * @param {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} coordinate The coordinate to transform.\n * @return {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} return coordinate so that operations can be\n *     chained together.\n */\nexport function apply(transform, coordinate) {\n  const x = coordinate[0];\n  const y = coordinate[1];\n  coordinate[0] = transform[0] * x + transform[2] * y + transform[4];\n  coordinate[1] = transform[1] * x + transform[3] * y + transform[5];\n  return coordinate;\n}\n\n/**\n * Applies rotation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} angle Angle in radians.\n * @return {!Transform} The rotated transform.\n */\nexport function rotate(transform, angle) {\n  const cos = Math.cos(angle);\n  const sin = Math.sin(angle);\n  return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));\n}\n\n/**\n * Applies scale to a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scaled transform.\n */\nexport function scale(transform, x, y) {\n  return multiply(transform, set(tmp_, x, 0, 0, y, 0, 0));\n}\n\n/**\n * Creates a scale transform.\n * @param {!Transform} target Transform to overwrite.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scale transform.\n */\nexport function makeScale(target, x, y) {\n  return set(target, x, 0, 0, y, 0, 0);\n}\n\n/**\n * Applies translation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} dx Translation x.\n * @param {number} dy Translation y.\n * @return {!Transform} The translated transform.\n */\nexport function translate(transform, dx, dy) {\n  return multiply(transform, set(tmp_, 1, 0, 0, 1, dx, dy));\n}\n\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative).\n * @param {!Transform} transform The transform (will be modified in place).\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {!Transform} The composite transform.\n */\nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {\n  const sin = Math.sin(angle);\n  const cos = Math.cos(angle);\n  transform[0] = sx * cos;\n  transform[1] = sy * sin;\n  transform[2] = -sx * sin;\n  transform[3] = sy * cos;\n  transform[4] = dx2 * sx * cos - dy2 * sx * sin + dx1;\n  transform[5] = dx2 * sy * sin + dy2 * sy * cos + dy1;\n  return transform;\n}\n\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative). The resulting transform\n * string can be applied as `transform` property of an HTMLElement's style.\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {string} The composite css transform.\n * @api\n */\nexport function composeCssTransform(dx1, dy1, sx, sy, angle, dx2, dy2) {\n  return toString(compose(create(), dx1, dy1, sx, sy, angle, dx2, dy2));\n}\n\n/**\n * Invert the given transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (source) transform.\n */\nexport function invert(source) {\n  return makeInverse(source, source);\n}\n\n/**\n * Invert the given transform.\n * @param {!Transform} target Transform to be set as the inverse of\n *     the source transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (target) transform.\n */\nexport function makeInverse(target, source) {\n  const det = determinant(source);\n  assert(det !== 0, 'Transformation matrix cannot be inverted');\n\n  const a = source[0];\n  const b = source[1];\n  const c = source[2];\n  const d = source[3];\n  const e = source[4];\n  const f = source[5];\n\n  target[0] = d / det;\n  target[1] = -b / det;\n  target[2] = -c / det;\n  target[3] = a / det;\n  target[4] = (c * f - d * e) / det;\n  target[5] = -(a * f - b * e) / det;\n\n  return target;\n}\n\n/**\n * Returns the determinant of the given matrix.\n * @param {!Transform} mat Matrix.\n * @return {number} Determinant.\n */\nexport function determinant(mat) {\n  return mat[0] * mat[3] - mat[1] * mat[2];\n}\n\n/**\n * @type {Array}\n */\nconst matrixPrecision = [1e5, 1e5, 1e5, 1e5, 2, 2];\n\n/**\n * A matrix string version of the transform.  This can be used\n * for CSS transforms.\n * @param {!Transform} mat Matrix.\n * @return {string} The transform as a string.\n */\nexport function toString(mat) {\n  const transformString = 'matrix(' + mat.join(', ') + ')';\n  return transformString;\n}\n\n/**\n * Create a transform from a CSS transform matrix string.\n * @param {string} cssTransform The CSS string to parse.\n * @return {!Transform} The transform.\n */\nexport function fromString(cssTransform) {\n  const values = cssTransform.substring(7, cssTransform.length - 1).split(',');\n  return values.map(parseFloat);\n}\n\n/**\n * Compare two matrices for equality.\n * @param {!string} cssTransform1 A CSS transform matrix string.\n * @param {!string} cssTransform2 A CSS transform matrix string.\n * @return {boolean} The two matrices are equal.\n */\nexport function equivalent(cssTransform1, cssTransform2) {\n  const mat1 = fromString(cssTransform1);\n  const mat2 = fromString(cssTransform2);\n  for (let i = 0; i < 6; ++i) {\n    if (Math.round((mat1[i] - mat2[i]) * matrixPrecision[i]) !== 0) {\n      return false;\n    }\n  }\n  return true;\n}\n","/**\n * @module ol/geom/flat/transform\n */\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array<number>} [dest] Destination.\n * @param {number} [destinationStride] Stride of destination coordinates; if unspecified, assumed to be 2.\n * @return {Array<number>} Transformed coordinates.\n */\nexport function transform2D(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  transform,\n  dest,\n  destinationStride,\n) {\n  dest = dest ? dest : [];\n  destinationStride = destinationStride ? destinationStride : 2;\n  let i = 0;\n  for (let j = offset; j < end; j += stride) {\n    const x = flatCoordinates[j];\n    const y = flatCoordinates[j + 1];\n    dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n    dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n\n    for (let k = 2; k < destinationStride; k++) {\n      dest[i++] = flatCoordinates[j + k];\n    }\n  }\n\n  if (dest && dest.length != i) {\n    dest.length = i;\n  }\n  return dest;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array<number>} anchor Rotation anchor point.\n * @param {Array<number>} [dest] Destination.\n * @return {Array<number>} Transformed coordinates.\n */\nexport function rotate(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  angle,\n  anchor,\n  dest,\n) {\n  dest = dest ? dest : [];\n  const cos = Math.cos(angle);\n  const sin = Math.sin(angle);\n  const anchorX = anchor[0];\n  const anchorY = anchor[1];\n  let i = 0;\n  for (let j = offset; j < end; j += stride) {\n    const deltaX = flatCoordinates[j] - anchorX;\n    const deltaY = flatCoordinates[j + 1] - anchorY;\n    dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n    dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n    for (let k = j + 2; k < j + stride; ++k) {\n      dest[i++] = flatCoordinates[k];\n    }\n  }\n  if (dest && dest.length != i) {\n    dest.length = i;\n  }\n  return dest;\n}\n\n/**\n * Scale the coordinates.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array<number>} anchor Scale anchor point.\n * @param {Array<number>} [dest] Destination.\n * @return {Array<number>} Transformed coordinates.\n */\nexport function scale(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  sx,\n  sy,\n  anchor,\n  dest,\n) {\n  dest = dest ? dest : [];\n  const anchorX = anchor[0];\n  const anchorY = anchor[1];\n  let i = 0;\n  for (let j = offset; j < end; j += stride) {\n    const deltaX = flatCoordinates[j] - anchorX;\n    const deltaY = flatCoordinates[j + 1] - anchorY;\n    dest[i++] = anchorX + sx * deltaX;\n    dest[i++] = anchorY + sy * deltaY;\n    for (let k = j + 2; k < j + stride; ++k) {\n      dest[i++] = flatCoordinates[k];\n    }\n  }\n  if (dest && dest.length != i) {\n    dest.length = i;\n  }\n  return dest;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array<number>} [dest] Destination.\n * @return {Array<number>} Transformed coordinates.\n */\nexport function translate(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  deltaX,\n  deltaY,\n  dest,\n) {\n  dest = dest ? dest : [];\n  let i = 0;\n  for (let j = offset; j < end; j += stride) {\n    dest[i++] = flatCoordinates[j] + deltaX;\n    dest[i++] = flatCoordinates[j + 1] + deltaY;\n    for (let k = j + 2; k < j + stride; ++k) {\n      dest[i++] = flatCoordinates[k];\n    }\n  }\n  if (dest && dest.length != i) {\n    dest.length = i;\n  }\n  return dest;\n}\n","/**\n * @module ol/geom/Geometry\n */\nimport BaseObject from '../Object.js';\nimport {\n  createEmpty,\n  createOrUpdateEmpty,\n  getHeight,\n  returnOrUpdate,\n} from '../extent.js';\nimport {memoizeOne} from '../functions.js';\nimport {get as getProjection, getTransform} from '../proj.js';\nimport {\n  compose as composeTransform,\n  create as createTransform,\n} from '../transform.js';\nimport {abstract} from '../util.js';\nimport {transform2D} from './flat/transform.js';\n\n/**\n * @typedef {'XY' | 'XYZ' | 'XYM' | 'XYZM'} GeometryLayout\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available.\n */\n\n/**\n * @typedef {'Point' | 'LineString' | 'LinearRing' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Circle'} Type\n * The geometry type.  One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, or `'Circle'`.\n */\n\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nconst tmpTransform = createTransform();\n\n/** @type {import('../coordinate.js').Coordinate} */\nconst tmpPoint = [NaN, NaN];\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nclass Geometry extends BaseObject {\n  constructor() {\n    super();\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.extent_ = createEmpty();\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.extentRevision_ = -1;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.simplifiedGeometryRevision = 0;\n\n    /**\n     * Get a transformed and simplified version of the geometry.\n     * @abstract\n     * @param {number} revision The geometry revision.\n     * @param {number} squaredTolerance Squared tolerance.\n     * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n     * @return {Geometry} Simplified geometry.\n     */\n    this.simplifyTransformedInternal = memoizeOne(\n      (revision, squaredTolerance, transform) => {\n        if (!transform) {\n          return this.getSimplifiedGeometry(squaredTolerance);\n        }\n        const clone = this.clone();\n        clone.applyTransform(transform);\n        return clone.getSimplifiedGeometry(squaredTolerance);\n      },\n    );\n  }\n\n  /**\n   * Get a transformed and simplified version of the geometry.\n   * @abstract\n   * @param {number} squaredTolerance Squared tolerance.\n   * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n   * @return {Geometry} Simplified geometry.\n   */\n  simplifyTransformed(squaredTolerance, transform) {\n    return this.simplifyTransformedInternal(\n      this.getRevision(),\n      squaredTolerance,\n      transform,\n    );\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @abstract\n   * @return {!Geometry} Clone.\n   */\n  clone() {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n   * @param {number} minSquaredDistance Minimum squared distance.\n   * @return {number} Minimum squared distance.\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    return abstract();\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @return {boolean} Contains (x, y).\n   */\n  containsXY(x, y) {\n    return this.closestPointXY(x, y, tmpPoint, Number.MIN_VALUE) === 0;\n  }\n\n  /**\n   * Return the closest point of the geometry to the passed point as\n   * {@link module:ol/coordinate~Coordinate coordinate}.\n   * @param {import(\"../coordinate.js\").Coordinate} point Point.\n   * @param {import(\"../coordinate.js\").Coordinate} [closestPoint] Closest point.\n   * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n   * @api\n   */\n  getClosestPoint(point, closestPoint) {\n    closestPoint = closestPoint ? closestPoint : [NaN, NaN];\n    this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n    return closestPoint;\n  }\n\n  /**\n   * Returns true if this geometry includes the specified coordinate. If the\n   * coordinate is on the boundary of the geometry, returns false.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @return {boolean} Contains coordinate.\n   * @api\n   */\n  intersectsCoordinate(coordinate) {\n    return this.containsXY(coordinate[0], coordinate[1]);\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @protected\n   * @return {import(\"../extent.js\").Extent} extent Extent.\n   */\n  computeExtent(extent) {\n    return abstract();\n  }\n\n  /**\n   * Get the extent of the geometry.\n   * @param {import(\"../extent.js\").Extent} [extent] Extent.\n   * @return {import(\"../extent.js\").Extent} extent Extent.\n   * @api\n   */\n  getExtent(extent) {\n    if (this.extentRevision_ != this.getRevision()) {\n      const extent = this.computeExtent(this.extent_);\n      if (isNaN(extent[0]) || isNaN(extent[1])) {\n        createOrUpdateEmpty(extent);\n      }\n      this.extentRevision_ = this.getRevision();\n    }\n    return returnOrUpdate(this.extent_, extent);\n  }\n\n  /**\n   * Rotate the geometry around a given coordinate. This modifies the geometry\n   * coordinates in place.\n   * @abstract\n   * @param {number} angle Rotation angle in radians.\n   * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n   * @api\n   */\n  rotate(angle, anchor) {\n    abstract();\n  }\n\n  /**\n   * Scale the geometry (with an optional origin).  This modifies the geometry\n   * coordinates in place.\n   * @abstract\n   * @param {number} sx The scaling factor in the x-direction.\n   * @param {number} [sy] The scaling factor in the y-direction (defaults to sx).\n   * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n   *     of the geometry extent).\n   * @api\n   */\n  scale(sx, sy, anchor) {\n    abstract();\n  }\n\n  /**\n   * Create a simplified version of this geometry.  For linestrings, this uses\n   * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n   * algorithm.  For polygons, a quantization-based\n   * simplification is used to preserve topology.\n   * @param {number} tolerance The tolerance distance for simplification.\n   * @return {Geometry} A new, simplified version of the original geometry.\n   * @api\n   */\n  simplify(tolerance) {\n    return this.getSimplifiedGeometry(tolerance * tolerance);\n  }\n\n  /**\n   * Create a simplified version of this geometry using the Douglas Peucker\n   * algorithm.\n   * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n   * @abstract\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {Geometry} Simplified geometry.\n   */\n  getSimplifiedGeometry(squaredTolerance) {\n    return abstract();\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @abstract\n   * @return {Type} Geometry type.\n   */\n  getType() {\n    return abstract();\n  }\n\n  /**\n   * Apply a transform function to the coordinates of the geometry.\n   * The geometry is modified in place.\n   * If you do not want the geometry modified in place, first `clone()` it and\n   * then use this function on the clone.\n   * @abstract\n   * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n   * Called with a flat array of geometry coordinates.\n   */\n  applyTransform(transformFn) {\n    abstract();\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @abstract\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   */\n  intersectsExtent(extent) {\n    return abstract();\n  }\n\n  /**\n   * Translate the geometry.  This modifies the geometry coordinates in place.  If\n   * instead you want a new geometry, first `clone()` this geometry.\n   * @abstract\n   * @param {number} deltaX Delta X.\n   * @param {number} deltaY Delta Y.\n   * @api\n   */\n  translate(deltaX, deltaY) {\n    abstract();\n  }\n\n  /**\n   * Transform each coordinate of the geometry from one coordinate reference\n   * system to another. The geometry is modified in place.\n   * For example, a line will be transformed to a line and a circle to a circle.\n   * If you do not want the geometry modified in place, first `clone()` it and\n   * then use this function on the clone.\n   *\n   * @param {import(\"../proj.js\").ProjectionLike} source The current projection.  Can be a\n   *     string identifier or a {@link module:ol/proj/Projection~Projection} object.\n   * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection.  Can be a\n   *     string identifier or a {@link module:ol/proj/Projection~Projection} object.\n   * @return {this} This geometry.  Note that original geometry is\n   *     modified in place.\n   * @api\n   */\n  transform(source, destination) {\n    /** @type {import(\"../proj/Projection.js\").default} */\n    const sourceProj = getProjection(source);\n    const transformFn =\n      sourceProj.getUnits() == 'tile-pixels'\n        ? function (inCoordinates, outCoordinates, stride) {\n            const pixelExtent = sourceProj.getExtent();\n            const projectedExtent = sourceProj.getWorldExtent();\n            const scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n            composeTransform(\n              tmpTransform,\n              projectedExtent[0],\n              projectedExtent[3],\n              scale,\n              -scale,\n              0,\n              0,\n              0,\n            );\n            const transformed = transform2D(\n              inCoordinates,\n              0,\n              inCoordinates.length,\n              stride,\n              tmpTransform,\n              outCoordinates,\n            );\n            const projTransform = getTransform(sourceProj, destination);\n            if (projTransform) {\n              return projTransform(transformed, transformed, stride);\n            }\n            return transformed;\n          }\n        : getTransform(sourceProj, destination);\n    this.applyTransform(transformFn);\n    return this;\n  }\n}\n\nexport default Geometry;\n","/**\n * @module ol/geom/SimpleGeometry\n */\nimport {createOrUpdateFromFlatCoordinates, getCenter} from '../extent.js';\nimport {abstract} from '../util.js';\nimport Geometry from './Geometry.js';\nimport {rotate, scale, transform2D, translate} from './flat/transform.js';\n\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nclass SimpleGeometry extends Geometry {\n  constructor() {\n    super();\n\n    /**\n     * @protected\n     * @type {import(\"./Geometry.js\").GeometryLayout}\n     */\n    this.layout = 'XY';\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.stride = 2;\n\n    /**\n     * @protected\n     * @type {Array<number>}\n     */\n    this.flatCoordinates;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @protected\n   * @return {import(\"../extent.js\").Extent} extent Extent.\n   * @override\n   */\n  computeExtent(extent) {\n    return createOrUpdateFromFlatCoordinates(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      extent,\n    );\n  }\n\n  /**\n   * @abstract\n   * @return {Array<*> | null} Coordinates.\n   */\n  getCoordinates() {\n    return abstract();\n  }\n\n  /**\n   * Return the first coordinate of the geometry.\n   * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n   * @api\n   */\n  getFirstCoordinate() {\n    return this.flatCoordinates.slice(0, this.stride);\n  }\n\n  /**\n   * @return {Array<number>} Flat coordinates.\n   */\n  getFlatCoordinates() {\n    return this.flatCoordinates;\n  }\n\n  /**\n   * Return the last coordinate of the geometry.\n   * @return {import(\"../coordinate.js\").Coordinate} Last point.\n   * @api\n   */\n  getLastCoordinate() {\n    return this.flatCoordinates.slice(\n      this.flatCoordinates.length - this.stride,\n    );\n  }\n\n  /**\n   * Return the {@link import(\"./Geometry.js\").GeometryLayout layout} of the geometry.\n   * @return {import(\"./Geometry.js\").GeometryLayout} Layout.\n   * @api\n   */\n  getLayout() {\n    return this.layout;\n  }\n\n  /**\n   * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {SimpleGeometry} Simplified geometry.\n   * @override\n   */\n  getSimplifiedGeometry(squaredTolerance) {\n    if (this.simplifiedGeometryRevision !== this.getRevision()) {\n      this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n      this.simplifiedGeometryRevision = this.getRevision();\n    }\n    // If squaredTolerance is negative or if we know that simplification will not\n    // have any effect then just return this.\n    if (\n      squaredTolerance < 0 ||\n      (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n        squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)\n    ) {\n      return this;\n    }\n\n    const simplifiedGeometry =\n      this.getSimplifiedGeometryInternal(squaredTolerance);\n    const simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n    if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n      return simplifiedGeometry;\n    }\n    // Simplification did not actually remove any coordinates.  We now know\n    // that any calls to getSimplifiedGeometry with a squaredTolerance less\n    // than or equal to the current squaredTolerance will also not have any\n    // effect.  This allows us to short circuit simplification (saving CPU\n    // cycles) and prevents the cache of simplified geometries from filling\n    // up with useless identical copies of this geometry (saving memory).\n    this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n    return this;\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {SimpleGeometry} Simplified geometry.\n   * @protected\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    return this;\n  }\n\n  /**\n   * @return {number} Stride.\n   */\n  getStride() {\n    return this.stride;\n  }\n\n  /**\n   * @param {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   */\n  setFlatCoordinates(layout, flatCoordinates) {\n    this.stride = getStrideForLayout(layout);\n    this.layout = layout;\n    this.flatCoordinates = flatCoordinates;\n  }\n\n  /**\n   * @abstract\n   * @param {!Array<*>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  setCoordinates(coordinates, layout) {\n    abstract();\n  }\n\n  /**\n   * @param {import(\"./Geometry.js\").GeometryLayout|undefined} layout Layout.\n   * @param {Array<*>} coordinates Coordinates.\n   * @param {number} nesting Nesting.\n   * @protected\n   */\n  setLayout(layout, coordinates, nesting) {\n    let stride;\n    if (layout) {\n      stride = getStrideForLayout(layout);\n    } else {\n      for (let i = 0; i < nesting; ++i) {\n        if (coordinates.length === 0) {\n          this.layout = 'XY';\n          this.stride = 2;\n          return;\n        }\n        coordinates = /** @type {Array<unknown>} */ (coordinates[0]);\n      }\n      stride = coordinates.length;\n      layout = getLayoutForStride(stride);\n    }\n    this.layout = layout;\n    this.stride = stride;\n  }\n\n  /**\n   * Apply a transform function to the coordinates of the geometry.\n   * The geometry is modified in place.\n   * If you do not want the geometry modified in place, first `clone()` it and\n   * then use this function on the clone.\n   * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n   * Called with a flat array of geometry coordinates.\n   * @api\n   * @override\n   */\n  applyTransform(transformFn) {\n    if (this.flatCoordinates) {\n      transformFn(\n        this.flatCoordinates,\n        this.flatCoordinates,\n        this.layout.startsWith('XYZ') ? 3 : 2,\n        this.stride,\n      );\n      this.changed();\n    }\n  }\n\n  /**\n   * Rotate the geometry around a given coordinate. This modifies the geometry\n   * coordinates in place.\n   * @param {number} angle Rotation angle in counter-clockwise radians.\n   * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n   * @api\n   * @override\n   */\n  rotate(angle, anchor) {\n    const flatCoordinates = this.getFlatCoordinates();\n    if (flatCoordinates) {\n      const stride = this.getStride();\n      rotate(\n        flatCoordinates,\n        0,\n        flatCoordinates.length,\n        stride,\n        angle,\n        anchor,\n        flatCoordinates,\n      );\n      this.changed();\n    }\n  }\n\n  /**\n   * Scale the geometry (with an optional origin).  This modifies the geometry\n   * coordinates in place.\n   * @param {number} sx The scaling factor in the x-direction.\n   * @param {number} [sy] The scaling factor in the y-direction (defaults to sx).\n   * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n   *     of the geometry extent).\n   * @api\n   * @override\n   */\n  scale(sx, sy, anchor) {\n    if (sy === undefined) {\n      sy = sx;\n    }\n    if (!anchor) {\n      anchor = getCenter(this.getExtent());\n    }\n    const flatCoordinates = this.getFlatCoordinates();\n    if (flatCoordinates) {\n      const stride = this.getStride();\n      scale(\n        flatCoordinates,\n        0,\n        flatCoordinates.length,\n        stride,\n        sx,\n        sy,\n        anchor,\n        flatCoordinates,\n      );\n      this.changed();\n    }\n  }\n\n  /**\n   * Translate the geometry.  This modifies the geometry coordinates in place.  If\n   * instead you want a new geometry, first `clone()` this geometry.\n   * @param {number} deltaX Delta X.\n   * @param {number} deltaY Delta Y.\n   * @api\n   * @override\n   */\n  translate(deltaX, deltaY) {\n    const flatCoordinates = this.getFlatCoordinates();\n    if (flatCoordinates) {\n      const stride = this.getStride();\n      translate(\n        flatCoordinates,\n        0,\n        flatCoordinates.length,\n        stride,\n        deltaX,\n        deltaY,\n        flatCoordinates,\n      );\n      this.changed();\n    }\n  }\n}\n\n/**\n * @param {number} stride Stride.\n * @return {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n */\nexport function getLayoutForStride(stride) {\n  let layout;\n  if (stride == 2) {\n    layout = 'XY';\n  } else if (stride == 3) {\n    layout = 'XYZ';\n  } else if (stride == 4) {\n    layout = 'XYZM';\n  }\n  return /** @type {import(\"./Geometry.js\").GeometryLayout} */ (layout);\n}\n\n/**\n * @param {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n  let stride;\n  if (layout == 'XY') {\n    stride = 2;\n  } else if (layout == 'XYZ' || layout == 'XYM') {\n    stride = 3;\n  } else if (layout == 'XYZM') {\n    stride = 4;\n  }\n  return /** @type {number} */ (stride);\n}\n\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array<number>} [dest] Destination.\n * @return {Array<number>} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, dest) {\n  const flatCoordinates = simpleGeometry.getFlatCoordinates();\n  if (!flatCoordinates) {\n    return null;\n  }\n  const stride = simpleGeometry.getStride();\n  return transform2D(\n    flatCoordinates,\n    0,\n    flatCoordinates.length,\n    stride,\n    transform,\n    dest,\n  );\n}\n\nexport default SimpleGeometry;\n","/**\n * @module ol/geom/flat/deflate\n */\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n  for (let i = 0, ii = coordinate.length; i < ii; ++i) {\n    flatCoordinates[offset++] = coordinate[i];\n  }\n  return offset;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<import(\"../../coordinate.js\").Coordinate>} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(\n  flatCoordinates,\n  offset,\n  coordinates,\n  stride,\n) {\n  for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n    const coordinate = coordinates[i];\n    for (let j = 0; j < stride; ++j) {\n      flatCoordinates[offset++] = coordinate[j];\n    }\n  }\n  return offset;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<import(\"../../coordinate.js\").Coordinate>>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array<number>} [ends] Ends.\n * @return {Array<number>} Ends.\n */\nexport function deflateCoordinatesArray(\n  flatCoordinates,\n  offset,\n  coordinatess,\n  stride,\n  ends,\n) {\n  ends = ends ? ends : [];\n  let i = 0;\n  for (let j = 0, jj = coordinatess.length; j < jj; ++j) {\n    const end = deflateCoordinates(\n      flatCoordinates,\n      offset,\n      coordinatess[j],\n      stride,\n    );\n    ends[i++] = end;\n    offset = end;\n  }\n  ends.length = i;\n  return ends;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<Array<import(\"../../coordinate.js\").Coordinate>>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array<Array<number>>} [endss] Endss.\n * @return {Array<Array<number>>} Endss.\n */\nexport function deflateMultiCoordinatesArray(\n  flatCoordinates,\n  offset,\n  coordinatesss,\n  stride,\n  endss,\n) {\n  endss = endss ? endss : [];\n  let i = 0;\n  for (let j = 0, jj = coordinatesss.length; j < jj; ++j) {\n    const ends = deflateCoordinatesArray(\n      flatCoordinates,\n      offset,\n      coordinatesss[j],\n      stride,\n      endss[i],\n    );\n    if (ends.length === 0) {\n      ends[0] = offset;\n    }\n    endss[i++] = ends;\n    offset = ends[ends.length - 1];\n  }\n  endss.length = i;\n  return endss;\n}\n","/**\n * @module ol/geom/Point\n */\nimport {containsXY, createOrUpdateFromCoordinate} from '../extent.js';\nimport {squaredDistance as squaredDx} from '../math.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {deflateCoordinate} from './flat/deflate.js';\n\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nclass Point extends SimpleGeometry {\n  /**\n   * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  constructor(coordinates, layout) {\n    super();\n    this.setCoordinates(coordinates, layout);\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!Point} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const point = new Point(this.flatCoordinates.slice(), this.layout);\n    point.applyProperties(this);\n    return point;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n   * @param {number} minSquaredDistance Minimum squared distance.\n   * @return {number} Minimum squared distance.\n   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    const flatCoordinates = this.flatCoordinates;\n    const squaredDistance = squaredDx(\n      x,\n      y,\n      flatCoordinates[0],\n      flatCoordinates[1],\n    );\n    if (squaredDistance < minSquaredDistance) {\n      const stride = this.stride;\n      for (let i = 0; i < stride; ++i) {\n        closestPoint[i] = flatCoordinates[i];\n      }\n      closestPoint.length = stride;\n      return squaredDistance;\n    }\n    return minSquaredDistance;\n  }\n\n  /**\n   * Return the coordinate of the point.\n   * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates() {\n    return this.flatCoordinates.slice();\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @protected\n   * @return {import(\"../extent.js\").Extent} extent Extent.\n   * @override\n   */\n  computeExtent(extent) {\n    return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'Point';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n  }\n\n  /**\n   * @param {!Array<*>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 0);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    this.flatCoordinates.length = deflateCoordinate(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n    );\n    this.changed();\n  }\n}\n\nexport default Point;\n","import type { Map as OlMap } from \"ol\";\nimport type Geometry from \"ol/geom/Geometry\";\nimport { extend, Extent, getWidth } from \"ol/extent\";\nimport type Feature from \"ol/Feature\";\nimport BaseLayer from \"ol/layer/Base\";\nimport Point from \"ol/geom/Point\";\n\nexport const getFeaturesById = (\n  layers: BaseLayer[],\n  ids: string[]\n): Feature[] => {\n  const features: Feature[] = [];\n\n  layers.forEach((layer) => {\n    if (\"getSource\" in layer && typeof layer.getSource === \"function\") {\n      const source = layer.getSource();\n      if (!source?.getFeatureById) return;\n\n      ids.forEach((id) => {\n        const feature = source.getFeatureById(id);\n        if (feature) features.push(feature);\n      });\n    }\n  });\n\n  return features;\n};\n\nexport const fitToFeature = (\n  map: OlMap,\n  feature: Feature<Geometry>,\n  options: PanOptions = {}\n): void => {\n  const { duration = 600, maxZoom = 16, padding = [50, 50, 50, 50] } = options;\n  const geometry = feature.getGeometry();\n  if (!geometry) return;\n\n  const view = map.getView();\n  if (!view) return;\n\n  const projection = view.getProjection();\n  const worldExtent = projection.getExtent();\n  const worldWidth = getWidth(worldExtent);\n\n  // Normalizes a longitude (X) to the world extent\n  const normalizeX = (x: number) => {\n    while (x < worldExtent[0]) x += worldWidth;\n    while (x > worldExtent[2]) x -= worldWidth;\n    return x;\n  };\n\n  // Determine extent\n  let extent: Extent;\n  if (geometry instanceof Point) {\n    const coords = geometry.getCoordinates();\n    extent = [coords[0], coords[1], coords[0], coords[1]];\n  } else {\n    const geomExtent = geometry.getExtent();\n    if (!geomExtent) return;\n\n    // Normalize X for antimeridian\n    let x0 = normalizeX(geomExtent[0]);\n    let x1 = normalizeX(geomExtent[2]);\n\n    // Handle antimeridian crossing\n    const span = x1 - x0;\n    if (span > worldWidth / 2) {\n      const wrappedX0 = x0 + worldWidth;\n      const centerX = normalizeX((wrappedX0 + x1) / 2);\n      x0 = centerX;\n      x1 = centerX;\n    }\n\n    extent = [x0, geomExtent[1], x1, geomExtent[3]];\n  }\n\n  view.fit(extent, {\n    maxZoom,\n    duration,\n    padding,\n  });\n};\n\ninterface PanOptions {\n  padding?: [number, number, number, number];\n  maxZoom?: number;\n  duration?: number;\n}\n\nexport const fitToFeatures = (\n  map: OlMap,\n  features: Feature<Geometry>[],\n  options: PanOptions = {}\n): void => {\n  const { padding = [50, 50, 50, 50], maxZoom = 16, duration = 600 } = options;\n  if (!features.length) return;\n\n  const view = map.getView();\n  if (!view) return;\n\n  const projection = view.getProjection();\n  const worldExtent = projection.getExtent();\n  if (!worldExtent) return;\n\n  const worldWidth = getWidth(worldExtent);\n\n  let combinedExtent: [number, number, number, number] | null = null;\n  let refCenterX: number | null = null;\n\n  for (const feature of features) {\n    const geom = feature.getGeometry();\n    if (!geom) continue;\n\n    const extent = geom.getExtent();\n    const centerX = (extent[0] + extent[2]) / 2;\n\n    if (refCenterX === null) {\n      refCenterX = centerX;\n    }\n\n    // determine which world copy to use\n    const delta = centerX - refCenterX;\n    const worldShift = Math.round(delta / worldWidth) * worldWidth;\n\n    // clone + shift geometry\n    const shifted = geom.clone();\n    shifted.translate(-worldShift, 0);\n\n    const shiftedExtent = shifted.getExtent() as [\n      number,\n      number,\n      number,\n      number\n    ];\n\n    if (!combinedExtent) {\n      combinedExtent = [...shiftedExtent];\n    } else {\n      extend(combinedExtent, shiftedExtent);\n      refCenterX = (combinedExtent[0] + combinedExtent[2]) / 2;\n    }\n  }\n\n  if (!combinedExtent) return;\n\n  view.fit(combinedExtent, {\n    padding,\n    maxZoom,\n    duration,\n  });\n};\n","/**\n * @module ol/CollectionEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  /**\n   * Triggered when an item is added to the collection.\n   * @event module:ol/Collection.CollectionEvent#add\n   * @api\n   */\n  ADD: 'add',\n  /**\n   * Triggered when an item is removed from the collection.\n   * @event module:ol/Collection.CollectionEvent#remove\n   * @api\n   */\n  REMOVE: 'remove',\n};\n","/**\n * @module ol/Collection\n */\nimport CollectionEventType from './CollectionEventType.js';\nimport BaseObject from './Object.js';\nimport Event from './events/Event.js';\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n  LENGTH: 'length',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n * @template T\n */\nexport class CollectionEvent extends Event {\n  /**\n   * @param {import(\"./CollectionEventType.js\").default} type Type.\n   * @param {T} element Element.\n   * @param {number} index The index of the added or removed element.\n   */\n  constructor(type, element, index) {\n    super(type);\n\n    /**\n     * The element that is added to or removed from the collection.\n     * @type {T}\n     * @api\n     */\n    this.element = element;\n\n    /**\n     * The index of the added or removed element.\n     * @type {number}\n     * @api\n     */\n    this.index = index;\n  }\n}\n\n/***\n * @template T\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *   import(\"./Observable\").OnSignature<import(\"./ObjectEventType\").Types|'change:length', import(\"./Object\").ObjectEvent, Return> &\n *   import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent<T>, Return> &\n *   import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|import(\"./ObjectEventType\").Types|\n *     'change:length'|'add'|'remove',Return>} CollectionOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nclass Collection extends BaseObject {\n  /**\n   * @param {Array<T>} [array] Array.\n   * @param {Options} [options] Collection options.\n   */\n  constructor(array, options) {\n    super();\n\n    /***\n     * @type {CollectionOnSignature<T, import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {CollectionOnSignature<T, import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {CollectionOnSignature<T, void>}\n     */\n    this.un;\n\n    options = options || {};\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.unique_ = !!options.unique;\n\n    /**\n     * @private\n     * @type {!Array<T>}\n     */\n    this.array_ = array ?? [];\n\n    if (this.unique_) {\n      for (let i = 1, ii = this.array_.length; i < ii; ++i) {\n        this.assertUnique_(this.array_[i], i);\n      }\n    }\n\n    this.updateLength_();\n  }\n\n  /**\n   * Remove all elements from the collection.\n   * @api\n   */\n  clear() {\n    while (this.getLength() > 0) {\n      this.pop();\n    }\n  }\n\n  /**\n   * Add elements to the collection.  This pushes each item in the provided array\n   * to the end of the collection.\n   * @param {!Array<T>} arr Array.\n   * @return {Collection<T>} This collection.\n   * @api\n   */\n  extend(arr) {\n    for (let i = 0, ii = arr.length; i < ii; ++i) {\n      this.push(arr[i]);\n    }\n    return this;\n  }\n\n  /**\n   * Iterate over each element, calling the provided callback.\n   * @param {function(T, number, Array<T>): *} f The function to call\n   *     for every element. This function takes 3 arguments (the element, the\n   *     index and the array). The return value is ignored.\n   * @api\n   */\n  forEach(f) {\n    const array = this.array_;\n    for (let i = 0, ii = array.length; i < ii; ++i) {\n      f(array[i], i, array);\n    }\n  }\n\n  /**\n   * Get a reference to the underlying Array object. Warning: if the array\n   * is mutated, no events will be dispatched by the collection, and the\n   * collection's \"length\" property won't be in sync with the actual length\n   * of the array.\n   * @return {!Array<T>} Array.\n   * @api\n   */\n  getArray() {\n    return this.array_;\n  }\n\n  /**\n   * Get the element at the provided index.\n   * @param {number} index Index.\n   * @return {T} Element.\n   * @api\n   */\n  item(index) {\n    return this.array_[index];\n  }\n\n  /**\n   * Get the length of this collection.\n   * @return {number} The length of the array.\n   * @observable\n   * @api\n   */\n  getLength() {\n    return this.get(Property.LENGTH);\n  }\n\n  /**\n   * Insert an element at the provided index.\n   * @param {number} index Index.\n   * @param {T} elem Element.\n   * @api\n   */\n  insertAt(index, elem) {\n    if (index < 0 || index > this.getLength()) {\n      throw new Error('Index out of bounds: ' + index);\n    }\n    if (this.unique_) {\n      this.assertUnique_(elem);\n    }\n    this.array_.splice(index, 0, elem);\n    this.updateLength_();\n    this.dispatchEvent(\n      new CollectionEvent(CollectionEventType.ADD, elem, index),\n    );\n  }\n\n  /**\n   * Remove the last element of the collection and return it.\n   * Return `undefined` if the collection is empty.\n   * @return {T|undefined} Element.\n   * @api\n   */\n  pop() {\n    return this.removeAt(this.getLength() - 1);\n  }\n\n  /**\n   * Insert the provided element at the end of the collection.\n   * @param {T} elem Element.\n   * @return {number} New length of the collection.\n   * @api\n   */\n  push(elem) {\n    const n = this.getLength();\n    this.insertAt(n, elem);\n    return this.getLength();\n  }\n\n  /**\n   * Remove the first occurrence of an element from the collection.\n   * @param {T} elem Element.\n   * @return {T|undefined} The removed element or undefined if none found.\n   * @api\n   */\n  remove(elem) {\n    const arr = this.array_;\n    for (let i = 0, ii = arr.length; i < ii; ++i) {\n      if (arr[i] === elem) {\n        return this.removeAt(i);\n      }\n    }\n    return undefined;\n  }\n\n  /**\n   * Remove the element at the provided index and return it.\n   * Return `undefined` if the collection does not contain this index.\n   * @param {number} index Index.\n   * @return {T|undefined} Value.\n   * @api\n   */\n  removeAt(index) {\n    if (index < 0 || index >= this.getLength()) {\n      return undefined;\n    }\n    const prev = this.array_[index];\n    this.array_.splice(index, 1);\n    this.updateLength_();\n    this.dispatchEvent(\n      /** @type {CollectionEvent<T>} */ (\n        new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n      ),\n    );\n    return prev;\n  }\n\n  /**\n   * Set the element at the provided index.\n   * @param {number} index Index.\n   * @param {T} elem Element.\n   * @api\n   */\n  setAt(index, elem) {\n    const n = this.getLength();\n    if (index >= n) {\n      this.insertAt(index, elem);\n      return;\n    }\n    if (index < 0) {\n      throw new Error('Index out of bounds: ' + index);\n    }\n    if (this.unique_) {\n      this.assertUnique_(elem, index);\n    }\n    const prev = this.array_[index];\n    this.array_[index] = elem;\n    this.dispatchEvent(\n      /** @type {CollectionEvent<T>} */ (\n        new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n      ),\n    );\n    this.dispatchEvent(\n      /** @type {CollectionEvent<T>} */ (\n        new CollectionEvent(CollectionEventType.ADD, elem, index)\n      ),\n    );\n  }\n\n  /**\n   * @private\n   */\n  updateLength_() {\n    this.set(Property.LENGTH, this.array_.length);\n  }\n\n  /**\n   * @private\n   * @param {T} elem Element.\n   * @param {number} [except] Optional index to ignore.\n   */\n  assertUnique_(elem, except) {\n    const array = this.array_;\n    for (let i = 0, ii = array.length; i < ii; ++i) {\n      if (array[i] === elem && i !== except) {\n        throw new Error('Duplicate item added to a unique collection');\n      }\n    }\n  }\n}\n\nexport default Collection;\n","/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport {assert} from './asserts.js';\nimport EventType from './events/EventType.js';\nimport {listen, unlistenByKey} from './events.js';\n\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *   import(\"./Observable\").OnSignature<import(\"./ObjectEventType\").Types|'change:geometry', import(\"./Object\").ObjectEvent, Return> &\n *   import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|import(\"./ObjectEventType\").Types\n *     |'change:geometry', Return>} FeatureOnSignature\n */\n\n/***\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n * @template {Object<string, *>} [Properties=Object<string, *>]\n * @typedef {Properties & { geometry?: Geometry }} ObjectWithGeometry\n */\n\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object~BaseObject} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature.  For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature.js';\n * import Polygon from 'ol/geom/Polygon.js';\n * import Point from 'ol/geom/Point.js';\n *\n * const feature = new Feature({\n *   geometry: new Polygon(polyCoords),\n *   labelPoint: new Point(labelCoords),\n *   name: 'My Polygon',\n * });\n *\n * // get the polygon geometry\n * const poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * const point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n * @template {Object<string, *>} [Properties=Object<string, *>]\n * @extends {BaseObject<NoInfer<Properties>>}\n */\nclass Feature extends BaseObject {\n  /**\n   * @param {Geometry|ObjectWithGeometry<Geometry, NoInfer<Properties>>} [geometryOrProperties]\n   *     You may pass a Geometry object directly, or an object literal containing\n   *     properties. If you pass an object literal, you may include a Geometry\n   *     associated with a `geometry` key.\n   */\n  constructor(geometryOrProperties) {\n    super();\n\n    /***\n     * @type {FeatureOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {FeatureOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {FeatureOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {number|string|undefined}\n     */\n    this.id_ = undefined;\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.geometryName_ = 'geometry';\n\n    /**\n     * User provided style.\n     * @private\n     * @type {import(\"./style/Style.js\").StyleLike}\n     */\n    this.style_ = null;\n\n    /**\n     * @private\n     * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n     */\n    this.styleFunction_ = undefined;\n\n    /**\n     * @private\n     * @type {?import(\"./events.js\").EventsKey}\n     */\n    this.geometryChangeKey_ = null;\n\n    this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n\n    if (geometryOrProperties) {\n      if (\n        typeof (\n          /** @type {?} */ (geometryOrProperties).getSimplifiedGeometry\n        ) === 'function'\n      ) {\n        const geometry = /** @type {Geometry} */ (geometryOrProperties);\n        this.setGeometry(geometry);\n      } else {\n        /** @type {?} */\n        const properties = geometryOrProperties;\n        this.setProperties(properties);\n      }\n    }\n  }\n\n  /**\n   * Clone this feature. If the original feature has a geometry it\n   * is also cloned. The feature id is not set in the clone.\n   * @return {Feature<Geometry>} The clone.\n   * @api\n   */\n  clone() {\n    const clone = /** @type {Feature<Geometry>} */ (\n      new Feature(this.hasProperties() ? this.getProperties() : null)\n    );\n    clone.setGeometryName(this.getGeometryName());\n    const geometry = this.getGeometry();\n    if (geometry) {\n      clone.setGeometry(/** @type {Geometry} */ (geometry.clone()));\n    }\n    const style = this.getStyle();\n    if (style) {\n      clone.setStyle(style);\n    }\n    return clone;\n  }\n\n  /**\n   * Get the feature's default geometry.  A feature may have any number of named\n   * geometries.  The \"default\" geometry (the one that is rendered by default) is\n   * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n   * @return {Geometry|undefined} The default geometry for the feature.\n   * @api\n   * @observable\n   */\n  getGeometry() {\n    return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n  }\n\n  /**\n   * Get the feature identifier.  This is a stable identifier for the feature and\n   * is either set when reading data from a remote source or set explicitly by\n   * calling {@link module:ol/Feature~Feature#setId}.\n   * @return {number|string|undefined} Id.\n   * @api\n   */\n  getId() {\n    return this.id_;\n  }\n\n  /**\n   * Get the name of the feature's default geometry.  By default, the default\n   * geometry is named `geometry`.\n   * @return {string} Get the property name associated with the default geometry\n   *     for this feature.\n   * @api\n   */\n  getGeometryName() {\n    return this.geometryName_;\n  }\n\n  /**\n   * Get the feature's style. Will return what was provided to the\n   * {@link module:ol/Feature~Feature#setStyle} method.\n   * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n   * @api\n   */\n  getStyle() {\n    return this.style_;\n  }\n\n  /**\n   * Get the feature's style function.\n   * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n   * representing the current style of this feature.\n   * @api\n   */\n  getStyleFunction() {\n    return this.styleFunction_;\n  }\n\n  /**\n   * @private\n   */\n  handleGeometryChange_() {\n    this.changed();\n  }\n\n  /**\n   * @private\n   */\n  handleGeometryChanged_() {\n    if (this.geometryChangeKey_) {\n      unlistenByKey(this.geometryChangeKey_);\n      this.geometryChangeKey_ = null;\n    }\n    const geometry = this.getGeometry();\n    if (geometry) {\n      this.geometryChangeKey_ = listen(\n        geometry,\n        EventType.CHANGE,\n        this.handleGeometryChange_,\n        this,\n      );\n    }\n    this.changed();\n  }\n\n  /**\n   * Set the default geometry for the feature.  This will update the property\n   * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n   * @param {Geometry|undefined} geometry The new geometry.\n   * @api\n   * @observable\n   */\n  setGeometry(geometry) {\n    this.set(this.geometryName_, geometry);\n  }\n\n  /**\n   * Set the style for the feature to override the layer style.  This can be a\n   * single style object, an array of styles, or a function that takes a\n   * resolution and returns an array of styles. To unset the feature style, call\n   * `setStyle()` without arguments or a falsey value.\n   * @param {import(\"./style/Style.js\").StyleLike} [style] Style for this feature.\n   * @api\n   * @fires module:ol/events/Event~BaseEvent#event:change\n   */\n  setStyle(style) {\n    this.style_ = style;\n    this.styleFunction_ = !style ? undefined : createStyleFunction(style);\n    this.changed();\n  }\n\n  /**\n   * Set the feature id.  The feature id is considered stable and may be used when\n   * requesting features or comparing identifiers returned from a remote source.\n   * The feature id can be used with the\n   * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n   * @param {number|string|undefined} id The feature id.\n   * @api\n   * @fires module:ol/events/Event~BaseEvent#event:change\n   */\n  setId(id) {\n    this.id_ = id;\n    this.changed();\n  }\n\n  /**\n   * Set the property name to be used when getting the feature's default geometry.\n   * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n   * this name will be returned.\n   * @param {string} name The property name of the default geometry.\n   * @api\n   */\n  setGeometryName(name) {\n    this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n    this.geometryName_ = name;\n    this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n    this.handleGeometryChanged_();\n  }\n}\n\n/**\n * Convert the provided object into a feature style function.  Functions passed\n * through unchanged.  Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array<import(\"./style/Style.js\").default>|!import(\"./style/Style.js\").default} obj\n *     A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n  if (typeof obj === 'function') {\n    return obj;\n  }\n  /**\n   * @type {Array<import(\"./style/Style.js\").default>}\n   */\n  let styles;\n  if (Array.isArray(obj)) {\n    styles = obj;\n  } else {\n    assert(\n      typeof (/** @type {?} */ (obj).getZIndex) === 'function',\n      'Expected an `ol/style/Style` or an array of `ol/style/Style.js`',\n    );\n    const style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n    styles = [style];\n  }\n  return function () {\n    return styles;\n  };\n}\nexport default Feature;\n","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n  /**\n   * A true single click with no dragging and no double click. Note that this\n   * event is delayed by 250 ms to ensure that it is not a double click.\n   * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n   * @api\n   */\n  SINGLECLICK: 'singleclick',\n\n  /**\n   * A click with no dragging. A double click will fire two of this.\n   * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n   * @api\n   */\n  CLICK: EventType.CLICK,\n\n  /**\n   * A true double click, with no dragging.\n   * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n   * @api\n   */\n  DBLCLICK: EventType.DBLCLICK,\n\n  /**\n   * Triggered when a pointer is dragged.\n   * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n   * @api\n   */\n  POINTERDRAG: 'pointerdrag',\n\n  /**\n   * Triggered when a pointer is moved. Note that on touch devices this is\n   * triggered when the map is panned, so is not the same as mousemove.\n   * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n   * @api\n   */\n  POINTERMOVE: 'pointermove',\n\n  POINTERDOWN: 'pointerdown',\n  POINTERUP: 'pointerup',\n  POINTEROVER: 'pointerover',\n  POINTEROUT: 'pointerout',\n  POINTERENTER: 'pointerenter',\n  POINTERLEAVE: 'pointerleave',\n  POINTERCANCEL: 'pointercancel',\n};\n\n/***\n * @typedef {'singleclick'|'click'|'dblclick'|'pointerdrag'|'pointermove'} Types\n */\n","/**\n * @module ol/has\n */\n\nconst ua =\n  typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined'\n    ? navigator.userAgent.toLowerCase()\n    : '';\n\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport const SAFARI = ua.includes('safari') && !ua.includes('chrom');\n\n/**\n * https://bugs.webkit.org/show_bug.cgi?id=237906\n * @type {boolean}\n */\nexport const SAFARI_BUG_237906 =\n  SAFARI &&\n  (ua.includes('version/15.4') ||\n    /cpu (os|iphone os) 15_4 like mac os x/.test(ua));\n\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport const WEBKIT = ua.includes('webkit') && !ua.includes('edge');\n\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport const MAC = ua.includes('macintosh');\n\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport const DEVICE_PIXEL_RATIO =\n  typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport const WORKER_OFFSCREEN_CANVAS =\n  typeof WorkerGlobalScope !== 'undefined' &&\n  typeof OffscreenCanvas !== 'undefined' &&\n  self instanceof WorkerGlobalScope; //eslint-disable-line\n\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport const IMAGE_DECODE =\n  typeof Image !== 'undefined' && Image.prototype.decode;\n\n/**\n * createImageBitmap() is supported.\n * @type {boolean}\n */\nexport const CREATE_IMAGE_BITMAP = typeof createImageBitmap === 'function';\n\n/**\n * @type {boolean}\n */\nexport const PASSIVE_EVENT_LISTENERS = (function () {\n  let passive = false;\n  try {\n    const options = Object.defineProperty({}, 'passive', {\n      get: function () {\n        passive = true;\n      },\n    });\n\n    // @ts-ignore Ignore invalid event type '_'\n    window.addEventListener('_', null, options);\n    // @ts-ignore Ignore invalid event type '_'\n    window.removeEventListener('_', null, options);\n  } catch {\n    // passive not supported\n  }\n  return passive;\n})();\n","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {FALSE, TRUE} from '../functions.js';\nimport {MAC, WEBKIT} from '../has.js';\n\n/**\n * A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n\n/**\n * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n  const conditions = arguments;\n  /**\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @return {boolean} All conditions passed.\n   */\n  return function (event) {\n    let pass = true;\n    for (let i = 0, ii = conditions.length; i < ii; ++i) {\n      pass = pass && conditions[i](event);\n      if (!pass) {\n        break;\n      }\n    }\n    return pass;\n  };\n}\n\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport const altKeyOnly = function (mapBrowserEvent) {\n  const originalEvent = mapBrowserEvent.originalEvent;\n  return (\n    originalEvent.altKey &&\n    !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n    !originalEvent.shiftKey\n  );\n};\n\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport const altShiftKeysOnly = function (mapBrowserEvent) {\n  const originalEvent = mapBrowserEvent.originalEvent;\n  return (\n    originalEvent.altKey &&\n    !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n    originalEvent.shiftKey\n  );\n};\n\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `<div id=\"map\" tabindex=\"1\">`.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport const focus = function (event) {\n  const targetElement = event.map.getTargetElement();\n  const rootNode = targetElement.getRootNode();\n  const activeElement = event.map.getOwnerDocument().activeElement;\n\n  return rootNode instanceof ShadowRoot\n    ? rootNode.host.contains(activeElement)\n    : targetElement.contains(activeElement);\n};\n\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport const focusWithTabindex = function (event) {\n  const targetElement = event.map.getTargetElement();\n  const rootNode = targetElement.getRootNode();\n  const tabIndexCandidate =\n    rootNode instanceof ShadowRoot ? rootNode.host : targetElement;\n\n  return tabIndexCandidate.hasAttribute('tabindex') ? focus(event) : true;\n};\n\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport const always = TRUE;\n\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport const click = function (mapBrowserEvent) {\n  return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport const mouseActionButton = function (mapBrowserEvent) {\n  const originalEvent = mapBrowserEvent.originalEvent;\n  return (\n    'pointerId' in originalEvent &&\n    originalEvent.button == 0 &&\n    !(WEBKIT && MAC && originalEvent.ctrlKey)\n  );\n};\n\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport const never = FALSE;\n\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport const pointerMove = function (mapBrowserEvent) {\n  return mapBrowserEvent.type == 'pointermove';\n};\n\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport const singleClick = function (mapBrowserEvent) {\n  return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport const doubleClick = function (mapBrowserEvent) {\n  return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport const noModifierKeys = function (mapBrowserEvent) {\n  const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n    mapBrowserEvent.originalEvent\n  );\n  return (\n    !originalEvent.altKey &&\n    !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n    !originalEvent.shiftKey\n  );\n};\n\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKeyOnly = function (mapBrowserEvent) {\n  const originalEvent = mapBrowserEvent.originalEvent;\n  return (\n    !originalEvent.altKey &&\n    (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n    !originalEvent.shiftKey\n  );\n};\n\n/**\n * Return `true` if the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKey = function (mapBrowserEvent) {\n  const originalEvent = mapBrowserEvent.originalEvent;\n  return MAC ? originalEvent.metaKey : originalEvent.ctrlKey;\n};\n\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport const shiftKeyOnly = function (mapBrowserEvent) {\n  const originalEvent = mapBrowserEvent.originalEvent;\n  return (\n    !originalEvent.altKey &&\n    !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n    originalEvent.shiftKey\n  );\n};\n\n/**\n * Return `true` if the target element is not editable, i.e. not an `input`,\n * `select`, or `textarea` element and no `contenteditable` attribute is\n * set or inherited, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if the target element is not editable.\n * @api\n */\nexport const targetNotEditable = function (mapBrowserEvent) {\n  const originalEvent = mapBrowserEvent.originalEvent;\n  const tagName = /** @type {Element} */ (originalEvent.target).tagName;\n  return (\n    tagName !== 'INPUT' &&\n    tagName !== 'SELECT' &&\n    tagName !== 'TEXTAREA' &&\n    // `isContentEditable` is only available on `HTMLElement`, but it may also be a\n    // different type like `SVGElement`.\n    // @ts-ignore\n    !originalEvent.target.isContentEditable\n  );\n};\n\n/**\n * Return `true` if the event originates from a mouse device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a mouse device.\n * @api\n */\nexport const mouseOnly = function (mapBrowserEvent) {\n  const pointerEvent = mapBrowserEvent.originalEvent;\n  // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n  return 'pointerId' in pointerEvent && pointerEvent.pointerType == 'mouse';\n};\n\n/**\n * Return `true` if the event originates from a touchable device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a touchable device.\n * @api\n */\nexport const touchOnly = function (mapBrowserEvent) {\n  const pointerEvt = mapBrowserEvent.originalEvent;\n  // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n  return 'pointerId' in pointerEvt && pointerEvt.pointerType === 'touch';\n};\n\n/**\n * Return `true` if the event originates from a digital pen.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a digital pen.\n * @api\n */\nexport const penOnly = function (mapBrowserEvent) {\n  const pointerEvt = mapBrowserEvent.originalEvent;\n  // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n  return 'pointerId' in pointerEvt && pointerEvt.pointerType === 'pen';\n};\n\n/**\n * Return `true` if the event originates from a primary pointer in\n * contact with the surface or if the left mouse button is pressed.\n * See https://www.w3.org/TR/pointerevents/#button-states.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a primary pointer.\n * @api\n */\nexport const primaryAction = function (mapBrowserEvent) {\n  const pointerEvent = mapBrowserEvent.originalEvent;\n  return (\n    'pointerId' in pointerEvent &&\n    pointerEvent.isPrimary &&\n    pointerEvent.button === 0\n  );\n};\n","/**\n * @module ol/ViewHint\n */\n\n/**\n * @enum {number}\n */\nexport default {\n  ANIMATING: 0,\n  INTERACTING: 1,\n};\n","import {WORKER_OFFSCREEN_CANVAS} from './has.js';\n\n/**\n * @module ol/dom\n */\n\n/**\n * @typedef {Object} ImageAttributes\n * @property {string|null} [crossOrigin] Cross origin.\n * @property {ReferrerPolicy} [referrerPolicy]  Referrer policy.\n */\n\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number} [width] Canvas width.\n * @param {number} [height] Canvas height.\n * @param {Array<HTMLCanvasElement|OffscreenCanvas>} [canvasPool] Canvas pool to take existing canvas from.\n * @param {CanvasRenderingContext2DSettings} [settings] CanvasRenderingContext2DSettings\n * @return {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(width, height, canvasPool, settings) {\n  /** @type {HTMLCanvasElement|OffscreenCanvas} */\n  let canvas;\n  if (canvasPool && canvasPool.length) {\n    canvas = /** @type {HTMLCanvasElement} */ (canvasPool.shift());\n  } else if (WORKER_OFFSCREEN_CANVAS) {\n    canvas = new (class extends OffscreenCanvas {\n      style = {};\n    })(width ?? 300, height ?? 150);\n  } else {\n    canvas = document.createElement('canvas');\n  }\n  if (width) {\n    canvas.width = width;\n  }\n  if (height) {\n    canvas.height = height;\n  }\n  return /** @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} */ (\n    canvas.getContext('2d', settings)\n  );\n}\n\n/**\n * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}\n */\nlet sharedCanvasContext;\n\n/**\n * @return {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} Shared canvas context.\n */\nexport function getSharedCanvasContext2D() {\n  if (!sharedCanvasContext) {\n    sharedCanvasContext = createCanvasContext2D(1, 1);\n  }\n  return sharedCanvasContext;\n}\n\n/**\n * Releases canvas memory to avoid exceeding memory limits in Safari.\n * See https://pqina.nl/blog/total-canvas-memory-use-exceeds-the-maximum-limit/\n * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n */\nexport function releaseCanvas(context) {\n  const canvas = context.canvas;\n  canvas.width = 1;\n  canvas.height = 1;\n  context.clearRect(0, 0, 1, 1);\n}\n\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n  let width = element.offsetWidth;\n  const style = getComputedStyle(element);\n  width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n\n  return width;\n}\n\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n  let height = element.offsetHeight;\n  const style = getComputedStyle(element);\n  height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n\n  return height;\n}\n\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n  const parent = oldNode.parentNode;\n  if (parent) {\n    parent.replaceChild(newNode, oldNode);\n  }\n}\n\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n  while (node.lastChild) {\n    node.lastChild.remove();\n  }\n}\n\n/**\n * Transform the children of a parent node so they match the\n * provided list of children.  This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array<Node>} children The desired children.\n */\nexport function replaceChildren(node, children) {\n  const oldChildren = node.childNodes;\n\n  for (let i = 0; true; ++i) {\n    const oldChild = oldChildren[i];\n    const newChild = children[i];\n\n    // check if our work is done\n    if (!oldChild && !newChild) {\n      break;\n    }\n\n    // check if children match\n    if (oldChild === newChild) {\n      continue;\n    }\n\n    // check if a new child needs to be added\n    if (!oldChild) {\n      node.appendChild(newChild);\n      continue;\n    }\n\n    // check if an old child needs to be removed\n    if (!newChild) {\n      node.removeChild(oldChild);\n      --i;\n      continue;\n    }\n\n    // reorder\n    node.insertBefore(newChild, oldChild);\n  }\n}\n\n/**\n * Creates a minimal structure that mocks a DIV to be used by the composite and\n * layer renderer in a worker environment\n * @return {HTMLDivElement} mocked DIV\n */\nexport function createMockDiv() {\n  const mockedDiv = new Proxy(\n    {\n      /**\n       * @type {Array<HTMLElement>}\n       */\n      childNodes: [],\n      /**\n       * @param {HTMLElement} node html node.\n       * @return {HTMLElement} html node.\n       */\n      appendChild: function (node) {\n        this.childNodes.push(node);\n        return node;\n      },\n      /**\n       * dummy function, as this structure is not supposed to have a parent.\n       */\n      remove: function () {},\n      /**\n       * @param {HTMLElement} node html node.\n       * @return {HTMLElement} html node.\n       */\n      removeChild: function (node) {\n        const index = this.childNodes.indexOf(node);\n        if (index === -1) {\n          throw new Error('Node to remove was not found');\n        }\n        this.childNodes.splice(index, 1);\n        return node;\n      },\n      /**\n       * @param {HTMLElement} newNode new html node.\n       * @param {HTMLElement} referenceNode reference html node.\n       * @return {HTMLElement} new html node.\n       */\n      insertBefore: function (newNode, referenceNode) {\n        const index = this.childNodes.indexOf(referenceNode);\n        if (index === -1) {\n          throw new Error('Reference node not found');\n        }\n        this.childNodes.splice(index, 0, newNode);\n        return newNode;\n      },\n      style: {},\n    },\n    {\n      get(target, prop, receiver) {\n        if (prop === 'firstElementChild') {\n          return target.childNodes.length > 0 ? target.childNodes[0] : null;\n        }\n        return Reflect.get(target, prop, receiver);\n      },\n    },\n  );\n  return /** @type {HTMLDivElement} */ (/** @type {*} */ (mockedDiv));\n}\n\n/***\n * @param {*} obj The object to check.\n * @return {obj is (HTMLCanvasElement | OffscreenCanvas)} The object is a canvas.\n */\nexport function isCanvas(obj) {\n  return (\n    (typeof HTMLCanvasElement !== 'undefined' &&\n      obj instanceof HTMLCanvasElement) ||\n    (typeof OffscreenCanvas !== 'undefined' && obj instanceof OffscreenCanvas)\n  );\n}\n","/**\n * @module ol/render/EventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  /**\n   * Triggered before a layer is rendered.\n   * @event module:ol/render/Event~RenderEvent#prerender\n   * @api\n   */\n  PRERENDER: 'prerender',\n\n  /**\n   * Triggered after a layer is rendered.\n   * @event module:ol/render/Event~RenderEvent#postrender\n   * @api\n   */\n  POSTRENDER: 'postrender',\n\n  /**\n   * Triggered before layers are composed.  When dispatched by the map, the event object will not have\n   * a `context` set.  When dispatched by a layer, the event object will have a `context` set.  Only\n   * WebGL layers currently dispatch this event.\n   * @event module:ol/render/Event~RenderEvent#precompose\n   * @api\n   */\n  PRECOMPOSE: 'precompose',\n\n  /**\n   * Triggered after layers are composed.  When dispatched by the map, the event object will not have\n   * a `context` set.  When dispatched by a layer, the event object will have a `context` set.  Only\n   * WebGL layers currently dispatch this event.\n   * @event module:ol/render/Event~RenderEvent#postcompose\n   * @api\n   */\n  POSTCOMPOSE: 'postcompose',\n\n  /**\n   * Triggered when rendering is complete, i.e. all sources and tiles have\n   * finished loading for the current viewport, and all tiles are faded in.\n   * The event object will not have a `context` set.\n   * @event module:ol/render/Event~RenderEvent#rendercomplete\n   * @api\n   */\n  RENDERCOMPLETE: 'rendercomplete',\n};\n\n/**\n * @typedef {'postrender'|'precompose'|'postcompose'|'rendercomplete'} MapRenderEventTypes\n */\n\n/**\n * @typedef {'postrender'|'prerender'} LayerRenderEventTypes\n */\n","/**\n * @module ol/ImageState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n  IDLE: 0,\n  LOADING: 1,\n  LOADED: 2,\n  ERROR: 3,\n  EMPTY: 4,\n};\n","/**\n * @module ol/color\n */\nimport {createCanvasContext2D} from './dom.js';\nimport {clamp, toFixed} from './math.js';\n\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array<number>} Color\n * @api\n */\n\n/**\n * Color to indicate that no color should be rendered. This is meant to be used for per-reference\n * comparisons only.\n * @type {Color}\n */\nexport const NO_COLOR = [NaN, NaN, NaN, 0];\n\nlet colorParseContext;\n/**\n * @return {CanvasRenderingContext2D} The color parse context\n */\nfunction getColorParseContext() {\n  if (!colorParseContext) {\n    colorParseContext = createCanvasContext2D(1, 1, undefined, {\n      willReadFrequently: true,\n      desynchronized: true,\n    });\n  }\n  return colorParseContext;\n}\n\nconst rgbModernRegEx =\n  /^rgba?\\(\\s*(\\d+%?)\\s+(\\d+%?)\\s+(\\d+%?)(?:\\s*\\/\\s*(\\d+%|\\d*\\.\\d+|[01]))?\\s*\\)$/i;\nconst rgbLegacyAbsoluteRegEx =\n  /^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)(?:\\s*,\\s*(\\d+%|\\d*\\.\\d+|[01]))?\\s*\\)$/i;\nconst rgbLegacyPercentageRegEx =\n  /^rgba?\\(\\s*(\\d+%)\\s*,\\s*(\\d+%)\\s*,\\s*(\\d+%)(?:\\s*,\\s*(\\d+%|\\d*\\.\\d+|[01]))?\\s*\\)$/i;\nconst hexRegEx = /^#([\\da-f]{3,4}|[\\da-f]{6}|[\\da-f]{8})$/i;\n\n/**\n * @param {string} s Color component as number or percentage.\n * @param {number} divider Divider for percentage.\n * @return {number} Color component.\n */\nfunction toColorComponent(s, divider) {\n  return s.endsWith('%')\n    ? Number(s.substring(0, s.length - 1)) / divider\n    : Number(s);\n}\n\n/**\n * @param {string} color Color string.\n */\nfunction throwInvalidColor(color) {\n  throw new Error('failed to parse \"' + color + '\" as color');\n}\n\n/**\n * @param {string} color Color string.\n * @return {Color} RGBa color array.\n */\nfunction parseRgba(color) {\n  // Fast lane for rgb(a) colors\n  if (color.toLowerCase().startsWith('rgb')) {\n    const rgb =\n      color.match(rgbLegacyAbsoluteRegEx) ||\n      color.match(rgbModernRegEx) ||\n      color.match(rgbLegacyPercentageRegEx);\n    if (rgb) {\n      const alpha = rgb[4];\n      const rgbDivider = 100 / 255;\n      return [\n        clamp((toColorComponent(rgb[1], rgbDivider) + 0.5) | 0, 0, 255),\n        clamp((toColorComponent(rgb[2], rgbDivider) + 0.5) | 0, 0, 255),\n        clamp((toColorComponent(rgb[3], rgbDivider) + 0.5) | 0, 0, 255),\n        alpha !== undefined ? clamp(toColorComponent(alpha, 100), 0, 1) : 1,\n      ];\n    }\n    throwInvalidColor(color);\n  }\n  // Fast lane for hex colors (also with alpha)\n  if (color.startsWith('#')) {\n    if (hexRegEx.test(color)) {\n      const hex = color.substring(1);\n      const step = hex.length <= 4 ? 1 : 2;\n      const colorFromHex = [0, 0, 0, 255];\n      for (let i = 0, ii = hex.length; i < ii; i += step) {\n        let colorComponent = parseInt(hex.substring(i, i + step), 16);\n        if (step === 1) {\n          colorComponent += colorComponent << 4;\n        }\n        colorFromHex[i / step] = colorComponent;\n      }\n      colorFromHex[3] = colorFromHex[3] / 255;\n      return colorFromHex;\n    }\n    throwInvalidColor(color);\n  }\n  // Use canvas color serialization to parse the color into hex or rgba\n  // See https://www.w3.org/TR/2021/SPSD-2dcontext-20210128/#serialization-of-a-color\n  const context = getColorParseContext();\n  context.fillStyle = '#abcdef';\n  let invalidCheckFillStyle = context.fillStyle;\n  context.fillStyle = color;\n  if (context.fillStyle === invalidCheckFillStyle) {\n    context.fillStyle = '#fedcba';\n    invalidCheckFillStyle = context.fillStyle;\n    context.fillStyle = color;\n    if (context.fillStyle === invalidCheckFillStyle) {\n      throwInvalidColor(color);\n    }\n  }\n  const colorString = context.fillStyle;\n  if (colorString.startsWith('#') || colorString.startsWith('rgba')) {\n    return parseRgba(colorString);\n  }\n  context.clearRect(0, 0, 1, 1);\n  context.fillRect(0, 0, 1, 1);\n  const colorFromImage = Array.from(context.getImageData(0, 0, 1, 1).data);\n  colorFromImage[3] = toFixed(colorFromImage[3] / 255, 3);\n  return colorFromImage;\n}\n\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n  if (typeof color === 'string') {\n    return color;\n  }\n  return toString(color);\n}\n\n/**\n * @type {number}\n */\nconst MAX_CACHE_SIZE = 1024;\n\n/**\n * We maintain a small cache of parsed strings.  Whenever the cache grows too large,\n * we delete an arbitrary set of the entries.\n *\n * @type {Object<string, Color>}\n */\nconst cache = {};\n\n/**\n * @type {number}\n */\nlet cacheSize = 0;\n\n/**\n * @param {Color} color A color that may or may not have an alpha channel.\n * @return {Color} The input color with an alpha channel.  If the input color has\n * an alpha channel, the input color will be returned unchanged.  Otherwise, a new\n * array will be returned with the input color and an alpha channel of 1.\n */\nexport function withAlpha(color) {\n  if (color.length === 4) {\n    return color;\n  }\n  const output = color.slice();\n  output[3] = 1;\n  return output;\n}\n\n// The functions b1, b2, a1, a2, rgbaToLcha and lchaToRgba below are adapted from\n// https://stackoverflow.com/a/67219995/2389327\n\n/**\n * @param {number} v Input value.\n * @return {number} Output value.\n */\nfunction b1(v) {\n  return v > 0.0031308 ? Math.pow(v, 1 / 2.4) * 269.025 - 14.025 : v * 3294.6;\n}\n\n/**\n * @param {number} v Input value.\n * @return {number} Output value.\n */\nfunction b2(v) {\n  return v > 0.2068965 ? Math.pow(v, 3) : (v - 4 / 29) * (108 / 841);\n}\n\n/**\n * @param {number} v Input value.\n * @return {number} Output value.\n */\nfunction a1(v) {\n  return v > 10.314724 ? Math.pow((v + 14.025) / 269.025, 2.4) : v / 3294.6;\n}\n\n/**\n * @param {number} v Input value.\n * @return {number} Output value.\n */\nfunction a2(v) {\n  return v > 0.0088564 ? Math.pow(v, 1 / 3) : v / (108 / 841) + 4 / 29;\n}\n\n/**\n * @param {Color} color RGBA color.\n * @return {Color} LCHuv color with alpha.\n */\nexport function rgbaToLcha(color) {\n  const r = a1(color[0]);\n  const g = a1(color[1]);\n  const b = a1(color[2]);\n  const y = a2(r * 0.222488403 + g * 0.716873169 + b * 0.06060791);\n  const l = 500 * (a2(r * 0.452247074 + g * 0.399439023 + b * 0.148375274) - y);\n  const q = 200 * (y - a2(r * 0.016863605 + g * 0.117638439 + b * 0.865350722));\n  const h = Math.atan2(q, l) * (180 / Math.PI);\n  return [\n    116 * y - 16,\n    Math.sqrt(l * l + q * q),\n    h < 0 ? h + 360 : h,\n    color[3],\n  ];\n}\n\n/**\n * @param {Color} color LCHuv color with alpha.\n * @return {Color} RGBA color.\n */\nexport function lchaToRgba(color) {\n  const l = (color[0] + 16) / 116;\n  const c = color[1];\n  const h = (color[2] * Math.PI) / 180;\n  const y = b2(l);\n  const x = b2(l + (c / 500) * Math.cos(h));\n  const z = b2(l - (c / 200) * Math.sin(h));\n  const r = b1(x * 3.021973625 - y * 1.617392459 - z * 0.404875592);\n  const g = b1(x * -0.943766287 + y * 1.916279586 + z * 0.027607165);\n  const b = b1(x * 0.069407491 - y * 0.22898585 + z * 1.159737864);\n  return [\n    clamp((r + 0.5) | 0, 0, 255),\n    clamp((g + 0.5) | 0, 0, 255),\n    clamp((b + 0.5) | 0, 0, 255),\n    color[3],\n  ];\n}\n\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport function fromString(s) {\n  if (s === 'none') {\n    return NO_COLOR;\n  }\n  if (cache.hasOwnProperty(s)) {\n    return cache[s];\n  }\n  if (cacheSize >= MAX_CACHE_SIZE) {\n    let i = 0;\n    for (const key in cache) {\n      if ((i++ & 3) === 0) {\n        delete cache[key];\n        --cacheSize;\n      }\n    }\n  }\n\n  const color = parseRgba(s);\n  if (color.length !== 4) {\n    throwInvalidColor(s);\n  }\n  for (const c of color) {\n    if (isNaN(c)) {\n      throwInvalidColor(s);\n    }\n  }\n  cache[s] = color;\n  ++cacheSize;\n  return color;\n}\n\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n  if (Array.isArray(color)) {\n    return color;\n  }\n  return fromString(color);\n}\n\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n  let r = color[0];\n  if (r != (r | 0)) {\n    r = (r + 0.5) | 0;\n  }\n  let g = color[1];\n  if (g != (g | 0)) {\n    g = (g + 0.5) | 0;\n  }\n  let b = color[2];\n  if (b != (b | 0)) {\n    b = (b + 0.5) | 0;\n  }\n  const a = color[3] === undefined ? 1 : Math.round(color[3] * 1000) / 1000;\n  return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n  try {\n    fromString(s);\n    return true;\n  } catch {\n    return false;\n  }\n}\n","/**\n * @module ol/Image\n */\nimport ImageState from './ImageState.js';\nimport EventType from './events/EventType.js';\nimport EventTarget from './events/Target.js';\nimport {listenOnce, unlistenByKey} from './events.js';\nimport {toPromise} from './functions.js';\nimport {CREATE_IMAGE_BITMAP, IMAGE_DECODE} from './has.js';\n\n/**\n * A function that takes an {@link module:ol/Image~ImageWrapper} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~ImageWrapper#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n *     function(image, src) {\n *       image.getImage().src = src;\n *     }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(import(\"./Image.js\").default, string): void} LoadFunction\n * @api\n */\n\n/**\n * @typedef {Object} ImageObject\n * @property {import(\"./extent.js\").Extent} [extent] Extent, if different from the requested one.\n * @property {import(\"./resolution.js\").ResolutionLike} [resolution] Resolution, if different from the requested one.\n * When x and y resolution are different, use the array type (`[xResolution, yResolution]`).\n * @property {number} [pixelRatio] Pixel ratio, if different from the requested one.\n * @property {import('./DataTile.js').ImageLike} image Image.\n */\n\n/**\n * Loader function used for image sources. Receives extent, resolution and pixel ratio as arguments.\n * For images that cover any extent and resolution (static images), the loader function should not accept\n * any arguments. The function returns an {@link import(\"./DataTile.js\").ImageLike image}, an\n * {@link import(\"./Image.js\").ImageObject image object}, or a promise for the same.\n * For loaders that generate images, the promise should not resolve until the image is loaded.\n * If the returned image does not match the extent, resolution or pixel ratio passed to the loader,\n * it has to return an {@link import(\"./Image.js\").ImageObject image object} with the `image` and the\n * correct `extent`, `resolution` and `pixelRatio`.\n *\n * @typedef {function(import(\"./extent.js\").Extent, number, number, (function(HTMLImageElement, string): void)=): import(\"./DataTile.js\").ImageLike|ImageObject|Promise<import(\"./DataTile.js\").ImageLike|ImageObject>} Loader\n * @api\n */\n\n/**\n * Loader function used for image sources. Receives extent, resolution and pixel ratio as arguments.\n * The function returns a promise for an  {@link import(\"./Image.js\").ImageObject image object}.\n *\n * @typedef {function(import(\"./extent.js\").Extent, number, number, (function(HTMLImageElement, string): void)=): Promise<import(\"./DataTile.js\").ImageLike|ImageObject>} ImageObjectPromiseLoader\n */\n\nclass ImageWrapper extends EventTarget {\n  /**\n   * @param {import(\"./extent.js\").Extent} extent Extent.\n   * @param {number|Array<number>|undefined} resolution Resolution. If provided as array, x and y\n   * resolution will be assumed.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"./ImageState.js\").default|Loader} stateOrLoader State.\n   */\n  constructor(extent, resolution, pixelRatio, stateOrLoader) {\n    super();\n\n    /**\n     * @protected\n     * @type {import(\"./extent.js\").Extent}\n     */\n    this.extent = extent;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ = pixelRatio;\n\n    /**\n     * @protected\n     * @type {number|Array<number>|undefined}\n     */\n    this.resolution = resolution;\n\n    /**\n     * @protected\n     * @type {import(\"./ImageState.js\").default}\n     */\n    this.state =\n      typeof stateOrLoader === 'function' ? ImageState.IDLE : stateOrLoader;\n\n    /**\n     * @private\n     * @type {import('./DataTile.js').ImageLike|null}\n     */\n    this.image_ = null;\n\n    /**\n     * @protected\n     * @type {Loader|null}\n     */\n    this.loader = typeof stateOrLoader === 'function' ? stateOrLoader : null;\n  }\n\n  /**\n   * @protected\n   */\n  changed() {\n    this.dispatchEvent(EventType.CHANGE);\n  }\n\n  /**\n   * @return {import(\"./extent.js\").Extent} Extent.\n   */\n  getExtent() {\n    return this.extent;\n  }\n\n  /**\n   * @return {import('./DataTile.js').ImageLike} Image.\n   */\n  getImage() {\n    return this.image_;\n  }\n\n  /**\n   * @return {number} PixelRatio.\n   */\n  getPixelRatio() {\n    return this.pixelRatio_;\n  }\n\n  /**\n   * @return {number|Array<number>} Resolution.\n   */\n  getResolution() {\n    return /** @type {number} */ (this.resolution);\n  }\n\n  /**\n   * @return {import(\"./ImageState.js\").default} State.\n   */\n  getState() {\n    return this.state;\n  }\n\n  /**\n   * Load not yet loaded URI.\n   */\n  load() {\n    if (this.state == ImageState.IDLE) {\n      if (this.loader) {\n        this.state = ImageState.LOADING;\n        this.changed();\n        const resolution = this.getResolution();\n        const requestResolution = Array.isArray(resolution)\n          ? resolution[0]\n          : resolution;\n        toPromise(() =>\n          this.loader(\n            this.getExtent(),\n            requestResolution,\n            this.getPixelRatio(),\n          ),\n        )\n          .then((image) => {\n            if ('image' in image) {\n              this.image_ = image.image;\n            }\n            if ('extent' in image) {\n              this.extent = image.extent;\n            }\n            if ('resolution' in image) {\n              this.resolution = image.resolution;\n            }\n            if ('pixelRatio' in image) {\n              this.pixelRatio_ = image.pixelRatio;\n            }\n            if (\n              image instanceof HTMLImageElement ||\n              (CREATE_IMAGE_BITMAP && image instanceof ImageBitmap) ||\n              image instanceof HTMLCanvasElement ||\n              image instanceof HTMLVideoElement\n            ) {\n              this.image_ = image;\n            }\n            this.state = ImageState.LOADED;\n          })\n          .catch((error) => {\n            this.state = ImageState.ERROR;\n            console.error(error); // eslint-disable-line no-console\n          })\n          .finally(() => this.changed());\n      }\n    }\n  }\n\n  /**\n   * @param {import('./DataTile.js').ImageLike} image The image.\n   */\n  setImage(image) {\n    this.image_ = image;\n  }\n\n  /**\n   * @param {number|Array<number>} resolution Resolution.\n   */\n  setResolution(resolution) {\n    this.resolution = resolution;\n  }\n}\n\n/**\n * @param {import('./DataTile.js').ImageLike} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n  const img = /** @type {HTMLImageElement} */ (image);\n  let listening = true;\n  let decoding = false;\n  let loaded = false;\n\n  const listenerKeys = [\n    listenOnce(img, EventType.LOAD, function () {\n      loaded = true;\n      if (!decoding) {\n        loadHandler();\n      }\n    }),\n  ];\n\n  if (img.src && IMAGE_DECODE) {\n    decoding = true;\n    img\n      .decode()\n      .then(function () {\n        if (listening) {\n          loadHandler();\n        }\n      })\n      .catch(function (error) {\n        if (listening) {\n          if (loaded) {\n            loadHandler();\n          } else {\n            errorHandler();\n          }\n        }\n      });\n  } else {\n    listenerKeys.push(listenOnce(img, EventType.ERROR, errorHandler));\n  }\n\n  return function unlisten() {\n    listening = false;\n    listenerKeys.forEach(unlistenByKey);\n  };\n}\n\n/**\n * Loads an image.\n * @param {HTMLImageElement} image Image, not yet loaded.\n * @param {string} [src] `src` attribute of the image. Optional, not required if already present.\n * @return {Promise<HTMLImageElement>} Promise resolving to an `HTMLImageElement`.\n * @api\n */\nexport function load(image, src) {\n  return new Promise((resolve, reject) => {\n    function handleLoad() {\n      unlisten();\n      resolve(image);\n    }\n    function handleError() {\n      unlisten();\n      reject(new Error('Image load error'));\n    }\n    function unlisten() {\n      image.removeEventListener('load', handleLoad);\n      image.removeEventListener('error', handleError);\n    }\n    image.addEventListener('load', handleLoad);\n    image.addEventListener('error', handleError);\n    if (src) {\n      image.src = src;\n    }\n  });\n}\n\n/**\n * @param {HTMLImageElement} image Image, not yet loaded.\n * @param {string} [src] `src` attribute of the image. Optional, not required if already present.\n * @return {Promise<HTMLImageElement>} Promise resolving to an `HTMLImageElement`.\n */\nexport function decodeFallback(image, src) {\n  if (src) {\n    image.src = src;\n  }\n  return image.src && IMAGE_DECODE\n    ? new Promise((resolve, reject) =>\n        image\n          .decode()\n          .then(() => resolve(image))\n          .catch((e) =>\n            image.complete && image.width ? resolve(image) : reject(e),\n          ),\n      )\n    : load(image);\n}\n\n/**\n * Loads an image and decodes it to an `ImageBitmap` if `createImageBitmap()` is supported. Returns\n * the loaded image otherwise.\n * @param {HTMLImageElement} image Image, not yet loaded.\n * @param {string} [src] `src` attribute of the image. Optional, not required if already present.\n * @return {Promise<ImageBitmap|HTMLImageElement>} Promise resolving to an `ImageBitmap` or an\n * `HTMLImageElement` if `createImageBitmap()` is not supported.\n * @api\n */\nexport function decode(image, src) {\n  if (src) {\n    image.src = src;\n  }\n  return image.src && IMAGE_DECODE && CREATE_IMAGE_BITMAP\n    ? image\n        .decode()\n        .then(() => createImageBitmap(image))\n        .catch((e) => {\n          if (image.complete && image.width) {\n            return image;\n          }\n          throw e;\n        })\n    : decodeFallback(image);\n}\n\nexport default ImageWrapper;\n","/**\n * @module ol/style/IconImageCache\n */\nimport ImageState from '../ImageState.js';\nimport {asArray} from '../color.js';\nimport {getSharedCanvasContext2D} from '../dom.js';\n\n/**\n * @classdesc\n * Singleton class. Available through {@link module:ol/style/IconImageCache.shared}.\n */\nclass IconImageCache {\n  constructor() {\n    /**\n     * @type {!Object<string, import(\"./IconImage.js\").default>}\n     * @private\n     */\n    this.cache_ = {};\n\n    /**\n     * @type {!Object<string, CanvasPattern>}\n     * @private\n     */\n    this.patternCache_ = {};\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.cacheSize_ = 0;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.maxCacheSize_ = 1024;\n  }\n\n  /**\n   * FIXME empty description for jsdoc\n   */\n  clear() {\n    this.cache_ = {};\n    this.patternCache_ = {};\n    this.cacheSize_ = 0;\n  }\n\n  /**\n   * @return {boolean} Can expire cache.\n   */\n  canExpireCache() {\n    return this.cacheSize_ > this.maxCacheSize_;\n  }\n\n  /**\n   * FIXME empty description for jsdoc\n   */\n  expire() {\n    if (this.canExpireCache()) {\n      let i = 0;\n      for (const key in this.cache_) {\n        const iconImage = this.cache_[key];\n        if ((i++ & 3) === 0 && !iconImage.hasListener()) {\n          delete this.cache_[key];\n          delete this.patternCache_[key];\n          --this.cacheSize_;\n        }\n      }\n    }\n  }\n\n  /**\n   * @param {string} src Src.\n   * @param {import(\"../color.js\").Color|string|null} color Color.\n   * @return {import(\"./IconImage.js\").default} Icon image.\n   */\n  get(src, color) {\n    const key = getCacheKey(src, color);\n\n    const icon = key in this.cache_ ? this.cache_[key] : null;\n    return icon;\n  }\n\n  /**\n   * @param {string} src Src.\n   * @param {import(\"../color.js\").Color|string|null} color Color.\n   * @return {CanvasPattern} Icon image.\n   */\n  getPattern(src, color) {\n    const key = getCacheKey(src, color);\n    return key in this.patternCache_ ? this.patternCache_[key] : null;\n  }\n\n  /**\n   * @param {string} src Src.\n   * @param {import(\"../color.js\").Color|string|null} color Color.\n   * @param {import(\"./IconImage.js\").default|null} iconImage Icon image.\n   * @param {boolean} [pattern] Also cache a `'repeat'` pattern with this `iconImage`.\n   */\n  set(src, color, iconImage, pattern) {\n    const key = getCacheKey(src, color);\n    const update = key in this.cache_;\n    this.cache_[key] = iconImage;\n    if (pattern) {\n      if (iconImage.getImageState() === ImageState.IDLE) {\n        iconImage.load();\n      }\n      if (iconImage.getImageState() === ImageState.LOADING) {\n        iconImage.ready().then(() => {\n          this.patternCache_[key] = getSharedCanvasContext2D().createPattern(\n            iconImage.getImage(1),\n            'repeat',\n          );\n        });\n      } else {\n        this.patternCache_[key] = getSharedCanvasContext2D().createPattern(\n          iconImage.getImage(1),\n          'repeat',\n        );\n      }\n    }\n    if (!update) {\n      ++this.cacheSize_;\n    }\n  }\n\n  /**\n   * Set the cache size of the icon cache. Default is `1024`. Change this value when\n   * your map uses more than 1024 different icon images and you are not caching icon\n   * styles on the application level.\n   * @param {number} maxCacheSize Cache max size.\n   * @api\n   */\n  setSize(maxCacheSize) {\n    this.maxCacheSize_ = maxCacheSize;\n    this.expire();\n  }\n}\n\n/**\n * @param {string} src Src.\n * @param {import(\"../color.js\").Color|string|null} color Color.\n * @return {string} Cache key.\n */\nexport function getCacheKey(src, color) {\n  const colorString = color ? asArray(color) : 'null';\n  return src + ':' + colorString;\n}\n\nexport default IconImageCache;\n\n/**\n * The {@link module:ol/style/IconImageCache~IconImageCache} for\n * {@link module:ol/style/Icon~Icon} images.\n * @api\n */\nexport const shared = new IconImageCache();\n","/**\n * @module ol/style/IconImage\n */\n\nimport {decodeFallback} from '../Image.js';\nimport ImageState from '../ImageState.js';\nimport {asString} from '../color.js';\nimport {createCanvasContext2D} from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport EventTarget from '../events/Target.js';\nimport {shared as iconImageCache} from './IconImageCache.js';\n\n/**\n * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}\n */\nlet taintedTestContext = null;\n\nclass IconImage extends EventTarget {\n  /**\n   * @param {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas|ImageBitmap|null} image Image.\n   * @param {string|undefined} src Src.\n   * @param {import('../dom').ImageAttributes} imageAttributes Image attributes options.\n   * @param {import(\"../ImageState.js\").default|undefined} imageState Image state.\n   * @param {import(\"../color.js\").Color|string|null} color Color.\n   */\n  constructor(image, src, imageAttributes, imageState, color) {\n    super();\n\n    /**\n     * @private\n     * @type {HTMLImageElement|OffscreenCanvas|HTMLCanvasElement|ImageBitmap}\n     */\n    this.hitDetectionImage_ = null;\n\n    /**\n     * @private\n     * @type {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas|ImageBitmap|null}\n     */\n    this.image_ = image;\n\n    /**\n     * @private\n     * @type {string|null}\n     */\n    this.crossOrigin_ = imageAttributes?.crossOrigin;\n\n    /**\n     * @private\n     * @type {ReferrerPolicy}\n     */\n    this.referrerPolicy_ = imageAttributes?.referrerPolicy;\n\n    /**\n     * @private\n     * @type {Object<number, HTMLCanvasElement|OffscreenCanvas>}\n     */\n    this.canvas_ = {};\n\n    /**\n     * @private\n     * @type {import(\"../color.js\").Color|string|null}\n     */\n    this.color_ = color;\n\n    /**\n     * @private\n     * @type {import(\"../ImageState.js\").default}\n     */\n    this.imageState_ = imageState === undefined ? ImageState.IDLE : imageState;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size|null}\n     */\n    this.size_ =\n      image && image.width && image.height ? [image.width, image.height] : null;\n\n    /**\n     * @private\n     * @type {string|undefined}\n     */\n    this.src_ = src;\n\n    /**\n     * @private\n     */\n    this.tainted_;\n\n    /**\n     * @private\n     * @type {Promise<void>|null}\n     */\n    this.ready_ = null;\n  }\n\n  /**\n   * @private\n   */\n  initializeImage_() {\n    this.image_ = new Image();\n    if (this.crossOrigin_ !== null) {\n      this.image_.crossOrigin = this.crossOrigin_;\n    }\n    if (this.referrerPolicy_ !== undefined) {\n      this.image_.referrerPolicy = this.referrerPolicy_;\n    }\n  }\n\n  /**\n   * @private\n   * @return {boolean} The image canvas is tainted.\n   */\n  isTainted_() {\n    if (this.tainted_ === undefined && this.imageState_ === ImageState.LOADED) {\n      if (!taintedTestContext) {\n        taintedTestContext = createCanvasContext2D(1, 1, undefined, {\n          willReadFrequently: true,\n        });\n      }\n      taintedTestContext.drawImage(this.image_, 0, 0);\n      try {\n        taintedTestContext.getImageData(0, 0, 1, 1);\n        this.tainted_ = false;\n      } catch {\n        taintedTestContext = null;\n        this.tainted_ = true;\n      }\n    }\n    return this.tainted_ === true;\n  }\n\n  /**\n   * @private\n   */\n  dispatchChangeEvent_() {\n    this.dispatchEvent(EventType.CHANGE);\n  }\n\n  /**\n   * @private\n   */\n  handleImageError_() {\n    this.imageState_ = ImageState.ERROR;\n    this.dispatchChangeEvent_();\n  }\n\n  /**\n   * @private\n   */\n  handleImageLoad_() {\n    this.imageState_ = ImageState.LOADED;\n    this.size_ = [this.image_.width, this.image_.height];\n    this.dispatchChangeEvent_();\n  }\n\n  /**\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas|ImageBitmap} Image or Canvas element or image bitmap.\n   */\n  getImage(pixelRatio) {\n    if (!this.image_) {\n      this.initializeImage_();\n    }\n    this.replaceColor_(pixelRatio);\n    return this.canvas_[pixelRatio] ? this.canvas_[pixelRatio] : this.image_;\n  }\n\n  /**\n   * @param {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas|ImageBitmap} image Image.\n   */\n  setImage(image) {\n    this.image_ = image;\n  }\n\n  /**\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Image or Canvas element.\n   */\n  getPixelRatio(pixelRatio) {\n    this.replaceColor_(pixelRatio);\n    return this.canvas_[pixelRatio] ? pixelRatio : 1;\n  }\n\n  /**\n   * @return {import(\"../ImageState.js\").default} Image state.\n   */\n  getImageState() {\n    return this.imageState_;\n  }\n\n  /**\n   * @return {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas|ImageBitmap} Image element.\n   */\n  getHitDetectionImage() {\n    if (!this.image_) {\n      this.initializeImage_();\n    }\n    if (!this.hitDetectionImage_) {\n      if (this.isTainted_()) {\n        const width = this.size_[0];\n        const height = this.size_[1];\n        const context = createCanvasContext2D(width, height);\n        context.fillRect(0, 0, width, height);\n        this.hitDetectionImage_ = context.canvas;\n      } else {\n        this.hitDetectionImage_ = this.image_;\n      }\n    }\n    return this.hitDetectionImage_;\n  }\n\n  /**\n   * Get the size of the icon (in pixels).\n   * @return {import(\"../size.js\").Size} Image size.\n   */\n  getSize() {\n    return this.size_;\n  }\n\n  /**\n   * @return {string|undefined} Image src.\n   */\n  getSrc() {\n    return this.src_;\n  }\n\n  /**\n   * Load not yet loaded URI.\n   */\n  load() {\n    if (this.imageState_ !== ImageState.IDLE) {\n      return;\n    }\n    if (!this.image_) {\n      this.initializeImage_();\n    }\n\n    this.imageState_ = ImageState.LOADING;\n    try {\n      if (this.src_ !== undefined) {\n        /** @type {HTMLImageElement} */ (this.image_).src = this.src_;\n      }\n    } catch {\n      this.handleImageError_();\n    }\n    if (this.image_ instanceof HTMLImageElement) {\n      decodeFallback(this.image_, this.src_)\n        .then((image) => {\n          this.image_ = image;\n          this.handleImageLoad_();\n        })\n        .catch(this.handleImageError_.bind(this));\n    }\n  }\n\n  /**\n   * @param {number} pixelRatio Pixel ratio.\n   * @private\n   */\n  replaceColor_(pixelRatio) {\n    if (\n      !this.color_ ||\n      this.canvas_[pixelRatio] ||\n      this.imageState_ !== ImageState.LOADED\n    ) {\n      return;\n    }\n\n    const image = this.image_;\n    const ctx = createCanvasContext2D(\n      Math.ceil(image.width * pixelRatio),\n      Math.ceil(image.height * pixelRatio),\n    );\n    const canvas = ctx.canvas;\n\n    ctx.scale(pixelRatio, pixelRatio);\n    ctx.drawImage(image, 0, 0);\n\n    ctx.globalCompositeOperation = 'multiply';\n    ctx.fillStyle = asString(this.color_);\n    ctx.fillRect(0, 0, canvas.width / pixelRatio, canvas.height / pixelRatio);\n\n    ctx.globalCompositeOperation = 'destination-in';\n    ctx.drawImage(image, 0, 0);\n\n    this.canvas_[pixelRatio] = canvas;\n  }\n\n  /**\n   * @return {Promise<void>} Promise that resolves when the image is loaded.\n   */\n  ready() {\n    if (!this.ready_) {\n      this.ready_ = new Promise((resolve) => {\n        if (\n          this.imageState_ === ImageState.LOADED ||\n          this.imageState_ === ImageState.ERROR\n        ) {\n          resolve();\n        } else {\n          const onChange = () => {\n            if (\n              this.imageState_ === ImageState.LOADED ||\n              this.imageState_ === ImageState.ERROR\n            ) {\n              this.removeEventListener(EventType.CHANGE, onChange);\n              resolve();\n            }\n          };\n          this.addEventListener(EventType.CHANGE, onChange);\n        }\n      });\n    }\n    return this.ready_;\n  }\n}\n\n/**\n * @param {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas|ImageBitmap|null} image Image.\n * @param {string|undefined} src Src.\n * @param {import('../dom.js').ImageAttributes} imageAttributes Image attributes options.\n * @param {import(\"../ImageState.js\").default|undefined} imageState Image state.\n * @param {import(\"../color.js\").Color|string|null} color Color.\n * @param {boolean} [pattern] Also cache a `repeat` pattern with the icon image.\n * @return {IconImage} Icon image.\n */\nexport function get(image, src, imageAttributes, imageState, color, pattern) {\n  let iconImage =\n    src === undefined ? undefined : iconImageCache.get(src, color);\n  if (!iconImage) {\n    iconImage = new IconImage(\n      image,\n      image && 'src' in image ? image.src || undefined : src,\n      imageAttributes,\n      imageState,\n      color,\n    );\n    iconImageCache.set(src, color, iconImage, pattern);\n  }\n  if (pattern && iconImage && !iconImageCache.getPattern(src, color)) {\n    iconImageCache.set(src, color, iconImage, pattern);\n  }\n  return iconImage;\n}\n\nexport default IconImage;\n","/**\n * @module ol/colorlike\n */\nimport ImageState from './ImageState.js';\nimport {toString} from './color.js';\nimport {createCanvasContext2D} from './dom.js';\nimport {get as getIconImage} from './style/IconImage.js';\nimport {shared as iconCache} from './style/IconImageCache.js';\n\n/**\n * @typedef {Object} PatternDescriptor\n * @property {string} src Pattern image URL\n * @property {import(\"./color.js\").Color|string} [color] Color to tint the pattern with.\n * @property {import(\"./size.js\").Size} [size] Size of the desired slice from the pattern image.\n * Use this together with `offset` when the pattern image is a sprite sheet.\n * @property {import(\"./size.js\").Size} [offset] Offset of the desired slice from the pattern image.\n * Use this together with `size` when the pattern image is a sprite sheet.\n */\n\n/**\n * A type accepted by CanvasRenderingContext2D.fillStyle\n * or CanvasRenderingContext2D.strokeStyle.\n * Represents a color, [CanvasPattern](https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern),\n * or [CanvasGradient](https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient). The origin for\n * patterns and gradients as fill style is an increment of 512 css pixels from map coordinate\n * `[0, 0]`. For seamless repeat patterns, width and height of the pattern image\n * must be a factor of two (2, 4, 8, ..., 512).\n *\n * @typedef {string|CanvasPattern|CanvasGradient} ColorLike\n * @api\n */\n\n/**\n * @param {import(\"./color.js\").Color|ColorLike|PatternDescriptor|null} color Color.\n * @return {ColorLike|null} The color as an {@link ol/colorlike~ColorLike}.\n * @api\n */\nexport function asColorLike(color) {\n  if (!color) {\n    return null;\n  }\n  if (Array.isArray(color)) {\n    return toString(color);\n  }\n  if (typeof color === 'object' && 'src' in color) {\n    return asCanvasPattern(color);\n  }\n  return color;\n}\n\n/**\n * @param {PatternDescriptor} pattern Pattern descriptor.\n * @return {CanvasPattern|null} Canvas pattern or null if the pattern referenced in the\n * PatternDescriptor was not found in the icon image cache.\n */\nfunction asCanvasPattern(pattern) {\n  if (!pattern.offset || !pattern.size) {\n    return iconCache.getPattern(pattern.src, pattern.color);\n  }\n\n  const cacheKey = pattern.src + ':' + pattern.offset;\n\n  const canvasPattern = iconCache.getPattern(cacheKey, pattern.color);\n  if (canvasPattern) {\n    return canvasPattern;\n  }\n\n  const iconImage = iconCache.get(pattern.src, null);\n  if (iconImage.getImageState() !== ImageState.LOADED) {\n    return null;\n  }\n  const patternCanvasContext = createCanvasContext2D(\n    pattern.size[0],\n    pattern.size[1],\n  );\n  patternCanvasContext.drawImage(\n    iconImage.getImage(1),\n    pattern.offset[0],\n    pattern.offset[1],\n    pattern.size[0],\n    pattern.size[1],\n    0,\n    0,\n    pattern.size[0],\n    pattern.size[1],\n  );\n  getIconImage(\n    patternCanvasContext.canvas,\n    cacheKey,\n    undefined,\n    ImageState.LOADED,\n    pattern.color,\n    true,\n  );\n  return iconCache.getPattern(cacheKey, pattern.color);\n}\n","/**\n * @module ol/geom/flat/inflate\n */\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array<import(\"../../coordinate.js\").Coordinate>} [coordinates] Coordinates.\n * @return {Array<import(\"../../coordinate.js\").Coordinate>} Coordinates.\n */\nexport function inflateCoordinates(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  coordinates,\n) {\n  coordinates = coordinates !== undefined ? coordinates : [];\n  let i = 0;\n  for (let j = offset; j < end; j += stride) {\n    coordinates[i++] = flatCoordinates.slice(j, j + stride);\n  }\n  coordinates.length = i;\n  return coordinates;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {Array<Array<import(\"../../coordinate.js\").Coordinate>>} [coordinatess] Coordinatess.\n * @return {Array<Array<import(\"../../coordinate.js\").Coordinate>>} Coordinatess.\n */\nexport function inflateCoordinatesArray(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  coordinatess,\n) {\n  coordinatess = coordinatess !== undefined ? coordinatess : [];\n  let i = 0;\n  for (let j = 0, jj = ends.length; j < jj; ++j) {\n    const end = ends[j];\n    coordinatess[i++] = inflateCoordinates(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      coordinatess[i],\n    );\n    offset = end;\n  }\n  coordinatess.length = i;\n  return coordinatess;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array<Array<Array<import(\"../../coordinate.js\").Coordinate>>>} [coordinatesss]\n *     Coordinatesss.\n * @return {Array<Array<Array<import(\"../../coordinate.js\").Coordinate>>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  coordinatesss,\n) {\n  coordinatesss = coordinatesss !== undefined ? coordinatesss : [];\n  let i = 0;\n  for (let j = 0, jj = endss.length; j < jj; ++j) {\n    const ends = endss[j];\n    coordinatesss[i++] =\n      ends.length === 1 && ends[0] === offset\n        ? []\n        : inflateCoordinatesArray(\n            flatCoordinates,\n            offset,\n            ends,\n            stride,\n            coordinatesss[i],\n          );\n    offset = ends[ends.length - 1];\n  }\n  coordinatesss.length = i;\n  return coordinatesss;\n}\n","/**\n * @module ol/render/VectorContext\n */\n\n/**\n * @classdesc\n * Context for drawing geometries.  A vector context is available on render\n * events and does not need to be constructed directly.\n * @api\n */\nclass VectorContext {\n  /**\n   * Render a geometry with a custom renderer.\n   *\n   * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n   * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n   * @param {Function} renderer Renderer.\n   * @param {Function} hitDetectionRenderer Renderer.\n   * @param {number} [index] Render order index.\n   */\n  drawCustom(geometry, feature, renderer, hitDetectionRenderer, index) {}\n\n  /**\n   * Render a geometry.\n   *\n   * @param {import(\"../geom/Geometry.js\").default} geometry The geometry to render.\n   */\n  drawGeometry(geometry) {}\n\n  /**\n   * Set the rendering style.\n   *\n   * @param {import(\"../style/Style.js\").default} style The rendering style.\n   */\n  setStyle(style) {}\n\n  /**\n   * @param {import(\"../geom/Circle.js\").default} circleGeometry Circle geometry.\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawCircle(circleGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"../style/Style.js\").default} style Style.\n   * @param {number} [index] Render order index.\n   */\n  drawFeature(feature, style, index) {}\n\n  /**\n   * @param {import(\"../geom/GeometryCollection.js\").default} geometryCollectionGeometry Geometry collection.\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawGeometryCollection(geometryCollectionGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../geom/LineString.js\").default|import(\"./Feature.js\").default} lineStringGeometry Line string geometry.\n   * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawLineString(lineStringGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../geom/MultiLineString.js\").default|import(\"./Feature.js\").default} multiLineStringGeometry MultiLineString geometry.\n   * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawMultiLineString(multiLineStringGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../geom/MultiPoint.js\").default|import(\"./Feature.js\").default} multiPointGeometry MultiPoint geometry.\n   * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawMultiPoint(multiPointGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../geom/MultiPolygon.js\").default} multiPolygonGeometry MultiPolygon geometry.\n   * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawMultiPolygon(multiPolygonGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../geom/Point.js\").default|import(\"./Feature.js\").default} pointGeometry Point geometry.\n   * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawPoint(pointGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../geom/Polygon.js\").default|import(\"./Feature.js\").default} polygonGeometry Polygon geometry.\n   * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawPolygon(polygonGeometry, feature, index) {}\n\n  /**\n   * @param {import(\"../geom/SimpleGeometry.js\").default|import(\"./Feature.js\").default} geometry Geometry.\n   * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   */\n  drawText(geometry, feature, index) {}\n\n  /**\n   * @param {import(\"../style/Fill.js\").default} fillStyle Fill style.\n   * @param {import(\"../style/Stroke.js\").default} strokeStyle Stroke style.\n   */\n  setFillStrokeStyle(fillStyle, strokeStyle) {}\n\n  /**\n   * @param {import(\"../style/Image.js\").default} imageStyle Image style.\n   * @param {import(\"../render/canvas.js\").DeclutterImageWithText} [declutterImageWithText] Shared data for combined decluttering with a text style.\n   */\n  setImageStyle(imageStyle, declutterImageWithText) {}\n\n  /**\n   * @param {import(\"../style/Text.js\").default} textStyle Text style.\n   * @param {import(\"../render/canvas.js\").DeclutterImageWithText} [declutterImageWithText] Shared data for combined decluttering with an image style.\n   */\n  setTextStyle(textStyle, declutterImageWithText) {}\n}\n\nexport default VectorContext;\n","/**\n * @module ol/css\n */\n\n/**\n * @typedef {Object} FontParameters\n * @property {string} style Style.\n * @property {string} variant Variant.\n * @property {string} weight Weight.\n * @property {string} size Size.\n * @property {string} lineHeight LineHeight.\n * @property {string} family Family.\n * @property {Array<string>} families Families.\n */\n\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_HIDDEN = 'ol-hidden';\n\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_SELECTABLE = 'ol-selectable';\n\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSELECTABLE = 'ol-unselectable';\n\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSUPPORTED = 'ol-unsupported';\n\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_CONTROL = 'ol-control';\n\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_COLLAPSED = 'ol-collapsed';\n\n/**\n * From https://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nconst fontRegEx = new RegExp(\n  [\n    '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n    '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n    '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n    '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n    '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n    '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n    '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z0-9]+?)\\\\s*$',\n  ].join(''),\n  'i',\n);\n/** @type {Array<'style'|'variant'|'weight'|'size'|'lineHeight'|'family'>} */\nconst fontRegExMatchIndex = [\n  'style',\n  'variant',\n  'weight',\n  'size',\n  'lineHeight',\n  'family',\n];\n\n/** @type {Object<string|number, number>} */\nexport const fontWeights = {\n  normal: 400,\n  bold: 700,\n};\n\n/**\n * Get the list of font families from a font spec.  Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters|null} The font parameters (or null if the input spec is invalid).\n */\nexport const getFontParameters = function (fontSpec) {\n  const match = fontSpec.match(fontRegEx);\n  if (!match) {\n    return null;\n  }\n  const style = /** @type {FontParameters} */ ({\n    lineHeight: 'normal',\n    size: '1.2em',\n    style: 'normal',\n    weight: '400',\n    variant: 'normal',\n  });\n  for (let i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n    const value = match[i + 1];\n    if (value !== undefined) {\n      style[fontRegExMatchIndex[i]] =\n        typeof value === 'string' ? value.trim() : value;\n    }\n  }\n  if (isNaN(Number(style.weight)) && style.weight in fontWeights) {\n    style.weight = fontWeights[style.weight];\n  }\n  style.families = style.family\n    .split(/,\\s?/)\n    .map((f) => f.trim().replace(/^['\"]|['\"]$/g, ''));\n  return style;\n};\n","/**\n * @module ol/render/canvas\n */\nimport BaseObject from '../Object.js';\nimport {fontWeights, getFontParameters} from '../css.js';\nimport {createCanvasContext2D} from '../dom.js';\nimport {WORKER_OFFSCREEN_CANVAS} from '../has.js';\nimport {clear} from '../obj.js';\n\n/**\n * @typedef {'Circle' | 'Image' | 'LineString' | 'Polygon' | 'Text' | 'Default'} BuilderType\n */\n\n/**\n * @typedef {Object} FillState\n * @property {import(\"../colorlike.js\").ColorLike} fillStyle FillStyle.\n */\n\n/**\n * @typedef Label\n * @property {number} width Width.\n * @property {number} height Height.\n * @property {Array<string|number>} contextInstructions ContextInstructions.\n */\n\n/**\n * @typedef {Object} FillStrokeState\n * @property {import(\"../colorlike.js\").ColorLike} [currentFillStyle] Current FillStyle.\n * @property {import(\"../colorlike.js\").ColorLike} [currentStrokeStyle] Current StrokeStyle.\n * @property {CanvasLineCap} [currentLineCap] Current LineCap.\n * @property {Array<number>} currentLineDash Current LineDash.\n * @property {number} [currentLineDashOffset] Current LineDashOffset.\n * @property {CanvasLineJoin} [currentLineJoin] Current LineJoin.\n * @property {number} [currentLineWidth] Current LineWidth.\n * @property {number} [currentMiterLimit] Current MiterLimit.\n * @property {number} [currentStrokeOffset] Current StrokeOffset.\n * @property {number} [lastStroke] Last stroke.\n * @property {import(\"../colorlike.js\").ColorLike} [fillStyle] FillStyle.\n * @property {import(\"../colorlike.js\").ColorLike} [strokeStyle] StrokeStyle.\n * @property {CanvasLineCap} [lineCap] LineCap.\n * @property {Array<number>} lineDash LineDash.\n * @property {number} [lineDashOffset] LineDashOffset.\n * @property {CanvasLineJoin} [lineJoin] LineJoin.\n * @property {number} [lineWidth] LineWidth.\n * @property {number} [miterLimit] MiterLimit.\n * @property {number} [strokeOffset] StrokeOffset.\n * @property {number} [fillPatternScale] Fill pattern scale.\n */\n\n/**\n * @typedef {Object} StrokeState\n * @property {CanvasLineCap} lineCap LineCap.\n * @property {Array<number>} lineDash LineDash.\n * @property {number} lineDashOffset LineDashOffset.\n * @property {CanvasLineJoin} lineJoin LineJoin.\n * @property {number} lineWidth LineWidth.\n * @property {number} miterLimit MiterLimit.\n * @property {number} [strokeOffset] StrokeOffset.\n * @property {import(\"../colorlike.js\").ColorLike} strokeStyle StrokeStyle.\n */\n\n/**\n * @typedef {Object} TextState\n * @property {string} font Font.\n * @property {CanvasTextAlign} [textAlign] TextAlign.\n * @property {number} [repeat] Repeat.\n * @property {import(\"../style/Text.js\").TextJustify} [justify] Justify.\n * @property {CanvasTextBaseline} textBaseline TextBaseline.\n * @property {import(\"../style/Text.js\").TextPlacement} [placement] Placement.\n * @property {number} [maxAngle] MaxAngle.\n * @property {boolean} [overflow] Overflow.\n * @property {import(\"../style/Fill.js\").default} [backgroundFill] BackgroundFill.\n * @property {import(\"../style/Stroke.js\").default} [backgroundStroke] BackgroundStroke.\n * @property {import(\"../size.js\").Size} [scale] Scale.\n * @property {Array<number>} [padding] Padding.\n */\n\n/**\n * @typedef {Object} SerializableInstructions\n * @property {Array<*>} instructions The rendering instructions.\n * @property {Array<*>} hitDetectionInstructions The rendering hit detection instructions.\n * @property {Array<number>} coordinates The array of all coordinates.\n * @property {!Object<string, TextState>} [textStates] The text states (decluttering).\n * @property {!Object<string, FillState>} [fillStates] The fill states (decluttering).\n * @property {!Object<string, StrokeState>} [strokeStates] The stroke states (decluttering).\n */\n\n/**\n * @typedef {Object<number, import(\"./canvas/Executor.js\").ReplayImageOrLabelArgs>} DeclutterImageWithText\n */\n\n/**\n * @const\n * @type {string}\n */\nexport const defaultFont = '10px sans-serif';\n\n/**\n * @const\n * @type {string}\n */\nexport const defaultFillStyle = '#000';\n\n/**\n * @const\n * @type {CanvasLineCap}\n */\nexport const defaultLineCap = 'round';\n\n/**\n * @const\n * @type {Array<number>}\n */\nexport const defaultLineDash = [];\n\n/**\n * @const\n * @type {number}\n */\nexport const defaultLineDashOffset = 0;\n\n/**\n * @const\n * @type {CanvasLineJoin}\n */\nexport const defaultLineJoin = 'round';\n\n/**\n * @const\n * @type {number}\n */\nexport const defaultMiterLimit = 10;\n\n/**\n * @const\n * @type {number}\n */\nexport const defaultStrokeOffset = 0;\n\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport const defaultStrokeStyle = '#000';\n\n/**\n * @const\n * @type {CanvasTextAlign}\n */\nexport const defaultTextAlign = 'center';\n\n/**\n * @const\n * @type {CanvasTextBaseline}\n */\nexport const defaultTextBaseline = 'middle';\n\n/**\n * @const\n * @type {Array<number>}\n */\nexport const defaultPadding = [0, 0, 0, 0];\n\n/**\n * @const\n * @type {number}\n */\nexport const defaultLineWidth = 1;\n\n/**\n * @type {BaseObject}\n */\nexport const checkedFonts = new BaseObject();\n\n/**\n * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}\n */\nlet measureContext = null;\n\n/**\n * @type {string}\n */\nlet measureFont;\n\n/**\n * @type {!Object<string, number>}\n */\nexport const textHeights = {};\n\nconst genericFontFamilies = new Set([\n  'serif',\n  'sans-serif',\n  'monospace',\n  'cursive',\n  'fantasy',\n  'system-ui',\n  'ui-serif',\n  'ui-sans-serif',\n  'ui-monospace',\n  'ui-rounded',\n  'emoji',\n  'math',\n  'fangsong',\n]);\n\n/**\n * @param {string} style Css font-style\n * @param {string} weight Css font-weight\n * @param {string} family Css font-family\n * @return {string} Font key.\n */\nfunction getFontKey(style, weight, family) {\n  return `${style} ${weight} 16px \"${family}\"`;\n}\n\n/**\n * Clears the label cache when a font becomes available.\n * @param {string} fontSpec CSS font spec.\n */\nexport const registerFont = (function () {\n  const retries = 100;\n  let timeout, fontFaceSet;\n\n  /**\n   * @param {string} fontSpec Css font spec\n   * @return {Promise<boolean>} Font with style and weight is available\n   */\n  async function isAvailable(fontSpec) {\n    await fontFaceSet.ready;\n    const fontFaces = await fontFaceSet.load(fontSpec);\n    if (fontFaces.length === 0) {\n      return false;\n    }\n    const font = getFontParameters(fontSpec);\n    const checkFamily = font.families[0].toLowerCase();\n    const checkWeight = font.weight;\n    return fontFaces.some(\n      /**\n       * @param {import('../css.js').FontParameters} f Font.\n       * @return {boolean} Font matches.\n       */\n      (f) => {\n        const family = f.family.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n        const weight = fontWeights[f.weight] || f.weight;\n        return (\n          family === checkFamily &&\n          f.style === font.style &&\n          weight == checkWeight\n        );\n      },\n    );\n  }\n\n  async function check() {\n    await fontFaceSet.ready;\n    let done = true;\n    const checkedFontsProperties = checkedFonts.getProperties();\n    const fonts = Object.keys(checkedFontsProperties).filter(\n      (key) => checkedFontsProperties[key] < retries,\n    );\n    for (let i = fonts.length - 1; i >= 0; --i) {\n      const font = fonts[i];\n      let currentRetries = checkedFontsProperties[font];\n      if (currentRetries < retries) {\n        if (await isAvailable(font)) {\n          clear(textHeights);\n          checkedFonts.set(font, retries);\n        } else {\n          currentRetries += 10;\n          checkedFonts.set(font, currentRetries, true);\n          if (currentRetries < retries) {\n            done = false;\n          }\n        }\n      }\n    }\n    timeout = undefined;\n    if (!done) {\n      timeout = setTimeout(check, 100);\n    }\n  }\n\n  return async function (fontSpec) {\n    if (!fontFaceSet) {\n      fontFaceSet = WORKER_OFFSCREEN_CANVAS ? self.fonts : document.fonts;\n    }\n    const font = getFontParameters(fontSpec);\n    if (!font) {\n      return;\n    }\n    const families = font.families;\n    let needCheck = false;\n    for (const family of families) {\n      if (genericFontFamilies.has(family)) {\n        continue;\n      }\n      const key = getFontKey(font.style, font.weight, family);\n      if (checkedFonts.get(key) !== undefined) {\n        continue;\n      }\n      checkedFonts.set(key, 0, true);\n      needCheck = true;\n    }\n    if (needCheck) {\n      clearTimeout(timeout);\n      timeout = setTimeout(check, 100);\n    }\n  };\n})();\n\n/**\n * @param {string} font Font to use for measuring.\n * @return {import(\"../size.js\").Size} Measurement.\n */\nexport const measureTextHeight = (function () {\n  /**\n   * @type {HTMLDivElement}\n   */\n  let measureElement;\n  return function (fontSpec) {\n    let height = textHeights[fontSpec];\n    if (height == undefined) {\n      if (WORKER_OFFSCREEN_CANVAS) {\n        const font = getFontParameters(fontSpec);\n        const metrics = measureText(fontSpec, 'Žg');\n        const lineHeight = isNaN(Number(font.lineHeight))\n          ? 1.2\n          : Number(font.lineHeight);\n        height =\n          lineHeight *\n          (metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n      } else {\n        if (!measureElement) {\n          measureElement = document.createElement('div');\n          measureElement.innerHTML = 'M';\n          measureElement.style.minHeight = '0';\n          measureElement.style.maxHeight = 'none';\n          measureElement.style.height = 'auto';\n          measureElement.style.padding = '0';\n          measureElement.style.border = 'none';\n          measureElement.style.position = 'absolute';\n          measureElement.style.display = 'block';\n          measureElement.style.left = '-99999px';\n        }\n        measureElement.style.font = fontSpec;\n        document.body.appendChild(measureElement);\n        height = measureElement.offsetHeight;\n        document.body.removeChild(measureElement);\n      }\n      textHeights[fontSpec] = height;\n    }\n    return height;\n  };\n})();\n\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {TextMetrics} Text metrics.\n */\nfunction measureText(font, text) {\n  if (!measureContext) {\n    measureContext = createCanvasContext2D(1, 1);\n  }\n  if (font != measureFont) {\n    measureContext.font = font;\n    measureFont = measureContext.font;\n  }\n  return measureContext.measureText(text);\n}\n\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {number} Width.\n */\nexport function measureTextWidth(font, text) {\n  return measureText(font, text).width;\n}\n\n/**\n * Measure text width using a cache.\n * @param {string} font The font.\n * @param {string} text The text to measure.\n * @param {Object<string, number>} cache A lookup of cached widths by text.\n * @return {number} The text width.\n */\nexport function measureAndCacheTextWidth(font, text, cache) {\n  if (text in cache) {\n    return cache[text];\n  }\n  const width = text\n    .split('\\n')\n    .reduce((prev, curr) => Math.max(prev, measureTextWidth(font, curr)), 0);\n  cache[text] = width;\n  return width;\n}\n\n/**\n * @param {TextState} baseStyle Base style.\n * @param {Array<string>} chunks Text chunks to measure.\n * @return {{width: number, height: number, widths: Array<number>, heights: Array<number>, lineWidths: Array<number>}}} Text metrics.\n */\nexport function getTextDimensions(baseStyle, chunks) {\n  const widths = [];\n  const heights = [];\n  const lineWidths = [];\n  let width = 0;\n  let lineWidth = 0;\n  let height = 0;\n  let lineHeight = 0;\n  for (let i = 0, ii = chunks.length; i <= ii; i += 2) {\n    const text = chunks[i];\n    if (text === '\\n' || i === ii) {\n      width = Math.max(width, lineWidth);\n      lineWidths.push(lineWidth);\n      lineWidth = 0;\n      height += lineHeight;\n      lineHeight = 0;\n      continue;\n    }\n    const font = chunks[i + 1] || baseStyle.font;\n    const currentWidth = measureTextWidth(font, text);\n    widths.push(currentWidth);\n    lineWidth += currentWidth;\n    const currentHeight = measureTextHeight(font);\n    heights.push(currentHeight);\n    lineHeight = Math.max(lineHeight, currentHeight);\n  }\n  return {width, height, widths, heights, lineWidths};\n}\n\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} rotation Rotation.\n * @param {number} offsetX X offset.\n * @param {number} offsetY Y offset.\n */\nexport function rotateAtOffset(context, rotation, offsetX, offsetY) {\n  if (rotation !== 0) {\n    context.translate(offsetX, offsetY);\n    context.rotate(rotation);\n    context.translate(-offsetX, -offsetY);\n  }\n}\n\n/**\n * @param {CanvasRenderingContext2D|import(\"../render/canvas/ZIndexContext.js\").ZIndexContextProxy} context Context.\n * @param {import(\"../transform.js\").Transform|null} transform Transform.\n * @param {number} opacity Opacity.\n * @param {Label|HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} labelOrImage Label.\n * @param {number} originX Origin X.\n * @param {number} originY Origin Y.\n * @param {number} w Width.\n * @param {number} h Height.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../size.js\").Size} scale Scale.\n */\nexport function drawImageOrLabel(\n  context,\n  transform,\n  opacity,\n  labelOrImage,\n  originX,\n  originY,\n  w,\n  h,\n  x,\n  y,\n  scale,\n) {\n  context.save();\n\n  if (opacity !== 1) {\n    if (context.globalAlpha === undefined) {\n      context.globalAlpha = (context) => (context.globalAlpha *= opacity);\n    } else {\n      context.globalAlpha *= opacity;\n    }\n  }\n  if (transform) {\n    context.transform.apply(context, transform);\n  }\n\n  if (/** @type {*} */ (labelOrImage).contextInstructions) {\n    // label\n    context.translate(x, y);\n    context.scale(scale[0], scale[1]);\n    executeLabelInstructions(/** @type {Label} */ (labelOrImage), context);\n  } else if (scale[0] < 0 || scale[1] < 0) {\n    // flipped image\n    context.translate(x, y);\n    context.scale(scale[0], scale[1]);\n    context.drawImage(\n      /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (\n        labelOrImage\n      ),\n      originX,\n      originY,\n      w,\n      h,\n      0,\n      0,\n      w,\n      h,\n    );\n  } else {\n    // if image not flipped translate and scale can be avoided\n    context.drawImage(\n      /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (\n        labelOrImage\n      ),\n      originX,\n      originY,\n      w,\n      h,\n      x,\n      y,\n      w * scale[0],\n      h * scale[1],\n    );\n  }\n\n  context.restore();\n}\n\n/**\n * @param {Label} label Label.\n * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n */\nfunction executeLabelInstructions(label, context) {\n  const contextInstructions = label.contextInstructions;\n  for (let i = 0, ii = contextInstructions.length; i < ii; i += 2) {\n    if (Array.isArray(contextInstructions[i + 1])) {\n      context[contextInstructions[i]].apply(\n        context,\n        contextInstructions[i + 1],\n      );\n    } else {\n      context[contextInstructions[i]] = contextInstructions[i + 1];\n    }\n  }\n}\n","/**\n * @module ol/render/canvas/Instruction\n */\n\n/**\n * @enum {number}\n */\nconst Instruction = {\n  BEGIN_GEOMETRY: 0,\n  BEGIN_PATH: 1,\n  CIRCLE: 2,\n  CLOSE_PATH: 3,\n  CUSTOM: 4,\n  DRAW_CHARS: 5,\n  DRAW_IMAGE: 6,\n  END_GEOMETRY: 7,\n  FILL: 8,\n  MOVE_TO_LINE_TO: 9,\n  SET_FILL_STYLE: 10,\n  SET_STROKE_STYLE: 11,\n  STROKE: 12,\n};\n\n/**\n * @type {Array<Instruction>}\n */\nexport const fillInstruction = [Instruction.FILL];\n\n/**\n * @type {Array<Instruction>}\n */\nexport const strokeInstruction = [Instruction.STROKE];\n\n/**\n * @type {Array<Instruction>}\n */\nexport const beginPathInstruction = [Instruction.BEGIN_PATH];\n\n/**\n * @type {Array<Instruction>}\n */\nexport const closePathInstruction = [Instruction.CLOSE_PATH];\n\nexport default Instruction;\n","/**\n * @module ol/render/canvas/Builder\n */\nimport {equals, reverseSubArray} from '../../array.js';\nimport {asColorLike} from '../../colorlike.js';\nimport Relationship from '../../extent/Relationship.js';\nimport {\n  buffer,\n  clone,\n  containsCoordinate,\n  coordinateRelationship,\n} from '../../extent.js';\nimport {\n  inflateCoordinates,\n  inflateCoordinatesArray,\n  inflateMultiCoordinatesArray,\n} from '../../geom/flat/inflate.js';\nimport VectorContext from '../VectorContext.js';\nimport {\n  defaultFillStyle,\n  defaultLineCap,\n  defaultLineDash,\n  defaultLineDashOffset,\n  defaultLineJoin,\n  defaultLineWidth,\n  defaultMiterLimit,\n  defaultStrokeOffset,\n  defaultStrokeStyle,\n} from '../canvas.js';\nimport CanvasInstruction from './Instruction.js';\n\nclass CanvasBuilder extends VectorContext {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    super();\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.tolerance = tolerance;\n\n    /**\n     * @protected\n     * @const\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.maxExtent = maxExtent;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.pixelRatio = pixelRatio;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.maxLineWidth = 0;\n\n    /**\n     * @protected\n     * @const\n     * @type {number}\n     */\n    this.resolution = resolution;\n\n    /**\n     * @private\n     * @type {Array<*>}\n     */\n    this.beginGeometryInstruction1_ = null;\n\n    /**\n     * @private\n     * @type {Array<*>}\n     */\n    this.beginGeometryInstruction2_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.bufferedMaxExtent_ = null;\n\n    /**\n     * @protected\n     * @type {Array<*>}\n     */\n    this.instructions = [];\n\n    /**\n     * @protected\n     * @type {Array<number>}\n     */\n    this.coordinates = [];\n\n    /**\n     * @private\n     * @type {import(\"../../coordinate.js\").Coordinate}\n     */\n    this.tmpCoordinate_ = [];\n\n    /**\n     * @protected\n     * @type {Array<*>}\n     */\n    this.hitDetectionInstructions = [];\n\n    /**\n     * @protected\n     * @type {import(\"../canvas.js\").FillStrokeState}\n     */\n    this.state = /** @type {import(\"../canvas.js\").FillStrokeState} */ ({});\n  }\n\n  /**\n   * @protected\n   * @param {Array<number>} dashArray Dash array.\n   * @return {Array<number>} Dash array with pixel ratio applied\n   */\n  applyPixelRatio(dashArray) {\n    const pixelRatio = this.pixelRatio;\n    return pixelRatio == 1\n      ? dashArray\n      : dashArray.map(function (dash) {\n          return dash * pixelRatio;\n        });\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} stride Stride.\n   * @protected\n   * @return {number} My end\n   */\n  appendFlatPointCoordinates(flatCoordinates, stride) {\n    const extent = this.getBufferedMaxExtent();\n    const tmpCoord = this.tmpCoordinate_;\n    const coordinates = this.coordinates;\n    let myEnd = coordinates.length;\n    for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n      tmpCoord[0] = flatCoordinates[i];\n      tmpCoord[1] = flatCoordinates[i + 1];\n      if (containsCoordinate(extent, tmpCoord)) {\n        coordinates[myEnd++] = tmpCoord[0];\n        coordinates[myEnd++] = tmpCoord[1];\n      }\n    }\n    return myEnd;\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {number} end End.\n   * @param {number} stride Stride.\n   * @param {boolean} closed Last input coordinate equals first.\n   * @param {boolean} skipFirst Skip first coordinate.\n   * @protected\n   * @return {number} My end.\n   */\n  appendFlatLineCoordinates(\n    flatCoordinates,\n    offset,\n    end,\n    stride,\n    closed,\n    skipFirst,\n  ) {\n    const coordinates = this.coordinates;\n    let myEnd = coordinates.length;\n    const extent = this.getBufferedMaxExtent();\n    if (skipFirst) {\n      offset += stride;\n    }\n    let lastXCoord = flatCoordinates[offset];\n    let lastYCoord = flatCoordinates[offset + 1];\n    const nextCoord = this.tmpCoordinate_;\n    let skipped = true;\n\n    let i, lastRel, nextRel;\n    for (i = offset + stride; i < end; i += stride) {\n      nextCoord[0] = flatCoordinates[i];\n      nextCoord[1] = flatCoordinates[i + 1];\n      nextRel = coordinateRelationship(extent, nextCoord);\n      if (nextRel !== lastRel) {\n        if (skipped) {\n          coordinates[myEnd++] = lastXCoord;\n          coordinates[myEnd++] = lastYCoord;\n          skipped = false;\n        }\n        coordinates[myEnd++] = nextCoord[0];\n        coordinates[myEnd++] = nextCoord[1];\n      } else if (nextRel === Relationship.INTERSECTING) {\n        coordinates[myEnd++] = nextCoord[0];\n        coordinates[myEnd++] = nextCoord[1];\n        skipped = false;\n      } else {\n        skipped = true;\n      }\n      lastXCoord = nextCoord[0];\n      lastYCoord = nextCoord[1];\n      lastRel = nextRel;\n    }\n\n    // Last coordinate equals first or only one point to append:\n    if ((closed && skipped) || i === offset + stride) {\n      coordinates[myEnd++] = lastXCoord;\n      coordinates[myEnd++] = lastYCoord;\n    }\n    return myEnd;\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {Array<number>} ends Ends.\n   * @param {number} stride Stride.\n   * @param {Array<number>} builderEnds Builder ends.\n   * @return {number} Offset.\n   */\n  drawCustomCoordinates_(flatCoordinates, offset, ends, stride, builderEnds) {\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      const end = ends[i];\n      const builderEnd = this.appendFlatLineCoordinates(\n        flatCoordinates,\n        offset,\n        end,\n        stride,\n        false,\n        false,\n      );\n      builderEnds.push(builderEnd);\n      offset = end;\n    }\n    return offset;\n  }\n\n  /**\n   * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {Function} renderer Renderer.\n   * @param {Function} hitDetectionRenderer Renderer.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawCustom(geometry, feature, renderer, hitDetectionRenderer, index) {\n    this.beginGeometry(geometry, feature, index);\n\n    const type = geometry.getType();\n    const stride = geometry.getStride();\n    const builderBegin = this.coordinates.length;\n\n    let flatCoordinates, builderEnd, builderEnds, builderEndss;\n    let offset;\n\n    switch (type) {\n      case 'MultiPolygon':\n        flatCoordinates =\n          /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n            geometry\n          ).getOrientedFlatCoordinates();\n        builderEndss = [];\n        const endss =\n          /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n            geometry\n          ).getEndss();\n        offset = 0;\n        for (let i = 0, ii = endss.length; i < ii; ++i) {\n          const myEnds = [];\n          offset = this.drawCustomCoordinates_(\n            flatCoordinates,\n            offset,\n            endss[i],\n            stride,\n            myEnds,\n          );\n          builderEndss.push(myEnds);\n        }\n        this.instructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEndss,\n          geometry,\n          renderer,\n          inflateMultiCoordinatesArray,\n          index,\n        ]);\n        this.hitDetectionInstructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEndss,\n          geometry,\n          hitDetectionRenderer || renderer,\n          inflateMultiCoordinatesArray,\n          index,\n        ]);\n        break;\n      case 'Polygon':\n      case 'MultiLineString':\n        builderEnds = [];\n        flatCoordinates =\n          type == 'Polygon'\n            ? /** @type {import(\"../../geom/Polygon.js\").default} */ (\n                geometry\n              ).getOrientedFlatCoordinates()\n            : geometry.getFlatCoordinates();\n        offset = this.drawCustomCoordinates_(\n          flatCoordinates,\n          0,\n          /** @type {import(\"../../geom/Polygon.js\").default|import(\"../../geom/MultiLineString.js\").default} */ (\n            geometry\n          ).getEnds(),\n          stride,\n          builderEnds,\n        );\n        this.instructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnds,\n          geometry,\n          renderer,\n          inflateCoordinatesArray,\n          index,\n        ]);\n        this.hitDetectionInstructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnds,\n          geometry,\n          hitDetectionRenderer || renderer,\n          inflateCoordinatesArray,\n          index,\n        ]);\n        break;\n      case 'LineString':\n      case 'Circle':\n        flatCoordinates = geometry.getFlatCoordinates();\n        builderEnd = this.appendFlatLineCoordinates(\n          flatCoordinates,\n          0,\n          flatCoordinates.length,\n          stride,\n          false,\n          false,\n        );\n        this.instructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnd,\n          geometry,\n          renderer,\n          inflateCoordinates,\n          index,\n        ]);\n        this.hitDetectionInstructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnd,\n          geometry,\n          hitDetectionRenderer || renderer,\n          inflateCoordinates,\n          index,\n        ]);\n        break;\n      case 'MultiPoint':\n        flatCoordinates = geometry.getFlatCoordinates();\n        builderEnd = this.appendFlatPointCoordinates(flatCoordinates, stride);\n\n        if (builderEnd > builderBegin) {\n          this.instructions.push([\n            CanvasInstruction.CUSTOM,\n            builderBegin,\n            builderEnd,\n            geometry,\n            renderer,\n            inflateCoordinates,\n            index,\n          ]);\n          this.hitDetectionInstructions.push([\n            CanvasInstruction.CUSTOM,\n            builderBegin,\n            builderEnd,\n            geometry,\n            hitDetectionRenderer || renderer,\n            inflateCoordinates,\n            index,\n          ]);\n        }\n        break;\n      case 'Point':\n        flatCoordinates = geometry.getFlatCoordinates();\n        this.coordinates.push(flatCoordinates[0], flatCoordinates[1]);\n        builderEnd = this.coordinates.length;\n\n        this.instructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnd,\n          geometry,\n          renderer,\n          undefined,\n          index,\n        ]);\n        this.hitDetectionInstructions.push([\n          CanvasInstruction.CUSTOM,\n          builderBegin,\n          builderEnd,\n          geometry,\n          hitDetectionRenderer || renderer,\n          undefined,\n          index,\n        ]);\n        break;\n      default:\n    }\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @protected\n   * @param {import(\"../../geom/Geometry\").default|import(\"../Feature.js\").default} geometry The geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} index Render order index\n   */\n  beginGeometry(geometry, feature, index) {\n    this.beginGeometryInstruction1_ = [\n      CanvasInstruction.BEGIN_GEOMETRY,\n      feature,\n      0,\n      geometry,\n      index,\n    ];\n    this.instructions.push(this.beginGeometryInstruction1_);\n    this.beginGeometryInstruction2_ = [\n      CanvasInstruction.BEGIN_GEOMETRY,\n      feature,\n      0,\n      geometry,\n      index,\n    ];\n    this.hitDetectionInstructions.push(this.beginGeometryInstruction2_);\n  }\n\n  /**\n   * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n   */\n  finish() {\n    return {\n      instructions: this.instructions,\n      hitDetectionInstructions: this.hitDetectionInstructions,\n      coordinates: this.coordinates,\n    };\n  }\n\n  /**\n   * Reverse the hit detection instructions.\n   */\n  reverseHitDetectionInstructions() {\n    const hitDetectionInstructions = this.hitDetectionInstructions;\n    // step 1 - reverse array\n    hitDetectionInstructions.reverse();\n    // step 2 - reverse instructions within geometry blocks\n    let i;\n    const n = hitDetectionInstructions.length;\n    let instruction;\n    let type;\n    let begin = -1;\n    for (i = 0; i < n; ++i) {\n      instruction = hitDetectionInstructions[i];\n      type = /** @type {import(\"./Instruction.js\").default} */ (instruction[0]);\n      if (type == CanvasInstruction.END_GEOMETRY) {\n        begin = i;\n      } else if (type == CanvasInstruction.BEGIN_GEOMETRY) {\n        instruction[2] = i;\n        reverseSubArray(this.hitDetectionInstructions, begin, i);\n        begin = -1;\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../../style/Fill.js\").default} fillStyle Fill style.\n   * @param {import('../canvas.js').FillStrokeState} [state] State.\n   * @return {import('../canvas.js').FillStrokeState} State.\n   */\n  fillStyleToState(\n    fillStyle,\n    state = /** @type {import('../canvas.js').FillStrokeState} */ ({}),\n  ) {\n    if (fillStyle) {\n      const fillStyleColor = fillStyle.getColor();\n      state.fillPatternScale =\n        fillStyleColor &&\n        typeof fillStyleColor === 'object' &&\n        'src' in fillStyleColor\n          ? this.pixelRatio\n          : 1;\n      state.fillStyle = asColorLike(\n        fillStyleColor ? fillStyleColor : defaultFillStyle,\n      );\n    } else {\n      state.fillStyle = undefined;\n    }\n    return state;\n  }\n\n  /**\n   * @param {import(\"../../style/Stroke.js\").default} strokeStyle Stroke style.\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @return {import(\"../canvas.js\").FillStrokeState} State.\n   */\n  strokeStyleToState(\n    strokeStyle,\n    state = /** @type {import('../canvas.js').FillStrokeState} */ ({}),\n  ) {\n    if (strokeStyle) {\n      const strokeStyleColor = strokeStyle.getColor();\n      state.strokeStyle = asColorLike(\n        strokeStyleColor ? strokeStyleColor : defaultStrokeStyle,\n      );\n      const strokeStyleLineCap = strokeStyle.getLineCap();\n      state.lineCap =\n        strokeStyleLineCap !== undefined ? strokeStyleLineCap : defaultLineCap;\n      const strokeStyleLineDash = strokeStyle.getLineDash();\n      state.lineDash = strokeStyleLineDash\n        ? strokeStyleLineDash.slice()\n        : defaultLineDash;\n      const strokeStyleLineDashOffset = strokeStyle.getLineDashOffset();\n      state.lineDashOffset = strokeStyleLineDashOffset\n        ? strokeStyleLineDashOffset\n        : defaultLineDashOffset;\n      const strokeStyleLineJoin = strokeStyle.getLineJoin();\n      state.lineJoin =\n        strokeStyleLineJoin !== undefined\n          ? strokeStyleLineJoin\n          : defaultLineJoin;\n      const strokeStyleWidth = strokeStyle.getWidth();\n      state.lineWidth =\n        strokeStyleWidth !== undefined ? strokeStyleWidth : defaultLineWidth;\n      const strokeStyleMiterLimit = strokeStyle.getMiterLimit();\n      state.miterLimit =\n        strokeStyleMiterLimit !== undefined\n          ? strokeStyleMiterLimit\n          : defaultMiterLimit;\n      const strokeStyleOffset = strokeStyle.getOffset();\n      state.strokeOffset = strokeStyleOffset ?? defaultStrokeOffset;\n\n      if (state.lineWidth > this.maxLineWidth) {\n        this.maxLineWidth = state.lineWidth;\n        // invalidate the buffered max extent cache\n        this.bufferedMaxExtent_ = null;\n      }\n    } else {\n      state.strokeStyle = undefined;\n      state.lineCap = undefined;\n      state.lineDash = null;\n      state.lineDashOffset = undefined;\n      state.lineJoin = undefined;\n      state.lineWidth = undefined;\n      state.miterLimit = undefined;\n      state.strokeOffset = undefined;\n    }\n    return state;\n  }\n\n  /**\n   * @param {import(\"../../style/Fill.js\").default} fillStyle Fill style.\n   * @param {import(\"../../style/Stroke.js\").default} strokeStyle Stroke style.\n   * @override\n   */\n  setFillStrokeStyle(fillStyle, strokeStyle) {\n    const state = this.state;\n    this.fillStyleToState(fillStyle, state);\n    this.strokeStyleToState(strokeStyle, state);\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @return {Array<*>} Fill instruction.\n   */\n  createFill(state) {\n    const fillStyle = state.fillStyle;\n    /** @type {Array<*>} */\n    const fillInstruction = [CanvasInstruction.SET_FILL_STYLE, fillStyle];\n    if (typeof fillStyle !== 'string') {\n      // Fill is a pattern or gradient - align and scale it!\n      fillInstruction.push(state.fillPatternScale);\n    }\n    return fillInstruction;\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   */\n  applyStroke(state) {\n    this.instructions.push(this.createStroke(state));\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @return {Array<*>} Stroke instruction.\n   */\n  createStroke(state) {\n    return [\n      CanvasInstruction.SET_STROKE_STYLE,\n      state.strokeStyle,\n      state.lineWidth * this.pixelRatio,\n      state.lineCap,\n      state.lineJoin,\n      state.miterLimit,\n      state.lineDash ? this.applyPixelRatio(state.lineDash) : null,\n      state.lineDashOffset * this.pixelRatio,\n    ];\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @param {function(this:CanvasBuilder, import(\"../canvas.js\").FillStrokeState):Array<*>} createFill Create fill.\n   */\n  updateFillStyle(state, createFill) {\n    const fillStyle = state.fillStyle;\n    if (typeof fillStyle !== 'string' || state.currentFillStyle != fillStyle) {\n      this.instructions.push(createFill.call(this, state));\n      state.currentFillStyle = fillStyle;\n    }\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @param {function(this:CanvasBuilder, import(\"../canvas.js\").FillStrokeState): void} applyStroke Apply stroke.\n   */\n  updateStrokeStyle(state, applyStroke) {\n    const strokeStyle = state.strokeStyle;\n    const lineCap = state.lineCap;\n    const lineDash = state.lineDash;\n    const lineDashOffset = state.lineDashOffset;\n    const lineJoin = state.lineJoin;\n    const lineWidth = state.lineWidth;\n    const miterLimit = state.miterLimit;\n    const strokeOffset = state.strokeOffset;\n    if (\n      state.currentStrokeStyle != strokeStyle ||\n      state.currentLineCap != lineCap ||\n      (lineDash != state.currentLineDash &&\n        !equals(state.currentLineDash, lineDash)) ||\n      state.currentLineDashOffset != lineDashOffset ||\n      state.currentLineJoin != lineJoin ||\n      state.currentLineWidth != lineWidth ||\n      state.currentMiterLimit != miterLimit ||\n      state.currentStrokeOffset != strokeOffset\n    ) {\n      applyStroke.call(this, state);\n      state.currentStrokeStyle = strokeStyle;\n      state.currentLineCap = lineCap;\n      state.currentLineDash = lineDash;\n      state.currentLineDashOffset = lineDashOffset;\n      state.currentLineJoin = lineJoin;\n      state.currentLineWidth = lineWidth;\n      state.currentMiterLimit = miterLimit;\n      state.currentStrokeOffset = strokeOffset;\n    }\n  }\n\n  /**\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   */\n  endGeometry(feature) {\n    this.beginGeometryInstruction1_[2] = this.instructions.length;\n    this.beginGeometryInstruction1_ = null;\n    this.beginGeometryInstruction2_[2] = this.hitDetectionInstructions.length;\n    this.beginGeometryInstruction2_ = null;\n    const endGeometryInstruction = [CanvasInstruction.END_GEOMETRY, feature];\n    this.instructions.push(endGeometryInstruction);\n    this.hitDetectionInstructions.push(endGeometryInstruction);\n  }\n\n  /**\n   * Get the buffered rendering extent.  Rendering will be clipped to the extent\n   * provided to the constructor.  To account for symbolizers that may intersect\n   * this extent, we calculate a buffered extent (e.g. based on stroke width).\n   * @return {import(\"../../extent.js\").Extent} The buffered rendering extent.\n   * @protected\n   */\n  getBufferedMaxExtent() {\n    if (!this.bufferedMaxExtent_) {\n      this.bufferedMaxExtent_ = clone(this.maxExtent);\n      if (this.maxLineWidth > 0) {\n        const width = (this.resolution * (this.maxLineWidth + 1)) / 2;\n        buffer(this.bufferedMaxExtent_, width, this.bufferedMaxExtent_);\n      }\n    }\n    return this.bufferedMaxExtent_;\n  }\n}\n\nexport default CanvasBuilder;\n","/**\n * @module ol/render/canvas/ImageBuilder\n */\nimport {containsCoordinate} from '../../extent.js';\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction from './Instruction.js';\n\nclass CanvasImageBuilder extends CanvasBuilder {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    super(tolerance, maxExtent, resolution, pixelRatio);\n\n    /**\n     * @private\n     * @type {import('../../DataTile.js').ImageLike}\n     */\n    this.hitDetectionImage_ = null;\n\n    /**\n     * @private\n     * @type {import('../../DataTile.js').ImageLike}\n     */\n    this.image_ = null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.imagePixelRatio_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.anchorX_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.anchorY_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.height_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.opacity_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.originX_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.originY_ = undefined;\n\n    /**\n     * @private\n     * @type {boolean|undefined}\n     */\n    this.rotateWithView_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.rotation_ = undefined;\n\n    /**\n     * @private\n     * @type {import(\"../../size.js\").Size|undefined}\n     */\n    this.scale_ = undefined;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.width_ = undefined;\n\n    /**\n     * @private\n     * @type {import('../../style/Style.js').DeclutterMode}\n     */\n    this.declutterMode_ = undefined;\n\n    /**\n     * Data shared with a text builder for combined decluttering.\n     * @private\n     * @type {import(\"../canvas.js\").DeclutterImageWithText}\n     */\n    this.declutterImageWithText_ = undefined;\n  }\n\n  /**\n   * @param {import(\"../../geom/Point.js\").default|import(\"../Feature.js\").default} pointGeometry Point geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawPoint(pointGeometry, feature, index) {\n    if (\n      !this.image_ ||\n      (this.maxExtent &&\n        !containsCoordinate(this.maxExtent, pointGeometry.getFlatCoordinates()))\n    ) {\n      return;\n    }\n    this.beginGeometry(pointGeometry, feature, index);\n    const flatCoordinates = pointGeometry.getFlatCoordinates();\n    const stride = pointGeometry.getStride();\n    const myBegin = this.coordinates.length;\n    const myEnd = this.appendFlatPointCoordinates(flatCoordinates, stride);\n    this.instructions.push([\n      CanvasInstruction.DRAW_IMAGE,\n      myBegin,\n      myEnd,\n      this.image_,\n      // Remaining arguments to DRAW_IMAGE are in alphabetical order\n      this.anchorX_ * this.imagePixelRatio_,\n      this.anchorY_ * this.imagePixelRatio_,\n      Math.ceil(this.height_ * this.imagePixelRatio_),\n      this.opacity_,\n      this.originX_ * this.imagePixelRatio_,\n      this.originY_ * this.imagePixelRatio_,\n      this.rotateWithView_,\n      this.rotation_,\n      [\n        (this.scale_[0] * this.pixelRatio) / this.imagePixelRatio_,\n        (this.scale_[1] * this.pixelRatio) / this.imagePixelRatio_,\n      ],\n      Math.ceil(this.width_ * this.imagePixelRatio_),\n      this.declutterMode_,\n      this.declutterImageWithText_,\n    ]);\n    this.hitDetectionInstructions.push([\n      CanvasInstruction.DRAW_IMAGE,\n      myBegin,\n      myEnd,\n      this.hitDetectionImage_,\n      // Remaining arguments to DRAW_IMAGE are in alphabetical order\n      this.anchorX_,\n      this.anchorY_,\n      this.height_,\n      1,\n      this.originX_,\n      this.originY_,\n      this.rotateWithView_,\n      this.rotation_,\n      this.scale_,\n      this.width_,\n      this.declutterMode_,\n      this.declutterImageWithText_,\n    ]);\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @param {import(\"../../geom/MultiPoint.js\").default|import(\"../Feature.js\").default} multiPointGeometry MultiPoint geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawMultiPoint(multiPointGeometry, feature, index) {\n    if (!this.image_) {\n      return;\n    }\n    this.beginGeometry(multiPointGeometry, feature, index);\n    const flatCoordinates = multiPointGeometry.getFlatCoordinates();\n    const filteredFlatCoordinates = [];\n    for (\n      let i = 0, ii = flatCoordinates.length;\n      i < ii;\n      i += multiPointGeometry.getStride()\n    ) {\n      if (\n        !this.maxExtent ||\n        containsCoordinate(this.maxExtent, flatCoordinates.slice(i, i + 2))\n      ) {\n        filteredFlatCoordinates.push(\n          flatCoordinates[i],\n          flatCoordinates[i + 1],\n        );\n      }\n    }\n    const myBegin = this.coordinates.length;\n    const myEnd = this.appendFlatPointCoordinates(filteredFlatCoordinates, 2);\n    this.instructions.push([\n      CanvasInstruction.DRAW_IMAGE,\n      myBegin,\n      myEnd,\n      this.image_,\n      // Remaining arguments to DRAW_IMAGE are in alphabetical order\n      this.anchorX_ * this.imagePixelRatio_,\n      this.anchorY_ * this.imagePixelRatio_,\n      Math.ceil(this.height_ * this.imagePixelRatio_),\n      this.opacity_,\n      this.originX_ * this.imagePixelRatio_,\n      this.originY_ * this.imagePixelRatio_,\n      this.rotateWithView_,\n      this.rotation_,\n      [\n        (this.scale_[0] * this.pixelRatio) / this.imagePixelRatio_,\n        (this.scale_[1] * this.pixelRatio) / this.imagePixelRatio_,\n      ],\n      Math.ceil(this.width_ * this.imagePixelRatio_),\n      this.declutterMode_,\n      this.declutterImageWithText_,\n    ]);\n    this.hitDetectionInstructions.push([\n      CanvasInstruction.DRAW_IMAGE,\n      myBegin,\n      myEnd,\n      this.hitDetectionImage_,\n      // Remaining arguments to DRAW_IMAGE are in alphabetical order\n      this.anchorX_,\n      this.anchorY_,\n      this.height_,\n      1,\n      this.originX_,\n      this.originY_,\n      this.rotateWithView_,\n      this.rotation_,\n      this.scale_,\n      this.width_,\n      this.declutterMode_,\n      this.declutterImageWithText_,\n    ]);\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n   * @override\n   */\n  finish() {\n    this.reverseHitDetectionInstructions();\n    // FIXME this doesn't really protect us against further calls to draw*Geometry\n    this.anchorX_ = undefined;\n    this.anchorY_ = undefined;\n    this.hitDetectionImage_ = null;\n    this.image_ = null;\n    this.imagePixelRatio_ = undefined;\n    this.height_ = undefined;\n    this.scale_ = undefined;\n    this.opacity_ = undefined;\n    this.originX_ = undefined;\n    this.originY_ = undefined;\n    this.rotateWithView_ = undefined;\n    this.rotation_ = undefined;\n    this.width_ = undefined;\n    return super.finish();\n  }\n\n  /**\n   * @param {import(\"../../style/Image.js\").default} imageStyle Image style.\n   * @param {Object} [sharedData] Shared data.\n   * @override\n   */\n  setImageStyle(imageStyle, sharedData) {\n    const anchor = imageStyle.getAnchor();\n    const size = imageStyle.getSize();\n    const origin = imageStyle.getOrigin();\n    this.imagePixelRatio_ = imageStyle.getPixelRatio(this.pixelRatio);\n    this.anchorX_ = anchor[0];\n    this.anchorY_ = anchor[1];\n    this.hitDetectionImage_ = imageStyle.getHitDetectionImage();\n    this.image_ = imageStyle.getImage(this.pixelRatio);\n    this.height_ = size[1];\n    this.opacity_ = imageStyle.getOpacity();\n    this.originX_ = origin[0];\n    this.originY_ = origin[1];\n    this.rotateWithView_ = imageStyle.getRotateWithView();\n    this.rotation_ = imageStyle.getRotation();\n    this.scale_ = imageStyle.getScaleArray();\n    this.width_ = size[0];\n    this.declutterMode_ = imageStyle.getDeclutterMode();\n    this.declutterImageWithText_ = sharedData;\n  }\n}\n\nexport default CanvasImageBuilder;\n","/**\n * @module ol/render/canvas/LineStringBuilder\n */\nimport {defaultLineDash, defaultLineDashOffset} from '../canvas.js';\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction, {\n  beginPathInstruction,\n  strokeInstruction,\n} from './Instruction.js';\n\nclass CanvasLineStringBuilder extends CanvasBuilder {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    super(tolerance, maxExtent, resolution, pixelRatio);\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {number} end End.\n   * @param {number} stride Stride.\n   * @param {number} [strokeOffset] Stroke Offset in pixels.\n   * @private\n   * @return {number} end.\n   */\n  drawFlatCoordinates_(flatCoordinates, offset, end, stride, strokeOffset) {\n    const myBegin = this.coordinates.length;\n    const myEnd = this.appendFlatLineCoordinates(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      false,\n      false,\n    );\n    this.instructions.push([\n      CanvasInstruction.MOVE_TO_LINE_TO,\n      myBegin,\n      myEnd,\n      strokeOffset * this.pixelRatio,\n    ]);\n    this.hitDetectionInstructions.push([\n      CanvasInstruction.MOVE_TO_LINE_TO,\n      myBegin,\n      myEnd,\n      strokeOffset,\n    ]);\n    return end;\n  }\n\n  /**\n   * @param {import(\"../../geom/LineString.js\").default|import(\"../Feature.js\").default} lineStringGeometry Line string geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawLineString(lineStringGeometry, feature, index) {\n    const state = this.state;\n    const strokeStyle = state.strokeStyle;\n    const lineWidth = state.lineWidth;\n    const strokeOffset = state.strokeOffset;\n    if (strokeStyle === undefined || lineWidth === undefined) {\n      return;\n    }\n    this.updateStrokeStyle(state, this.applyStroke);\n    this.beginGeometry(lineStringGeometry, feature, index);\n    this.hitDetectionInstructions.push(\n      [\n        CanvasInstruction.SET_STROKE_STYLE,\n        state.strokeStyle,\n        state.lineWidth,\n        state.lineCap,\n        state.lineJoin,\n        state.miterLimit,\n        defaultLineDash,\n        defaultLineDashOffset,\n      ],\n      beginPathInstruction,\n    );\n    const flatCoordinates = lineStringGeometry.getFlatCoordinates();\n    const stride = lineStringGeometry.getStride();\n    this.drawFlatCoordinates_(\n      flatCoordinates,\n      0,\n      flatCoordinates.length,\n      stride,\n      strokeOffset,\n    );\n    this.hitDetectionInstructions.push(strokeInstruction);\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @param {import(\"../../geom/MultiLineString.js\").default|import(\"../Feature.js\").default} multiLineStringGeometry MultiLineString geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawMultiLineString(multiLineStringGeometry, feature, index) {\n    const state = this.state;\n    const strokeStyle = state.strokeStyle;\n    const lineWidth = state.lineWidth;\n    const strokeOffset = state.strokeOffset;\n    if (strokeStyle === undefined || lineWidth === undefined) {\n      return;\n    }\n    this.updateStrokeStyle(state, this.applyStroke);\n    this.beginGeometry(multiLineStringGeometry, feature, index);\n    this.hitDetectionInstructions.push(\n      [\n        CanvasInstruction.SET_STROKE_STYLE,\n        state.strokeStyle,\n        state.lineWidth,\n        state.lineCap,\n        state.lineJoin,\n        state.miterLimit,\n        defaultLineDash,\n        defaultLineDashOffset,\n      ],\n      beginPathInstruction,\n    );\n    const ends = multiLineStringGeometry.getEnds();\n    const flatCoordinates = multiLineStringGeometry.getFlatCoordinates();\n    const stride = multiLineStringGeometry.getStride();\n    let offset = 0;\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      offset = this.drawFlatCoordinates_(\n        flatCoordinates,\n        offset,\n        /** @type {number} */ (ends[i]),\n        stride,\n        strokeOffset,\n      );\n    }\n    this.hitDetectionInstructions.push(strokeInstruction);\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n   * @override\n   */\n  finish() {\n    const state = this.state;\n    if (\n      state.lastStroke != undefined &&\n      state.lastStroke != this.coordinates.length\n    ) {\n      this.instructions.push(strokeInstruction);\n    }\n    this.reverseHitDetectionInstructions();\n    this.state = null;\n    return super.finish();\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillStrokeState} state State.\n   * @override\n   */\n  applyStroke(state) {\n    if (\n      state.lastStroke != undefined &&\n      state.lastStroke != this.coordinates.length\n    ) {\n      this.instructions.push(strokeInstruction);\n      state.lastStroke = this.coordinates.length;\n    }\n    state.lastStroke = 0;\n    super.applyStroke(state);\n    this.instructions.push(beginPathInstruction);\n  }\n}\n\nexport default CanvasLineStringBuilder;\n","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n//    1. Redistributions of source code must retain the above copyright notice,\n//       this list of conditions and the following disclaimer.\n//\n//    2. Redistributions in binary form must reproduce the above copyright\n//       notice, this list of conditions and the following disclaimer in the\n//       documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// 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\nimport {squaredDistance, squaredSegmentDistance} from '../../math.js';\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array<number>} [simplifiedFlatCoordinates] Simplified flat\n *     coordinates.\n * @return {Array<number>} Simplified line string.\n */\nexport function simplifyLineString(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  squaredTolerance,\n  highQuality,\n  simplifiedFlatCoordinates,\n) {\n  simplifiedFlatCoordinates =\n    simplifiedFlatCoordinates !== undefined ? simplifiedFlatCoordinates : [];\n  if (!highQuality) {\n    end = radialDistance(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      0,\n    );\n    flatCoordinates = simplifiedFlatCoordinates;\n    offset = 0;\n    stride = 2;\n  }\n  simplifiedFlatCoordinates.length = douglasPeucker(\n    flatCoordinates,\n    offset,\n    end,\n    stride,\n    squaredTolerance,\n    simplifiedFlatCoordinates,\n    0,\n  );\n  return simplifiedFlatCoordinates;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  squaredTolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n) {\n  const n = (end - offset) / stride;\n  if (n < 3) {\n    for (; offset < end; offset += stride) {\n      simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n      simplifiedFlatCoordinates[simplifiedOffset++] =\n        flatCoordinates[offset + 1];\n    }\n    return simplifiedOffset;\n  }\n  /** @type {Array<number>} */\n  const markers = new Array(n);\n  markers[0] = 1;\n  markers[n - 1] = 1;\n  /** @type {Array<number>} */\n  const stack = [offset, end - stride];\n  let index = 0;\n  while (stack.length > 0) {\n    const last = stack.pop();\n    const first = stack.pop();\n    let maxSquaredDistance = 0;\n    const x1 = flatCoordinates[first];\n    const y1 = flatCoordinates[first + 1];\n    const x2 = flatCoordinates[last];\n    const y2 = flatCoordinates[last + 1];\n    for (let i = first + stride; i < last; i += stride) {\n      const x = flatCoordinates[i];\n      const y = flatCoordinates[i + 1];\n      const squaredDistance = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n      if (squaredDistance > maxSquaredDistance) {\n        index = i;\n        maxSquaredDistance = squaredDistance;\n      }\n    }\n    if (maxSquaredDistance > squaredTolerance) {\n      markers[(index - offset) / stride] = 1;\n      if (first + stride < index) {\n        stack.push(first, index);\n      }\n      if (index + stride < last) {\n        stack.push(index, last);\n      }\n    }\n  }\n  for (let i = 0; i < n; ++i) {\n    if (markers[i]) {\n      simplifiedFlatCoordinates[simplifiedOffset++] =\n        flatCoordinates[offset + i * stride];\n      simplifiedFlatCoordinates[simplifiedOffset++] =\n        flatCoordinates[offset + i * stride + 1];\n    }\n  }\n  return simplifiedOffset;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array<number>} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  squaredTolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n  simplifiedEnds,\n) {\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    simplifiedOffset = douglasPeucker(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      simplifiedOffset,\n    );\n    simplifiedEnds.push(simplifiedOffset);\n    offset = end;\n  }\n  return simplifiedOffset;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array<Array<number>>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  squaredTolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n  simplifiedEndss,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    /** @type {Array<number>} */\n    const simplifiedEnds = [];\n    simplifiedOffset = douglasPeuckerArray(\n      flatCoordinates,\n      offset,\n      ends,\n      stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      simplifiedOffset,\n      simplifiedEnds,\n    );\n    simplifiedEndss.push(simplifiedEnds);\n    offset = ends[ends.length - 1];\n  }\n  return simplifiedOffset;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  squaredTolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n) {\n  if (end <= offset + stride) {\n    // zero or one point, no simplification possible, so copy and return\n    for (; offset < end; offset += stride) {\n      simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n      simplifiedFlatCoordinates[simplifiedOffset++] =\n        flatCoordinates[offset + 1];\n    }\n    return simplifiedOffset;\n  }\n  let x1 = flatCoordinates[offset];\n  let y1 = flatCoordinates[offset + 1];\n  // copy first point\n  simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n  simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n  let x2 = x1;\n  let y2 = y1;\n  for (offset += stride; offset < end; offset += stride) {\n    x2 = flatCoordinates[offset];\n    y2 = flatCoordinates[offset + 1];\n    if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n      // copy point at offset\n      simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n      simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n      x1 = x2;\n      y1 = y2;\n    }\n  }\n  if (x2 != x1 || y2 != y1) {\n    // copy last point\n    simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n    simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n  }\n  return simplifiedOffset;\n}\n\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n  return tolerance * Math.round(value / tolerance);\n}\n\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded.  This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string.  This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons.  This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  tolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n) {\n  // do nothing if the line is empty\n  if (offset == end) {\n    return simplifiedOffset;\n  }\n  // snap the first coordinate (P1)\n  let x1 = snap(flatCoordinates[offset], tolerance);\n  let y1 = snap(flatCoordinates[offset + 1], tolerance);\n  offset += stride;\n  // add the first coordinate to the output\n  simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n  simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n  // find the next coordinate that does not snap to the same value as the first\n  // coordinate (P2)\n  let x2, y2;\n  do {\n    x2 = snap(flatCoordinates[offset], tolerance);\n    y2 = snap(flatCoordinates[offset + 1], tolerance);\n    offset += stride;\n    if (offset == end) {\n      // all coordinates snap to the same value, the line collapses to a point\n      // push the last snapped value anyway to ensure that the output contains\n      // at least two points\n      // FIXME should we really return at least two points anyway?\n      simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n      simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n      return simplifiedOffset;\n    }\n  } while (x2 == x1 && y2 == y1);\n  while (offset < end) {\n    // snap the next coordinate (P3)\n    const x3 = snap(flatCoordinates[offset], tolerance);\n    const y3 = snap(flatCoordinates[offset + 1], tolerance);\n    offset += stride;\n    // skip P3 if it is equal to P2\n    if (x3 == x2 && y3 == y2) {\n      continue;\n    }\n    // calculate the delta between P1 and P2\n    const dx1 = x2 - x1;\n    const dy1 = y2 - y1;\n    // calculate the delta between P3 and P1\n    const dx2 = x3 - x1;\n    const dy2 = y3 - y1;\n    // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n    // P1 in the same direction then P2 is on the straight line between P1 and\n    // P3\n    if (\n      dx1 * dy2 == dy1 * dx2 &&\n      ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n      ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))\n    ) {\n      // discard P2 and set P2 = P3\n      x2 = x3;\n      y2 = y3;\n      continue;\n    }\n    // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n    // between P3 and P1 or on the opposite half of the line to P2.  add P2,\n    // and continue with P1 = P2 and P2 = P3\n    simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n    simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n    x1 = x2;\n    y1 = y2;\n    x2 = x3;\n    y2 = y3;\n  }\n  // add the last point (P2)\n  simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n  simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n  return simplifiedOffset;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array<number>} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  tolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n  simplifiedEnds,\n) {\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    simplifiedOffset = quantize(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      tolerance,\n      simplifiedFlatCoordinates,\n      simplifiedOffset,\n    );\n    simplifiedEnds.push(simplifiedOffset);\n    offset = end;\n  }\n  return simplifiedOffset;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array<number>} simplifiedFlatCoordinates Simplified flat\n *     coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array<Array<number>>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  tolerance,\n  simplifiedFlatCoordinates,\n  simplifiedOffset,\n  simplifiedEndss,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    /** @type {Array<number>} */\n    const simplifiedEnds = [];\n    simplifiedOffset = quantizeArray(\n      flatCoordinates,\n      offset,\n      ends,\n      stride,\n      tolerance,\n      simplifiedFlatCoordinates,\n      simplifiedOffset,\n      simplifiedEnds,\n    );\n    simplifiedEndss.push(simplifiedEnds);\n    offset = ends[ends.length - 1];\n  }\n  return simplifiedOffset;\n}\n","/**\n * @module ol/render/canvas/PolygonBuilder\n */\nimport {snap} from '../../geom/flat/simplify.js';\nimport {\n  defaultFillStyle,\n  defaultLineDash,\n  defaultLineDashOffset,\n} from '../canvas.js';\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction, {\n  beginPathInstruction,\n  closePathInstruction,\n  fillInstruction,\n  strokeInstruction,\n} from './Instruction.js';\n\nclass CanvasPolygonBuilder extends CanvasBuilder {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    super(tolerance, maxExtent, resolution, pixelRatio);\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {Array<number>} ends Ends.\n   * @param {number} stride Stride.\n   * @param {number} [strokeOffset] Stroke Offset in pixels.\n   * @private\n   * @return {number} End.\n   */\n  drawFlatCoordinatess_(flatCoordinates, offset, ends, stride, strokeOffset) {\n    const state = this.state;\n    const fill = state.fillStyle !== undefined;\n    const stroke = state.strokeStyle !== undefined;\n    const numEnds = ends.length;\n    this.instructions.push(beginPathInstruction);\n    this.hitDetectionInstructions.push(beginPathInstruction);\n    for (let i = 0; i < numEnds; ++i) {\n      const end = ends[i];\n      const myBegin = this.coordinates.length;\n      const myEnd = this.appendFlatLineCoordinates(\n        flatCoordinates,\n        offset,\n        end,\n        stride,\n        true,\n        !stroke,\n      );\n      this.instructions.push([\n        CanvasInstruction.MOVE_TO_LINE_TO,\n        myBegin,\n        myEnd,\n        strokeOffset * this.pixelRatio,\n        true,\n      ]);\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.MOVE_TO_LINE_TO,\n        myBegin,\n        myEnd,\n        strokeOffset,\n        true,\n      ]);\n      if (stroke) {\n        // Performance optimization: only call closePath() when we have a stroke.\n        // Otherwise the ring is closed already (see appendFlatLineCoordinates above).\n        this.instructions.push(closePathInstruction);\n        this.hitDetectionInstructions.push(closePathInstruction);\n      }\n      offset = end;\n    }\n    if (fill) {\n      this.instructions.push(fillInstruction);\n      this.hitDetectionInstructions.push(fillInstruction);\n    }\n    if (stroke) {\n      this.instructions.push(strokeInstruction);\n      this.hitDetectionInstructions.push(strokeInstruction);\n    }\n    return offset;\n  }\n\n  /**\n   * @param {import(\"../../geom/Circle.js\").default} circleGeometry Circle geometry.\n   * @param {import(\"../../Feature.js\").default} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawCircle(circleGeometry, feature, index) {\n    const state = this.state;\n    const fillStyle = state.fillStyle;\n    const strokeStyle = state.strokeStyle;\n    const strokeOffset = state.strokeOffset;\n    if (fillStyle === undefined && strokeStyle === undefined) {\n      return;\n    }\n\n    if (\n      this.handleStrokeOffset_(() =>\n        this.drawCircle(circleGeometry, feature, index),\n      )\n    ) {\n      return;\n    }\n    this.setFillStrokeStyles_();\n    this.beginGeometry(circleGeometry, feature, index);\n    if (state.fillStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_FILL_STYLE,\n        defaultFillStyle,\n      ]);\n    }\n    if (state.strokeStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_STROKE_STYLE,\n        state.strokeStyle,\n        state.lineWidth,\n        state.lineCap,\n        state.lineJoin,\n        state.miterLimit,\n        defaultLineDash,\n        defaultLineDashOffset,\n      ]);\n    }\n    const flatCoordinates = circleGeometry.getFlatCoordinates();\n    const stride = circleGeometry.getStride();\n    const myBegin = this.coordinates.length;\n    this.appendFlatLineCoordinates(\n      flatCoordinates,\n      0,\n      flatCoordinates.length,\n      stride,\n      false,\n      false,\n    );\n    const circleInstruction = [CanvasInstruction.CIRCLE, myBegin, strokeOffset];\n    this.instructions.push(beginPathInstruction, circleInstruction);\n    this.hitDetectionInstructions.push(beginPathInstruction, circleInstruction);\n    if (state.fillStyle !== undefined) {\n      this.instructions.push(fillInstruction);\n      this.hitDetectionInstructions.push(fillInstruction);\n    }\n    if (state.strokeStyle !== undefined) {\n      this.instructions.push(strokeInstruction);\n      this.hitDetectionInstructions.push(strokeInstruction);\n    }\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @param {import(\"../../geom/Polygon.js\").default|import(\"../Feature.js\").default} polygonGeometry Polygon geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawPolygon(polygonGeometry, feature, index) {\n    const state = this.state;\n    const fillStyle = state.fillStyle;\n    const strokeStyle = state.strokeStyle;\n    const strokeOffset = state.strokeOffset;\n    if (fillStyle === undefined && strokeStyle === undefined) {\n      return;\n    }\n    if (\n      this.handleStrokeOffset_(() =>\n        this.drawPolygon(polygonGeometry, feature, index),\n      )\n    ) {\n      return;\n    }\n\n    this.setFillStrokeStyles_();\n    this.beginGeometry(polygonGeometry, feature, index);\n    if (state.fillStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_FILL_STYLE,\n        defaultFillStyle,\n      ]);\n    }\n    if (state.strokeStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_STROKE_STYLE,\n        state.strokeStyle,\n        state.lineWidth,\n        state.lineCap,\n        state.lineJoin,\n        state.miterLimit,\n        defaultLineDash,\n        defaultLineDashOffset,\n      ]);\n    }\n    const ends = polygonGeometry.getEnds();\n    const flatCoordinates = polygonGeometry.getOrientedFlatCoordinates();\n    const stride = polygonGeometry.getStride();\n    this.drawFlatCoordinatess_(\n      flatCoordinates,\n      0,\n      /** @type {Array<number>} */ (ends),\n      stride,\n      strokeOffset,\n    );\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @param {import(\"../../geom/MultiPolygon.js\").default} multiPolygonGeometry MultiPolygon geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawMultiPolygon(multiPolygonGeometry, feature, index) {\n    const state = this.state;\n    const fillStyle = state.fillStyle;\n    const strokeStyle = state.strokeStyle;\n    const strokeOffset = state.strokeOffset;\n    if (fillStyle === undefined && strokeStyle === undefined) {\n      return;\n    }\n    if (\n      this.handleStrokeOffset_(() =>\n        this.drawMultiPolygon(multiPolygonGeometry, feature, index),\n      )\n    ) {\n      return;\n    }\n    this.setFillStrokeStyles_();\n    this.beginGeometry(multiPolygonGeometry, feature, index);\n    if (state.fillStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_FILL_STYLE,\n        defaultFillStyle,\n      ]);\n    }\n    if (state.strokeStyle !== undefined) {\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.SET_STROKE_STYLE,\n        state.strokeStyle,\n        state.lineWidth,\n        state.lineCap,\n        state.lineJoin,\n        state.miterLimit,\n        defaultLineDash,\n        defaultLineDashOffset,\n      ]);\n    }\n    const endss = multiPolygonGeometry.getEndss();\n    const flatCoordinates = multiPolygonGeometry.getOrientedFlatCoordinates();\n    const stride = multiPolygonGeometry.getStride();\n    let offset = 0;\n    for (let i = 0, ii = endss.length; i < ii; ++i) {\n      offset = this.drawFlatCoordinatess_(\n        flatCoordinates,\n        offset,\n        endss[i],\n        stride,\n        strokeOffset,\n      );\n    }\n    this.endGeometry(feature);\n  }\n\n  /**\n   * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n   * @override\n   */\n  finish() {\n    this.reverseHitDetectionInstructions();\n    this.state = null;\n    // We want to preserve topology when drawing polygons.  Polygons are\n    // simplified using quantization and point elimination. However, we might\n    // have received a mix of quantized and non-quantized geometries, so ensure\n    // that all are quantized by quantizing all coordinates in the batch.\n    const tolerance = this.tolerance;\n    if (tolerance !== 0) {\n      const coordinates = this.coordinates;\n      for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n        coordinates[i] = snap(coordinates[i], tolerance);\n      }\n    }\n    return super.finish();\n  }\n\n  /**\n   * @private\n   */\n  setFillStrokeStyles_() {\n    const state = this.state;\n    this.updateFillStyle(state, this.createFill);\n    this.updateStrokeStyle(state, this.applyStroke);\n  }\n\n  handleStrokeOffset_(drawGeometryCallback) {\n    const state = this.state;\n    const fillStyle = state.fillStyle;\n    const strokeStyle = state.strokeStyle;\n    const strokeOffset = state.strokeOffset;\n\n    // In case both fill style and stroke style are defined and the stroke style has an offset,\n    // the stroke and fill should be done in separate steps, because offset stroke shape will\n    // be different from the original shape used for the fill.\n    if (\n      Math.abs(strokeOffset) > 0 &&\n      fillStyle !== undefined &&\n      strokeStyle !== undefined\n    ) {\n      // First do only fill\n      state.strokeStyle = undefined;\n      state.strokeOffset = 0;\n      drawGeometryCallback();\n      // Now separately do the stroke\n      state.fillStyle = undefined;\n      state.strokeStyle = strokeStyle;\n      state.strokeOffset = strokeOffset;\n      drawGeometryCallback();\n      // Reset the state to the original\n      state.fillStyle = fillStyle;\n      return true;\n    }\n    return false;\n  }\n}\n\nexport default CanvasPolygonBuilder;\n","import {lerp} from '../../math.js';\n\n/**\n * Creates chunks of equal length from a linestring\n * @param {number} chunkLength Length of each chunk.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Start offset of the `flatCoordinates`.\n * @param {number} end End offset of the `flatCoordinates`.\n * @param {number} stride Stride.\n * @return {Array<Array<number>>} Chunks of linestrings with stride 2.\n */\nexport function lineChunk(chunkLength, flatCoordinates, offset, end, stride) {\n  const chunks = [];\n  let cursor = offset;\n  let chunkM = 0;\n  let currentChunk = flatCoordinates.slice(offset, 2);\n  while (chunkM < chunkLength && cursor + stride < end) {\n    const [x1, y1] = currentChunk.slice(-2);\n    const x2 = flatCoordinates[cursor + stride];\n    const y2 = flatCoordinates[cursor + stride + 1];\n    const segmentLength = Math.sqrt(\n      (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1),\n    );\n    chunkM += segmentLength;\n    if (chunkM >= chunkLength) {\n      const m = (chunkLength - chunkM + segmentLength) / segmentLength;\n      const x = lerp(x1, x2, m);\n      const y = lerp(y1, y2, m);\n      currentChunk.push(x, y);\n      chunks.push(currentChunk);\n      currentChunk = [x, y];\n      if (chunkM == chunkLength) {\n        cursor += stride;\n      }\n      chunkM = 0;\n    } else if (chunkM < chunkLength) {\n      currentChunk.push(\n        flatCoordinates[cursor + stride],\n        flatCoordinates[cursor + stride + 1],\n      );\n      cursor += stride;\n    } else {\n      const missing = segmentLength - chunkM;\n      const x = lerp(x1, x2, missing / segmentLength);\n      const y = lerp(y1, y2, missing / segmentLength);\n      currentChunk.push(x, y);\n      chunks.push(currentChunk);\n      currentChunk = [x, y];\n      chunkM = 0;\n      cursor += stride;\n    }\n  }\n  if (chunkM > 0) {\n    chunks.push(currentChunk);\n  }\n  return chunks;\n}\n","/**\n * @module ol/geom/flat/straightchunk\n */\n\n/**\n * @param {number} maxAngle Maximum acceptable angle delta between segments.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Array<number>} Start and end of the first suitable chunk of the\n * given `flatCoordinates`.\n */\nexport function matchingChunk(maxAngle, flatCoordinates, offset, end, stride) {\n  let chunkStart = offset;\n  let chunkEnd = offset;\n  let chunkM = 0;\n  let m = 0;\n  let start = offset;\n  let acos, i, m12, m23, x1, y1, x12, y12, x23, y23;\n  for (i = offset; i < end; i += stride) {\n    const x2 = flatCoordinates[i];\n    const y2 = flatCoordinates[i + 1];\n    if (x1 !== undefined) {\n      x23 = x2 - x1;\n      y23 = y2 - y1;\n      m23 = Math.sqrt(x23 * x23 + y23 * y23);\n      if (x12 !== undefined) {\n        m += m12;\n        acos = Math.acos((x12 * x23 + y12 * y23) / (m12 * m23));\n        if (acos > maxAngle) {\n          if (m > chunkM) {\n            chunkM = m;\n            chunkStart = start;\n            chunkEnd = i;\n          }\n          m = 0;\n          start = i - stride;\n        }\n      }\n      m12 = m23;\n      x12 = x23;\n      y12 = y23;\n    }\n    x1 = x2;\n    y1 = y2;\n  }\n  m += m23;\n  return m > chunkM ? [start, i] : [chunkStart, chunkEnd];\n}\n","/**\n * @module ol/render/canvas/TextBuilder\n */\nimport {asColorLike} from '../../colorlike.js';\nimport {intersects} from '../../extent.js';\nimport {lineChunk} from '../../geom/flat/linechunk.js';\nimport {matchingChunk} from '../../geom/flat/straightchunk.js';\nimport {getUid} from '../../util.js';\nimport {\n  defaultFillStyle,\n  defaultFont,\n  defaultLineCap,\n  defaultLineDash,\n  defaultLineDashOffset,\n  defaultLineJoin,\n  defaultLineWidth,\n  defaultMiterLimit,\n  defaultPadding,\n  defaultStrokeStyle,\n  defaultTextAlign,\n  defaultTextBaseline,\n  registerFont,\n} from '../canvas.js';\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction from './Instruction.js';\n/**\n * @const\n * @type {{left: 0, center: 0.5, right: 1, top: 0, middle: 0.5, hanging: 0.2, alphabetic: 0.8, ideographic: 0.8, bottom: 1}}\n */\nexport const TEXT_ALIGN = {\n  'left': 0,\n  'center': 0.5,\n  'right': 1,\n  'top': 0,\n  'middle': 0.5,\n  'hanging': 0.2,\n  'alphabetic': 0.8,\n  'ideographic': 0.8,\n  'bottom': 1,\n};\n\nclass CanvasTextBuilder extends CanvasBuilder {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    super(tolerance, maxExtent, resolution, pixelRatio);\n\n    /**\n     * @private\n     * @type {Array<HTMLCanvasElement>}\n     */\n    this.labels_ = null;\n\n    /**\n     * @private\n     * @type {string|Array<string>}\n     */\n    this.text_ = '';\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.textOffsetX_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.textOffsetY_ = 0;\n\n    /**\n     * @private\n     * @type {boolean|undefined}\n     */\n    this.textRotateWithView_ = undefined;\n\n    /**\n     * @private\n     * @type {boolean|undefined}\n     */\n    this.textKeepUpright_ = undefined;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.textRotation_ = 0;\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").FillState}\n     */\n    this.textFillState_ = null;\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").FillState>}\n     */\n    this.fillStates = {};\n    this.fillStates[defaultFillStyle] = {fillStyle: defaultFillStyle};\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").StrokeState}\n     */\n    this.textStrokeState_ = null;\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").StrokeState>}\n     */\n    this.strokeStates = {};\n\n    /**\n     * @private\n     * @type {import(\"../canvas.js\").TextState}\n     */\n    this.textState_ = /** @type {import(\"../canvas.js\").TextState} */ ({});\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").TextState>}\n     */\n    this.textStates = {};\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.textKey_ = '';\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.fillKey_ = '';\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.strokeKey_ = '';\n\n    /**\n     * @private\n     * @type {import('../../style/Style.js').DeclutterMode}\n     */\n    this.declutterMode_ = undefined;\n\n    /**\n     * Data shared with an image builder for combined decluttering.\n     * @private\n     * @type {import(\"../canvas.js\").DeclutterImageWithText}\n     */\n    this.declutterImageWithText_ = undefined;\n  }\n\n  /**\n   * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n   * @override\n   */\n  finish() {\n    const instructions = super.finish();\n    instructions.textStates = this.textStates;\n    instructions.fillStates = this.fillStates;\n    instructions.strokeStates = this.strokeStates;\n    return instructions;\n  }\n\n  /**\n   * @param {import(\"../../geom/SimpleGeometry.js\").default|import(\"../Feature.js\").default} geometry Geometry.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} [index] Render order index.\n   * @override\n   */\n  drawText(geometry, feature, index) {\n    const fillState = this.textFillState_;\n    const strokeState = this.textStrokeState_;\n    const textState = this.textState_;\n    if (this.text_ === '' || !textState || (!fillState && !strokeState)) {\n      return;\n    }\n\n    const coordinates = this.coordinates;\n    let begin = coordinates.length;\n\n    const geometryType = geometry.getType();\n    let flatCoordinates = null;\n    let stride = geometry.getStride();\n\n    if (\n      textState.placement === 'line' &&\n      (geometryType == 'LineString' ||\n        geometryType == 'MultiLineString' ||\n        geometryType == 'Polygon' ||\n        geometryType == 'MultiPolygon')\n    ) {\n      if (!intersects(this.maxExtent, geometry.getExtent())) {\n        return;\n      }\n      let ends;\n      flatCoordinates = geometry.getFlatCoordinates();\n      if (geometryType == 'LineString') {\n        ends = [flatCoordinates.length];\n      } else if (geometryType == 'MultiLineString') {\n        ends = /** @type {import(\"../../geom/MultiLineString.js\").default} */ (\n          geometry\n        ).getEnds();\n      } else if (geometryType == 'Polygon') {\n        ends = /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry)\n          .getEnds()\n          .slice(0, 1);\n      } else if (geometryType == 'MultiPolygon') {\n        const endss =\n          /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n            geometry\n          ).getEndss();\n        ends = [];\n        for (let i = 0, ii = endss.length; i < ii; ++i) {\n          ends.push(endss[i][0]);\n        }\n      }\n      this.beginGeometry(geometry, feature, index);\n      const repeat = textState.repeat;\n      const textAlign = repeat ? undefined : textState.textAlign;\n      // No `justify` support for line placement.\n      let flatOffset = 0;\n      for (let o = 0, oo = ends.length; o < oo; ++o) {\n        let chunks;\n        if (repeat) {\n          chunks = lineChunk(\n            repeat * this.resolution,\n            flatCoordinates,\n            flatOffset,\n            ends[o],\n            stride,\n          );\n        } else {\n          chunks = [flatCoordinates.slice(flatOffset, ends[o])];\n        }\n        for (let c = 0, cc = chunks.length; c < cc; ++c) {\n          const chunk = chunks[c];\n          let chunkBegin = 0;\n          let chunkEnd = chunk.length;\n          if (textAlign == undefined) {\n            const range = matchingChunk(\n              textState.maxAngle,\n              chunk,\n              0,\n              chunk.length,\n              2,\n            );\n            chunkBegin = range[0];\n            chunkEnd = range[1];\n          }\n          for (let i = chunkBegin; i < chunkEnd; i += stride) {\n            coordinates.push(chunk[i], chunk[i + 1]);\n          }\n          const end = coordinates.length;\n          flatOffset = ends[o];\n          this.drawChars_(begin, end);\n          begin = end;\n        }\n      }\n      this.endGeometry(feature);\n    } else {\n      let geometryWidths = textState.overflow ? null : [];\n      switch (geometryType) {\n        case 'Point':\n        case 'MultiPoint':\n          flatCoordinates =\n            /** @type {import(\"../../geom/MultiPoint.js\").default} */ (\n              geometry\n            ).getFlatCoordinates();\n          break;\n        case 'LineString':\n          flatCoordinates =\n            /** @type {import(\"../../geom/LineString.js\").default} */ (\n              geometry\n            ).getFlatMidpoint();\n          break;\n        case 'Circle':\n          flatCoordinates =\n            /** @type {import(\"../../geom/Circle.js\").default} */ (\n              geometry\n            ).getCenter();\n          break;\n        case 'MultiLineString':\n          flatCoordinates =\n            /** @type {import(\"../../geom/MultiLineString.js\").default} */ (\n              geometry\n            ).getFlatMidpoints();\n          stride = 2;\n          break;\n        case 'Polygon':\n          flatCoordinates =\n            /** @type {import(\"../../geom/Polygon.js\").default} */ (\n              geometry\n            ).getFlatInteriorPoint();\n          if (!textState.overflow) {\n            geometryWidths.push(flatCoordinates[2] / this.resolution);\n          }\n          stride = 3;\n          break;\n        case 'MultiPolygon':\n          const interiorPoints =\n            /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n              geometry\n            ).getFlatInteriorPoints();\n          flatCoordinates = [];\n          for (let i = 0, ii = interiorPoints.length; i < ii; i += 3) {\n            if (!textState.overflow) {\n              geometryWidths.push(interiorPoints[i + 2] / this.resolution);\n            }\n            flatCoordinates.push(interiorPoints[i], interiorPoints[i + 1]);\n          }\n          if (flatCoordinates.length === 0) {\n            return;\n          }\n          stride = 2;\n          break;\n        default:\n      }\n      const end = this.appendFlatPointCoordinates(flatCoordinates, stride);\n      if (end === begin) {\n        return;\n      }\n      if (\n        geometryWidths &&\n        (end - begin) / 2 !== flatCoordinates.length / stride\n      ) {\n        let beg = begin / 2;\n        geometryWidths = geometryWidths.filter((w, i) => {\n          const keep =\n            coordinates[(beg + i) * 2] === flatCoordinates[i * stride] &&\n            coordinates[(beg + i) * 2 + 1] === flatCoordinates[i * stride + 1];\n          if (!keep) {\n            --beg;\n          }\n          return keep;\n        });\n      }\n\n      this.saveTextStates_();\n\n      const backgroundFill = textState.backgroundFill\n        ? this.createFill(this.fillStyleToState(textState.backgroundFill))\n        : null;\n      const backgroundStroke = textState.backgroundStroke\n        ? this.createStroke(this.strokeStyleToState(textState.backgroundStroke))\n        : null;\n\n      this.beginGeometry(geometry, feature, index);\n\n      // adjust padding for negative scale\n      let padding = textState.padding;\n      if (\n        padding != defaultPadding &&\n        (textState.scale[0] < 0 || textState.scale[1] < 0)\n      ) {\n        let p0 = textState.padding[0];\n        let p1 = textState.padding[1];\n        let p2 = textState.padding[2];\n        let p3 = textState.padding[3];\n        if (textState.scale[0] < 0) {\n          p1 = -p1;\n          p3 = -p3;\n        }\n        if (textState.scale[1] < 0) {\n          p0 = -p0;\n          p2 = -p2;\n        }\n        padding = [p0, p1, p2, p3];\n      }\n\n      // The image is unknown at this stage so we pass null; it will be computed at render time.\n      // For clarity, we pass NaN for offsetX, offsetY, width and height, which will be computed at\n      // render time.\n      const pixelRatio = this.pixelRatio;\n      this.instructions.push([\n        CanvasInstruction.DRAW_IMAGE,\n        begin,\n        end,\n        null,\n        NaN,\n        NaN,\n        NaN,\n        1,\n        0,\n        0,\n        this.textRotateWithView_,\n        this.textRotation_,\n        [1, 1],\n        NaN,\n        this.declutterMode_,\n        this.declutterImageWithText_,\n        padding == defaultPadding\n          ? defaultPadding\n          : padding.map(function (p) {\n              return p * pixelRatio;\n            }),\n        backgroundFill,\n        backgroundStroke,\n        this.text_,\n        this.textKey_,\n        this.strokeKey_,\n        this.fillKey_,\n        this.textOffsetX_,\n        this.textOffsetY_,\n        geometryWidths,\n      ]);\n      const scale = 1 / pixelRatio;\n      // Set default fill for hit detection background\n      const hitDetectionBackgroundFill = backgroundFill\n        ? backgroundFill.slice(0)\n        : null;\n      if (hitDetectionBackgroundFill) {\n        hitDetectionBackgroundFill[1] = defaultFillStyle;\n      }\n      this.hitDetectionInstructions.push([\n        CanvasInstruction.DRAW_IMAGE,\n        begin,\n        end,\n        null,\n        NaN,\n        NaN,\n        NaN,\n        1,\n        0,\n        0,\n        this.textRotateWithView_,\n        this.textRotation_,\n        [scale, scale],\n        NaN,\n        this.declutterMode_,\n        this.declutterImageWithText_,\n        padding,\n        hitDetectionBackgroundFill,\n        backgroundStroke,\n        this.text_,\n        this.textKey_,\n        this.strokeKey_,\n        this.fillKey_ ? defaultFillStyle : this.fillKey_,\n        this.textOffsetX_,\n        this.textOffsetY_,\n        geometryWidths,\n      ]);\n\n      this.endGeometry(feature);\n    }\n  }\n\n  /**\n   * @private\n   */\n  saveTextStates_() {\n    const strokeState = this.textStrokeState_;\n    const textState = this.textState_;\n    const fillState = this.textFillState_;\n\n    const strokeKey = this.strokeKey_;\n    if (strokeState) {\n      if (!(strokeKey in this.strokeStates)) {\n        this.strokeStates[strokeKey] = {\n          strokeStyle: strokeState.strokeStyle,\n          lineCap: strokeState.lineCap,\n          lineDashOffset: strokeState.lineDashOffset,\n          lineWidth: strokeState.lineWidth,\n          lineJoin: strokeState.lineJoin,\n          miterLimit: strokeState.miterLimit,\n          lineDash: strokeState.lineDash,\n        };\n      }\n    }\n    const textKey = this.textKey_;\n    if (!(textKey in this.textStates)) {\n      this.textStates[textKey] = {\n        font: textState.font,\n        textAlign: textState.textAlign || defaultTextAlign,\n        justify: textState.justify,\n        textBaseline: textState.textBaseline || defaultTextBaseline,\n        scale: textState.scale,\n      };\n    }\n    const fillKey = this.fillKey_;\n    if (fillState) {\n      if (!(fillKey in this.fillStates)) {\n        this.fillStates[fillKey] = {\n          fillStyle: fillState.fillStyle,\n        };\n      }\n    }\n  }\n\n  /**\n   * @private\n   * @param {number} begin Begin.\n   * @param {number} end End.\n   */\n  drawChars_(begin, end) {\n    const strokeState = this.textStrokeState_;\n    const textState = this.textState_;\n\n    const strokeKey = this.strokeKey_;\n    const textKey = this.textKey_;\n    const fillKey = this.fillKey_;\n    this.saveTextStates_();\n\n    const pixelRatio = this.pixelRatio;\n    const baseline = TEXT_ALIGN[textState.textBaseline];\n\n    const offsetY = this.textOffsetY_ * pixelRatio;\n    const text = this.text_;\n    const strokeWidth = strokeState\n      ? (strokeState.lineWidth * Math.abs(textState.scale[0])) / 2\n      : 0;\n\n    this.instructions.push([\n      CanvasInstruction.DRAW_CHARS,\n      begin,\n      end,\n      baseline,\n      textState.overflow,\n      fillKey,\n      textState.maxAngle,\n      pixelRatio,\n      offsetY,\n      strokeKey,\n      strokeWidth * pixelRatio,\n      text,\n      textKey,\n      1,\n      this.declutterMode_,\n      this.textKeepUpright_,\n    ]);\n    this.hitDetectionInstructions.push([\n      CanvasInstruction.DRAW_CHARS,\n      begin,\n      end,\n      baseline,\n      textState.overflow,\n      fillKey ? defaultFillStyle : fillKey,\n      textState.maxAngle,\n      pixelRatio,\n      offsetY,\n      strokeKey,\n      strokeWidth * pixelRatio,\n      text,\n      textKey,\n      1 / pixelRatio,\n      this.declutterMode_,\n      this.textKeepUpright_,\n    ]);\n  }\n\n  /**\n   * @param {import(\"../../style/Text.js\").default} textStyle Text style.\n   * @param {Object} [sharedData] Shared data.\n   * @override\n   */\n  setTextStyle(textStyle, sharedData) {\n    let textState, fillState, strokeState;\n    if (!textStyle) {\n      this.text_ = '';\n    } else {\n      const textFillStyle = textStyle.getFill();\n      if (!textFillStyle) {\n        fillState = null;\n        this.textFillState_ = fillState;\n      } else {\n        fillState = this.textFillState_;\n        if (!fillState) {\n          fillState = /** @type {import(\"../canvas.js\").FillState} */ ({});\n          this.textFillState_ = fillState;\n        }\n        fillState.fillStyle = asColorLike(\n          textFillStyle.getColor() || defaultFillStyle,\n        );\n      }\n\n      const textStrokeStyle = textStyle.getStroke();\n      if (!textStrokeStyle) {\n        strokeState = null;\n        this.textStrokeState_ = strokeState;\n      } else {\n        strokeState = this.textStrokeState_;\n        if (!strokeState) {\n          strokeState = /** @type {import(\"../canvas.js\").StrokeState} */ ({});\n          this.textStrokeState_ = strokeState;\n        }\n        const lineDash = textStrokeStyle.getLineDash();\n        const lineDashOffset = textStrokeStyle.getLineDashOffset();\n        const lineWidth = textStrokeStyle.getWidth();\n        const miterLimit = textStrokeStyle.getMiterLimit();\n        strokeState.lineCap = textStrokeStyle.getLineCap() || defaultLineCap;\n        strokeState.lineDash = lineDash ? lineDash.slice() : defaultLineDash;\n        strokeState.lineDashOffset =\n          lineDashOffset === undefined ? defaultLineDashOffset : lineDashOffset;\n        strokeState.lineJoin = textStrokeStyle.getLineJoin() || defaultLineJoin;\n        strokeState.lineWidth =\n          lineWidth === undefined ? defaultLineWidth : lineWidth;\n        strokeState.miterLimit =\n          miterLimit === undefined ? defaultMiterLimit : miterLimit;\n        strokeState.strokeStyle = asColorLike(\n          textStrokeStyle.getColor() || defaultStrokeStyle,\n        );\n      }\n\n      textState = this.textState_;\n      const font = textStyle.getFont() || defaultFont;\n      registerFont(font);\n      const textScale = textStyle.getScaleArray();\n      textState.overflow = textStyle.getOverflow();\n      textState.font = font;\n      textState.maxAngle = textStyle.getMaxAngle();\n      textState.placement = textStyle.getPlacement();\n      textState.textAlign = textStyle.getTextAlign();\n      textState.repeat = textStyle.getRepeat();\n      textState.justify = textStyle.getJustify();\n      textState.textBaseline =\n        textStyle.getTextBaseline() || defaultTextBaseline;\n      textState.backgroundFill = textStyle.getBackgroundFill();\n      textState.backgroundStroke = textStyle.getBackgroundStroke();\n      textState.padding = textStyle.getPadding() || defaultPadding;\n      textState.scale = textScale === undefined ? [1, 1] : textScale;\n\n      const textOffsetX = textStyle.getOffsetX();\n      const textOffsetY = textStyle.getOffsetY();\n      const textRotateWithView = textStyle.getRotateWithView();\n      const textKeepUpright = textStyle.getKeepUpright();\n      const textRotation = textStyle.getRotation();\n      this.text_ = textStyle.getText() || '';\n      this.textOffsetX_ = textOffsetX === undefined ? 0 : textOffsetX;\n      this.textOffsetY_ = textOffsetY === undefined ? 0 : textOffsetY;\n      this.textRotateWithView_ =\n        textRotateWithView === undefined ? false : textRotateWithView;\n      this.textKeepUpright_ =\n        textKeepUpright === undefined ? true : textKeepUpright;\n      this.textRotation_ = textRotation === undefined ? 0 : textRotation;\n\n      this.strokeKey_ = strokeState\n        ? (typeof strokeState.strokeStyle == 'string'\n            ? strokeState.strokeStyle\n            : getUid(strokeState.strokeStyle)) +\n          strokeState.lineCap +\n          strokeState.lineDashOffset +\n          '|' +\n          strokeState.lineWidth +\n          strokeState.lineJoin +\n          strokeState.miterLimit +\n          '[' +\n          strokeState.lineDash.join() +\n          ']'\n        : '';\n      this.textKey_ =\n        textState.font +\n        textState.scale +\n        (textState.textAlign || '?') +\n        (textState.repeat || '?') +\n        (textState.justify || '?') +\n        (textState.textBaseline || '?');\n      this.fillKey_ =\n        fillState && fillState.fillStyle\n          ? typeof fillState.fillStyle == 'string'\n            ? fillState.fillStyle\n            : '|' + getUid(fillState.fillStyle)\n          : '';\n    }\n    this.declutterMode_ = textStyle.getDeclutterMode();\n    this.declutterImageWithText_ = sharedData;\n  }\n}\n\nexport default CanvasTextBuilder;\n","/**\n * @module ol/render/canvas/BuilderGroup\n */\n\nimport Builder from './Builder.js';\nimport ImageBuilder from './ImageBuilder.js';\nimport LineStringBuilder from './LineStringBuilder.js';\nimport PolygonBuilder from './PolygonBuilder.js';\nimport TextBuilder from './TextBuilder.js';\n\n/**\n * @type {Object<import(\"../canvas.js\").BuilderType, typeof Builder>}\n */\nconst BATCH_CONSTRUCTORS = {\n  'Circle': PolygonBuilder,\n  'Default': Builder,\n  'Image': ImageBuilder,\n  'LineString': LineStringBuilder,\n  'Polygon': PolygonBuilder,\n  'Text': TextBuilder,\n};\n\nclass BuilderGroup {\n  /**\n   * @param {number} tolerance Tolerance.\n   * @param {import(\"../../extent.js\").Extent} maxExtent Max extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   */\n  constructor(tolerance, maxExtent, resolution, pixelRatio) {\n    /**\n     * @private\n     * @type {number}\n     */\n    this.tolerance_ = tolerance;\n\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.maxExtent_ = maxExtent;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ = pixelRatio;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.resolution_ = resolution;\n\n    /**\n     * @private\n     * @type {!Object<string, !Object<import(\"../canvas.js\").BuilderType, Builder>>}\n     */\n    this.buildersByZIndex_ = {};\n  }\n\n  /**\n   * @return {!Object<string, !Object<import(\"../canvas.js\").BuilderType, import(\"./Builder.js\").SerializableInstructions>>} The serializable instructions\n   */\n  finish() {\n    const builderInstructions = {};\n    for (const zKey in this.buildersByZIndex_) {\n      builderInstructions[zKey] = builderInstructions[zKey] || {};\n      const builders = this.buildersByZIndex_[zKey];\n      for (const builderKey in builders) {\n        const builderInstruction = builders[builderKey].finish();\n        builderInstructions[zKey][builderKey] = builderInstruction;\n      }\n    }\n    return builderInstructions;\n  }\n\n  /**\n   * @param {number|undefined} zIndex Z index.\n   * @param {import(\"../canvas.js\").BuilderType} builderType Replay type.\n   * @return {import(\"../VectorContext.js\").default} Replay.\n   */\n  getBuilder(zIndex, builderType) {\n    const zIndexKey = zIndex !== undefined ? zIndex.toString() : '0';\n    let replays = this.buildersByZIndex_[zIndexKey];\n    if (replays === undefined) {\n      replays = {};\n      this.buildersByZIndex_[zIndexKey] = replays;\n    }\n    let replay = replays[builderType];\n    if (replay === undefined) {\n      const Constructor = BATCH_CONSTRUCTORS[builderType];\n      replay = new Constructor(\n        this.tolerance_,\n        this.maxExtent_,\n        this.resolution_,\n        this.pixelRatio_,\n      );\n      replays[builderType] = replay;\n    }\n    return replay;\n  }\n}\n\nexport default BuilderGroup;\n","/**\n * @module ol/geom/flat/length\n */\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Length.\n */\nexport function lineStringLength(flatCoordinates, offset, end, stride) {\n  let x1 = flatCoordinates[offset];\n  let y1 = flatCoordinates[offset + 1];\n  let length = 0;\n  for (let i = offset + stride; i < end; i += stride) {\n    const x2 = flatCoordinates[i];\n    const y2 = flatCoordinates[i + 1];\n    length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n    x1 = x2;\n    y1 = y2;\n  }\n  return length;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Perimeter.\n */\nexport function linearRingLength(flatCoordinates, offset, end, stride) {\n  let perimeter = lineStringLength(flatCoordinates, offset, end, stride);\n  const dx = flatCoordinates[end - stride] - flatCoordinates[offset];\n  const dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];\n  perimeter += Math.sqrt(dx * dx + dy * dy);\n  return perimeter;\n}\n","import {angleBetween} from '../../coordinate.js';\n\n/**\n * Offsets a line string to the left / right along its segments direction.\n * Offset is applied to each segment of the line in the direciton of the segment normal (positive offset goes \"right\" relative to the line direction).\n * For very sharp angles between segments, the function falls back to offsetting along the segment normal direction to avoid excessively long miters.\n *\n * Coordinates and the offset should be in the same units — either pixels or the same spatial reference system as the input line coordinates.\n *\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} stride Stride.\n * @param {number} offset Offset distance along the segment normal direction.\n *   Positive values offset to the right relative to the direction of the line.\n *   Negative values offset to the left.\n * @param {boolean} isClosedRing If coordinates build a closed circle (in this the first and the last coordinate offsets will consider previous / next ring coordinate)\n * @param {Array<number>} [dest] Destination coordinate array. If not provided a new one will be created\n * @param {number} [destinationStride] Stride of destination coordinates. If unspecified, assumed to be same as the source coordinates stride.\n * @return {Array<number>} Result flat coordinates of the offset line.\n */\nexport function offsetLineString(\n  flatCoordinates,\n  stride,\n  offset,\n  isClosedRing,\n  dest,\n  destinationStride,\n) {\n  dest = dest ?? [];\n  destinationStride = destinationStride ?? stride;\n\n  const firstPointX = flatCoordinates[0];\n  const firstPointY = flatCoordinates[1];\n  const secondToLastPointX = flatCoordinates[flatCoordinates.length - 4];\n  const secondToLastPointY = flatCoordinates[flatCoordinates.length - 3];\n  let x, y, prevX, prevY, nextX, nextY, offsetX, offsetY;\n\n  let i = 0;\n  for (let j = 0; j < flatCoordinates.length; j += stride) {\n    // 1. Detect previous and next coordinates of a current vertex\n    prevX = x;\n    prevY = y;\n    nextX = undefined;\n    nextY = undefined;\n    if (j + stride < flatCoordinates.length) {\n      nextX = flatCoordinates[j + stride];\n      nextY = flatCoordinates[j + stride + 1];\n    }\n    // First coordinate of a closed ring -> previous coordinate is the second to last one\n    if (isClosedRing && j === 0) {\n      prevX = secondToLastPointX;\n      prevY = secondToLastPointY;\n    }\n    // Last coordinate of a closed ring -> next coordinate is the first vertex of a line string\n    if (isClosedRing && j === flatCoordinates.length - 2) {\n      // last coordinate\n      nextX = firstPointX;\n      nextY = firstPointY;\n    }\n\n    // 2. Current vertex to offset\n    x = flatCoordinates[j];\n    y = flatCoordinates[j + 1];\n\n    // 3. Offset the vertex\n    [offsetX, offsetY] = offsetLineVertex(\n      x,\n      y,\n      prevX,\n      prevY,\n      nextX,\n      nextY,\n      offset,\n    );\n    dest[i++] = offsetX;\n    dest[i++] = offsetY;\n\n    // 4. Copy over other dimension values if any\n    for (let k = 2; k < destinationStride; k++) {\n      dest[i++] = flatCoordinates[j + k];\n    }\n  }\n\n  if (dest.length != i) {\n    dest.length = i;\n  }\n  return dest;\n}\n\n/**\n * Computes the offset of a single vertex of a line string.\n *\n * The function calculates a new vertex coordinate offset along the normal/miter direction of the line at this vertex.\n * Offset is applied along the segment normal (positive offset goes \"right\" relative to the line direction).\n * It handles first and last vertices (caps) as well as joins between two segments (mitering).\n * For very sharp angles, the function falls back to offsetting along the segment normal direction to avoid excessively long miters.\n *\n * Coordinates and the offset should be in the same units — either pixels or the same spatial reference system as the input line coordinates.\n *\n * @param {number} x Vertex x-coordinate.\n * @param {number} y Vertex y-coordinate.\n * @param {number|undefined} prevX Previous vertex x-coordinate.\n *   Pass undefined if computing the offset for the first vertex (no previous vertex).\n * @param {number|undefined} prevY Previous vertex y-coordinate.\n *   Pass undefined if computing the offset for the first vertex (no previous vertex).\n * @param {number|undefined} nextX Next vertex x-coordinate.\n *   Pass undefined if computing the offset for the last vertex (no next vertex).\n * @param {number|undefined} nextY Next vertex y-coordinate.\n *   Pass undefined if computing the offset for the last vertex (no next vertex).\n * @param {number} offset Offset distance along the segment normal direction.\n *   Positive values offset to the right relative to the direction from previous to next vertex.\n *   Negative values offset to the left.\n * @return {import(\"../../coordinate.js\").Coordinate} Offset vertex coordinate as `[x, y]`.\n */\nexport function offsetLineVertex(x, y, prevX, prevY, nextX, nextY, offset) {\n  // Compute segment direction\n  let nx, ny;\n  if (prevX !== undefined && prevY !== undefined) {\n    nx = x - prevX;\n    ny = y - prevY;\n  } else if (nextX !== undefined && nextY !== undefined) {\n    nx = nextX - x;\n    ny = nextY - y;\n  } else {\n    // no next, no previous point given -> just assume some default (horizontal) direction\n    nx = 1;\n    ny = 0;\n  }\n\n  // Normalize -> tangent\n  const len = Math.hypot(nx, ny);\n  const tx = nx / len;\n  const ty = ny / len;\n\n  // Rotate tangent 90° -> normal\n  nx = -ty;\n  ny = tx;\n\n  // First / last vertex -> offset the point in the direction of the normal vector\n  if (prevX === undefined || prevY === undefined) {\n    return [x + nx * offset, y + ny * offset];\n  }\n  if (nextX === undefined || nextY === undefined) {\n    return [x + nx * offset, y + ny * offset];\n  }\n\n  // Compute join angle - angle between 2 segments of the vertex.\n  const joinAngle = angleBetween([x, y], [prevX, prevY], [nextX, nextY]);\n\n  // Avoid huge or infinite miter joins for very sharp angles, offset in the segment direction in this case.\n  if (Math.cos(joinAngle) > 0.998) {\n    return [x + tx * offset, y + ty * offset];\n  }\n\n  // Compute join offset direction.\n  // We rotate the normal vector by half of the join angle.\n  // This gives the direction of the miter at the vertex.\n  const cos = Math.cos(joinAngle / 2);\n  const sin = Math.sin(joinAngle / 2);\n\n  // Rotate the normal vector (nx, ny) by half of the join angle.\n  // bx/by = bisector direction before normalization\n  const bx = sin * nx + cos * ny;\n  const by = -cos * nx + sin * ny;\n\n  // Scale the bisector so that moving along it preserves the correct offset distance.\n  // Dividing by sin(half of angle) converts the bisector into the true miter vector.\n  // (This expands the miter for sharp angles and shortens it for wide ones.)\n  const dx = bx * (1 / sin);\n  const dy = by * (1 / sin);\n\n  // Offset final vertex along miter direction\n  return [x + dx * offset, y + dy * offset];\n}\n","/**\n * @module ol/geom/flat/textpath\n */\nimport {lerp} from '../../math.js';\nimport {rotate} from './transform.js';\n\n/**\n * @param {Array<number>} flatCoordinates Path to put text on.\n * @param {number} offset Start offset of the `flatCoordinates`.\n * @param {number} end End offset of the `flatCoordinates`.\n * @param {number} stride Stride.\n * @param {string} text Text to place on the path.\n * @param {number} startM m along the path where the text starts.\n * @param {number} maxAngle Max angle between adjacent chars in radians.\n * @param {number} scale The product of the text scale and the device pixel ratio.\n * @param {function(string, string, Object<string, number>):number} measureAndCacheTextWidth Measure and cache text width.\n * @param {string} font The font.\n * @param {Object<string, number>} cache A cache of measured widths.\n * @param {number} rotation Rotation to apply to the flatCoordinates to determine whether text needs to be reversed.\n * @param {boolean} keepUpright Whether the text needs to be kept upright\n * @return {Array<Array<*>>|null} The result array (or null if `maxAngle` was\n * exceeded). Entries of the array are x, y, anchorX, angle, chunk.\n */\nexport function drawTextOnPath(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  text,\n  startM,\n  maxAngle,\n  scale,\n  measureAndCacheTextWidth,\n  font,\n  cache,\n  rotation,\n  keepUpright = true,\n) {\n  let x2 = flatCoordinates[offset];\n  let y2 = flatCoordinates[offset + 1];\n  let x1 = 0;\n  let y1 = 0;\n  let segmentLength = 0;\n  let segmentM = 0;\n\n  function advance() {\n    x1 = x2;\n    y1 = y2;\n    offset += stride;\n    x2 = flatCoordinates[offset];\n    y2 = flatCoordinates[offset + 1];\n    segmentM += segmentLength;\n    segmentLength = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n  }\n  do {\n    advance();\n  } while (offset < end - stride && segmentM + segmentLength < startM);\n\n  let interpolate =\n    segmentLength === 0 ? 0 : (startM - segmentM) / segmentLength;\n  const beginX = lerp(x1, x2, interpolate);\n  const beginY = lerp(y1, y2, interpolate);\n\n  const startOffset = offset - stride;\n  const startLength = segmentM;\n  const endM = startM + scale * measureAndCacheTextWidth(font, text, cache);\n  while (offset < end - stride && segmentM + segmentLength < endM) {\n    advance();\n  }\n  interpolate = segmentLength === 0 ? 0 : (endM - segmentM) / segmentLength;\n  const endX = lerp(x1, x2, interpolate);\n  const endY = lerp(y1, y2, interpolate);\n\n  // Keep text upright if the option is selected\n  let reverse = false;\n  if (keepUpright) {\n    if (rotation) {\n      const flat = [beginX, beginY, endX, endY];\n      rotate(flat, 0, 4, 2, rotation, flat, flat);\n      reverse = flat[0] > flat[2];\n    } else {\n      reverse = beginX > endX;\n    }\n  }\n\n  const PI = Math.PI;\n  const result = [];\n  const singleSegment = startOffset + stride === offset;\n\n  offset = startOffset;\n  segmentLength = 0;\n  segmentM = startLength;\n  x2 = flatCoordinates[offset];\n  y2 = flatCoordinates[offset + 1];\n\n  let previousAngle;\n  // All on the same segment\n  if (singleSegment) {\n    advance();\n\n    previousAngle = Math.atan2(y2 - y1, x2 - x1);\n    if (reverse) {\n      previousAngle += previousAngle > 0 ? -PI : PI;\n    }\n    const x = (endX + beginX) / 2;\n    const y = (endY + beginY) / 2;\n    result[0] = [x, y, (endM - startM) / 2, previousAngle, text];\n    return result;\n  }\n\n  // rendering across line segments\n  text = text.replace(/\\n/g, ' '); // ensure rendering in single-line as all calculations below don't handle multi-lines\n\n  for (let i = 0, ii = text.length; i < ii; ) {\n    advance();\n    let angle = Math.atan2(y2 - y1, x2 - x1);\n    if (reverse) {\n      angle += angle > 0 ? -PI : PI;\n    }\n    if (previousAngle !== undefined) {\n      let delta = angle - previousAngle;\n      delta += delta > PI ? -2 * PI : delta < -PI ? 2 * PI : 0;\n      if (Math.abs(delta) > maxAngle) {\n        return null;\n      }\n    }\n    previousAngle = angle;\n\n    const iStart = i;\n    let charLength = 0;\n    for (; i < ii; ++i) {\n      const index = reverse ? ii - i - 1 : i;\n      const len = scale * measureAndCacheTextWidth(font, text[index], cache);\n      if (\n        offset + stride < end &&\n        segmentM + segmentLength < startM + charLength + len / 2\n      ) {\n        break;\n      }\n      charLength += len;\n    }\n    if (i === iStart) {\n      continue;\n    }\n    const chars = reverse\n      ? text.substring(ii - iStart, ii - i)\n      : text.substring(iStart, i);\n    interpolate =\n      segmentLength === 0\n        ? 0\n        : (startM + charLength / 2 - segmentM) / segmentLength;\n    const x = lerp(x1, x2, interpolate);\n    const y = lerp(y1, y2, interpolate);\n    result.push([x, y, charLength / 2, angle, chars]);\n    startM += charLength;\n  }\n  return result;\n}\n","/**\n * @module ol/render/canvas/ZIndexContext\n */\n\nimport {getSharedCanvasContext2D} from '../../dom.js';\n\n/** @typedef {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D & {globalAlpha: any}} ZIndexContextProxy */\n\n/**\n * @extends {CanvasRenderingContext2D}\n */\nclass ZIndexContext {\n  constructor() {\n    /**\n     * @private\n     * @type {Array<Array<*>>}\n     */\n    this.instructions_ = [];\n    /**\n     * @type {number}\n     */\n    this.zIndex = 0;\n    /**\n     * @private\n     * @type {number}\n     */\n    this.offset_ = 0;\n\n    /**\n     * @private\n     * @type {ZIndexContextProxy}\n     */\n    this.context_ = /** @type {ZIndexContextProxy} */ (\n      new Proxy(getSharedCanvasContext2D(), {\n        get: (target, property) => {\n          if (\n            typeof (/** @type {*} */ (getSharedCanvasContext2D())[property]) !==\n            'function'\n          ) {\n            // we only accept calling functions on the proxy, not accessing properties\n            return undefined;\n          }\n          this.push_(property);\n          return this.pushMethodArgs_;\n        },\n        set: (target, property, value) => {\n          this.push_(property, value);\n          return true;\n        },\n      })\n    );\n  }\n\n  /**\n   * @param {...*} args Arguments to push to the instructions array.\n   * @private\n   */\n  push_(...args) {\n    const instructions = this.instructions_;\n    const index = this.zIndex + this.offset_;\n    if (!instructions[index]) {\n      instructions[index] = [];\n    }\n    instructions[index].push(...args);\n  }\n\n  /**\n   * @private\n   * @param {...*} args Args.\n   * @return {ZIndexContext} This.\n   */\n  pushMethodArgs_ = (...args) => {\n    this.push_(args);\n    return this;\n  };\n\n  /**\n   * Push a function that renders to the context directly.\n   * @param {function(CanvasRenderingContext2D): void} render Function.\n   */\n  pushFunction(render) {\n    this.push_(render);\n  }\n\n  /**\n   * Get a proxy for CanvasRenderingContext2D which does not support getting state\n   * (e.g. `context.globalAlpha`, which will return `undefined`). To set state, if it relies on a\n   * previous state (e.g. `context.globalAlpha = context.globalAlpha / 2`), set a function,\n   * e.g. `context.globalAlpha = (context) => context.globalAlpha / 2`.\n   * @return {ZIndexContextProxy} Context.\n   */\n  getContext() {\n    return this.context_;\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   */\n  draw(context) {\n    this.instructions_.forEach((instructionsAtIndex) => {\n      for (let i = 0, ii = instructionsAtIndex.length; i < ii; ++i) {\n        const property = instructionsAtIndex[i];\n        if (typeof property === 'function') {\n          property(context);\n          continue;\n        }\n        const instructionAtIndex = instructionsAtIndex[++i];\n        if (typeof (/** @type {*} */ (context)[property]) === 'function') {\n          /** @type {*} */ (context)[property](...instructionAtIndex);\n        } else {\n          if (typeof instructionAtIndex === 'function') {\n            /** @type {*} */ (context)[property] = instructionAtIndex(context);\n            continue;\n          }\n          /** @type {*} */ (context)[property] = instructionAtIndex;\n        }\n      }\n    });\n  }\n\n  clear() {\n    this.instructions_.length = 0;\n    this.zIndex = 0;\n    this.offset_ = 0;\n  }\n\n  /**\n   * Offsets the zIndex by the highest current zIndex. Useful for rendering multiple worlds or tiles, to\n   * avoid conflicting context.clip() or context.save()/restore() calls.\n   */\n  offset() {\n    this.offset_ = this.instructions_.length;\n    this.zIndex = 0;\n  }\n}\n\nexport default ZIndexContext;\n","/**\n * @module ol/render/canvas/Executor\n */\nimport {equals} from '../../array.js';\nimport {createEmpty, createOrUpdate, intersects} from '../../extent.js';\nimport {lineStringLength} from '../../geom/flat/length.js';\nimport {offsetLineVertex} from '../../geom/flat/lineoffset.js';\nimport {drawTextOnPath} from '../../geom/flat/textpath.js';\nimport {transform2D} from '../../geom/flat/transform.js';\nimport {\n  apply as applyTransform,\n  compose as composeTransform,\n  create as createTransform,\n  setFromArray as transformSetFromArray,\n} from '../../transform.js';\nimport ZIndexContext from '../canvas/ZIndexContext.js';\nimport {\n  defaultPadding,\n  defaultTextAlign,\n  defaultTextBaseline,\n  drawImageOrLabel,\n  getTextDimensions,\n  measureAndCacheTextWidth,\n} from '../canvas.js';\nimport CanvasInstruction from './Instruction.js';\nimport {TEXT_ALIGN} from './TextBuilder.js';\n\n/**\n * @typedef {import('../../structs/RBush.js').Entry<import('../../Feature.js').FeatureLike>} DeclutterEntry\n */\n\n/**\n * @typedef {Object} ImageOrLabelDimensions\n * @property {number} drawImageX DrawImageX.\n * @property {number} drawImageY DrawImageY.\n * @property {number} drawImageW DrawImageW.\n * @property {number} drawImageH DrawImageH.\n * @property {number} originX OriginX.\n * @property {number} originY OriginY.\n * @property {Array<number>} scale Scale.\n * @property {DeclutterEntry} declutterBox DeclutterBox.\n * @property {import(\"../../transform.js\").Transform} canvasTransform CanvasTransform.\n */\n\n/**\n * @typedef {{0: CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D, 1: import('../../size.js').Size, 2: import(\"../canvas.js\").Label|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement, 3: ImageOrLabelDimensions, 4: number, 5: Array<*>, 6: Array<*>}} ReplayImageOrLabelArgs\n */\n\n/**\n * @template T\n * @typedef {function(import(\"../../Feature.js\").FeatureLike, import(\"../../geom/SimpleGeometry.js\").default, import(\"../../style/Style.js\").DeclutterMode): T} FeatureCallback\n */\n\n/**\n * @type {import(\"../../extent.js\").Extent}\n */\nconst tmpExtent = createEmpty();\n\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nconst p1 = [];\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nconst p2 = [];\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nconst p3 = [];\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nconst p4 = [];\n\n/**\n * @param {ReplayImageOrLabelArgs} replayImageOrLabelArgs Arguments to replayImageOrLabel\n * @return {DeclutterEntry} Declutter rbush entry.\n */\nfunction getDeclutterBox(replayImageOrLabelArgs) {\n  return replayImageOrLabelArgs[3].declutterBox;\n}\n\nconst rtlRegEx = new RegExp(\n  /* eslint-disable prettier/prettier */\n  '[' +\n    String.fromCharCode(0x00591) + '-' + String.fromCharCode(0x008ff) +\n    String.fromCharCode(0x0fb1d) + '-' + String.fromCharCode(0x0fdff) +\n    String.fromCharCode(0x0fe70) + '-' + String.fromCharCode(0x0fefc) +\n    String.fromCharCode(0x10800) + '-' + String.fromCharCode(0x10fff) +\n    String.fromCharCode(0x1e800) + '-' + String.fromCharCode(0x1efff) +\n  ']'\n  /* eslint-enable prettier/prettier */\n);\n\n/**\n * @param {string} text Text.\n * @param {CanvasTextAlign} align Alignment.\n * @return {number} Text alignment.\n */\nfunction horizontalTextAlign(text, align) {\n  if (align === 'start') {\n    align = rtlRegEx.test(text) ? 'right' : 'left';\n  } else if (align === 'end') {\n    align = rtlRegEx.test(text) ? 'left' : 'right';\n  }\n  return TEXT_ALIGN[align];\n}\n\n/**\n * @param {Array<string>} acc Accumulator.\n * @param {string} line Line of text.\n * @param {number} i Index\n * @return {Array<string>} Accumulator.\n */\nfunction createTextChunks(acc, line, i) {\n  if (i > 0) {\n    acc.push('\\n', '');\n  }\n  acc.push(line, '');\n  return acc;\n}\n\n/**\n * Converts rich text to plain text for text along lines.\n * @param {string} result The resulting plain text.\n * @param {string} part Item of the rich text array.\n * @param {number} index Index of the item in the rich text array.\n * @return {string} The resulting plain text.\n */\nfunction richTextToPlainText(result, part, index) {\n  if (index % 2 === 0) {\n    result += part;\n  }\n  return result;\n}\n\nclass Executor {\n  /**\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {boolean} overlaps The replay can have overlapping geometries.\n   * @param {import(\"../canvas.js\").SerializableInstructions} instructions The serializable instructions.\n   * @param {boolean} [deferredRendering] Enable deferred rendering.\n   */\n  constructor(\n    resolution,\n    pixelRatio,\n    overlaps,\n    instructions,\n    deferredRendering,\n  ) {\n    /**\n     * @protected\n     * @type {boolean}\n     */\n    this.overlaps = overlaps;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.pixelRatio = pixelRatio;\n\n    /**\n     * @protected\n     * @const\n     * @type {number}\n     */\n    this.resolution = resolution;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.alignAndScaleFill_;\n\n    /**\n     * @protected\n     * @type {Array<*>}\n     */\n    this.instructions = instructions.instructions;\n\n    /**\n     * @protected\n     * @type {Array<number>}\n     */\n    this.coordinates = instructions.coordinates;\n\n    /**\n     * @private\n     * @type {!Object<number,import(\"../../coordinate.js\").Coordinate|Array<import(\"../../coordinate.js\").Coordinate>|Array<Array<import(\"../../coordinate.js\").Coordinate>>>}\n     */\n    this.coordinateCache_ = {};\n\n    /**\n     * @private\n     * @type {!import(\"../../transform.js\").Transform}\n     */\n    this.renderedTransform_ = createTransform();\n\n    /**\n     * @protected\n     * @type {Array<*>}\n     */\n    this.hitDetectionInstructions = instructions.hitDetectionInstructions;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.pixelCoordinates_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.viewRotation_ = 0;\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").FillState>}\n     */\n    this.fillStates = instructions.fillStates || {};\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").StrokeState>}\n     */\n    this.strokeStates = instructions.strokeStates || {};\n\n    /**\n     * @type {!Object<string, import(\"../canvas.js\").TextState>}\n     */\n    this.textStates = instructions.textStates || {};\n\n    /**\n     * @private\n     * @type {Object<string, Object<string, number>>}\n     */\n    this.widths_ = {};\n\n    /**\n     * @private\n     * @type {Object<string, import(\"../canvas.js\").Label>}\n     */\n    this.labels_ = {};\n\n    /**\n     * @private\n     * @type {import(\"../canvas/ZIndexContext.js\").default}\n     */\n    this.zIndexContext_ = deferredRendering ? new ZIndexContext() : null;\n  }\n\n  /**\n   * @return {ZIndexContext} ZIndex context.\n   */\n  getZIndexContext() {\n    return this.zIndexContext_;\n  }\n\n  /**\n   * @param {string|Array<string>} text Text.\n   * @param {string} textKey Text style key.\n   * @param {string} fillKey Fill style key.\n   * @param {string} strokeKey Stroke style key.\n   * @return {import(\"../canvas.js\").Label} Label.\n   */\n  createLabel(text, textKey, fillKey, strokeKey) {\n    const key = text + textKey + fillKey + strokeKey;\n    if (this.labels_[key]) {\n      return this.labels_[key];\n    }\n    const strokeState = strokeKey ? this.strokeStates[strokeKey] : null;\n    const fillState = fillKey ? this.fillStates[fillKey] : null;\n    const textState = this.textStates[textKey];\n    const pixelRatio = this.pixelRatio;\n    const scale = [\n      textState.scale[0] * pixelRatio,\n      textState.scale[1] * pixelRatio,\n    ];\n    const align = textState.justify\n      ? TEXT_ALIGN[textState.justify]\n      : horizontalTextAlign(\n          Array.isArray(text) ? text[0] : text,\n          textState.textAlign || defaultTextAlign,\n        );\n    const strokeWidth =\n      strokeKey && strokeState.lineWidth ? strokeState.lineWidth : 0;\n\n    const chunks = Array.isArray(text)\n      ? text\n      : String(text).split('\\n').reduce(createTextChunks, []);\n\n    const {width, height, widths, heights, lineWidths} = getTextDimensions(\n      textState,\n      chunks,\n    );\n    const renderWidth = width + strokeWidth;\n    const contextInstructions = [];\n    // make canvas 2 pixels wider to account for italic text width measurement errors\n    const w = (renderWidth + 2) * scale[0];\n    const h = (height + strokeWidth) * scale[1];\n    /** @type {import(\"../canvas.js\").Label} */\n    const label = {\n      width: w < 0 ? Math.floor(w) : Math.ceil(w),\n      height: h < 0 ? Math.floor(h) : Math.ceil(h),\n      contextInstructions: contextInstructions,\n    };\n    if (scale[0] != 1 || scale[1] != 1) {\n      contextInstructions.push('scale', scale);\n    }\n    if (strokeKey) {\n      contextInstructions.push('strokeStyle', strokeState.strokeStyle);\n      contextInstructions.push('lineWidth', strokeWidth);\n      contextInstructions.push('lineCap', strokeState.lineCap);\n      contextInstructions.push('lineJoin', strokeState.lineJoin);\n      contextInstructions.push('miterLimit', strokeState.miterLimit);\n      contextInstructions.push('setLineDash', [strokeState.lineDash]);\n      contextInstructions.push('lineDashOffset', strokeState.lineDashOffset);\n    }\n    if (fillKey) {\n      contextInstructions.push('fillStyle', fillState.fillStyle);\n    }\n    contextInstructions.push('textBaseline', 'middle');\n    contextInstructions.push('textAlign', 'center');\n    const leftRight = 0.5 - align;\n    let x = align * renderWidth + leftRight * strokeWidth;\n    const strokeInstructions = [];\n    const fillInstructions = [];\n    let lineHeight = 0;\n    let lineOffset = 0;\n    let widthHeightIndex = 0;\n    let lineWidthIndex = 0;\n    let previousFont;\n    for (let i = 0, ii = chunks.length; i < ii; i += 2) {\n      const text = chunks[i];\n      if (text === '\\n') {\n        lineOffset += lineHeight;\n        lineHeight = 0;\n        x = align * renderWidth + leftRight * strokeWidth;\n        ++lineWidthIndex;\n        continue;\n      }\n      const font = chunks[i + 1] || textState.font;\n      if (font !== previousFont) {\n        if (strokeKey) {\n          strokeInstructions.push('font', font);\n        }\n        if (fillKey) {\n          fillInstructions.push('font', font);\n        }\n        previousFont = font;\n      }\n      lineHeight = Math.max(lineHeight, heights[widthHeightIndex]);\n      const fillStrokeArgs = [\n        text,\n        x +\n          leftRight * widths[widthHeightIndex] +\n          align * (widths[widthHeightIndex] - lineWidths[lineWidthIndex]),\n        0.5 * (strokeWidth + lineHeight) + lineOffset,\n      ];\n      x += widths[widthHeightIndex];\n      if (strokeKey) {\n        strokeInstructions.push('strokeText', fillStrokeArgs);\n      }\n      if (fillKey) {\n        fillInstructions.push('fillText', fillStrokeArgs);\n      }\n      ++widthHeightIndex;\n    }\n    Array.prototype.push.apply(contextInstructions, strokeInstructions);\n    Array.prototype.push.apply(contextInstructions, fillInstructions);\n    this.labels_[key] = label;\n    return label;\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import(\"../../coordinate.js\").Coordinate} p1 1st point of the background box.\n   * @param {import(\"../../coordinate.js\").Coordinate} p2 2nd point of the background box.\n   * @param {import(\"../../coordinate.js\").Coordinate} p3 3rd point of the background box.\n   * @param {import(\"../../coordinate.js\").Coordinate} p4 4th point of the background box.\n   * @param {Array<*>} fillInstruction Fill instruction.\n   * @param {Array<*>} strokeInstruction Stroke instruction.\n   */\n  replayTextBackground_(\n    context,\n    p1,\n    p2,\n    p3,\n    p4,\n    fillInstruction,\n    strokeInstruction,\n  ) {\n    context.beginPath();\n    context.moveTo.apply(context, p1);\n    context.lineTo.apply(context, p2);\n    context.lineTo.apply(context, p3);\n    context.lineTo.apply(context, p4);\n    context.lineTo.apply(context, p1);\n    if (fillInstruction) {\n      this.alignAndScaleFill_ = /** @type {number} */ (fillInstruction[2]);\n      context.fillStyle = /** @type {string} */ (fillInstruction[1]);\n      this.fill_(context);\n    }\n    if (strokeInstruction) {\n      this.setStrokeStyle_(\n        context,\n        /** @type {Array<*>} */ (strokeInstruction),\n      );\n      context.stroke();\n    }\n  }\n\n  /**\n   * @private\n   * @param {number} sheetWidth Width of the sprite sheet.\n   * @param {number} sheetHeight Height of the sprite sheet.\n   * @param {number} centerX X.\n   * @param {number} centerY Y.\n   * @param {number} width Width.\n   * @param {number} height Height.\n   * @param {number} anchorX Anchor X.\n   * @param {number} anchorY Anchor Y.\n   * @param {number} originX Origin X.\n   * @param {number} originY Origin Y.\n   * @param {number} rotation Rotation.\n   * @param {import(\"../../size.js\").Size} scale Scale.\n   * @param {boolean} snapToPixel Snap to pixel.\n   * @param {Array<number>} padding Padding.\n   * @param {boolean} fillStroke Background fill or stroke.\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @return {ImageOrLabelDimensions} Dimensions for positioning and decluttering the image or label.\n   */\n  calculateImageOrLabelDimensions_(\n    sheetWidth,\n    sheetHeight,\n    centerX,\n    centerY,\n    width,\n    height,\n    anchorX,\n    anchorY,\n    originX,\n    originY,\n    rotation,\n    scale,\n    snapToPixel,\n    padding,\n    fillStroke,\n    feature,\n  ) {\n    anchorX *= scale[0];\n    anchorY *= scale[1];\n    let x = centerX - anchorX;\n    let y = centerY - anchorY;\n\n    const w = width + originX > sheetWidth ? sheetWidth - originX : width;\n    const h = height + originY > sheetHeight ? sheetHeight - originY : height;\n    const boxW = padding[3] + w * scale[0] + padding[1];\n    const boxH = padding[0] + h * scale[1] + padding[2];\n    const boxX = x - padding[3];\n    const boxY = y - padding[0];\n\n    if (fillStroke || rotation !== 0) {\n      p1[0] = boxX;\n      p4[0] = boxX;\n      p1[1] = boxY;\n      p2[1] = boxY;\n      p2[0] = boxX + boxW;\n      p3[0] = p2[0];\n      p3[1] = boxY + boxH;\n      p4[1] = p3[1];\n    }\n\n    let transform;\n    if (rotation !== 0) {\n      transform = composeTransform(\n        createTransform(),\n        centerX,\n        centerY,\n        1,\n        1,\n        rotation,\n        -centerX,\n        -centerY,\n      );\n\n      applyTransform(transform, p1);\n      applyTransform(transform, p2);\n      applyTransform(transform, p3);\n      applyTransform(transform, p4);\n      createOrUpdate(\n        Math.min(p1[0], p2[0], p3[0], p4[0]),\n        Math.min(p1[1], p2[1], p3[1], p4[1]),\n        Math.max(p1[0], p2[0], p3[0], p4[0]),\n        Math.max(p1[1], p2[1], p3[1], p4[1]),\n        tmpExtent,\n      );\n    } else {\n      createOrUpdate(\n        Math.min(boxX, boxX + boxW),\n        Math.min(boxY, boxY + boxH),\n        Math.max(boxX, boxX + boxW),\n        Math.max(boxY, boxY + boxH),\n        tmpExtent,\n      );\n    }\n    if (snapToPixel) {\n      x = Math.round(x);\n      y = Math.round(y);\n    }\n    return {\n      drawImageX: x,\n      drawImageY: y,\n      drawImageW: w,\n      drawImageH: h,\n      originX: originX,\n      originY: originY,\n      declutterBox: {\n        minX: tmpExtent[0],\n        minY: tmpExtent[1],\n        maxX: tmpExtent[2],\n        maxY: tmpExtent[3],\n        value: feature,\n      },\n      canvasTransform: transform,\n      scale: scale,\n    };\n  }\n\n  /**\n   * @private\n   * @param {CanvasRenderingContext2D} context Context.\n   * @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size.\n   * @param {import(\"../canvas.js\").Label|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} imageOrLabel Image.\n   * @param {ImageOrLabelDimensions} dimensions Dimensions.\n   * @param {number} opacity Opacity.\n   * @param {Array<*>} fillInstruction Fill instruction.\n   * @param {Array<*>} strokeInstruction Stroke instruction.\n   * @return {boolean} The image or label was rendered.\n   */\n  replayImageOrLabel_(\n    context,\n    scaledCanvasSize,\n    imageOrLabel,\n    dimensions,\n    opacity,\n    fillInstruction,\n    strokeInstruction,\n  ) {\n    const fillStroke = !!(fillInstruction || strokeInstruction);\n\n    const box = dimensions.declutterBox;\n    const strokePadding = strokeInstruction\n      ? (strokeInstruction[2] * dimensions.scale[0]) / 2\n      : 0;\n    const intersects =\n      box.minX - strokePadding <= scaledCanvasSize[0] &&\n      box.maxX + strokePadding >= 0 &&\n      box.minY - strokePadding <= scaledCanvasSize[1] &&\n      box.maxY + strokePadding >= 0;\n\n    if (intersects) {\n      if (fillStroke) {\n        this.replayTextBackground_(\n          context,\n          p1,\n          p2,\n          p3,\n          p4,\n          /** @type {Array<*>} */ (fillInstruction),\n          /** @type {Array<*>} */ (strokeInstruction),\n        );\n      }\n      drawImageOrLabel(\n        context,\n        dimensions.canvasTransform,\n        opacity,\n        imageOrLabel,\n        dimensions.originX,\n        dimensions.originY,\n        dimensions.drawImageW,\n        dimensions.drawImageH,\n        dimensions.drawImageX,\n        dimensions.drawImageY,\n        dimensions.scale,\n      );\n    }\n    return true;\n  }\n\n  /**\n   * @private\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   */\n  fill_(context) {\n    const alignAndScale = this.alignAndScaleFill_;\n    if (alignAndScale) {\n      const origin = applyTransform(this.renderedTransform_, [0, 0]);\n      const repeatSize = 512 * this.pixelRatio;\n      context.save();\n      context.translate(origin[0] % repeatSize, origin[1] % repeatSize);\n      if (alignAndScale !== 1) {\n        context.scale(alignAndScale, alignAndScale);\n      }\n    }\n    context.fill();\n    if (alignAndScale) {\n      context.restore();\n    }\n  }\n\n  /**\n   * @private\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   * @param {Array<*>} instruction Instruction.\n   */\n  setStrokeStyle_(context, instruction) {\n    context.strokeStyle =\n      /** @type {import(\"../../colorlike.js\").ColorLike} */ (instruction[1]);\n    if (!instruction[1]) {\n      return;\n    }\n    context.lineWidth = /** @type {number} */ (instruction[2]);\n    context.lineCap = /** @type {CanvasLineCap} */ (instruction[3]);\n    context.lineJoin = /** @type {CanvasLineJoin} */ (instruction[4]);\n    context.miterLimit = /** @type {number} */ (instruction[5]);\n    context.lineDashOffset = /** @type {number} */ (instruction[7]);\n    context.setLineDash(/** @type {Array<number>} */ (instruction[6]));\n  }\n\n  /**\n   * @private\n   * @param {string|Array<string>} text The text to draw.\n   * @param {string} textKey The key of the text state.\n   * @param {string} strokeKey The key for the stroke state.\n   * @param {string} fillKey The key for the fill state.\n   * @return {{label: import(\"../canvas.js\").Label, anchorX: number, anchorY: number}} The text image and its anchor.\n   */\n  drawLabelWithPointPlacement_(text, textKey, strokeKey, fillKey) {\n    const textState = this.textStates[textKey];\n\n    const label = this.createLabel(text, textKey, fillKey, strokeKey);\n\n    const strokeState = this.strokeStates[strokeKey];\n    const pixelRatio = this.pixelRatio;\n    const align = horizontalTextAlign(\n      Array.isArray(text) ? text[0] : text,\n      textState.textAlign || defaultTextAlign,\n    );\n    const baseline = TEXT_ALIGN[textState.textBaseline || defaultTextBaseline];\n    const strokeWidth =\n      strokeState && strokeState.lineWidth ? strokeState.lineWidth : 0;\n\n    // Remove the 2 pixels we added in createLabel() for the anchor\n    const width = label.width / pixelRatio - 2 * textState.scale[0];\n    const anchorX = align * width + 2 * (0.5 - align) * strokeWidth;\n    const anchorY =\n      (baseline * label.height) / pixelRatio +\n      2 * (0.5 - baseline) * strokeWidth;\n\n    return {\n      label: label,\n      anchorX: anchorX,\n      anchorY: anchorY,\n    };\n  }\n\n  /**\n   * @private\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   * @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @param {Array<*>} instructions Instructions array.\n   * @param {boolean} snapToPixel Snap point symbols and text to integer pixels.\n   * @param {FeatureCallback<T>} [featureCallback] Feature callback.\n   * @param {import(\"../../extent.js\").Extent} [hitExtent] Only check\n   *     features that intersect this extent.\n   * @param {import(\"rbush\").default<DeclutterEntry>} [declutterTree] Declutter tree.\n   * @return {T|undefined} Callback result.\n   * @template T\n   */\n  execute_(\n    context,\n    scaledCanvasSize,\n    transform,\n    instructions,\n    snapToPixel,\n    featureCallback,\n    hitExtent,\n    declutterTree,\n  ) {\n    const zIndexContext = this.zIndexContext_;\n    /** @type {Array<number>} */\n    let pixelCoordinates;\n    if (this.pixelCoordinates_ && equals(transform, this.renderedTransform_)) {\n      pixelCoordinates = this.pixelCoordinates_;\n    } else {\n      if (!this.pixelCoordinates_) {\n        this.pixelCoordinates_ = [];\n      }\n      pixelCoordinates = transform2D(\n        this.coordinates,\n        0,\n        this.coordinates.length,\n        2,\n        transform,\n        this.pixelCoordinates_,\n      );\n      transformSetFromArray(this.renderedTransform_, transform);\n    }\n    let i = 0; // instruction index\n    const ii = instructions.length; // end of instructions\n    let d = 0; // data index\n    let dd; // end of per-instruction data\n    let anchorX,\n      anchorY,\n      lineOffsetPx,\n      /** @type {boolean} */ isClosedRing,\n      /** @type {number} */ dStart,\n      /** @type {import('../../style/Style.js').DeclutterMode} */\n      declutterMode,\n      prevX,\n      prevY,\n      roundX,\n      roundY,\n      image,\n      text,\n      textKey,\n      strokeKey,\n      fillKey;\n    let pendingFill = 0;\n    let pendingStroke = 0;\n    const coordinateCache = this.coordinateCache_;\n    const viewRotation = this.viewRotation_;\n    const viewRotationFromTransform =\n      Math.round(Math.atan2(-transform[1], transform[0]) * 1e12) / 1e12;\n\n    const state = /** @type {import(\"../../render.js\").State} */ ({\n      context: context,\n      pixelRatio: this.pixelRatio,\n      resolution: this.resolution,\n      rotation: viewRotation,\n    });\n\n    // When the batch size gets too big, performance decreases. 200 is a good\n    // balance between batch size and number of fill/stroke instructions.\n    const batchSize =\n      this.instructions != instructions || this.overlaps ? 0 : 200;\n    let /** @type {import(\"../../Feature.js\").FeatureLike} */ feature;\n    let x, y, currentGeometry;\n    while (i < ii) {\n      const instruction = instructions[i];\n      const type = /** @type {import(\"./Instruction.js\").default} */ (\n        instruction[0]\n      );\n      switch (type) {\n        case CanvasInstruction.BEGIN_GEOMETRY:\n          feature = /** @type {import(\"../../Feature.js\").FeatureLike} */ (\n            instruction[1]\n          );\n          currentGeometry = instruction[3];\n          if (!feature.getGeometry()) {\n            i = /** @type {number} */ (instruction[2]);\n          } else if (\n            hitExtent !== undefined &&\n            !intersects(hitExtent, currentGeometry.getExtent())\n          ) {\n            i = /** @type {number} */ (instruction[2]) + 1;\n          } else {\n            ++i;\n          }\n          if (zIndexContext) {\n            zIndexContext.zIndex = instruction[4];\n          }\n          break;\n        case CanvasInstruction.BEGIN_PATH:\n          if (pendingFill > batchSize) {\n            this.fill_(context);\n            pendingFill = 0;\n          }\n          if (pendingStroke > batchSize) {\n            context.stroke();\n            pendingStroke = 0;\n          }\n          if (!pendingFill && !pendingStroke) {\n            context.beginPath();\n            prevX = NaN;\n            prevY = NaN;\n          }\n          ++i;\n          break;\n        case CanvasInstruction.CIRCLE:\n          d = /** @type {number} */ (instruction[1]);\n          lineOffsetPx = /** @type {number} */ instruction[2] ?? 0;\n          const x1 = pixelCoordinates[d];\n          const y1 = pixelCoordinates[d + 1];\n          const x2 = pixelCoordinates[d + 2] - lineOffsetPx;\n          const y2 = pixelCoordinates[d + 3] - lineOffsetPx;\n          const dx = x2 - x1;\n          const dy = y2 - y1;\n          const r = Math.sqrt(dx * dx + dy * dy);\n          context.moveTo(x1 + r, y1);\n          context.arc(x1, y1, r, 0, 2 * Math.PI, true);\n          ++i;\n          break;\n        case CanvasInstruction.CLOSE_PATH:\n          context.closePath();\n          ++i;\n          break;\n        case CanvasInstruction.CUSTOM:\n          d = /** @type {number} */ (instruction[1]);\n          dd = instruction[2];\n          const geometry =\n            /** @type {import(\"../../geom/SimpleGeometry.js\").default} */ (\n              instruction[3]\n            );\n          const renderer = instruction[4];\n          const fn = instruction[5];\n          state.geometry = geometry;\n          state.feature = feature;\n          if (!(i in coordinateCache)) {\n            coordinateCache[i] = [];\n          }\n          const coords = coordinateCache[i];\n          if (fn) {\n            fn(pixelCoordinates, d, dd, 2, coords);\n          } else {\n            coords[0] = pixelCoordinates[d];\n            coords[1] = pixelCoordinates[d + 1];\n            coords.length = 2;\n          }\n          if (zIndexContext) {\n            zIndexContext.zIndex = instruction[6];\n          }\n          renderer(coords, state);\n          ++i;\n          break;\n        case CanvasInstruction.DRAW_IMAGE:\n          d = /** @type {number} */ (instruction[1]);\n          dd = /** @type {number} */ (instruction[2]);\n          image =\n            /** @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} */ (\n              instruction[3]\n            );\n\n          // Remaining arguments in DRAW_IMAGE are in alphabetical order\n          anchorX = /** @type {number} */ (instruction[4]);\n          anchorY = /** @type {number} */ (instruction[5]);\n          let height = /** @type {number} */ (instruction[6]);\n          const opacity = /** @type {number} */ (instruction[7]);\n          const originX = /** @type {number} */ (instruction[8]);\n          const originY = /** @type {number} */ (instruction[9]);\n          const rotateWithView = /** @type {boolean} */ (instruction[10]);\n          let rotation = /** @type {number} */ (instruction[11]);\n          const scale = /** @type {import(\"../../size.js\").Size} */ (\n            instruction[12]\n          );\n          let width = /** @type {number} */ (instruction[13]);\n          declutterMode = instruction[14] || 'declutter';\n          const declutterImageWithText =\n            /** @type {{args: import(\"../canvas.js\").DeclutterImageWithText, declutterMode: import('../../style/Style.js').DeclutterMode}} */ (\n              instruction[15]\n            );\n\n          if (!image && instruction.length >= 20) {\n            // create label images\n            text = /** @type {string} */ (instruction[19]);\n            textKey = /** @type {string} */ (instruction[20]);\n            strokeKey = /** @type {string} */ (instruction[21]);\n            fillKey = /** @type {string} */ (instruction[22]);\n            const labelWithAnchor = this.drawLabelWithPointPlacement_(\n              text,\n              textKey,\n              strokeKey,\n              fillKey,\n            );\n            image = labelWithAnchor.label;\n            instruction[3] = image;\n            const textOffsetX = /** @type {number} */ (instruction[23]);\n            anchorX = (labelWithAnchor.anchorX - textOffsetX) * this.pixelRatio;\n            instruction[4] = anchorX;\n            const textOffsetY = /** @type {number} */ (instruction[24]);\n            anchorY = (labelWithAnchor.anchorY - textOffsetY) * this.pixelRatio;\n            instruction[5] = anchorY;\n            height = image.height;\n            instruction[6] = height;\n            width = image.width;\n            instruction[13] = width;\n          }\n\n          let geometryWidths;\n          if (instruction.length > 25) {\n            geometryWidths = /** @type {number} */ (instruction[25]);\n          }\n\n          let padding, backgroundFillInstruction, backgroundStrokeInstruction;\n          if (instruction.length > 17) {\n            padding = /** @type {Array<number>} */ (instruction[16]);\n            backgroundFillInstruction = /** @type {Array<*>} */ (\n              instruction[17]\n            );\n            backgroundStrokeInstruction = /** @type {Array<*>} */ (\n              instruction[18]\n            );\n          } else {\n            padding = defaultPadding;\n            backgroundFillInstruction = null;\n            backgroundStrokeInstruction = null;\n          }\n\n          if (rotateWithView && viewRotationFromTransform) {\n            // Canvas is expected to be rotated to reverse view rotation.\n            rotation += viewRotation;\n          } else if (!rotateWithView && !viewRotationFromTransform) {\n            // Canvas is not rotated, images need to be rotated back to be north-up.\n            rotation -= viewRotation;\n          }\n          let widthIndex = 0;\n          for (; d < dd; d += 2) {\n            if (\n              geometryWidths &&\n              geometryWidths[widthIndex++] < width / this.pixelRatio\n            ) {\n              continue;\n            }\n            const dimensions = this.calculateImageOrLabelDimensions_(\n              image.width,\n              image.height,\n              pixelCoordinates[d],\n              pixelCoordinates[d + 1],\n              width,\n              height,\n              anchorX,\n              anchorY,\n              originX,\n              originY,\n              rotation,\n              scale,\n              snapToPixel,\n              padding,\n              !!backgroundFillInstruction || !!backgroundStrokeInstruction,\n              feature,\n            );\n            /** @type {ReplayImageOrLabelArgs} */\n            const args = [\n              context,\n              scaledCanvasSize,\n              image,\n              dimensions,\n              opacity,\n              backgroundFillInstruction,\n              backgroundStrokeInstruction,\n            ];\n            if (declutterTree) {\n              let imageArgs, imageDeclutterMode, imageDeclutterBox;\n              if (declutterImageWithText) {\n                const index = dd - d;\n                if (!declutterImageWithText[index]) {\n                  // We now have the image for an image+text combination.\n                  declutterImageWithText[index] = {args, declutterMode};\n                  // Don't render anything for now, wait for the text.\n                  continue;\n                }\n                const imageDeclutter = declutterImageWithText[index];\n                imageArgs = imageDeclutter.args;\n                imageDeclutterMode = imageDeclutter.declutterMode;\n                delete declutterImageWithText[index];\n                imageDeclutterBox = getDeclutterBox(imageArgs);\n              }\n              // We now have image and text for an image+text combination.\n              let renderImage, renderText;\n              if (\n                imageArgs &&\n                (imageDeclutterMode !== 'declutter' ||\n                  !declutterTree.collides(imageDeclutterBox))\n              ) {\n                renderImage = true;\n              }\n              if (\n                declutterMode !== 'declutter' ||\n                !declutterTree.collides(dimensions.declutterBox)\n              ) {\n                renderText = true;\n              }\n              if (\n                imageDeclutterMode === 'declutter' &&\n                declutterMode === 'declutter'\n              ) {\n                const render = renderImage && renderText;\n                renderImage = render;\n                renderText = render;\n              }\n              if (renderImage) {\n                if (imageDeclutterMode !== 'none') {\n                  declutterTree.insert(imageDeclutterBox);\n                }\n                this.replayImageOrLabel_.apply(this, imageArgs);\n              }\n              if (renderText) {\n                if (declutterMode !== 'none') {\n                  declutterTree.insert(dimensions.declutterBox);\n                }\n                this.replayImageOrLabel_.apply(this, args);\n              }\n            } else {\n              this.replayImageOrLabel_.apply(this, args);\n            }\n          }\n          ++i;\n          break;\n        case CanvasInstruction.DRAW_CHARS:\n          const begin = /** @type {number} */ (instruction[1]);\n          const end = /** @type {number} */ (instruction[2]);\n          const baseline = /** @type {number} */ (instruction[3]);\n          const overflow = /** @type {number} */ (instruction[4]);\n          fillKey = /** @type {string} */ (instruction[5]);\n          const maxAngle = /** @type {number} */ (instruction[6]);\n          const measurePixelRatio = /** @type {number} */ (instruction[7]);\n          const offsetY = /** @type {number} */ (instruction[8]);\n          strokeKey = /** @type {string} */ (instruction[9]);\n          const strokeWidth = /** @type {number} */ (instruction[10]);\n          text = /** @type {string|Array<string>} */ (instruction[11]);\n          if (Array.isArray(text)) {\n            //FIXME Add support for rich text along lines\n            text = text.reduce(richTextToPlainText, '');\n          }\n          textKey = /** @type {string} */ (instruction[12]);\n          const pixelRatioScale = [\n            /** @type {number} */ (instruction[13]),\n            /** @type {number} */ (instruction[13]),\n          ];\n          declutterMode = instruction[14] || 'declutter';\n\n          const textKeepUpright = /** @type {boolean} */ (instruction[15]);\n          const textState = this.textStates[textKey];\n          const font = textState.font;\n          const textScale = [\n            textState.scale[0] * measurePixelRatio,\n            textState.scale[1] * measurePixelRatio,\n          ];\n\n          let cachedWidths;\n          if (font in this.widths_) {\n            cachedWidths = this.widths_[font];\n          } else {\n            cachedWidths = {};\n            this.widths_[font] = cachedWidths;\n          }\n\n          const pathLength = lineStringLength(pixelCoordinates, begin, end, 2);\n          const textLength =\n            Math.abs(textScale[0]) *\n            measureAndCacheTextWidth(font, text, cachedWidths);\n          if (overflow || textLength <= pathLength) {\n            const textAlign = this.textStates[textKey].textAlign;\n            const startM =\n              (pathLength - textLength) * horizontalTextAlign(text, textAlign);\n            const parts = drawTextOnPath(\n              pixelCoordinates,\n              begin,\n              end,\n              2,\n              text,\n              startM,\n              maxAngle,\n              Math.abs(textScale[0]),\n              measureAndCacheTextWidth,\n              font,\n              cachedWidths,\n              viewRotationFromTransform ? 0 : this.viewRotation_,\n              textKeepUpright,\n            );\n            drawChars: if (parts) {\n              /** @type {Array<ReplayImageOrLabelArgs>} */\n              const replayImageOrLabelArgs = [];\n              let c, cc, chars, label, part;\n              if (strokeKey) {\n                for (c = 0, cc = parts.length; c < cc; ++c) {\n                  part = parts[c]; // x, y, anchorX, rotation, chunk\n                  chars = /** @type {string} */ (part[4]);\n                  label = this.createLabel(chars, textKey, '', strokeKey);\n                  anchorX =\n                    /** @type {number} */ (part[2]) +\n                    (textScale[0] < 0 ? -strokeWidth : strokeWidth);\n                  anchorY =\n                    baseline * label.height +\n                    ((0.5 - baseline) * 2 * strokeWidth * textScale[1]) /\n                      textScale[0] -\n                    offsetY;\n                  const dimensions = this.calculateImageOrLabelDimensions_(\n                    label.width,\n                    label.height,\n                    part[0],\n                    part[1],\n                    label.width,\n                    label.height,\n                    anchorX,\n                    anchorY,\n                    0,\n                    0,\n                    part[3],\n                    pixelRatioScale,\n                    false,\n                    defaultPadding,\n                    false,\n                    feature,\n                  );\n                  if (\n                    declutterTree &&\n                    declutterMode === 'declutter' &&\n                    declutterTree.collides(dimensions.declutterBox)\n                  ) {\n                    break drawChars;\n                  }\n                  replayImageOrLabelArgs.push([\n                    context,\n                    scaledCanvasSize,\n                    label,\n                    dimensions,\n                    1,\n                    null,\n                    null,\n                  ]);\n                }\n              }\n              if (fillKey) {\n                for (c = 0, cc = parts.length; c < cc; ++c) {\n                  part = parts[c]; // x, y, anchorX, rotation, chunk\n                  chars = /** @type {string} */ (part[4]);\n                  label = this.createLabel(chars, textKey, fillKey, '');\n                  anchorX = /** @type {number} */ (part[2]);\n                  anchorY = baseline * label.height - offsetY;\n                  const dimensions = this.calculateImageOrLabelDimensions_(\n                    label.width,\n                    label.height,\n                    part[0],\n                    part[1],\n                    label.width,\n                    label.height,\n                    anchorX,\n                    anchorY,\n                    0,\n                    0,\n                    part[3],\n                    pixelRatioScale,\n                    false,\n                    defaultPadding,\n                    false,\n                    feature,\n                  );\n                  if (\n                    declutterTree &&\n                    declutterMode === 'declutter' &&\n                    declutterTree.collides(dimensions.declutterBox)\n                  ) {\n                    break drawChars;\n                  }\n                  replayImageOrLabelArgs.push([\n                    context,\n                    scaledCanvasSize,\n                    label,\n                    dimensions,\n                    1,\n                    null,\n                    null,\n                  ]);\n                }\n              }\n              if (declutterTree && declutterMode !== 'none') {\n                declutterTree.load(replayImageOrLabelArgs.map(getDeclutterBox));\n              }\n              for (let i = 0, ii = replayImageOrLabelArgs.length; i < ii; ++i) {\n                this.replayImageOrLabel_.apply(this, replayImageOrLabelArgs[i]);\n              }\n            }\n          }\n          ++i;\n          break;\n        case CanvasInstruction.END_GEOMETRY:\n          if (featureCallback !== undefined) {\n            feature = /** @type {import(\"../../Feature.js\").FeatureLike} */ (\n              instruction[1]\n            );\n            const result = featureCallback(\n              feature,\n              currentGeometry,\n              declutterMode,\n            );\n            if (result) {\n              return result;\n            }\n          }\n          ++i;\n          break;\n        case CanvasInstruction.FILL:\n          if (batchSize) {\n            pendingFill++;\n          } else {\n            this.fill_(context);\n          }\n          ++i;\n          break;\n        case CanvasInstruction.MOVE_TO_LINE_TO:\n          d = /** @type {number} */ (instruction[1]);\n          dd = /** @type {number} */ (instruction[2]);\n          lineOffsetPx = /** @type {number|undefined} */ (instruction[3]);\n          isClosedRing =\n            /** @type {boolean|undefined} */ (instruction[4]) ?? false;\n          x = pixelCoordinates[d];\n          y = pixelCoordinates[d + 1];\n\n          if (lineOffsetPx) {\n            dStart = d;\n            [x, y] = offsetLineVertex(\n              x,\n              y,\n              isClosedRing ? pixelCoordinates[dd - 4] : undefined,\n              isClosedRing ? pixelCoordinates[dd - 3] : undefined,\n              pixelCoordinates[d + 2],\n              pixelCoordinates[d + 3],\n              lineOffsetPx,\n            );\n          }\n\n          context.moveTo(x, y);\n          prevX = (x + 0.5) | 0;\n          prevY = (y + 0.5) | 0;\n          for (d += 2; d < dd; d += 2) {\n            x = pixelCoordinates[d];\n            y = pixelCoordinates[d + 1];\n            roundX = (x + 0.5) | 0;\n            roundY = (y + 0.5) | 0;\n            if (d == dd - 2 || roundX !== prevX || roundY !== prevY) {\n              if (lineOffsetPx) {\n                if (d == dd - 2) {\n                  // last coordinate\n                  [x, y] = offsetLineVertex(\n                    x,\n                    y,\n                    pixelCoordinates[d - 2],\n                    pixelCoordinates[d - 1],\n                    isClosedRing ? pixelCoordinates[dStart + 2] : undefined,\n                    isClosedRing ? pixelCoordinates[dStart + 3] : undefined,\n                    lineOffsetPx,\n                  );\n                } else {\n                  [x, y] = offsetLineVertex(\n                    x,\n                    y,\n                    pixelCoordinates[d - 2],\n                    pixelCoordinates[d - 1],\n                    pixelCoordinates[d + 2],\n                    pixelCoordinates[d + 3],\n                    lineOffsetPx,\n                  );\n                }\n              }\n\n              context.lineTo(x, y);\n              prevX = roundX;\n              prevY = roundY;\n            }\n          }\n          ++i;\n          break;\n        case CanvasInstruction.SET_FILL_STYLE:\n          this.alignAndScaleFill_ = instruction[2];\n\n          if (pendingFill) {\n            this.fill_(context);\n            pendingFill = 0;\n            if (pendingStroke) {\n              context.stroke();\n              pendingStroke = 0;\n            }\n          }\n\n          /** @type {import(\"../../colorlike.js\").ColorLike} */\n          context.fillStyle = instruction[1];\n          ++i;\n          break;\n        case CanvasInstruction.SET_STROKE_STYLE:\n          if (pendingStroke) {\n            context.stroke();\n            pendingStroke = 0;\n          }\n          this.setStrokeStyle_(context, /** @type {Array<*>} */ (instruction));\n          ++i;\n          break;\n        case CanvasInstruction.STROKE:\n          if (batchSize) {\n            pendingStroke++;\n          } else {\n            context.stroke();\n          }\n          ++i;\n          break;\n        default: // consume the instruction anyway, to avoid an infinite loop\n          ++i;\n          break;\n      }\n    }\n    if (pendingFill) {\n      this.fill_(context);\n    }\n    if (pendingStroke) {\n      context.stroke();\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   * @param {import('../../size.js').Size} scaledCanvasSize Scaled canvas size.\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @param {number} viewRotation View rotation.\n   * @param {boolean} snapToPixel Snap point symbols and text to integer pixels.\n   * @param {import(\"rbush\").default<DeclutterEntry>} [declutterTree] Declutter tree.\n   */\n  execute(\n    context,\n    scaledCanvasSize,\n    transform,\n    viewRotation,\n    snapToPixel,\n    declutterTree,\n  ) {\n    this.viewRotation_ = viewRotation;\n    this.execute_(\n      context,\n      scaledCanvasSize,\n      transform,\n      this.instructions,\n      snapToPixel,\n      undefined,\n      undefined,\n      declutterTree,\n    );\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @param {number} viewRotation View rotation.\n   * @param {FeatureCallback<T>} [featureCallback] Feature callback.\n   * @param {import(\"../../extent.js\").Extent} [hitExtent] Only check\n   *     features that intersect this extent.\n   * @return {T|undefined} Callback result.\n   * @template T\n   */\n  executeHitDetection(\n    context,\n    transform,\n    viewRotation,\n    featureCallback,\n    hitExtent,\n  ) {\n    this.viewRotation_ = viewRotation;\n    return this.execute_(\n      context,\n      [context.canvas.width, context.canvas.height],\n      transform,\n      this.hitDetectionInstructions,\n      true,\n      featureCallback,\n      hitExtent,\n    );\n  }\n}\n\nexport default Executor;\n","/**\n * @module ol/render/canvas/ExecutorGroup\n */\n\nimport {ascending, descending} from '../../array.js';\nimport {createCanvasContext2D} from '../../dom.js';\nimport {buffer, createEmpty, extendCoordinate} from '../../extent.js';\nimport {transform2D} from '../../geom/flat/transform.js';\nimport {isEmpty} from '../../obj.js';\nimport {\n  compose as composeTransform,\n  create as createTransform,\n} from '../../transform.js';\nimport Executor from './Executor.js';\n\n/**\n * @const\n * @type {Array<import(\"../canvas.js\").BuilderType>}\n */\nexport const ALL = [\n  'Polygon',\n  'Circle',\n  'LineString',\n  'Image',\n  'Text',\n  'Default',\n];\n\n/**\n * @const\n * @type {Array<import(\"../canvas.js\").BuilderType>}\n */\nexport const DECLUTTER = ['Image', 'Text'];\n\n/**\n * @const\n * @type {Array<import(\"../canvas.js\").BuilderType>}\n */\nexport const NON_DECLUTTER = ALL.filter(\n  (builderType) => !DECLUTTER.includes(builderType),\n);\n\n/** @type {boolean|undefined} */\nlet willReadFrequently = false;\n\n/** @type {boolean|undefined} */\nlet canvasReadsBenchmarked = false;\n\n/** Determine if canvas read operations are faster with willReadFrequently set to true or false */\nfunction benchmarkCanvasReads() {\n  let bestResult = 0;\n  /**\n   * @param {boolean} willReadFrequently Will read frequently.\n   * @return {number} Operation count.\n   */\n  const measure = (willReadFrequently) => {\n    const context = createCanvasContext2D(1, 1, null, {willReadFrequently});\n    let count = 0;\n    const start = performance.now();\n    for (; performance.now() - start < 50; ++count) {\n      context.fillStyle = `rgba(255,0,${count % 256},1)`;\n      context.fillRect(0, 0, 1, 1);\n      context.getImageData(0, 0, 1, 1);\n    }\n    bestResult = count > bestResult ? count : bestResult;\n    return count;\n  };\n\n  const measures = {\n    [measure(true)]: true,\n    [measure(false)]: false,\n    [measure(undefined)]: undefined,\n  };\n  willReadFrequently = measures[bestResult];\n  canvasReadsBenchmarked = true;\n}\n\nclass ExecutorGroup {\n  /**\n   * @param {import(\"../../extent.js\").Extent} maxExtent Max extent for clipping. When a\n   * `maxExtent` was set on the Builder for this executor group, the same `maxExtent`\n   * should be set here, unless the target context does not exceed that extent (which\n   * can be the case when rendering to tiles).\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {boolean} overlaps The executor group can have overlapping geometries.\n   * @param {!Object<string, !Object<import(\"../canvas.js\").BuilderType, import(\"../canvas.js\").SerializableInstructions>>} allInstructions\n   * The serializable instructions.\n   * @param {number} [renderBuffer] Optional rendering buffer.\n   * @param {boolean} [deferredRendering] Enable deferred rendering with renderDeferred().\n   */\n  constructor(\n    maxExtent,\n    resolution,\n    pixelRatio,\n    overlaps,\n    allInstructions,\n    renderBuffer,\n    deferredRendering,\n  ) {\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.maxExtent_ = maxExtent;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.overlaps_ = overlaps;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ = pixelRatio;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.resolution_ = resolution;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.renderBuffer_ = renderBuffer;\n\n    /**\n     * @private\n     * @type {!Object<string, !Object<string, import(\"./Executor\").default>>}\n     */\n    this.executorsByZIndex_ = {};\n\n    /**\n     * @private\n     * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}\n     */\n    this.hitDetectionContext_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.hitDetectionTransform_ = createTransform();\n\n    /**\n     * @private\n     * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}\n     */\n    this.renderedContext_ = null;\n\n    /**\n     * @private\n     * @type {Object<number, Array<import(\"./ZIndexContext.js\").default>>}\n     */\n    this.deferredZIndexContexts_ = {};\n\n    this.createExecutors_(allInstructions, deferredRendering);\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   */\n  clip(context, transform) {\n    const flatClipCoords = this.getClipCoords(transform);\n    context.beginPath();\n    context.moveTo(flatClipCoords[0], flatClipCoords[1]);\n    context.lineTo(flatClipCoords[2], flatClipCoords[3]);\n    context.lineTo(flatClipCoords[4], flatClipCoords[5]);\n    context.lineTo(flatClipCoords[6], flatClipCoords[7]);\n    context.clip();\n  }\n\n  /**\n   * Create executors and populate them using the provided instructions.\n   * @private\n   * @param {!Object<string, !Object<string, import(\"../canvas.js\").SerializableInstructions>>} allInstructions The serializable instructions\n   * @param {boolean} deferredRendering Enable deferred rendering.\n   */\n  createExecutors_(allInstructions, deferredRendering) {\n    for (const zIndex in allInstructions) {\n      let executors = this.executorsByZIndex_[zIndex];\n      if (executors === undefined) {\n        executors = {};\n        this.executorsByZIndex_[zIndex] = executors;\n      }\n      const instructionByZindex = allInstructions[zIndex];\n      for (const builderType in instructionByZindex) {\n        const instructions = instructionByZindex[builderType];\n        executors[builderType] = new Executor(\n          this.resolution_,\n          this.pixelRatio_,\n          this.overlaps_,\n          instructions,\n          deferredRendering,\n        );\n      }\n    }\n  }\n\n  /**\n   * @param {Array<import(\"../canvas.js\").BuilderType>} executors Executors.\n   * @return {boolean} Has executors of the provided types.\n   */\n  hasExecutors(executors) {\n    for (const zIndex in this.executorsByZIndex_) {\n      const candidates = this.executorsByZIndex_[zIndex];\n      for (let i = 0, ii = executors.length; i < ii; ++i) {\n        if (executors[i] in candidates) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  /**\n   * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {number} resolution Resolution.\n   * @param {number} rotation Rotation.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {function(import(\"../../Feature.js\").FeatureLike, import(\"../../geom/SimpleGeometry.js\").default, number): T} callback Feature callback.\n   * @param {Array<import(\"../../Feature.js\").FeatureLike>} declutteredFeatures Decluttered features.\n   * @return {T|undefined} Callback result.\n   * @template T\n   */\n  forEachFeatureAtCoordinate(\n    coordinate,\n    resolution,\n    rotation,\n    hitTolerance,\n    callback,\n    declutteredFeatures,\n  ) {\n    if (canvasReadsBenchmarked === false) {\n      benchmarkCanvasReads();\n    }\n\n    hitTolerance = Math.round(hitTolerance);\n    const contextSize = hitTolerance * 2 + 1;\n    const transform = composeTransform(\n      this.hitDetectionTransform_,\n      hitTolerance + 0.5,\n      hitTolerance + 0.5,\n      1 / resolution,\n      -1 / resolution,\n      -rotation,\n      -coordinate[0],\n      -coordinate[1],\n    );\n\n    const newContext = !this.hitDetectionContext_;\n    if (newContext) {\n      this.hitDetectionContext_ = createCanvasContext2D(\n        contextSize,\n        contextSize,\n        null,\n        {willReadFrequently},\n      );\n    }\n    const context = this.hitDetectionContext_;\n\n    if (\n      context.canvas.width !== contextSize ||\n      context.canvas.height !== contextSize\n    ) {\n      context.canvas.width = contextSize;\n      context.canvas.height = contextSize;\n    } else if (!newContext) {\n      context.clearRect(0, 0, contextSize, contextSize);\n    }\n\n    /** @type {import(\"../../extent.js\").Extent|undefined} */\n    let hitExtent;\n    if (this.renderBuffer_ !== undefined) {\n      hitExtent = createEmpty();\n      extendCoordinate(hitExtent, coordinate);\n      buffer(\n        hitExtent,\n        resolution * (this.renderBuffer_ + hitTolerance),\n        hitExtent,\n      );\n    }\n\n    const indexes = getPixelIndexArray(hitTolerance);\n\n    /** @type {import(\"../canvas.js\").BuilderType} */\n    let builderType;\n\n    /**\n     * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n     * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n     * @param {import('../../style/Style.js').DeclutterMode} declutterMode Declutter mode.\n     * @return {T|undefined} Callback result.\n     */\n    function featureCallback(feature, geometry, declutterMode) {\n      const imageData = context.getImageData(\n        0,\n        0,\n        contextSize,\n        contextSize,\n      ).data;\n      for (let i = 0, ii = indexes.length; i < ii; i++) {\n        if (imageData[indexes[i]] > 0) {\n          if (\n            !declutteredFeatures ||\n            declutterMode === 'none' ||\n            (builderType !== 'Image' && builderType !== 'Text') ||\n            declutteredFeatures.includes(feature)\n          ) {\n            const idx = (indexes[i] - 3) / 4;\n            const x = hitTolerance - (idx % contextSize);\n            const y = hitTolerance - ((idx / contextSize) | 0);\n            const result = callback(feature, geometry, x * x + y * y);\n            if (result) {\n              return result;\n            }\n          }\n          context.clearRect(0, 0, contextSize, contextSize);\n          break;\n        }\n      }\n      return undefined;\n    }\n\n    /** @type {Array<number>} */\n    const zs = Object.keys(this.executorsByZIndex_).map(Number);\n    zs.sort(ascending);\n\n    let i, j, executors, executor, result;\n    for (i = zs.length - 1; i >= 0; --i) {\n      const zIndexKey = zs[i].toString();\n      executors = this.executorsByZIndex_[zIndexKey];\n      for (j = ALL.length - 1; j >= 0; --j) {\n        builderType = ALL[j];\n        executor = executors[builderType];\n        if (executor !== undefined) {\n          result = executor.executeHitDetection(\n            context,\n            transform,\n            rotation,\n            featureCallback,\n            hitExtent,\n          );\n          if (result) {\n            return result;\n          }\n        }\n      }\n    }\n    return undefined;\n  }\n\n  /**\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @return {Array<number>|null} Clip coordinates.\n   */\n  getClipCoords(transform) {\n    const maxExtent = this.maxExtent_;\n    if (!maxExtent) {\n      return null;\n    }\n    const minX = maxExtent[0];\n    const minY = maxExtent[1];\n    const maxX = maxExtent[2];\n    const maxY = maxExtent[3];\n    const flatClipCoords = [minX, minY, minX, maxY, maxX, maxY, maxX, minY];\n    transform2D(flatClipCoords, 0, 8, 2, transform, flatClipCoords);\n    return flatClipCoords;\n  }\n\n  /**\n   * @return {boolean} Is empty.\n   */\n  isEmpty() {\n    return isEmpty(this.executorsByZIndex_);\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} targetContext Context.\n   * @param {import('../../size.js').Size} scaledCanvasSize Scale of the context.\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @param {number} viewRotation View rotation.\n   * @param {boolean} snapToPixel Snap point symbols and test to integer pixel.\n   * @param {Array<import(\"../canvas.js\").BuilderType>} [builderTypes] Ordered replay types to replay.\n   *     Default is {@link module:ol/render/replay~ALL}\n   * @param {import(\"rbush\").default<import('./Executor.js').DeclutterEntry>|null} [declutterTree] Declutter tree.\n   *     When set to null, no decluttering is done, even when the executor group has a `ZIndexContext`.\n   */\n  execute(\n    targetContext,\n    scaledCanvasSize,\n    transform,\n    viewRotation,\n    snapToPixel,\n    builderTypes,\n    declutterTree,\n  ) {\n    const zs = Object.keys(this.executorsByZIndex_).map(Number);\n    zs.sort(declutterTree ? descending : ascending);\n\n    builderTypes = builderTypes ? builderTypes : ALL;\n    const maxBuilderTypes = ALL.length;\n    for (let i = 0, ii = zs.length; i < ii; ++i) {\n      const zIndexKey = zs[i].toString();\n      const replays = this.executorsByZIndex_[zIndexKey];\n      for (let j = 0, jj = builderTypes.length; j < jj; ++j) {\n        const builderType = builderTypes[j];\n        const replay = replays[builderType];\n        if (replay !== undefined) {\n          const zIndexContext =\n            declutterTree === null ? undefined : replay.getZIndexContext();\n          const context = zIndexContext\n            ? zIndexContext.getContext()\n            : targetContext;\n          const requireClip =\n            this.maxExtent_ &&\n            builderType !== 'Image' &&\n            builderType !== 'Text';\n          if (requireClip) {\n            context.save();\n            // setup clipping so that the parts of over-simplified geometries are not\n            // visible outside the current extent when panning\n            this.clip(context, transform);\n          }\n          if (\n            !zIndexContext ||\n            builderType === 'Text' ||\n            builderType === 'Image'\n          ) {\n            replay.execute(\n              context,\n              scaledCanvasSize,\n              transform,\n              viewRotation,\n              snapToPixel,\n              declutterTree,\n            );\n          } else {\n            zIndexContext.pushFunction((context) =>\n              replay.execute(\n                context,\n                scaledCanvasSize,\n                transform,\n                viewRotation,\n                snapToPixel,\n                declutterTree,\n              ),\n            );\n          }\n          if (requireClip) {\n            context.restore();\n          }\n          if (zIndexContext) {\n            zIndexContext.offset();\n            const index = zs[i] * maxBuilderTypes + ALL.indexOf(builderType);\n            if (!this.deferredZIndexContexts_[index]) {\n              this.deferredZIndexContexts_[index] = [];\n            }\n            this.deferredZIndexContexts_[index].push(zIndexContext);\n          }\n        }\n      }\n    }\n\n    this.renderedContext_ = targetContext;\n  }\n\n  getDeferredZIndexContexts() {\n    return this.deferredZIndexContexts_;\n  }\n\n  getRenderedContext() {\n    return this.renderedContext_;\n  }\n\n  renderDeferred() {\n    const deferredZIndexContexts = this.deferredZIndexContexts_;\n    const zs = Object.keys(deferredZIndexContexts).map(Number).sort(ascending);\n    for (let i = 0, ii = zs.length; i < ii; ++i) {\n      deferredZIndexContexts[zs[i]].forEach((zIndexContext) => {\n        zIndexContext.draw(this.renderedContext_); // FIXME Pass clip to replay for temporarily enabling clip\n        zIndexContext.clear();\n      });\n      deferredZIndexContexts[zs[i]].length = 0;\n    }\n  }\n}\n\n/**\n * This cache is used to store arrays of indexes for calculated pixel circles\n * to increase performance.\n * It is a static property to allow each Replaygroup to access it.\n * @type {Object<number, Array<number>>}\n */\nconst circlePixelIndexArrayCache = {};\n\n/**\n * This methods creates an array with indexes of all pixels within a circle,\n * ordered by how close they are to the center.\n * A cache is used to increase performance.\n * @param {number} radius Radius.\n * @return {Array<number>} An array with indexes within a circle.\n */\nexport function getPixelIndexArray(radius) {\n  if (circlePixelIndexArrayCache[radius] !== undefined) {\n    return circlePixelIndexArrayCache[radius];\n  }\n\n  const size = radius * 2 + 1;\n  const maxDistanceSq = radius * radius;\n  const distances = new Array(maxDistanceSq + 1);\n  for (let i = 0; i <= radius; ++i) {\n    for (let j = 0; j <= radius; ++j) {\n      const distanceSq = i * i + j * j;\n      if (distanceSq > maxDistanceSq) {\n        break;\n      }\n      let distance = distances[distanceSq];\n      if (!distance) {\n        distance = [];\n        distances[distanceSq] = distance;\n      }\n      distance.push(((radius + i) * size + (radius + j)) * 4 + 3);\n      if (i > 0) {\n        distance.push(((radius - i) * size + (radius + j)) * 4 + 3);\n      }\n      if (j > 0) {\n        distance.push(((radius + i) * size + (radius - j)) * 4 + 3);\n        if (i > 0) {\n          distance.push(((radius - i) * size + (radius - j)) * 4 + 3);\n        }\n      }\n    }\n  }\n\n  const pixelIndex = [];\n  for (let i = 0, ii = distances.length; i < ii; ++i) {\n    if (distances[i]) {\n      pixelIndex.push(...distances[i]);\n    }\n  }\n\n  circlePixelIndexArrayCache[radius] = pixelIndex;\n  return pixelIndex;\n}\n\nexport default ExecutorGroup;\n","/**\n * @module ol/size\n */\n\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array<number>} Size\n * @api\n */\n\n/**\n * Returns a buffered size.\n * @param {Size} size Size.\n * @param {number} num The amount by which to buffer.\n * @param {Size} [dest] Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, dest) {\n  if (dest === undefined) {\n    dest = [0, 0];\n  }\n  dest[0] = size[0] + 2 * num;\n  dest[1] = size[1] + 2 * num;\n  return dest;\n}\n\n/**\n * Determines if a size has a positive area.\n * @param {Size} size The size to test.\n * @return {boolean} The size has a positive area.\n */\nexport function hasArea(size) {\n  return size[0] > 0 && size[1] > 0;\n}\n\n/**\n * Returns a size scaled by a ratio. The result will be an array of integers.\n * @param {Size} size Size.\n * @param {number} ratio Ratio.\n * @param {Size} [dest] Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, dest) {\n  if (dest === undefined) {\n    dest = [0, 0];\n  }\n  dest[0] = (size[0] * ratio + 0.5) | 0;\n  dest[1] = (size[1] * ratio + 0.5) | 0;\n  return dest;\n}\n\n/**\n * Returns an `Size` array for the passed in number (meaning: square) or\n * `Size` array.\n * (meaning: non-square),\n * @param {number|Size} size Width and height.\n * @param {Size} [dest] Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, dest) {\n  if (Array.isArray(size)) {\n    return size;\n  }\n  if (dest === undefined) {\n    dest = [size, size];\n  } else {\n    dest[0] = size;\n    dest[1] = size;\n  }\n  return dest;\n}\n","/**\n * @module ol/style/Image\n */\nimport {toSize} from '../size.js';\nimport {abstract} from '../util.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} opacity Opacity.\n * @property {boolean} rotateWithView If the image should get rotated with the view.\n * @property {number} rotation Rotation.\n * @property {number|import(\"../size.js\").Size} scale Scale.\n * @property {Array<number>} displacement Displacement.\n * @property {import('../style/Style.js').DeclutterMode} declutterMode Declutter mode: `declutter`, `obstacle`, `none`.\n */\n\n/**\n * @classdesc\n * A base class used for creating subclasses and not instantiated in\n * apps. Base class for {@link module:ol/style/Icon~Icon}, {@link module:ol/style/Circle~CircleStyle} and\n * {@link module:ol/style/RegularShape~RegularShape}.\n * @abstract\n * @api\n */\nclass ImageStyle {\n  /**\n   * @param {Options} options Options.\n   */\n  constructor(options) {\n    /**\n     * @private\n     * @type {number}\n     */\n    this.opacity_ = options.opacity;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.rotateWithView_ = options.rotateWithView;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.rotation_ = options.rotation;\n\n    /**\n     * @private\n     * @type {number|import(\"../size.js\").Size}\n     */\n    this.scale_ = options.scale;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size}\n     */\n    this.scaleArray_ = toSize(options.scale);\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.displacement_ = options.displacement;\n\n    /**\n     * @private\n     * @type {import('../style/Style.js').DeclutterMode}\n     */\n    this.declutterMode_ = options.declutterMode;\n  }\n\n  /**\n   * Clones the style.\n   * @return {ImageStyle} The cloned style.\n   * @api\n   */\n  clone() {\n    const scale = this.getScale();\n    return new ImageStyle({\n      opacity: this.getOpacity(),\n      scale: Array.isArray(scale) ? scale.slice() : scale,\n      rotation: this.getRotation(),\n      rotateWithView: this.getRotateWithView(),\n      displacement: this.getDisplacement().slice(),\n      declutterMode: this.getDeclutterMode(),\n    });\n  }\n\n  /**\n   * Get the symbolizer opacity.\n   * @return {number} Opacity.\n   * @api\n   */\n  getOpacity() {\n    return this.opacity_;\n  }\n\n  /**\n   * Determine whether the symbolizer rotates with the map.\n   * @return {boolean} Rotate with map.\n   * @api\n   */\n  getRotateWithView() {\n    return this.rotateWithView_;\n  }\n\n  /**\n   * Get the symoblizer rotation.\n   * @return {number} Rotation.\n   * @api\n   */\n  getRotation() {\n    return this.rotation_;\n  }\n\n  /**\n   * Get the symbolizer scale.\n   * @return {number|import(\"../size.js\").Size} Scale.\n   * @api\n   */\n  getScale() {\n    return this.scale_;\n  }\n\n  /**\n   * Get the symbolizer scale array.\n   * @return {import(\"../size.js\").Size} Scale array.\n   */\n  getScaleArray() {\n    return this.scaleArray_;\n  }\n\n  /**\n   * Get the displacement of the shape\n   * @return {Array<number>} Shape's center displacement\n   * @api\n   */\n  getDisplacement() {\n    return this.displacement_;\n  }\n\n  /**\n   * Get the declutter mode of the shape\n   * @return {import(\"./Style.js\").DeclutterMode} Shape's declutter mode\n   * @api\n   */\n  getDeclutterMode() {\n    return this.declutterMode_;\n  }\n\n  /**\n   * Get the anchor point in pixels. The anchor determines the center point for the\n   * symbolizer.\n   * @abstract\n   * @return {Array<number>} Anchor.\n   */\n  getAnchor() {\n    return abstract();\n  }\n\n  /**\n   * Get the image element for the symbolizer.\n   * @abstract\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {import('../DataTile.js').ImageLike} Image element.\n   */\n  getImage(pixelRatio) {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @return {import('../DataTile.js').ImageLike} Image element.\n   */\n  getHitDetectionImage() {\n    return abstract();\n  }\n\n  /**\n   * Get the image pixel ratio.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Pixel ratio.\n   */\n  getPixelRatio(pixelRatio) {\n    return 1;\n  }\n\n  /**\n   * @abstract\n   * @return {import(\"../ImageState.js\").default} Image state.\n   */\n  getImageState() {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @return {import(\"../size.js\").Size} Image size.\n   */\n  getImageSize() {\n    return abstract();\n  }\n\n  /**\n   * Get the origin of the symbolizer.\n   * @abstract\n   * @return {Array<number>} Origin.\n   */\n  getOrigin() {\n    return abstract();\n  }\n\n  /**\n   * Get the size of the symbolizer (in pixels).\n   * @abstract\n   * @return {import(\"../size.js\").Size} Size.\n   */\n  getSize() {\n    return abstract();\n  }\n\n  /**\n   * Set the displacement.\n   *\n   * @param {Array<number>} displacement Displacement.\n   * @api\n   */\n  setDisplacement(displacement) {\n    this.displacement_ = displacement;\n  }\n\n  /**\n   * Set the opacity.\n   *\n   * @param {number} opacity Opacity.\n   * @api\n   */\n  setOpacity(opacity) {\n    this.opacity_ = opacity;\n  }\n\n  /**\n   * Set whether to rotate the style with the view.\n   *\n   * @param {boolean} rotateWithView Rotate with map.\n   * @api\n   */\n  setRotateWithView(rotateWithView) {\n    this.rotateWithView_ = rotateWithView;\n  }\n\n  /**\n   * Set the rotation.\n   *\n   * @param {number} rotation Rotation.\n   * @api\n   */\n  setRotation(rotation) {\n    this.rotation_ = rotation;\n  }\n\n  /**\n   * Set the scale.\n   *\n   * @param {number|import(\"../size.js\").Size} scale Scale.\n   * @api\n   */\n  setScale(scale) {\n    this.scale_ = scale;\n    this.scaleArray_ = toSize(scale);\n  }\n\n  /**\n   * @abstract\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   */\n  listenImageChange(listener) {\n    abstract();\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * @abstract\n   */\n  load() {\n    abstract();\n  }\n\n  /**\n   * @abstract\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   */\n  unlistenImageChange(listener) {\n    abstract();\n  }\n\n  /**\n   * @return {Promise<void>} `false` or Promise that resolves when the style is ready to use.\n   */\n  ready() {\n    return Promise.resolve();\n  }\n}\n\nexport default ImageStyle;\n","/**\n * @module ol/style/RegularShape\n */\n\nimport ImageState from '../ImageState.js';\nimport {asArray} from '../color.js';\nimport {asColorLike} from '../colorlike.js';\nimport {createCanvasContext2D} from '../dom.js';\nimport {\n  defaultFillStyle,\n  defaultLineCap,\n  defaultLineJoin,\n  defaultLineWidth,\n  defaultMiterLimit,\n  defaultStrokeStyle,\n} from '../render/canvas.js';\nimport IconImage from './IconImage.js';\nimport {shared as iconImageCache} from './IconImageCache.js';\nimport ImageStyle from './Image.js';\n\n/**\n * Specify radius for regular polygons, or both radius and radius2 for stars.\n * @typedef {Object} Options\n * @property {import(\"./Fill.js\").default} [fill] Fill style.\n * @property {number} points Number of points for stars and regular polygons. In case of a polygon, the number of points\n * is the number of sides.\n * @property {number} radius Radius of a regular polygon.\n * @property {number} [radius2] Second radius to make a star instead of a regular polygon.\n * @property {number} [angle=0] Shape's angle in radians. A value of 0 will have one of the shape's points facing up.\n * @property {Array<number>} [displacement=[0, 0]] Displacement of the shape in pixels.\n * Positive values will shift the shape right and up.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {boolean} [rotateWithView=false] Whether to rotate the shape with the view.\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale. Unless two dimensional scaling is required a better\n * result may be obtained with appropriate settings for `radius` and `radius2`.\n * @property {import('./Style.js').DeclutterMode} [declutterMode] Declutter mode.\n */\n\n/**\n * @typedef {Object} RenderOptions\n * @property {import(\"../colorlike.js\").ColorLike|undefined} strokeStyle StrokeStyle.\n * @property {number} strokeWidth StrokeWidth.\n * @property {number} size Size.\n * @property {CanvasLineCap} lineCap LineCap.\n * @property {Array<number>|null} lineDash LineDash.\n * @property {number} lineDashOffset LineDashOffset.\n * @property {CanvasLineJoin} lineJoin LineJoin.\n * @property {number} miterLimit MiterLimit.\n */\n\n/**\n * @classdesc\n * Set regular shape style for vector features. The resulting shape will be\n * a regular polygon when `radius` is provided, or a star when both `radius` and\n * `radius2` are provided.\n * @api\n */\nclass RegularShape extends ImageStyle {\n  /**\n   * @param {Options} options Options.\n   */\n  constructor(options) {\n    super({\n      opacity: 1,\n      rotateWithView:\n        options.rotateWithView !== undefined ? options.rotateWithView : false,\n      rotation: options.rotation !== undefined ? options.rotation : 0,\n      scale: options.scale !== undefined ? options.scale : 1,\n      displacement:\n        options.displacement !== undefined ? options.displacement : [0, 0],\n      declutterMode: options.declutterMode,\n    });\n\n    /**\n     * @private\n     * @type {HTMLCanvasElement|OffscreenCanvas|null}\n     */\n    this.hitDetectionCanvas_ = null;\n\n    /**\n     * @private\n     * @type {import(\"./Fill.js\").default|null}\n     */\n    this.fill_ = options.fill !== undefined ? options.fill : null;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.origin_ = [0, 0];\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.points_ = options.points;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.radius = options.radius;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.radius2_ = options.radius2;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.angle_ = options.angle !== undefined ? options.angle : 0;\n\n    /**\n     * @private\n     * @type {import(\"./Stroke.js\").default|null}\n     */\n    this.stroke_ = options.stroke !== undefined ? options.stroke : null;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size}\n     */\n    this.size_;\n\n    /**\n     * @private\n     * @type {RenderOptions}\n     */\n    this.renderOptions_;\n\n    /**\n     * @private\n     */\n    this.imageState_ =\n      this.fill_ && this.fill_.loading()\n        ? ImageState.LOADING\n        : ImageState.LOADED;\n    if (this.imageState_ === ImageState.LOADING) {\n      this.ready().then(() => (this.imageState_ = ImageState.LOADED));\n    }\n    this.render();\n  }\n\n  /**\n   * Clones the style.\n   * @return {RegularShape} The cloned style.\n   * @api\n   * @override\n   */\n  clone() {\n    const scale = this.getScale();\n    const style = new RegularShape({\n      fill: this.getFill() ? this.getFill().clone() : undefined,\n      points: this.getPoints(),\n      radius: this.getRadius(),\n      radius2: this.getRadius2(),\n      angle: this.getAngle(),\n      stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n      rotation: this.getRotation(),\n      rotateWithView: this.getRotateWithView(),\n      scale: Array.isArray(scale) ? scale.slice() : scale,\n      displacement: this.getDisplacement().slice(),\n      declutterMode: this.getDeclutterMode(),\n    });\n    style.setOpacity(this.getOpacity());\n    return style;\n  }\n\n  /**\n   * Get the anchor point in pixels. The anchor determines the center point for the\n   * symbolizer.\n   * @return {Array<number>} Anchor.\n   * @api\n   * @override\n   */\n  getAnchor() {\n    const size = this.size_;\n    const displacement = this.getDisplacement();\n    const scale = this.getScaleArray();\n    // anchor is scaled by renderer but displacement should not be scaled\n    // so divide by scale here\n    return [\n      size[0] / 2 - displacement[0] / scale[0],\n      size[1] / 2 + displacement[1] / scale[1],\n    ];\n  }\n\n  /**\n   * Get the angle used in generating the shape.\n   * @return {number} Shape's rotation in radians.\n   * @api\n   */\n  getAngle() {\n    return this.angle_;\n  }\n\n  /**\n   * Get the fill style for the shape.\n   * @return {import(\"./Fill.js\").default|null} Fill style.\n   * @api\n   */\n  getFill() {\n    return this.fill_;\n  }\n\n  /**\n   * Set the fill style.\n   * @param {import(\"./Fill.js\").default|null} fill Fill style.\n   * @api\n   */\n  setFill(fill) {\n    this.fill_ = fill;\n    this.render();\n  }\n\n  /**\n   * @return {HTMLCanvasElement|OffscreenCanvas} Image element.\n   * @override\n   */\n  getHitDetectionImage() {\n    if (!this.hitDetectionCanvas_) {\n      this.hitDetectionCanvas_ = this.createHitDetectionCanvas_(\n        this.renderOptions_,\n      );\n    }\n    return this.hitDetectionCanvas_;\n  }\n\n  /**\n   * Get the image icon.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {HTMLCanvasElement|OffscreenCanvas} Image or Canvas element.\n   * @api\n   * @override\n   */\n  getImage(pixelRatio) {\n    const fillKey = this.fill_?.getKey();\n    const cacheKey =\n      `${pixelRatio},${this.angle_},${this.radius},${this.radius2_},${this.points_},${fillKey}` +\n      Object.values(this.renderOptions_).join(',');\n    let image = /** @type {HTMLCanvasElement|OffscreenCanvas} */ (\n      iconImageCache.get(cacheKey, null)?.getImage(1)\n    );\n    if (!image) {\n      const renderOptions = this.renderOptions_;\n      const size = Math.ceil(renderOptions.size * pixelRatio);\n      const context = createCanvasContext2D(size, size);\n      this.draw_(renderOptions, context, pixelRatio);\n\n      image = context.canvas;\n      const iconImage = new IconImage(\n        image,\n        undefined,\n        null,\n        ImageState.LOADED,\n        null,\n      );\n      iconImageCache.set(cacheKey, null, iconImage);\n      // Update the image in place to an ImageBitmap for better performance and lower memory usage\n      createImageBitmap(image).then((imageBitmap) => {\n        iconImage.setImage(imageBitmap);\n      });\n    }\n    return image;\n  }\n\n  /**\n   * Get the image pixel ratio.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Pixel ratio.\n   * @override\n   */\n  getPixelRatio(pixelRatio) {\n    return pixelRatio;\n  }\n\n  /**\n   * @return {import(\"../size.js\").Size} Image size.\n   * @override\n   */\n  getImageSize() {\n    return this.size_;\n  }\n\n  /**\n   * @return {import(\"../ImageState.js\").default} Image state.\n   * @override\n   */\n  getImageState() {\n    return this.imageState_;\n  }\n\n  /**\n   * Get the origin of the symbolizer.\n   * @return {Array<number>} Origin.\n   * @api\n   * @override\n   */\n  getOrigin() {\n    return this.origin_;\n  }\n\n  /**\n   * Get the number of points for generating the shape.\n   * @return {number} Number of points for stars and regular polygons.\n   * @api\n   */\n  getPoints() {\n    return this.points_;\n  }\n\n  /**\n   * Get the (primary) radius for the shape.\n   * @return {number} Radius.\n   * @api\n   */\n  getRadius() {\n    return this.radius;\n  }\n\n  /**\n   * Set the (primary) radius for the shape.\n   * @param {number} radius Radius.\n   * @api\n   */\n  setRadius(radius) {\n    if (this.radius === radius) {\n      return;\n    }\n    this.radius = radius;\n    this.render();\n  }\n\n  /**\n   * Get the secondary radius for the shape.\n   * @return {number|undefined} Radius2.\n   * @api\n   */\n  getRadius2() {\n    return this.radius2_;\n  }\n\n  /**\n   * Set the secondary radius for the shape.\n   * @param {number|undefined} radius2 Radius2.\n   * @api\n   */\n  setRadius2(radius2) {\n    if (this.radius2_ === radius2) {\n      return;\n    }\n    this.radius2_ = radius2;\n    this.render();\n  }\n\n  /**\n   * Get the size of the symbolizer (in pixels).\n   * @return {import(\"../size.js\").Size} Size.\n   * @api\n   * @override\n   */\n  getSize() {\n    return this.size_;\n  }\n\n  /**\n   * Get the stroke style for the shape.\n   * @return {import(\"./Stroke.js\").default|null} Stroke style.\n   * @api\n   */\n  getStroke() {\n    return this.stroke_;\n  }\n\n  /**\n   * Set the stroke style.\n   * @param {import(\"./Stroke.js\").default|null} stroke Stroke style.\n   * @api\n   */\n  setStroke(stroke) {\n    this.stroke_ = stroke;\n    this.render();\n  }\n\n  /**\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   * @override\n   */\n  listenImageChange(listener) {}\n\n  /**\n   * Load not yet loaded URI.\n   * @override\n   */\n  load() {}\n\n  /**\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   * @override\n   */\n  unlistenImageChange(listener) {}\n\n  /**\n   * Calculate additional canvas size needed for the miter.\n   * @param {string} lineJoin Line join\n   * @param {number} strokeWidth Stroke width\n   * @param {number} miterLimit Miter limit\n   * @return {number} Additional canvas size needed\n   * @private\n   */\n  calculateLineJoinSize_(lineJoin, strokeWidth, miterLimit) {\n    if (\n      strokeWidth === 0 ||\n      this.points_ === Infinity ||\n      (lineJoin !== 'bevel' && lineJoin !== 'miter')\n    ) {\n      return strokeWidth;\n    }\n    // m  | ^\n    // i  | |\\                  .\n    // t >|  #\\\n    // e  | |\\ \\              .\n    // r      \\s\\\n    //      |  \\t\\          .                 .\n    //          \\r\\                      .   .\n    //      |    \\o\\      .          .  . . .\n    //          e \\k\\            .  .    . .\n    //      |      \\e\\  .    .  .       . .\n    //       d      \\ \\  .  .          . .\n    //      | _ _a_ _\\#  .            . .\n    //   r1          / `             . .\n    //      |                       . .\n    //       b     /               . .\n    //      |                     . .\n    //           / r2            . .\n    //      |                        .   .\n    //         /                           .   .\n    //      |α                                   .   .\n    //       /                                         .   .\n    //      ° center\n    let r1 = this.radius;\n    let r2 = this.radius2_ === undefined ? r1 : this.radius2_;\n    if (r1 < r2) {\n      const tmp = r1;\n      r1 = r2;\n      r2 = tmp;\n    }\n    const points =\n      this.radius2_ === undefined ? this.points_ : this.points_ * 2;\n    const alpha = (2 * Math.PI) / points;\n    const a = r2 * Math.sin(alpha);\n    const b = Math.sqrt(r2 * r2 - a * a);\n    const d = r1 - b;\n    const e = Math.sqrt(a * a + d * d);\n    const miterRatio = e / a;\n    if (lineJoin === 'miter' && miterRatio <= miterLimit) {\n      return miterRatio * strokeWidth;\n    }\n    // Calculate the distance from center to the stroke corner where\n    // it was cut short because of the miter limit.\n    //              l\n    //        ----+---- <= distance from center to here is maxr\n    //       /####|k ##\\\n    //      /#####^#####\\\n    //     /#### /+\\# s #\\\n    //    /### h/+++\\# t #\\\n    //   /### t/+++++\\# r #\\\n    //  /### a/+++++++\\# o #\\\n    // /### p/++ fill +\\# k #\\\n    ///#### /+++++^+++++\\# e #\\\n    //#####/+++++/+\\+++++\\#####\\\n    const k = strokeWidth / 2 / miterRatio;\n    const l = (strokeWidth / 2) * (d / e);\n    const maxr = Math.sqrt((r1 + k) * (r1 + k) + l * l);\n    const bevelAdd = maxr - r1;\n    if (this.radius2_ === undefined || lineJoin === 'bevel') {\n      return bevelAdd * 2;\n    }\n    // If outer miter is over the miter limit the inner miter may reach through the\n    // center and be longer than the bevel, same calculation as above but swap r1 / r2.\n    const aa = r1 * Math.sin(alpha);\n    const bb = Math.sqrt(r1 * r1 - aa * aa);\n    const dd = r2 - bb;\n    const ee = Math.sqrt(aa * aa + dd * dd);\n    const innerMiterRatio = ee / aa;\n    if (innerMiterRatio <= miterLimit) {\n      const innerLength = (innerMiterRatio * strokeWidth) / 2 - r2 - r1;\n      return 2 * Math.max(bevelAdd, innerLength);\n    }\n    return bevelAdd * 2;\n  }\n\n  /**\n   * @return {RenderOptions}  The render options\n   * @protected\n   */\n  createRenderOptions() {\n    let lineCap = defaultLineCap;\n    let lineJoin = defaultLineJoin;\n    let miterLimit = 0;\n    let lineDash = null;\n    let lineDashOffset = 0;\n    let strokeStyle;\n    let strokeWidth = 0;\n\n    if (this.stroke_) {\n      strokeStyle = asColorLike(this.stroke_.getColor() ?? defaultStrokeStyle);\n      strokeWidth = this.stroke_.getWidth() ?? defaultLineWidth;\n      lineDash = this.stroke_.getLineDash();\n      lineDashOffset = this.stroke_.getLineDashOffset() ?? 0;\n      lineJoin = this.stroke_.getLineJoin() ?? defaultLineJoin;\n      lineCap = this.stroke_.getLineCap() ?? defaultLineCap;\n      miterLimit = this.stroke_.getMiterLimit() ?? defaultMiterLimit;\n    }\n\n    const add = this.calculateLineJoinSize_(lineJoin, strokeWidth, miterLimit);\n    const maxRadius = Math.max(this.radius, this.radius2_ || 0);\n    const size = Math.ceil(2 * maxRadius + add);\n\n    return {\n      strokeStyle: strokeStyle,\n      strokeWidth: strokeWidth,\n      size: size,\n      lineCap: lineCap,\n      lineDash: lineDash,\n      lineDashOffset: lineDashOffset,\n      lineJoin: lineJoin,\n      miterLimit: miterLimit,\n    };\n  }\n\n  /**\n   * @protected\n   */\n  render() {\n    this.renderOptions_ = this.createRenderOptions();\n    const size = this.renderOptions_.size;\n    this.hitDetectionCanvas_ = null;\n    this.size_ = [size, size];\n  }\n\n  /**\n   * @private\n   * @param {RenderOptions} renderOptions Render options.\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context The rendering context.\n   * @param {number} pixelRatio The pixel ratio.\n   */\n  draw_(renderOptions, context, pixelRatio) {\n    context.scale(pixelRatio, pixelRatio);\n    // set origin to canvas center\n    context.translate(renderOptions.size / 2, renderOptions.size / 2);\n\n    this.createPath_(context);\n\n    if (this.fill_) {\n      let color = this.fill_.getColor();\n      if (color === null) {\n        color = defaultFillStyle;\n      }\n      context.fillStyle = asColorLike(color);\n      context.fill();\n    }\n    if (renderOptions.strokeStyle) {\n      context.strokeStyle = renderOptions.strokeStyle;\n      context.lineWidth = renderOptions.strokeWidth;\n      if (renderOptions.lineDash) {\n        context.setLineDash(renderOptions.lineDash);\n        context.lineDashOffset = renderOptions.lineDashOffset;\n      }\n      context.lineCap = renderOptions.lineCap;\n      context.lineJoin = renderOptions.lineJoin;\n      context.miterLimit = renderOptions.miterLimit;\n      context.stroke();\n    }\n  }\n\n  /**\n   * @private\n   * @param {RenderOptions} renderOptions Render options.\n   * @return {HTMLCanvasElement|OffscreenCanvas} Canvas containing the icon\n   */\n  createHitDetectionCanvas_(renderOptions) {\n    let context;\n    if (this.fill_) {\n      let color = this.fill_.getColor();\n\n      // determine if fill is transparent (or pattern or gradient)\n      let opacity = 0;\n      if (typeof color === 'string') {\n        color = asArray(color);\n      }\n      if (color === null) {\n        opacity = 1;\n      } else if (Array.isArray(color)) {\n        opacity = color.length === 4 ? color[3] : 1;\n      }\n      if (opacity === 0) {\n        // if a transparent fill style is set, create an extra hit-detection image\n        // with a default fill style\n        context = createCanvasContext2D(renderOptions.size, renderOptions.size);\n        this.drawHitDetectionCanvas_(renderOptions, context);\n      }\n    }\n    return context ? context.canvas : this.getImage(1);\n  }\n\n  /**\n   * @private\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context The context to draw in.\n   */\n  createPath_(context) {\n    let points = this.points_;\n    const radius = this.radius;\n    if (points === Infinity) {\n      context.arc(0, 0, radius, 0, 2 * Math.PI);\n    } else {\n      const radius2 = this.radius2_ === undefined ? radius : this.radius2_;\n      if (this.radius2_ !== undefined) {\n        points *= 2;\n      }\n      const startAngle = this.angle_ - Math.PI / 2;\n      const step = (2 * Math.PI) / points;\n      for (let i = 0; i < points; i++) {\n        const angle0 = startAngle + i * step;\n        const radiusC = i % 2 === 0 ? radius : radius2;\n        context.lineTo(radiusC * Math.cos(angle0), radiusC * Math.sin(angle0));\n      }\n      context.closePath();\n    }\n  }\n\n  /**\n   * @private\n   * @param {RenderOptions} renderOptions Render options.\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context The context.\n   */\n  drawHitDetectionCanvas_(renderOptions, context) {\n    // set origin to canvas center\n    context.translate(renderOptions.size / 2, renderOptions.size / 2);\n\n    this.createPath_(context);\n\n    context.fillStyle = defaultFillStyle;\n    context.fill();\n    if (renderOptions.strokeStyle) {\n      context.strokeStyle = renderOptions.strokeStyle;\n      context.lineWidth = renderOptions.strokeWidth;\n      if (renderOptions.lineDash) {\n        context.setLineDash(renderOptions.lineDash);\n        context.lineDashOffset = renderOptions.lineDashOffset;\n      }\n      context.lineJoin = renderOptions.lineJoin;\n      context.miterLimit = renderOptions.miterLimit;\n      context.stroke();\n    }\n  }\n\n  /**\n   * @override\n   */\n  ready() {\n    return this.fill_ ? this.fill_.ready() : Promise.resolve();\n  }\n}\n\nexport default RegularShape;\n","/**\n * @module ol/style/Circle\n */\n\nimport RegularShape from './RegularShape.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Fill.js\").default} [fill] Fill style.\n * @property {number} radius Circle radius.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {Array<number>} [displacement=[0,0]] displacement\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale. A two dimensional scale will produce an ellipse.\n * Unless two dimensional scaling is required a better result may be obtained with an appropriate setting for `radius`.\n * @property {number} [rotation=0] Rotation in radians\n * (positive rotation clockwise, meaningful only when used in conjunction with a two dimensional scale).\n * @property {boolean} [rotateWithView=false] Whether to rotate the shape with the view\n * (meaningful only when used in conjunction with a two dimensional scale).\n * @property {import('./Style.js').DeclutterMode} [declutterMode] Declutter mode\n */\n\n/**\n * @classdesc\n * Set circle style for vector features.\n * @api\n */\nclass CircleStyle extends RegularShape {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {radius: 5};\n\n    super({\n      points: Infinity,\n      fill: options.fill,\n      radius: options.radius,\n      stroke: options.stroke,\n      scale: options.scale !== undefined ? options.scale : 1,\n      rotation: options.rotation !== undefined ? options.rotation : 0,\n      rotateWithView:\n        options.rotateWithView !== undefined ? options.rotateWithView : false,\n      displacement:\n        options.displacement !== undefined ? options.displacement : [0, 0],\n      declutterMode: options.declutterMode,\n    });\n  }\n\n  /**\n   * Clones the style.\n   * @return {CircleStyle} The cloned style.\n   * @api\n   * @override\n   */\n  clone() {\n    const scale = this.getScale();\n    const style = new CircleStyle({\n      fill: this.getFill() ? this.getFill().clone() : undefined,\n      stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n      radius: this.getRadius(),\n      scale: Array.isArray(scale) ? scale.slice() : scale,\n      rotation: this.getRotation(),\n      rotateWithView: this.getRotateWithView(),\n      displacement: this.getDisplacement().slice(),\n      declutterMode: this.getDeclutterMode(),\n    });\n    style.setOpacity(this.getOpacity());\n    return style;\n  }\n}\n\nexport default CircleStyle;\n","/**\n * @module ol/style/Fill\n */\n\nimport ImageState from '../ImageState.js';\nimport {asArray} from '../color.js';\nimport {getUid} from '../util.js';\nimport {get as getIconImage} from './IconImage.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|import('../colorlike.js').PatternDescriptor|null} [color=null] A color,\n * gradient or pattern.\n * See {@link module:ol/color~Color} and {@link module:ol/colorlike~ColorLike} for possible formats. For polygon fills (not for {@link import(\"./RegularShape.js\").default} fills),\n * a pattern can also be provided as {@link module:ol/colorlike~PatternDescriptor}.\n * Default null; if null, the Canvas/renderer default black will be used.\n */\n\n/**\n * @classdesc\n * Set fill style for vector features.\n * @api\n */\nclass Fill {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    /**\n     * @private\n     * @type {import(\"./IconImage.js\").default|null}\n     */\n    this.patternImage_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|import('../colorlike.js').PatternDescriptor|null}\n     */\n    this.color_ = null;\n    if (options.color !== undefined) {\n      this.setColor(options.color);\n    }\n  }\n\n  /**\n   * Clones the style. The color is not cloned if it is a {@link module:ol/colorlike~ColorLike}.\n   * @return {Fill} The cloned style.\n   * @api\n   */\n  clone() {\n    const color = this.getColor();\n    return new Fill({\n      color: Array.isArray(color) ? color.slice() : color || undefined,\n    });\n  }\n\n  /**\n   * Get the fill color.\n   * @return {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|import('../colorlike.js').PatternDescriptor|null} Color.\n   * @api\n   */\n  getColor() {\n    return this.color_;\n  }\n\n  /**\n   * Set the color.\n   *\n   * @param {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|import('../colorlike.js').PatternDescriptor|null} color Color.\n   * @api\n   */\n  setColor(color) {\n    if (color !== null && typeof color === 'object' && 'src' in color) {\n      const patternImage = getIconImage(\n        null,\n        color.src,\n        {crossOrigin: 'anonymous'},\n        undefined,\n        color.offset ? null : color.color ? color.color : null,\n        !(color.offset && color.size),\n      );\n      patternImage.ready().then(() => {\n        this.patternImage_ = null;\n      });\n      if (patternImage.getImageState() === ImageState.IDLE) {\n        patternImage.load();\n      }\n      if (patternImage.getImageState() === ImageState.LOADING) {\n        this.patternImage_ = patternImage;\n      }\n    }\n    this.color_ = color;\n  }\n\n  /**\n   * @return {string} Key of the fill for cache lookup.\n   */\n  getKey() {\n    const fill = this.getColor();\n    if (!fill) {\n      return '';\n    }\n    return fill instanceof CanvasPattern || fill instanceof CanvasGradient\n      ? getUid(fill)\n      : typeof fill === 'object' && 'src' in fill\n        ? fill.src + ':' + fill.offset\n        : asArray(fill).toString();\n  }\n\n  /**\n   * @return {boolean} The fill style is loading an image pattern.\n   */\n  loading() {\n    return !!this.patternImage_;\n  }\n\n  /**\n   * @return {Promise<void>} `false` or a promise that resolves when the style is ready to use.\n   */\n  ready() {\n    return this.patternImage_ ? this.patternImage_.ready() : Promise.resolve();\n  }\n}\n\nexport default Fill;\n","/**\n * @module ol/style/Icon\n */\nimport ImageState from '../ImageState.js';\nimport {assert} from '../asserts.js';\nimport {asArray} from '../color.js';\nimport EventType from '../events/EventType.js';\nimport {getUid} from '../util.js';\nimport {get as getIconImage} from './IconImage.js';\nimport ImageStyle from './Image.js';\n\n/**\n * @typedef {'fraction' | 'pixels'} IconAnchorUnits\n * Anchor unit can be either a fraction of the icon size or in pixels.\n */\n\n/**\n * @typedef {'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'} IconOrigin\n * Icon origin. One of 'bottom-left', 'bottom-right', 'top-left', 'top-right'.\n */\n\n/**\n * @typedef {Object} Options\n * @property {Array<number>} [anchor=[0.5, 0.5]] Anchor. Default value is the icon center.\n * @property {IconOrigin} [anchorOrigin='top-left'] Origin of the anchor: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {IconAnchorUnits} [anchorXUnits='fraction'] Units in which the anchor x value is\n * specified. A value of `'fraction'` indicates the x value is a fraction of the icon. A value of `'pixels'` indicates\n * the x value in pixels.\n * @property {IconAnchorUnits} [anchorYUnits='fraction'] Units in which the anchor y value is\n * specified. A value of `'fraction'` indicates the y value is a fraction of the icon. A value of `'pixels'` indicates\n * the y value in pixels.\n * @property {import(\"../color.js\").Color|string} [color] Color to tint the icon. If not specified,\n * the icon will be left as is.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that you must provide a\n * `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {ReferrerPolicy} [referrerPolicy] The `referrerPolicy` property for loaded images.\n * @property {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas|ImageBitmap} [img] Image object for the icon.\n * @property {Array<number>} [displacement=[0, 0]] Displacement of the icon in pixels.\n * Positive values will shift the icon right and up.\n * @property {number} [opacity=1] Opacity of the icon.\n * @property {number} [width] The width of the icon in pixels. This can't be used together with `scale`.\n * @property {number} [height] The height of the icon in pixels. This can't be used together with `scale`.\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale.\n * @property {boolean} [rotateWithView=false] Whether to rotate the icon with the view.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {Array<number>} [offset=[0, 0]] Offset which, together with `size` and `offsetOrigin`, defines the\n * sub-rectangle to use from the original (sprite) image.\n * @property {IconOrigin} [offsetOrigin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {import(\"../size.js\").Size} [size] Icon size in pixels. Used together with `offset` to define the\n * sub-rectangle to use from the original (sprite) image.\n * @property {string} [src] Image source URI.\n * @property {import(\"./Style.js\").DeclutterMode} [declutterMode] Declutter mode.\n */\n\n/**\n * @param {number} width The width.\n * @param {number} height The height.\n * @param {number|undefined} wantedWidth The wanted width.\n * @param {number|undefined} wantedHeight The wanted height.\n * @return {number|Array<number>} The scale.\n */\nfunction calculateScale(width, height, wantedWidth, wantedHeight) {\n  if (wantedWidth !== undefined && wantedHeight !== undefined) {\n    return [wantedWidth / width, wantedHeight / height];\n  }\n  if (wantedWidth !== undefined) {\n    return wantedWidth / width;\n  }\n  if (wantedHeight !== undefined) {\n    return wantedHeight / height;\n  }\n  return 1;\n}\n\n/**\n * @classdesc\n * Set icon style for vector features.\n * @api\n */\nclass Icon extends ImageStyle {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    /**\n     * @type {number}\n     */\n    const opacity = options.opacity !== undefined ? options.opacity : 1;\n\n    /**\n     * @type {number}\n     */\n    const rotation = options.rotation !== undefined ? options.rotation : 0;\n\n    /**\n     * @type {number|import(\"../size.js\").Size}\n     */\n    const scale = options.scale !== undefined ? options.scale : 1;\n\n    /**\n     * @type {boolean}\n     */\n    const rotateWithView =\n      options.rotateWithView !== undefined ? options.rotateWithView : false;\n\n    super({\n      opacity: opacity,\n      rotation: rotation,\n      scale: scale,\n      displacement:\n        options.displacement !== undefined ? options.displacement : [0, 0],\n      rotateWithView: rotateWithView,\n      declutterMode: options.declutterMode,\n    });\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.anchor_ = options.anchor !== undefined ? options.anchor : [0.5, 0.5];\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.normalizedAnchor_ = null;\n\n    /**\n     * @private\n     * @type {IconOrigin}\n     */\n    this.anchorOrigin_ =\n      options.anchorOrigin !== undefined ? options.anchorOrigin : 'top-left';\n\n    /**\n     * @private\n     * @type {IconAnchorUnits}\n     */\n    this.anchorXUnits_ =\n      options.anchorXUnits !== undefined ? options.anchorXUnits : 'fraction';\n\n    /**\n     * @private\n     * @type {IconAnchorUnits}\n     */\n    this.anchorYUnits_ =\n      options.anchorYUnits !== undefined ? options.anchorYUnits : 'fraction';\n\n    /**\n     * @private\n     * @type {?string}\n     */\n    this.crossOrigin_ =\n      options.crossOrigin !== undefined ? options.crossOrigin : null;\n\n    /**\n     * @private\n     * @type {ReferrerPolicy}\n     */\n    this.referrerPolicy_ = options.referrerPolicy;\n\n    const image = options.img !== undefined ? options.img : null;\n\n    let cacheKey = options.src;\n\n    assert(\n      !(cacheKey !== undefined && image),\n      '`image` and `src` cannot be provided at the same time',\n    );\n\n    if ((cacheKey === undefined || cacheKey.length === 0) && image) {\n      cacheKey = /** @type {HTMLImageElement} */ (image).src || getUid(image);\n    }\n    assert(\n      cacheKey !== undefined && cacheKey.length > 0,\n      'A defined and non-empty `src` or `image` must be provided',\n    );\n\n    assert(\n      !(\n        (options.width !== undefined || options.height !== undefined) &&\n        options.scale !== undefined\n      ),\n      '`width` or `height` cannot be provided together with `scale`',\n    );\n\n    let imageState;\n    if (options.src !== undefined) {\n      imageState = ImageState.IDLE;\n    } else if (image !== undefined) {\n      if ('complete' in image) {\n        if (image.complete) {\n          imageState = image.src ? ImageState.LOADED : ImageState.IDLE;\n        } else {\n          imageState = ImageState.LOADING;\n        }\n      } else {\n        imageState = ImageState.LOADED;\n      }\n    }\n\n    /**\n     * @private\n     * @type {import(\"../color.js\").Color}\n     */\n    this.color_ = options.color !== undefined ? asArray(options.color) : null;\n\n    /**\n     * @private\n     * @type {import(\"./IconImage.js\").default}\n     */\n    this.iconImage_ = getIconImage(\n      image,\n      /** @type {string} */ (cacheKey),\n      {\n        crossOrigin: this.crossOrigin_,\n        referrerPolicy: this.referrerPolicy_,\n      },\n      imageState,\n      this.color_,\n    );\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.offset_ = options.offset !== undefined ? options.offset : [0, 0];\n    /**\n     * @private\n     * @type {IconOrigin}\n     */\n    this.offsetOrigin_ =\n      options.offsetOrigin !== undefined ? options.offsetOrigin : 'top-left';\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.origin_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size}\n     */\n    this.size_ = options.size !== undefined ? options.size : null;\n\n    /**\n     * @private\n     */\n    this.initialOptions_;\n\n    /**\n     * Calculate the scale if width or height were given.\n     */\n    if (options.width !== undefined || options.height !== undefined) {\n      let width, height;\n      if (options.size) {\n        [width, height] = options.size;\n      } else {\n        const image = this.getImage(1);\n        if (image.width && image.height) {\n          width = image.width;\n          height = image.height;\n        } else if (image instanceof HTMLImageElement) {\n          this.initialOptions_ = options;\n          const onload = () => {\n            this.unlistenImageChange(onload);\n            if (!this.initialOptions_) {\n              return;\n            }\n            const imageSize = this.iconImage_.getSize();\n            this.setScale(\n              calculateScale(\n                imageSize[0],\n                imageSize[1],\n                options.width,\n                options.height,\n              ),\n            );\n          };\n          this.listenImageChange(onload);\n          return;\n        }\n      }\n      if (width !== undefined) {\n        this.setScale(\n          calculateScale(width, height, options.width, options.height),\n        );\n      }\n    }\n  }\n\n  /**\n   * Clones the style. The underlying Image/HTMLCanvasElement is not cloned.\n   * @return {Icon} The cloned style.\n   * @api\n   * @override\n   */\n  clone() {\n    let scale, width, height;\n    if (this.initialOptions_) {\n      width = this.initialOptions_.width;\n      height = this.initialOptions_.height;\n    } else {\n      scale = this.getScale();\n      scale = Array.isArray(scale) ? scale.slice() : scale;\n    }\n    return new Icon({\n      anchor: this.anchor_.slice(),\n      anchorOrigin: this.anchorOrigin_,\n      anchorXUnits: this.anchorXUnits_,\n      anchorYUnits: this.anchorYUnits_,\n      color:\n        this.color_ && this.color_.slice\n          ? this.color_.slice()\n          : this.color_ || undefined,\n      crossOrigin: this.crossOrigin_,\n      referrerPolicy: this.referrerPolicy_,\n      offset: this.offset_.slice(),\n      offsetOrigin: this.offsetOrigin_,\n      opacity: this.getOpacity(),\n      rotateWithView: this.getRotateWithView(),\n      rotation: this.getRotation(),\n      scale,\n      width,\n      height,\n      size: this.size_ !== null ? this.size_.slice() : undefined,\n      src: this.getSrc(),\n      displacement: this.getDisplacement().slice(),\n      declutterMode: this.getDeclutterMode(),\n    });\n  }\n\n  /**\n   * Get the anchor point in pixels. The anchor determines the center point for the\n   * symbolizer.\n   * @return {Array<number>} Anchor.\n   * @api\n   * @override\n   */\n  getAnchor() {\n    let anchor = this.normalizedAnchor_;\n    if (!anchor) {\n      anchor = this.anchor_;\n      const size = this.getSize();\n      if (\n        this.anchorXUnits_ == 'fraction' ||\n        this.anchorYUnits_ == 'fraction'\n      ) {\n        if (!size) {\n          return null;\n        }\n        anchor = this.anchor_.slice();\n        if (this.anchorXUnits_ == 'fraction') {\n          anchor[0] *= size[0];\n        }\n        if (this.anchorYUnits_ == 'fraction') {\n          anchor[1] *= size[1];\n        }\n      }\n\n      if (this.anchorOrigin_ != 'top-left') {\n        if (!size) {\n          return null;\n        }\n        if (anchor === this.anchor_) {\n          anchor = this.anchor_.slice();\n        }\n        if (\n          this.anchorOrigin_ == 'top-right' ||\n          this.anchorOrigin_ == 'bottom-right'\n        ) {\n          anchor[0] = -anchor[0] + size[0];\n        }\n        if (\n          this.anchorOrigin_ == 'bottom-left' ||\n          this.anchorOrigin_ == 'bottom-right'\n        ) {\n          anchor[1] = -anchor[1] + size[1];\n        }\n      }\n      this.normalizedAnchor_ = anchor;\n    }\n    const displacement = this.getDisplacement();\n    const scale = this.getScaleArray();\n    // anchor is scaled by renderer but displacement should not be scaled\n    // so divide by scale here\n    return [\n      anchor[0] - displacement[0] / scale[0],\n      anchor[1] + displacement[1] / scale[1],\n    ];\n  }\n\n  /**\n   * Set the anchor point. The anchor determines the center point for the\n   * symbolizer.\n   *\n   * @param {Array<number>} anchor Anchor.\n   * @api\n   */\n  setAnchor(anchor) {\n    this.anchor_ = anchor;\n    this.normalizedAnchor_ = null;\n  }\n\n  /**\n   * Get the icon color.\n   * @return {import(\"../color.js\").Color} Color.\n   * @api\n   */\n  getColor() {\n    return this.color_;\n  }\n\n  /**\n   * Set the icon color.\n   *\n   * Warning: Repeatedly setting the color on an icon style\n   * causes the icon image to be re-created each time. This can have a\n   * severe performance impact.\n   *\n   * @param {import(\"../color.js\").Color|string|null|undefined} color Color.\n   */\n  setColor(color) {\n    const nextColor = color ? asArray(color) : null;\n    if (\n      this.color_ === nextColor ||\n      (this.color_ &&\n        nextColor &&\n        this.color_.length === nextColor.length &&\n        this.color_.every((value, index) => value === nextColor[index]))\n    ) {\n      // Discard if the color hasn't changed.\n      return;\n    }\n\n    this.color_ = nextColor;\n    const src = this.getSrc();\n    const image = src !== undefined ? null : this.getHitDetectionImage();\n    const imageState =\n      src !== undefined ? ImageState.IDLE : this.iconImage_.getImageState();\n    this.iconImage_ = getIconImage(\n      image,\n      src,\n      {\n        crossOrigin: this.crossOrigin_,\n        referrerPolicy: this.referrerPolicy_,\n      },\n      imageState,\n      this.color_,\n    );\n  }\n\n  /**\n   * Get the image icon.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas|ImageBitmap} Image or Canvas element. If the Icon\n   * style was configured with `src` or with a not let loaded `img`, an `ImageBitmap` will be returned.\n   * @api\n   * @override\n   */\n  getImage(pixelRatio) {\n    return this.iconImage_.getImage(pixelRatio);\n  }\n\n  /**\n   * Get the pixel ratio.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} The pixel ratio of the image.\n   * @api\n   * @override\n   */\n  getPixelRatio(pixelRatio) {\n    return this.iconImage_.getPixelRatio(pixelRatio);\n  }\n\n  /**\n   * @return {import(\"../size.js\").Size} Image size.\n   * @override\n   */\n  getImageSize() {\n    return this.iconImage_.getSize();\n  }\n\n  /**\n   * @return {import(\"../ImageState.js\").default} Image state.\n   * @override\n   */\n  getImageState() {\n    return this.iconImage_.getImageState();\n  }\n\n  /**\n   * @return {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas|ImageBitmap} Image element.\n   * @override\n   */\n  getHitDetectionImage() {\n    return this.iconImage_.getHitDetectionImage();\n  }\n\n  /**\n   * Get the origin of the symbolizer.\n   * @return {Array<number>} Origin.\n   * @api\n   * @override\n   */\n  getOrigin() {\n    if (this.origin_) {\n      return this.origin_;\n    }\n    let offset = this.offset_;\n\n    if (this.offsetOrigin_ != 'top-left') {\n      const size = this.getSize();\n      const iconImageSize = this.iconImage_.getSize();\n      if (!size || !iconImageSize) {\n        return null;\n      }\n      offset = offset.slice();\n      if (\n        this.offsetOrigin_ == 'top-right' ||\n        this.offsetOrigin_ == 'bottom-right'\n      ) {\n        offset[0] = iconImageSize[0] - size[0] - offset[0];\n      }\n      if (\n        this.offsetOrigin_ == 'bottom-left' ||\n        this.offsetOrigin_ == 'bottom-right'\n      ) {\n        offset[1] = iconImageSize[1] - size[1] - offset[1];\n      }\n    }\n    this.origin_ = offset;\n    return this.origin_;\n  }\n\n  /**\n   * Get the image URL.\n   * @return {string|undefined} Image src.\n   * @api\n   */\n  getSrc() {\n    return this.iconImage_.getSrc();\n  }\n\n  /**\n   * Set the image URI\n   * @param {string} src Image source URI\n   * @api\n   */\n  setSrc(src) {\n    this.iconImage_ = getIconImage(\n      null,\n      src,\n      {\n        crossOrigin: this.crossOrigin_,\n        referrerPolicy: this.referrerPolicy_,\n      },\n      ImageState.IDLE,\n      this.color_,\n    );\n  }\n\n  /**\n   * Get the size of the icon (in pixels).\n   * @return {import(\"../size.js\").Size} Image size.\n   * @api\n   * @override\n   */\n  getSize() {\n    return !this.size_ ? this.iconImage_.getSize() : this.size_;\n  }\n\n  /**\n   * Get the width of the icon (in pixels). Will return undefined when the icon image is not yet loaded.\n   * @return {number} Icon width (in pixels).\n   * @api\n   */\n  getWidth() {\n    const scale = this.getScaleArray();\n    if (this.size_) {\n      return this.size_[0] * scale[0];\n    }\n    if (this.iconImage_.getImageState() == ImageState.LOADED) {\n      return this.iconImage_.getSize()[0] * scale[0];\n    }\n    return undefined;\n  }\n\n  /**\n   * Get the height of the icon (in pixels). Will return undefined when the icon image is not yet loaded.\n   * @return {number} Icon height (in pixels).\n   * @api\n   */\n  getHeight() {\n    const scale = this.getScaleArray();\n    if (this.size_) {\n      return this.size_[1] * scale[1];\n    }\n    if (this.iconImage_.getImageState() == ImageState.LOADED) {\n      return this.iconImage_.getSize()[1] * scale[1];\n    }\n    return undefined;\n  }\n\n  /**\n   * Set the scale.\n   *\n   * @param {number|import(\"../size.js\").Size} scale Scale.\n   * @api\n   * @override\n   */\n  setScale(scale) {\n    delete this.initialOptions_;\n    super.setScale(scale);\n  }\n\n  /**\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   * @override\n   */\n  listenImageChange(listener) {\n    this.iconImage_.addEventListener(EventType.CHANGE, listener);\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * When rendering a feature with an icon style, the vector renderer will\n   * automatically call this method. However, you might want to call this\n   * method yourself for preloading or other purposes.\n   * @api\n   * @override\n   */\n  load() {\n    this.iconImage_.load();\n  }\n\n  /**\n   * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n   * @override\n   */\n  unlistenImageChange(listener) {\n    this.iconImage_.removeEventListener(EventType.CHANGE, listener);\n  }\n\n  /**\n   * @override\n   */\n  ready() {\n    return this.iconImage_.ready();\n  }\n}\n\nexport default Icon;\n","/**\n * @module ol/style/Stroke\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [color] A color, gradient or pattern.\n * See {@link module:ol/color~Color} and {@link module:ol/colorlike~ColorLike} for possible formats.\n * Default null; if null, the Canvas/renderer default black will be used.\n * @property {CanvasLineCap} [lineCap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [lineJoin='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array<number>} [lineDash] Line dash pattern. Default is `null` (no dash).\n * @property {number} [lineDashOffset=0] Line dash offset.\n * @property {number} [miterLimit=10] Miter limit.\n * @property {number} [offset] Line offset in pixels along the normal. A positive value offsets the line to the right,\n * relative to the direction of the line. Default is `null` (no offset).\n * @property {number} [width] Width.\n */\n\n/**\n * @classdesc\n * Set stroke style for vector features.\n * Note that the defaults given are the Canvas defaults, which will be used if\n * option is not defined. The `get` functions return whatever was entered in\n * the options; they will not return the default.\n * @api\n */\nclass Stroke {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    /**\n     * @private\n     * @type {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike}\n     */\n    this.color_ = options.color !== undefined ? options.color : null;\n\n    /**\n     * @private\n     * @type {CanvasLineCap|undefined}\n     */\n    this.lineCap_ = options.lineCap;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.lineDash_ = options.lineDash !== undefined ? options.lineDash : null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.lineDashOffset_ = options.lineDashOffset;\n\n    /**\n     * @private\n     * @type {CanvasLineJoin|undefined}\n     */\n    this.lineJoin_ = options.lineJoin;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.miterLimit_ = options.miterLimit;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.offset_ = options.offset;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.width_ = options.width;\n  }\n\n  /**\n   * Clones the style.\n   * @return {Stroke} The cloned style.\n   * @api\n   */\n  clone() {\n    const color = this.getColor();\n    return new Stroke({\n      color: Array.isArray(color) ? color.slice() : color || undefined,\n      lineCap: this.getLineCap(),\n      lineDash: this.getLineDash() ? this.getLineDash().slice() : undefined,\n      lineDashOffset: this.getLineDashOffset(),\n      lineJoin: this.getLineJoin(),\n      miterLimit: this.getMiterLimit(),\n      offset: this.getOffset(),\n      width: this.getWidth(),\n    });\n  }\n\n  /**\n   * Get the stroke color.\n   * @return {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} Color.\n   * @api\n   */\n  getColor() {\n    return this.color_;\n  }\n\n  /**\n   * Get the line cap type for the stroke.\n   * @return {CanvasLineCap|undefined} Line cap.\n   * @api\n   */\n  getLineCap() {\n    return this.lineCap_;\n  }\n\n  /**\n   * Get the line dash style for the stroke.\n   * @return {Array<number>|null} Line dash.\n   * @api\n   */\n  getLineDash() {\n    return this.lineDash_;\n  }\n\n  /**\n   * Get the line dash offset for the stroke.\n   * @return {number|undefined} Line dash offset.\n   * @api\n   */\n  getLineDashOffset() {\n    return this.lineDashOffset_;\n  }\n\n  /**\n   * Get the line join type for the stroke.\n   * @return {CanvasLineJoin|undefined} Line join.\n   * @api\n   */\n  getLineJoin() {\n    return this.lineJoin_;\n  }\n\n  /**\n   * Get the miter limit for the stroke.\n   * @return {number|undefined} Miter limit.\n   * @api\n   */\n  getMiterLimit() {\n    return this.miterLimit_;\n  }\n\n  /**\n   * Get the line offset in pixels.\n   * @return {number|undefined} Offset.\n   * @api\n   */\n  getOffset() {\n    return this.offset_;\n  }\n\n  /**\n   * Get the stroke width.\n   * @return {number|undefined} Width.\n   * @api\n   */\n  getWidth() {\n    return this.width_;\n  }\n\n  /**\n   * Set the color.\n   *\n   * @param {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} color Color.\n   * @api\n   */\n  setColor(color) {\n    this.color_ = color;\n  }\n\n  /**\n   * Set the line cap.\n   *\n   * @param {CanvasLineCap|undefined} lineCap Line cap.\n   * @api\n   */\n  setLineCap(lineCap) {\n    this.lineCap_ = lineCap;\n  }\n\n  /**\n   * Set the line dash.\n   *\n   * @param {Array<number>|null} lineDash Line dash.\n   * @api\n   */\n  setLineDash(lineDash) {\n    this.lineDash_ = lineDash;\n  }\n\n  /**\n   * Set the line dash offset.\n   *\n   * @param {number|undefined} lineDashOffset Line dash offset.\n   * @api\n   */\n  setLineDashOffset(lineDashOffset) {\n    this.lineDashOffset_ = lineDashOffset;\n  }\n\n  /**\n   * Set the line join.\n   *\n   * @param {CanvasLineJoin|undefined} lineJoin Line join.\n   * @api\n   */\n  setLineJoin(lineJoin) {\n    this.lineJoin_ = lineJoin;\n  }\n\n  /**\n   * Set the miter limit.\n   *\n   * @param {number|undefined} miterLimit Miter limit.\n   * @api\n   */\n  setMiterLimit(miterLimit) {\n    this.miterLimit_ = miterLimit;\n  }\n\n  /**\n   * Set the line offset in pixels.\n   *\n   * @param {number|undefined} offset Offset.\n   * @api\n   */\n  setOffset(offset) {\n    this.offset_ = offset;\n  }\n\n  /**\n   * Set the width.\n   *\n   * @param {number|undefined} width Width.\n   * @api\n   */\n  setWidth(width) {\n    this.width_ = width;\n  }\n}\n\nexport default Stroke;\n","/**\n * @module ol/style/Style\n */\n\nimport {assert} from '../asserts.js';\nimport CircleStyle from './Circle.js';\nimport Fill from './Fill.js';\nimport Stroke from './Stroke.js';\n\n/**\n * Defines how symbols and text are decluttered on layers ith `declutter` set to `true`\n * **declutter**: Overlapping symbols and text are decluttered.\n * **obstacle**: Symbols and text are rendered, but serve as obstacle for subsequent attempts\n *   to place a symbol or text at the same location.\n * **none**: No decluttering is done.\n *\n * @typedef {\"declutter\"|\"obstacle\"|\"none\"} DeclutterMode\n */\n\n/**\n * A function that takes a {@link module:ol/Feature~Feature} and a `{number}`\n * representing the view's resolution. The function should return a\n * {@link module:ol/style/Style~Style} or an array of them. This way e.g. a\n * vector layer can be styled. If the function returns `undefined`, the\n * feature will not be rendered.\n *\n * @typedef {function(import(\"../Feature.js\").FeatureLike, number):(Style|Array<Style>|void)} StyleFunction\n */\n\n/**\n * A {@link Style}, an array of {@link Style}, or a {@link StyleFunction}.\n * @typedef {Style|Array<Style>|StyleFunction} StyleLike\n */\n\n/**\n * A function that takes a {@link module:ol/Feature~Feature} as argument and returns an\n * {@link module:ol/geom/Geometry~Geometry} that will be rendered and styled for the feature.\n *\n * @typedef {function(import(\"../Feature.js\").FeatureLike):\n *     (import(\"../geom/Geometry.js\").default|import(\"../render/Feature.js\").default|undefined)} GeometryFunction\n */\n\n/**\n * Custom renderer function. Takes two arguments:\n *\n * 1. The pixel coordinates of the geometry in GeoJSON notation.\n * 2. The {@link module:ol/render~State} of the layer renderer.\n *\n * @typedef {function((import(\"../coordinate.js\").Coordinate|Array<import(\"../coordinate.js\").Coordinate>|Array<Array<import(\"../coordinate.js\").Coordinate>>|Array<Array<Array<import(\"../coordinate.js\").Coordinate>>>),import(\"../render.js\").State): void} RenderFunction\n */\n\n/**\n * @typedef {Object} Options\n * @property {string|import(\"../geom/Geometry.js\").default|GeometryFunction} [geometry] Feature property or geometry\n * or function returning a geometry to render for this style.\n * @property {import(\"./Fill.js\").default} [fill] Fill style.\n * @property {import(\"./Image.js\").default} [image] Image style.\n * @property {RenderFunction} [renderer] Custom renderer. When configured, `fill`, `stroke` and `image` will be\n * ignored, and the provided function will be called with each render frame for each geometry.\n * @property {RenderFunction} [hitDetectionRenderer] Custom renderer for hit detection. If provided will be used\n * in hit detection rendering.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {import(\"./Text.js\").default} [text] Text style.\n * @property {number} [zIndex] Z index.\n */\n\n/**\n * @classdesc\n * Container for vector feature rendering styles. Any changes made to the style\n * or its children through `set*()` methods will not take effect until the\n * feature or layer that uses the style is re-rendered.\n *\n * ## Feature styles\n *\n * If no style is defined, the following default style is used:\n * ```js\n *  import {Circle, Fill, Stroke, Style} from 'ol/style.js';\n *\n *  const fill = new Fill({\n *    color: 'rgba(255,255,255,0.4)',\n *  });\n *  const stroke = new Stroke({\n *    color: '#3399CC',\n *    width: 1.25,\n *  });\n *  const styles = [\n *    new Style({\n *      image: new Circle({\n *        fill: fill,\n *        stroke: stroke,\n *        radius: 5,\n *      }),\n *      fill: fill,\n *      stroke: stroke,\n *    }),\n *  ];\n * ```\n *\n * A separate editing style has the following defaults:\n * ```js\n *  import {Circle, Fill, Stroke, Style} from 'ol/style.js';\n *\n *  const styles = {};\n *  const white = [255, 255, 255, 1];\n *  const blue = [0, 153, 255, 1];\n *  const width = 3;\n *  styles['Polygon'] = [\n *    new Style({\n *      fill: new Fill({\n *        color: [255, 255, 255, 0.5],\n *      }),\n *    }),\n *  ];\n *  styles['MultiPolygon'] =\n *      styles['Polygon'];\n *  styles['LineString'] = [\n *    new Style({\n *      stroke: new Stroke({\n *        color: white,\n *        width: width + 2,\n *      }),\n *    }),\n *    new Style({\n *      stroke: new Stroke({\n *        color: blue,\n *        width: width,\n *      }),\n *    }),\n *  ];\n *  styles['MultiLineString'] = styles['LineString'];\n *\n *  styles['Circle'] = styles['Polygon'].concat(\n *    styles['LineString']\n *  );\n *\n *  styles['Point'] = [\n *    new Style({\n *      image: new Circle({\n *        radius: width * 2,\n *        fill: new Fill({\n *          color: blue,\n *        }),\n *        stroke: new Stroke({\n *          color: white,\n *          width: width / 2,\n *        }),\n *      }),\n *      zIndex: Infinity,\n *    }),\n *  ];\n *  styles['MultiPoint'] =\n *      styles['Point'];\n *  styles['GeometryCollection'] =\n *      styles['Polygon'].concat(\n *          styles['LineString'],\n *          styles['Point']\n *      );\n * ```\n *\n * @api\n */\nclass Style {\n  /**\n   * @param {Options} [options] Style options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    /**\n     * @private\n     * @type {string|import(\"../geom/Geometry.js\").default|GeometryFunction|null}\n     */\n    this.geometry_ = null;\n\n    /**\n     * @private\n     * @type {!GeometryFunction}\n     */\n    this.geometryFunction_ = defaultGeometryFunction;\n\n    if (options.geometry !== undefined) {\n      this.setGeometry(options.geometry);\n    }\n\n    /**\n     * @private\n     * @type {import(\"./Fill.js\").default|null}\n     */\n    this.fill_ = options.fill !== undefined ? options.fill : null;\n\n    /**\n     * @private\n     * @type {import(\"./Image.js\").default|null}\n     */\n    this.image_ = options.image !== undefined ? options.image : null;\n\n    /**\n     * @private\n     * @type {RenderFunction|null}\n     */\n    this.renderer_ = options.renderer !== undefined ? options.renderer : null;\n\n    /**\n     * @private\n     * @type {RenderFunction|null}\n     */\n    this.hitDetectionRenderer_ =\n      options.hitDetectionRenderer !== undefined\n        ? options.hitDetectionRenderer\n        : null;\n\n    /**\n     * @private\n     * @type {import(\"./Stroke.js\").default|null}\n     */\n    this.stroke_ = options.stroke !== undefined ? options.stroke : null;\n\n    /**\n     * @private\n     * @type {import(\"./Text.js\").default|null}\n     */\n    this.text_ = options.text !== undefined ? options.text : null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.zIndex_ = options.zIndex;\n  }\n\n  /**\n   * Clones the style.\n   * @return {Style} The cloned style.\n   * @api\n   */\n  clone() {\n    let geometry = this.getGeometry();\n    if (geometry && typeof geometry === 'object') {\n      geometry = /** @type {import(\"../geom/Geometry.js\").default} */ (\n        geometry\n      ).clone();\n    }\n    return new Style({\n      geometry: geometry ?? undefined,\n      fill: this.getFill() ? this.getFill().clone() : undefined,\n      image: this.getImage() ? this.getImage().clone() : undefined,\n      renderer: this.getRenderer() ?? undefined,\n      stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n      text: this.getText() ? this.getText().clone() : undefined,\n      zIndex: this.getZIndex(),\n    });\n  }\n\n  /**\n   * Get the custom renderer function that was configured with\n   * {@link #setRenderer} or the `renderer` constructor option.\n   * @return {RenderFunction|null} Custom renderer function.\n   * @api\n   */\n  getRenderer() {\n    return this.renderer_;\n  }\n\n  /**\n   * Sets a custom renderer function for this style. When set, `fill`, `stroke`\n   * and `image` options of the style will be ignored.\n   * @param {RenderFunction|null} renderer Custom renderer function.\n   * @api\n   */\n  setRenderer(renderer) {\n    this.renderer_ = renderer;\n  }\n\n  /**\n   * Sets a custom renderer function for this style used\n   * in hit detection.\n   * @param {RenderFunction|null} renderer Custom renderer function.\n   * @api\n   */\n  setHitDetectionRenderer(renderer) {\n    this.hitDetectionRenderer_ = renderer;\n  }\n\n  /**\n   * Get the custom renderer function that was configured with\n   * {@link #setHitDetectionRenderer} or the `hitDetectionRenderer` constructor option.\n   * @return {RenderFunction|null} Custom renderer function.\n   * @api\n   */\n  getHitDetectionRenderer() {\n    return this.hitDetectionRenderer_;\n  }\n\n  /**\n   * Get the geometry to be rendered.\n   * @return {string|import(\"../geom/Geometry.js\").default|GeometryFunction|null}\n   * Feature property or geometry or function that returns the geometry that will\n   * be rendered with this style.\n   * @api\n   */\n  getGeometry() {\n    return this.geometry_;\n  }\n\n  /**\n   * Get the function used to generate a geometry for rendering.\n   * @return {!GeometryFunction} Function that is called with a feature\n   * and returns the geometry to render instead of the feature's geometry.\n   * @api\n   */\n  getGeometryFunction() {\n    return this.geometryFunction_;\n  }\n\n  /**\n   * Get the fill style.\n   * @return {import(\"./Fill.js\").default|null} Fill style.\n   * @api\n   */\n  getFill() {\n    return this.fill_;\n  }\n\n  /**\n   * Set the fill style.\n   * @param {import(\"./Fill.js\").default|null} fill Fill style.\n   * @api\n   */\n  setFill(fill) {\n    this.fill_ = fill;\n  }\n\n  /**\n   * Get the image style.\n   * @return {import(\"./Image.js\").default|null} Image style.\n   * @api\n   */\n  getImage() {\n    return this.image_;\n  }\n\n  /**\n   * Set the image style.\n   * @param {import(\"./Image.js\").default} image Image style.\n   * @api\n   */\n  setImage(image) {\n    this.image_ = image;\n  }\n\n  /**\n   * Get the stroke style.\n   * @return {import(\"./Stroke.js\").default|null} Stroke style.\n   * @api\n   */\n  getStroke() {\n    return this.stroke_;\n  }\n\n  /**\n   * Set the stroke style.\n   * @param {import(\"./Stroke.js\").default|null} stroke Stroke style.\n   * @api\n   */\n  setStroke(stroke) {\n    this.stroke_ = stroke;\n  }\n\n  /**\n   * Get the text style.\n   * @return {import(\"./Text.js\").default|null} Text style.\n   * @api\n   */\n  getText() {\n    return this.text_;\n  }\n\n  /**\n   * Set the text style.\n   * @param {import(\"./Text.js\").default} text Text style.\n   * @api\n   */\n  setText(text) {\n    this.text_ = text;\n  }\n\n  /**\n   * Get the z-index for the style.\n   * @return {number|undefined} ZIndex.\n   * @api\n   */\n  getZIndex() {\n    return this.zIndex_;\n  }\n\n  /**\n   * Set a geometry that is rendered instead of the feature's geometry.\n   *\n   * @param {string|import(\"../geom/Geometry.js\").default|GeometryFunction|null} geometry\n   *     Feature property or geometry or function returning a geometry to render\n   *     for this style.\n   * @api\n   */\n  setGeometry(geometry) {\n    if (typeof geometry === 'function') {\n      this.geometryFunction_ = geometry;\n    } else if (typeof geometry === 'string') {\n      this.geometryFunction_ = function (feature) {\n        return /** @type {import(\"../geom/Geometry.js\").default} */ (\n          feature.get(geometry)\n        );\n      };\n    } else if (!geometry) {\n      this.geometryFunction_ = defaultGeometryFunction;\n    } else if (geometry !== undefined) {\n      this.geometryFunction_ = function () {\n        return /** @type {import(\"../geom/Geometry.js\").default} */ (geometry);\n      };\n    }\n    this.geometry_ = geometry;\n  }\n\n  /**\n   * Set the z-index.\n   *\n   * @param {number|undefined} zIndex ZIndex.\n   * @api\n   */\n  setZIndex(zIndex) {\n    this.zIndex_ = zIndex;\n  }\n}\n\n/**\n * Convert the provided object into a style function.  Functions passed through\n * unchanged.  Arrays of Style or single style objects wrapped in a\n * new style function.\n * @param {StyleFunction|Array<Style>|Style} obj\n *     A style function, a single style, or an array of styles.\n * @return {StyleFunction} A style function.\n */\nexport function toFunction(obj) {\n  let styleFunction;\n\n  if (typeof obj === 'function') {\n    styleFunction = obj;\n  } else {\n    /**\n     * @type {Array<Style>}\n     */\n    let styles;\n    if (Array.isArray(obj)) {\n      styles = obj;\n    } else {\n      assert(\n        typeof (/** @type {?} */ (obj).getZIndex) === 'function',\n        'Expected an `Style` or an array of `Style`',\n      );\n      const style = /** @type {Style} */ (obj);\n      styles = [style];\n    }\n    styleFunction = function () {\n      return styles;\n    };\n  }\n  return styleFunction;\n}\n\n/**\n * @type {Array<Style>|null}\n */\nlet defaultStyles = null;\n\n/**\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} resolution Resolution.\n * @return {Array<Style>} Style.\n */\nexport function createDefaultStyle(feature, resolution) {\n  // We don't use an immediately-invoked function\n  // and a closure so we don't get an error at script evaluation time in\n  // browsers that do not support Canvas. (import(\"./Circle.js\").CircleStyle does\n  // canvas.getContext('2d') at construction time, which will cause an.error\n  // in such browsers.)\n  if (!defaultStyles) {\n    const fill = new Fill({\n      color: 'rgba(255,255,255,0.4)',\n    });\n    const stroke = new Stroke({\n      color: '#3399CC',\n      width: 1.25,\n    });\n    defaultStyles = [\n      new Style({\n        image: new CircleStyle({\n          fill: fill,\n          stroke: stroke,\n          radius: 5,\n        }),\n        fill: fill,\n        stroke: stroke,\n      }),\n    ];\n  }\n  return defaultStyles;\n}\n\n/**\n * Default styles for editing features.\n * @return {Object<import(\"../geom/Geometry.js\").Type, Array<Style>>} Styles\n */\nexport function createEditingStyle() {\n  /** @type {Object<import(\"../geom/Geometry.js\").Type, Array<Style>>} */\n  const styles = {};\n  const white = [255, 255, 255, 1];\n  const blue = [0, 153, 255, 1];\n  const width = 3;\n  styles['Polygon'] = [\n    new Style({\n      fill: new Fill({\n        color: [255, 255, 255, 0.5],\n      }),\n    }),\n  ];\n  styles['MultiPolygon'] = styles['Polygon'];\n\n  styles['LineString'] = [\n    new Style({\n      stroke: new Stroke({\n        color: white,\n        width: width + 2,\n      }),\n    }),\n    new Style({\n      stroke: new Stroke({\n        color: blue,\n        width: width,\n      }),\n    }),\n  ];\n  styles['MultiLineString'] = styles['LineString'];\n\n  styles['Circle'] = styles['Polygon'].concat(styles['LineString']);\n\n  styles['Point'] = [\n    new Style({\n      image: new CircleStyle({\n        radius: width * 2,\n        fill: new Fill({\n          color: blue,\n        }),\n        stroke: new Stroke({\n          color: white,\n          width: width / 2,\n        }),\n      }),\n      zIndex: Infinity,\n    }),\n  ];\n  styles['MultiPoint'] = styles['Point'];\n\n  styles['GeometryCollection'] = styles['Polygon'].concat(\n    styles['LineString'],\n    styles['Point'],\n  );\n\n  return styles;\n}\n\n/**\n * Function that is called with a feature and returns its default geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature to get the geometry for.\n * @return {import(\"../geom/Geometry.js\").default|import(\"../render/Feature.js\").default|undefined} Geometry to render.\n */\nfunction defaultGeometryFunction(feature) {\n  return feature.getGeometry();\n}\n\nexport default Style;\n","/**\n * @module ol/style/Text\n */\nimport {toSize} from '../size.js';\nimport Fill from './Fill.js';\n\n/**\n * @typedef {'point' | 'line'} TextPlacement\n * Default text placement is `'point'`. Note that\n * `'line'` requires the underlying geometry to be a {@link module:ol/geom/LineString~LineString},\n * {@link module:ol/geom/Polygon~Polygon}, {@link module:ol/geom/MultiLineString~MultiLineString} or\n * {@link module:ol/geom/MultiPolygon~MultiPolygon}.\n */\n\n/**\n * @typedef {'left' | 'center' | 'right'} TextJustify\n */\n\n/**\n * The default fill color to use if no fill was set at construction time; a\n * blackish `#333`.\n *\n * @const {string}\n */\nconst DEFAULT_FILL_COLOR = '#333';\n\n/**\n * @typedef {Object} Options\n * @property {string} [font] Font style as CSS `font` value, see:\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font. Default is `'10px sans-serif'`\n * @property {number} [maxAngle=Math.PI/4] When `placement` is set to `'line'`, allow a maximum angle between adjacent characters.\n * The expected value is in radians, and the default is 45° (`Math.PI / 4`).\n * @property {number} [offsetX=0] Horizontal text offset in pixels. A positive will shift the text right.\n * @property {number} [offsetY=0] Vertical text offset in pixels. A positive will shift the text down.\n * @property {boolean} [overflow=false] For polygon labels or when `placement` is set to `'line'`, allow text to exceed\n * the width of the polygon at the label position or the length of the path that it follows.\n * @property {TextPlacement} [placement='point'] Text placement.\n * @property {number} [repeat] Repeat interval. When set, the text will be repeated at this interval, which specifies\n * the distance between two text anchors in pixels. Only available when `placement` is set to `'line'`. Overrides 'textAlign'.\n * @property {number|import(\"../size.js\").Size} [scale] Scale.\n * @property {boolean} [rotateWithView=false] Whether to rotate the text with the view.\n * @property {boolean} [keepUpright=true] Whether the text can be rotated 180° to prevent being rendered upside down.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {string|Array<string>} [text] Text content or rich text content. For plain text provide a string, which can\n * contain line breaks (`\\n`). For rich text provide an array of text/font tuples. A tuple consists of the text to\n * render and the font to use (or `''` to use the text style's font). A line break has to be a separate tuple (i.e. `'\\n', ''`).\n * **Example:** `['foo', 'bold 10px sans-serif', ' bar', 'italic 10px sans-serif', ' baz', '']` will yield \"**foo** *bar* baz\".\n * **Note:** Rich text is not supported for `placement: 'line'` or the immediate rendering API.\n * @property {CanvasTextAlign} [textAlign] Text alignment. Possible values: `'left'`, `'right'`, `'center'`, `'end'` or `'start'`.\n * Default is `'center'` for `placement: 'point'`. For `placement: 'line'`, the default is to let the renderer choose a\n * placement where `maxAngle` is not exceeded.\n * @property {TextJustify} [justify] Text justification within the text box.\n * If not set, text is justified towards the `textAlign` anchor.\n * Otherwise, use options `'left'`, `'center'`, or `'right'` to justify the text within the text box.\n * **Note:** `justify` is ignored for immediate rendering and also for `placement: 'line'`.\n * @property {CanvasTextBaseline} [textBaseline='middle'] Text base line. Possible values: `'bottom'`, `'top'`, `'middle'`, `'alphabetic'`,\n * `'hanging'`, `'ideographic'`.\n * @property {import(\"./Fill.js\").default|null} [fill] Fill style. If none is provided, we'll use a dark fill-style (#333). Specify `null` for no fill.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {import(\"./Fill.js\").default} [backgroundFill] Fill style for the text background when `placement` is\n * `'point'`. Default is no fill.\n * @property {import(\"./Stroke.js\").default} [backgroundStroke] Stroke style for the text background  when `placement`\n * is `'point'`. Default is no stroke.\n * @property {Array<number>} [padding=[0, 0, 0, 0]] Padding in pixels around the text for decluttering and background. The order of\n * values in the array is `[top, right, bottom, left]`.\n * @property {import('../style/Style.js').DeclutterMode} [declutterMode] Declutter mode: `declutter`, `obstacle`, `none`\n */\n\n/**\n * @classdesc\n * Set text style for vector features.\n * @api\n */\nclass Text {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    /**\n     * @private\n     * @type {string|undefined}\n     */\n    this.font_ = options.font;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.rotation_ = options.rotation;\n\n    /**\n     * @private\n     * @type {boolean|undefined}\n     */\n    this.rotateWithView_ = options.rotateWithView;\n\n    /**\n     * @private\n     * @type {boolean|undefined}\n     */\n    this.keepUpright_ = options.keepUpright;\n\n    /**\n     * @private\n     * @type {number|import(\"../size.js\").Size|undefined}\n     */\n    this.scale_ = options.scale;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size}\n     */\n    this.scaleArray_ = toSize(options.scale !== undefined ? options.scale : 1);\n\n    /**\n     * @private\n     * @type {string|Array<string>|undefined}\n     */\n    this.text_ = options.text;\n\n    /**\n     * @private\n     * @type {CanvasTextAlign|undefined}\n     */\n    this.textAlign_ = options.textAlign;\n\n    /**\n     * @private\n     * @type {TextJustify|undefined}\n     */\n    this.justify_ = options.justify;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.repeat_ = options.repeat;\n\n    /**\n     * @private\n     * @type {CanvasTextBaseline|undefined}\n     */\n    this.textBaseline_ = options.textBaseline;\n\n    /**\n     * @private\n     * @type {import(\"./Fill.js\").default|null}\n     */\n    this.fill_ =\n      options.fill !== undefined\n        ? options.fill\n        : new Fill({color: DEFAULT_FILL_COLOR});\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxAngle_ =\n      options.maxAngle !== undefined ? options.maxAngle : Math.PI / 4;\n\n    /**\n     * @private\n     * @type {TextPlacement}\n     */\n    this.placement_ =\n      options.placement !== undefined ? options.placement : 'point';\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.overflow_ = !!options.overflow;\n\n    /**\n     * @private\n     * @type {import(\"./Stroke.js\").default|null}\n     */\n    this.stroke_ = options.stroke !== undefined ? options.stroke : null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.offsetX_ = options.offsetX !== undefined ? options.offsetX : 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.offsetY_ = options.offsetY !== undefined ? options.offsetY : 0;\n\n    /**\n     * @private\n     * @type {import(\"./Fill.js\").default|null}\n     */\n    this.backgroundFill_ = options.backgroundFill\n      ? options.backgroundFill\n      : null;\n\n    /**\n     * @private\n     * @type {import(\"./Stroke.js\").default|null}\n     */\n    this.backgroundStroke_ = options.backgroundStroke\n      ? options.backgroundStroke\n      : null;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.padding_ = options.padding === undefined ? null : options.padding;\n\n    /**\n     * @private\n     * @type {import('../style/Style.js').DeclutterMode}\n     */\n    this.declutterMode_ = options.declutterMode;\n  }\n\n  /**\n   * Clones the style.\n   * @return {Text} The cloned style.\n   * @api\n   */\n  clone() {\n    const scale = this.getScale();\n    return new Text({\n      font: this.getFont(),\n      placement: this.getPlacement(),\n      repeat: this.getRepeat(),\n      maxAngle: this.getMaxAngle(),\n      overflow: this.getOverflow(),\n      rotation: this.getRotation(),\n      rotateWithView: this.getRotateWithView(),\n      keepUpright: this.getKeepUpright(),\n      scale: Array.isArray(scale) ? scale.slice() : scale,\n      text: this.getText(),\n      textAlign: this.getTextAlign(),\n      justify: this.getJustify(),\n      textBaseline: this.getTextBaseline(),\n      fill:\n        this.getFill() instanceof Fill\n          ? this.getFill().clone()\n          : this.getFill(),\n      stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n      offsetX: this.getOffsetX(),\n      offsetY: this.getOffsetY(),\n      backgroundFill: this.getBackgroundFill()\n        ? this.getBackgroundFill().clone()\n        : undefined,\n      backgroundStroke: this.getBackgroundStroke()\n        ? this.getBackgroundStroke().clone()\n        : undefined,\n      padding: this.getPadding() || undefined,\n      declutterMode: this.getDeclutterMode(),\n    });\n  }\n\n  /**\n   * Get the `overflow` configuration.\n   * @return {boolean} Let text overflow the length of the path they follow.\n   * @api\n   */\n  getOverflow() {\n    return this.overflow_;\n  }\n\n  /**\n   * Get the font name.\n   * @return {string|undefined} Font.\n   * @api\n   */\n  getFont() {\n    return this.font_;\n  }\n\n  /**\n   * Get the maximum angle between adjacent characters.\n   * @return {number} Angle in radians.\n   * @api\n   */\n  getMaxAngle() {\n    return this.maxAngle_;\n  }\n\n  /**\n   * Get the label placement.\n   * @return {TextPlacement} Text placement.\n   * @api\n   */\n  getPlacement() {\n    return this.placement_;\n  }\n\n  /**\n   * Get the repeat interval of the text.\n   * @return {number|undefined} Repeat interval in pixels.\n   * @api\n   */\n  getRepeat() {\n    return this.repeat_;\n  }\n\n  /**\n   * Get the x-offset for the text.\n   * @return {number} Horizontal text offset.\n   * @api\n   */\n  getOffsetX() {\n    return this.offsetX_;\n  }\n\n  /**\n   * Get the y-offset for the text.\n   * @return {number} Vertical text offset.\n   * @api\n   */\n  getOffsetY() {\n    return this.offsetY_;\n  }\n\n  /**\n   * Get the fill style for the text.\n   * @return {import(\"./Fill.js\").default|null} Fill style.\n   * @api\n   */\n  getFill() {\n    return this.fill_;\n  }\n\n  /**\n   * Determine whether the text rotates with the map.\n   * @return {boolean|undefined} Rotate with map.\n   * @api\n   */\n  getRotateWithView() {\n    return this.rotateWithView_;\n  }\n\n  /**\n   * Determine whether the text can be rendered upside down.\n   * @return {boolean|undefined} Keep text upright.\n   * @api\n   */\n  getKeepUpright() {\n    return this.keepUpright_;\n  }\n\n  /**\n   * Get the text rotation.\n   * @return {number|undefined} Rotation.\n   * @api\n   */\n  getRotation() {\n    return this.rotation_;\n  }\n\n  /**\n   * Get the text scale.\n   * @return {number|import(\"../size.js\").Size|undefined} Scale.\n   * @api\n   */\n  getScale() {\n    return this.scale_;\n  }\n\n  /**\n   * Get the symbolizer scale array.\n   * @return {import(\"../size.js\").Size} Scale array.\n   */\n  getScaleArray() {\n    return this.scaleArray_;\n  }\n\n  /**\n   * Get the stroke style for the text.\n   * @return {import(\"./Stroke.js\").default|null} Stroke style.\n   * @api\n   */\n  getStroke() {\n    return this.stroke_;\n  }\n\n  /**\n   * Get the text to be rendered.\n   * @return {string|Array<string>|undefined} Text.\n   * @api\n   */\n  getText() {\n    return this.text_;\n  }\n\n  /**\n   * Get the text alignment.\n   * @return {CanvasTextAlign|undefined} Text align.\n   * @api\n   */\n  getTextAlign() {\n    return this.textAlign_;\n  }\n\n  /**\n   * Get the justification.\n   * @return {TextJustify|undefined} Justification.\n   * @api\n   */\n  getJustify() {\n    return this.justify_;\n  }\n\n  /**\n   * Get the text baseline.\n   * @return {CanvasTextBaseline|undefined} Text baseline.\n   * @api\n   */\n  getTextBaseline() {\n    return this.textBaseline_;\n  }\n\n  /**\n   * Get the background fill style for the text.\n   * @return {import(\"./Fill.js\").default|null} Fill style.\n   * @api\n   */\n  getBackgroundFill() {\n    return this.backgroundFill_;\n  }\n\n  /**\n   * Get the background stroke style for the text.\n   * @return {import(\"./Stroke.js\").default|null} Stroke style.\n   * @api\n   */\n  getBackgroundStroke() {\n    return this.backgroundStroke_;\n  }\n\n  /**\n   * Get the padding for the text.\n   * @return {Array<number>|null} Padding.\n   * @api\n   */\n  getPadding() {\n    return this.padding_;\n  }\n\n  /**\n   * Get the declutter mode of the shape\n   * @return {import(\"./Style.js\").DeclutterMode} Shape's declutter mode\n   * @api\n   */\n  getDeclutterMode() {\n    return this.declutterMode_;\n  }\n\n  /**\n   * Set the `overflow` property.\n   *\n   * @param {boolean} overflow Let text overflow the path that it follows.\n   * @api\n   */\n  setOverflow(overflow) {\n    this.overflow_ = overflow;\n  }\n\n  /**\n   * Set the font.\n   *\n   * @param {string|undefined} font Font.\n   * @api\n   */\n  setFont(font) {\n    this.font_ = font;\n  }\n\n  /**\n   * Set the maximum angle between adjacent characters.\n   *\n   * @param {number} maxAngle Angle in radians.\n   * @api\n   */\n  setMaxAngle(maxAngle) {\n    this.maxAngle_ = maxAngle;\n  }\n\n  /**\n   * Set the x offset.\n   *\n   * @param {number} offsetX Horizontal text offset.\n   * @api\n   */\n  setOffsetX(offsetX) {\n    this.offsetX_ = offsetX;\n  }\n\n  /**\n   * Set the y offset.\n   *\n   * @param {number} offsetY Vertical text offset.\n   * @api\n   */\n  setOffsetY(offsetY) {\n    this.offsetY_ = offsetY;\n  }\n\n  /**\n   * Set the text placement.\n   *\n   * @param {TextPlacement} placement Placement.\n   * @api\n   */\n  setPlacement(placement) {\n    this.placement_ = placement;\n  }\n\n  /**\n   * Set the repeat interval of the text.\n   * @param {number|undefined} [repeat] Repeat interval in pixels.\n   * @api\n   */\n  setRepeat(repeat) {\n    this.repeat_ = repeat;\n  }\n\n  /**\n   * Set whether to rotate the text with the view.\n   *\n   * @param {boolean} rotateWithView Rotate with map.\n   * @api\n   */\n  setRotateWithView(rotateWithView) {\n    this.rotateWithView_ = rotateWithView;\n  }\n\n  /**\n   * Set whether the text can be rendered upside down.\n   *\n   * @param {boolean} keepUpright Keep text upright.\n   * @api\n   */\n  setKeepUpright(keepUpright) {\n    this.keepUpright_ = keepUpright;\n  }\n\n  /**\n   * Set the fill.\n   *\n   * @param {import(\"./Fill.js\").default|null} fill Fill style.\n   * @api\n   */\n  setFill(fill) {\n    this.fill_ = fill;\n  }\n\n  /**\n   * Set the rotation.\n   *\n   * @param {number|undefined} rotation Rotation.\n   * @api\n   */\n  setRotation(rotation) {\n    this.rotation_ = rotation;\n  }\n\n  /**\n   * Set the scale.\n   *\n   * @param {number|import(\"../size.js\").Size|undefined} scale Scale.\n   * @api\n   */\n  setScale(scale) {\n    this.scale_ = scale;\n    this.scaleArray_ = toSize(scale !== undefined ? scale : 1);\n  }\n\n  /**\n   * Set the stroke.\n   *\n   * @param {import(\"./Stroke.js\").default|null} stroke Stroke style.\n   * @api\n   */\n  setStroke(stroke) {\n    this.stroke_ = stroke;\n  }\n\n  /**\n   * Set the text.\n   *\n   * @param {string|Array<string>|undefined} text Text.\n   * @api\n   */\n  setText(text) {\n    this.text_ = text;\n  }\n\n  /**\n   * Set the text alignment.\n   *\n   * @param {CanvasTextAlign|undefined} textAlign Text align.\n   * @api\n   */\n  setTextAlign(textAlign) {\n    this.textAlign_ = textAlign;\n  }\n\n  /**\n   * Set the justification.\n   *\n   * @param {TextJustify|undefined} justify Justification.\n   * @api\n   */\n  setJustify(justify) {\n    this.justify_ = justify;\n  }\n\n  /**\n   * Set the text baseline.\n   *\n   * @param {CanvasTextBaseline|undefined} textBaseline Text baseline.\n   * @api\n   */\n  setTextBaseline(textBaseline) {\n    this.textBaseline_ = textBaseline;\n  }\n\n  /**\n   * Set the background fill.\n   *\n   * @param {import(\"./Fill.js\").default|null} fill Fill style.\n   * @api\n   */\n  setBackgroundFill(fill) {\n    this.backgroundFill_ = fill;\n  }\n\n  /**\n   * Set the background stroke.\n   *\n   * @param {import(\"./Stroke.js\").default|null} stroke Stroke style.\n   * @api\n   */\n  setBackgroundStroke(stroke) {\n    this.backgroundStroke_ = stroke;\n  }\n\n  /**\n   * Set the padding (`[top, right, bottom, left]`).\n   *\n   * @param {Array<number>|null} padding Padding.\n   * @api\n   */\n  setPadding(padding) {\n    this.padding_ = padding;\n  }\n}\n\nexport default Text;\n","/**\n * @module ol/render/canvas/Immediate\n */\n// FIXME test, especially polygons with holes and multipolygons\n// FIXME need to handle large thick features (where pixel size matters)\n// FIXME add offset and end to ol/geom/flat/transform~transform2D?\n\nimport {equals} from '../../array.js';\nimport {asColorLike} from '../../colorlike.js';\nimport {intersects} from '../../extent.js';\nimport {transformGeom2D} from '../../geom/SimpleGeometry.js';\nimport {offsetLineString} from '../../geom/flat/lineoffset.js';\nimport {transform2D} from '../../geom/flat/transform.js';\nimport {toFixed} from '../../math.js';\nimport {\n  compose as composeTransform,\n  create as createTransform,\n} from '../../transform.js';\nimport VectorContext from '../VectorContext.js';\nimport {\n  defaultFillStyle,\n  defaultFont,\n  defaultLineCap,\n  defaultLineDash,\n  defaultLineDashOffset,\n  defaultLineJoin,\n  defaultLineWidth,\n  defaultMiterLimit,\n  defaultStrokeStyle,\n  defaultTextAlign,\n  defaultTextBaseline,\n} from '../canvas.js';\n\n/**\n * @classdesc\n * A concrete subclass of {@link module:ol/render/VectorContext~VectorContext} that implements\n * direct rendering of features and geometries to an HTML5 Canvas context.\n * Instances of this class are created internally by the library and\n * provided to application code as vectorContext member of the\n * {@link module:ol/render/Event~RenderEvent} object associated with postcompose, precompose and\n * render events emitted by layers and maps.\n */\nclass CanvasImmediateRenderer extends VectorContext {\n  /**\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../../extent.js\").Extent} extent Extent.\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   * @param {number} viewRotation View rotation.\n   * @param {number} [squaredTolerance] Optional squared tolerance for simplification.\n   * @param {import(\"../../proj.js\").TransformFunction} [userTransform] Transform from user to view projection.\n   */\n  constructor(\n    context,\n    pixelRatio,\n    extent,\n    transform,\n    viewRotation,\n    squaredTolerance,\n    userTransform,\n  ) {\n    super();\n\n    /**\n     * @private\n     * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}\n     */\n    this.context_ = context;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ = pixelRatio;\n\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.extent_ = extent;\n\n    /**\n     * @private\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.transform_ = transform;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.transformRotation_ = transform\n      ? toFixed(Math.atan2(transform[1], transform[0]), 10)\n      : 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.viewRotation_ = viewRotation;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.squaredTolerance_ = squaredTolerance;\n\n    /**\n     * @private\n     * @type {import(\"../../proj.js\").TransformFunction}\n     */\n    this.userTransform_ = userTransform;\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").FillState}\n     */\n    this.contextFillState_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").StrokeState}\n     */\n    this.contextStrokeState_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").TextState}\n     */\n    this.contextTextState_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").FillState}\n     */\n    this.fillState_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").StrokeState}\n     */\n    this.strokeState_ = null;\n\n    /**\n     * @private\n     * @type {import('../../DataTile.js').ImageLike}\n     */\n    this.image_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.imageAnchorX_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.imageAnchorY_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.imageHeight_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.imageOpacity_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.imageOriginX_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.imageOriginY_ = 0;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.imageRotateWithView_ = false;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.imageRotation_ = 0;\n\n    /**\n     * @private\n     * @type {import(\"../../size.js\").Size}\n     */\n    this.imageScale_ = [0, 0];\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.imageWidth_ = 0;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.text_ = '';\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.textOffsetX_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.textOffsetY_ = 0;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.textRotateWithView_ = false;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.textRotation_ = 0;\n\n    /**\n     * @private\n     * @type {import(\"../../size.js\").Size}\n     */\n    this.textScale_ = [0, 0];\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").FillState}\n     */\n    this.textFillState_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").StrokeState}\n     */\n    this.textStrokeState_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"../canvas.js\").TextState}\n     */\n    this.textState_ = null;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.pixelCoordinates_ = [];\n\n    /**\n     * @private\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.tmpLocalTransform_ = createTransform();\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {number} end End.\n   * @param {number} stride Stride.\n   * @private\n   */\n  drawImages_(flatCoordinates, offset, end, stride) {\n    if (!this.image_) {\n      return;\n    }\n    const pixelCoordinates = transform2D(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      this.transform_,\n      this.pixelCoordinates_,\n    );\n    const context = this.context_;\n    const localTransform = this.tmpLocalTransform_;\n    const alpha = context.globalAlpha;\n    if (this.imageOpacity_ != 1) {\n      context.globalAlpha = alpha * this.imageOpacity_;\n    }\n    let rotation = this.imageRotation_;\n    if (this.transformRotation_ === 0) {\n      rotation -= this.viewRotation_;\n    }\n    if (this.imageRotateWithView_) {\n      rotation += this.viewRotation_;\n    }\n    for (let i = 0, ii = pixelCoordinates.length; i < ii; i += 2) {\n      const x = pixelCoordinates[i] - this.imageAnchorX_;\n      const y = pixelCoordinates[i + 1] - this.imageAnchorY_;\n      if (\n        rotation !== 0 ||\n        this.imageScale_[0] != 1 ||\n        this.imageScale_[1] != 1\n      ) {\n        const centerX = x + this.imageAnchorX_;\n        const centerY = y + this.imageAnchorY_;\n        composeTransform(\n          localTransform,\n          centerX,\n          centerY,\n          1,\n          1,\n          rotation,\n          -centerX,\n          -centerY,\n        );\n        context.save();\n        context.transform.apply(context, localTransform);\n        context.translate(centerX, centerY);\n        context.scale(this.imageScale_[0], this.imageScale_[1]);\n        context.drawImage(\n          this.image_,\n          this.imageOriginX_,\n          this.imageOriginY_,\n          this.imageWidth_,\n          this.imageHeight_,\n          -this.imageAnchorX_,\n          -this.imageAnchorY_,\n          this.imageWidth_,\n          this.imageHeight_,\n        );\n        context.restore();\n      } else {\n        context.drawImage(\n          this.image_,\n          this.imageOriginX_,\n          this.imageOriginY_,\n          this.imageWidth_,\n          this.imageHeight_,\n          x,\n          y,\n          this.imageWidth_,\n          this.imageHeight_,\n        );\n      }\n    }\n    if (this.imageOpacity_ != 1) {\n      context.globalAlpha = alpha;\n    }\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {number} end End.\n   * @param {number} stride Stride.\n   * @private\n   */\n  drawText_(flatCoordinates, offset, end, stride) {\n    if (!this.textState_ || this.text_ === '') {\n      return;\n    }\n    if (this.textFillState_) {\n      this.setContextFillState_(this.textFillState_);\n    }\n    if (this.textStrokeState_) {\n      this.setContextStrokeState_(this.textStrokeState_);\n    }\n    this.setContextTextState_(this.textState_);\n    const pixelCoordinates = transform2D(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      this.transform_,\n      this.pixelCoordinates_,\n    );\n    const context = this.context_;\n    let rotation = this.textRotation_;\n    if (this.transformRotation_ === 0) {\n      rotation -= this.viewRotation_;\n    }\n    if (this.textRotateWithView_) {\n      rotation += this.viewRotation_;\n    }\n    for (; offset < end; offset += stride) {\n      const x = pixelCoordinates[offset] + this.textOffsetX_;\n      const y = pixelCoordinates[offset + 1] + this.textOffsetY_;\n      if (\n        rotation !== 0 ||\n        this.textScale_[0] != 1 ||\n        this.textScale_[1] != 1\n      ) {\n        context.save();\n        context.translate(x - this.textOffsetX_, y - this.textOffsetY_);\n        context.rotate(rotation);\n        context.translate(this.textOffsetX_, this.textOffsetY_);\n        context.scale(this.textScale_[0], this.textScale_[1]);\n        if (this.textStrokeState_) {\n          context.strokeText(this.text_, 0, 0);\n        }\n        if (this.textFillState_) {\n          context.fillText(this.text_, 0, 0);\n        }\n        context.restore();\n      } else {\n        if (this.textStrokeState_) {\n          context.strokeText(this.text_, x, y);\n        }\n        if (this.textFillState_) {\n          context.fillText(this.text_, x, y);\n        }\n      }\n    }\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {number} end End.\n   * @param {number} stride Stride.\n   * @param {boolean} close Close.\n   * @param {number} [strokeOffset] Stroke Offset.\n   * @private\n   * @return {number} end End.\n   */\n  moveToLineTo_(flatCoordinates, offset, end, stride, close, strokeOffset) {\n    const context = this.context_;\n    let pixelCoordinates = transform2D(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      this.transform_,\n      this.pixelCoordinates_,\n    );\n    if (Math.abs(strokeOffset) > 0) {\n      pixelCoordinates = offsetLineString(\n        pixelCoordinates,\n        stride,\n        strokeOffset,\n        close,\n        pixelCoordinates,\n      );\n    }\n    context.moveTo(pixelCoordinates[0], pixelCoordinates[1]);\n    let length = pixelCoordinates.length;\n    if (close) {\n      length -= 2;\n    }\n    for (let i = 2; i < length; i += 2) {\n      context.lineTo(pixelCoordinates[i], pixelCoordinates[i + 1]);\n    }\n    if (close) {\n      context.closePath();\n    }\n    return end;\n  }\n\n  /**\n   * @param {Array<number>} flatCoordinates Flat coordinates.\n   * @param {number} offset Offset.\n   * @param {Array<number>} ends Ends.\n   * @param {number} stride Stride.\n   * @param {number} [strokeOffset] Stroke Offset.\n   * @private\n   * @return {number} End.\n   */\n  drawRings_(flatCoordinates, offset, ends, stride, strokeOffset) {\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      offset = this.moveToLineTo_(\n        flatCoordinates,\n        offset,\n        ends[i],\n        stride,\n        true,\n        strokeOffset,\n      );\n    }\n    return offset;\n  }\n\n  /**\n   * Render a circle geometry into the canvas.  Rendering is immediate and uses\n   * the current fill and stroke styles.\n   *\n   * @param {import(\"../../geom/Circle.js\").default} geometry Circle geometry.\n   * @api\n   * @override\n   */\n  drawCircle(geometry) {\n    if (this.squaredTolerance_) {\n      geometry = /** @type {import(\"../../geom/Circle.js\").default} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\n    }\n    if (!intersects(this.extent_, geometry.getExtent())) {\n      return;\n    }\n    if (this.fillState_ || this.strokeState_) {\n      if (this.fillState_) {\n        this.setContextFillState_(this.fillState_);\n      }\n      if (this.strokeState_) {\n        this.setContextStrokeState_(this.strokeState_);\n      }\n      const pixelCoordinates = transformGeom2D(\n        geometry,\n        this.transform_,\n        this.pixelCoordinates_,\n      );\n      const dx = pixelCoordinates[2] - pixelCoordinates[0];\n      const dy = pixelCoordinates[3] - pixelCoordinates[1];\n      const radius = Math.sqrt(dx * dx + dy * dy);\n      const context = this.context_;\n      context.beginPath();\n      context.arc(\n        pixelCoordinates[0],\n        pixelCoordinates[1],\n        radius,\n        0,\n        2 * Math.PI,\n      );\n      if (this.fillState_) {\n        context.fill();\n      }\n      if (this.strokeState_) {\n        context.stroke();\n      }\n    }\n    if (this.text_ !== '') {\n      this.drawText_(geometry.getCenter(), 0, 2, 2);\n    }\n  }\n\n  /**\n   * Set the rendering style.  Note that since this is an immediate rendering API,\n   * any `zIndex` on the provided style will be ignored.\n   *\n   * @param {import(\"../../style/Style.js\").default} style The rendering style.\n   * @api\n   * @override\n   */\n  setStyle(style) {\n    this.setFillStrokeStyle(style.getFill(), style.getStroke());\n    this.setImageStyle(style.getImage());\n    this.setTextStyle(style.getText());\n  }\n\n  /**\n   * @param {import(\"../../transform.js\").Transform} transform Transform.\n   */\n  setTransform(transform) {\n    this.transform_ = transform;\n  }\n\n  /**\n   * Render a geometry into the canvas.  Call\n   * {@link module:ol/render/canvas/Immediate~CanvasImmediateRenderer#setStyle renderer.setStyle()} first to set the rendering style.\n   *\n   * @param {import(\"../../geom/Geometry.js\").default|import(\"../Feature.js\").default} geometry The geometry to render.\n   * @api\n   * @override\n   */\n  drawGeometry(geometry) {\n    const type = geometry.getType();\n    switch (type) {\n      case 'Point':\n        this.drawPoint(\n          /** @type {import(\"../../geom/Point.js\").default} */ (geometry),\n        );\n        break;\n      case 'LineString':\n        this.drawLineString(\n          /** @type {import(\"../../geom/LineString.js\").default} */ (geometry),\n        );\n        break;\n      case 'Polygon':\n        this.drawPolygon(\n          /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry),\n        );\n        break;\n      case 'MultiPoint':\n        this.drawMultiPoint(\n          /** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry),\n        );\n        break;\n      case 'MultiLineString':\n        this.drawMultiLineString(\n          /** @type {import(\"../../geom/MultiLineString.js\").default} */ (\n            geometry\n          ),\n        );\n        break;\n      case 'MultiPolygon':\n        this.drawMultiPolygon(\n          /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n            geometry\n          ),\n        );\n        break;\n      case 'GeometryCollection':\n        this.drawGeometryCollection(\n          /** @type {import(\"../../geom/GeometryCollection.js\").default} */ (\n            geometry\n          ),\n        );\n        break;\n      case 'Circle':\n        this.drawCircle(\n          /** @type {import(\"../../geom/Circle.js\").default} */ (geometry),\n        );\n        break;\n      default:\n    }\n  }\n\n  /**\n   * Render a feature into the canvas.  Note that any `zIndex` on the provided\n   * style will be ignored - features are rendered immediately in the order that\n   * this method is called.  If you need `zIndex` support, you should be using an\n   * {@link module:ol/layer/Vector~VectorLayer} instead.\n   *\n   * @param {import(\"../../Feature.js\").default} feature Feature.\n   * @param {import(\"../../style/Style.js\").default} style Style.\n   * @api\n   * @override\n   */\n  drawFeature(feature, style) {\n    const geometry = style.getGeometryFunction()(feature);\n    if (!geometry) {\n      return;\n    }\n    this.setStyle(style);\n    this.drawGeometry(geometry);\n  }\n\n  /**\n   * Render a GeometryCollection to the canvas.  Rendering is immediate and\n   * uses the current styles appropriate for each geometry in the collection.\n   *\n   * @param {import(\"../../geom/GeometryCollection.js\").default} geometry Geometry collection.\n   * @override\n   */\n  drawGeometryCollection(geometry) {\n    const geometries = geometry.getGeometriesArray();\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      this.drawGeometry(geometries[i]);\n    }\n  }\n\n  /**\n   * Render a Point geometry into the canvas.  Rendering is immediate and uses\n   * the current style.\n   *\n   * @param {import(\"../../geom/Point.js\").default|import(\"../Feature.js\").default} geometry Point geometry.\n   * @override\n   */\n  drawPoint(geometry) {\n    if (this.squaredTolerance_) {\n      geometry = /** @type {import(\"../../geom/Point.js\").default} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\n    }\n    const flatCoordinates = geometry.getFlatCoordinates();\n    const stride = geometry.getStride();\n    if (this.image_) {\n      this.drawImages_(flatCoordinates, 0, flatCoordinates.length, stride);\n    }\n    if (this.text_ !== '') {\n      this.drawText_(flatCoordinates, 0, flatCoordinates.length, stride);\n    }\n  }\n\n  /**\n   * Render a MultiPoint geometry  into the canvas.  Rendering is immediate and\n   * uses the current style.\n   *\n   * @param {import(\"../../geom/MultiPoint.js\").default|import(\"../Feature.js\").default} geometry MultiPoint geometry.\n   * @override\n   */\n  drawMultiPoint(geometry) {\n    if (this.squaredTolerance_) {\n      geometry = /** @type {import(\"../../geom/MultiPoint.js\").default} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\n    }\n    const flatCoordinates = geometry.getFlatCoordinates();\n    const stride = geometry.getStride();\n    if (this.image_) {\n      this.drawImages_(flatCoordinates, 0, flatCoordinates.length, stride);\n    }\n    if (this.text_ !== '') {\n      this.drawText_(flatCoordinates, 0, flatCoordinates.length, stride);\n    }\n  }\n\n  /**\n   * Render a LineString into the canvas.  Rendering is immediate and uses\n   * the current style.\n   *\n   * @param {import(\"../../geom/LineString.js\").default|import(\"../Feature.js\").default} geometry LineString geometry.\n   * @override\n   */\n  drawLineString(geometry) {\n    if (this.squaredTolerance_) {\n      geometry = /** @type {import(\"../../geom/LineString.js\").default} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\n    }\n    if (!intersects(this.extent_, geometry.getExtent())) {\n      return;\n    }\n    if (this.strokeState_) {\n      this.setContextStrokeState_(this.strokeState_);\n      const context = this.context_;\n      const flatCoordinates = geometry.getFlatCoordinates();\n      context.beginPath();\n      this.moveToLineTo_(\n        flatCoordinates,\n        0,\n        flatCoordinates.length,\n        geometry.getStride(),\n        false,\n        this.strokeState_.strokeOffset,\n      );\n      context.stroke();\n    }\n    if (this.text_ !== '') {\n      const flatMidpoint = geometry.getFlatMidpoint();\n      this.drawText_(flatMidpoint, 0, 2, 2);\n    }\n  }\n\n  /**\n   * Render a MultiLineString geometry into the canvas.  Rendering is immediate\n   * and uses the current style.\n   *\n   * @param {import(\"../../geom/MultiLineString.js\").default|import(\"../Feature.js\").default} geometry MultiLineString geometry.\n   * @override\n   */\n  drawMultiLineString(geometry) {\n    if (this.squaredTolerance_) {\n      geometry =\n        /** @type {import(\"../../geom/MultiLineString.js\").default} */ (\n          geometry.simplifyTransformed(\n            this.squaredTolerance_,\n            this.userTransform_,\n          )\n        );\n    }\n    const geometryExtent = geometry.getExtent();\n    if (!intersects(this.extent_, geometryExtent)) {\n      return;\n    }\n    if (this.strokeState_) {\n      this.setContextStrokeState_(this.strokeState_);\n      const context = this.context_;\n      const flatCoordinates = geometry.getFlatCoordinates();\n      let offset = 0;\n      const ends = /** @type {Array<number>} */ (geometry.getEnds());\n      const stride = geometry.getStride();\n      context.beginPath();\n      for (let i = 0, ii = ends.length; i < ii; ++i) {\n        offset = this.moveToLineTo_(\n          flatCoordinates,\n          offset,\n          ends[i],\n          stride,\n          false,\n          this.strokeState_.strokeOffset,\n        );\n      }\n      context.stroke();\n    }\n    if (this.text_ !== '') {\n      const flatMidpoints = geometry.getFlatMidpoints();\n      this.drawText_(flatMidpoints, 0, flatMidpoints.length, 2);\n    }\n  }\n\n  /**\n   * Render a Polygon geometry into the canvas.  Rendering is immediate and uses\n   * the current style.\n   *\n   * @param {import(\"../../geom/Polygon.js\").default|import(\"../Feature.js\").default} geometry Polygon geometry.\n   * @override\n   */\n  drawPolygon(geometry) {\n    if (this.squaredTolerance_) {\n      geometry = /** @type {import(\"../../geom/Polygon.js\").default} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\n    }\n    if (!intersects(this.extent_, geometry.getExtent())) {\n      return;\n    }\n    if (this.strokeState_ || this.fillState_) {\n      if (this.fillState_) {\n        this.setContextFillState_(this.fillState_);\n      }\n      if (this.strokeState_) {\n        this.setContextStrokeState_(this.strokeState_);\n      }\n      const context = this.context_;\n      context.beginPath();\n      this.drawRings_(\n        geometry.getOrientedFlatCoordinates(),\n        0,\n        /** @type {Array<number>} */ (geometry.getEnds()),\n        geometry.getStride(),\n        this.strokeState_?.strokeOffset,\n      );\n      if (this.fillState_) {\n        context.fill();\n      }\n      if (this.strokeState_) {\n        context.stroke();\n      }\n    }\n    if (this.text_ !== '') {\n      const flatInteriorPoint = geometry.getFlatInteriorPoint();\n      this.drawText_(flatInteriorPoint, 0, 2, 2);\n    }\n  }\n\n  /**\n   * Render MultiPolygon geometry into the canvas.  Rendering is immediate and\n   * uses the current style.\n   * @param {import(\"../../geom/MultiPolygon.js\").default} geometry MultiPolygon geometry.\n   * @override\n   */\n  drawMultiPolygon(geometry) {\n    if (this.squaredTolerance_) {\n      geometry = /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (\n        geometry.simplifyTransformed(\n          this.squaredTolerance_,\n          this.userTransform_,\n        )\n      );\n    }\n    if (!intersects(this.extent_, geometry.getExtent())) {\n      return;\n    }\n    if (this.strokeState_ || this.fillState_) {\n      if (this.fillState_) {\n        this.setContextFillState_(this.fillState_);\n      }\n      if (this.strokeState_) {\n        this.setContextStrokeState_(this.strokeState_);\n      }\n      const context = this.context_;\n      const flatCoordinates = geometry.getOrientedFlatCoordinates();\n      let offset = 0;\n      const endss = geometry.getEndss();\n      const stride = geometry.getStride();\n      context.beginPath();\n      for (let i = 0, ii = endss.length; i < ii; ++i) {\n        const ends = endss[i];\n        offset = this.drawRings_(\n          flatCoordinates,\n          offset,\n          ends,\n          stride,\n          this.strokeState_?.strokeOffset,\n        );\n      }\n      if (this.fillState_) {\n        context.fill();\n      }\n      if (this.strokeState_) {\n        context.stroke();\n      }\n    }\n    if (this.text_ !== '') {\n      const flatInteriorPoints = geometry.getFlatInteriorPoints();\n      this.drawText_(flatInteriorPoints, 0, flatInteriorPoints.length, 2);\n    }\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").FillState} fillState Fill state.\n   * @private\n   */\n  setContextFillState_(fillState) {\n    const context = this.context_;\n    const contextFillState = this.contextFillState_;\n    if (!contextFillState) {\n      context.fillStyle = fillState.fillStyle;\n      this.contextFillState_ = {\n        fillStyle: fillState.fillStyle,\n      };\n    } else {\n      if (contextFillState.fillStyle != fillState.fillStyle) {\n        contextFillState.fillStyle = fillState.fillStyle;\n        context.fillStyle = fillState.fillStyle;\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").StrokeState} strokeState Stroke state.\n   * @private\n   */\n  setContextStrokeState_(strokeState) {\n    const context = this.context_;\n    const contextStrokeState = this.contextStrokeState_;\n    if (!contextStrokeState) {\n      context.lineCap = strokeState.lineCap;\n      context.setLineDash(strokeState.lineDash);\n      context.lineDashOffset = strokeState.lineDashOffset;\n      context.lineJoin = strokeState.lineJoin;\n      context.lineWidth = strokeState.lineWidth;\n      context.miterLimit = strokeState.miterLimit;\n      context.strokeStyle = strokeState.strokeStyle;\n      this.contextStrokeState_ = {\n        lineCap: strokeState.lineCap,\n        lineDash: strokeState.lineDash,\n        lineDashOffset: strokeState.lineDashOffset,\n        lineJoin: strokeState.lineJoin,\n        lineWidth: strokeState.lineWidth,\n        miterLimit: strokeState.miterLimit,\n        strokeStyle: strokeState.strokeStyle,\n      };\n    } else {\n      if (contextStrokeState.lineCap != strokeState.lineCap) {\n        contextStrokeState.lineCap = strokeState.lineCap;\n        context.lineCap = strokeState.lineCap;\n      }\n      if (!equals(contextStrokeState.lineDash, strokeState.lineDash)) {\n        context.setLineDash(\n          (contextStrokeState.lineDash = strokeState.lineDash),\n        );\n      }\n      if (contextStrokeState.lineDashOffset != strokeState.lineDashOffset) {\n        contextStrokeState.lineDashOffset = strokeState.lineDashOffset;\n        context.lineDashOffset = strokeState.lineDashOffset;\n      }\n      if (contextStrokeState.lineJoin != strokeState.lineJoin) {\n        contextStrokeState.lineJoin = strokeState.lineJoin;\n        context.lineJoin = strokeState.lineJoin;\n      }\n      if (contextStrokeState.lineWidth != strokeState.lineWidth) {\n        contextStrokeState.lineWidth = strokeState.lineWidth;\n        context.lineWidth = strokeState.lineWidth;\n      }\n      if (contextStrokeState.miterLimit != strokeState.miterLimit) {\n        contextStrokeState.miterLimit = strokeState.miterLimit;\n        context.miterLimit = strokeState.miterLimit;\n      }\n      if (contextStrokeState.strokeStyle != strokeState.strokeStyle) {\n        contextStrokeState.strokeStyle = strokeState.strokeStyle;\n        context.strokeStyle = strokeState.strokeStyle;\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../canvas.js\").TextState} textState Text state.\n   * @private\n   */\n  setContextTextState_(textState) {\n    const context = this.context_;\n    const contextTextState = this.contextTextState_;\n    const textAlign = textState.textAlign\n      ? textState.textAlign\n      : defaultTextAlign;\n    if (!contextTextState) {\n      context.font = textState.font;\n      context.textAlign = textAlign;\n      context.textBaseline = textState.textBaseline;\n      this.contextTextState_ = {\n        font: textState.font,\n        textAlign: textAlign,\n        textBaseline: textState.textBaseline,\n      };\n    } else {\n      if (contextTextState.font != textState.font) {\n        contextTextState.font = textState.font;\n        context.font = textState.font;\n      }\n      if (contextTextState.textAlign != textAlign) {\n        contextTextState.textAlign = textAlign;\n        context.textAlign = textAlign;\n      }\n      if (contextTextState.textBaseline != textState.textBaseline) {\n        contextTextState.textBaseline = textState.textBaseline;\n        context.textBaseline = textState.textBaseline;\n      }\n    }\n  }\n\n  /**\n   * Set the fill and stroke style for subsequent draw operations.  To clear\n   * either fill or stroke styles, pass null for the appropriate parameter.\n   *\n   * @param {import(\"../../style/Fill.js\").default} fillStyle Fill style.\n   * @param {import(\"../../style/Stroke.js\").default} strokeStyle Stroke style.\n   * @override\n   */\n  setFillStrokeStyle(fillStyle, strokeStyle) {\n    if (!fillStyle) {\n      this.fillState_ = null;\n    } else {\n      const fillStyleColor = fillStyle.getColor();\n      this.fillState_ = {\n        fillStyle: asColorLike(\n          fillStyleColor ? fillStyleColor : defaultFillStyle,\n        ),\n      };\n    }\n    if (!strokeStyle) {\n      this.strokeState_ = null;\n    } else {\n      const strokeStyleColor = strokeStyle.getColor();\n      const strokeStyleLineCap = strokeStyle.getLineCap();\n      const strokeStyleLineDash = strokeStyle.getLineDash();\n      const strokeStyleLineDashOffset = strokeStyle.getLineDashOffset();\n      const strokeStyleLineJoin = strokeStyle.getLineJoin();\n      const strokeStyleWidth = strokeStyle.getWidth();\n      const strokeStyleMiterLimit = strokeStyle.getMiterLimit();\n      const lineDash = strokeStyleLineDash\n        ? strokeStyleLineDash\n        : defaultLineDash;\n      const strokeOffset = strokeStyle.getOffset();\n      this.strokeState_ = {\n        lineCap:\n          strokeStyleLineCap !== undefined\n            ? strokeStyleLineCap\n            : defaultLineCap,\n        lineDash:\n          this.pixelRatio_ === 1\n            ? lineDash\n            : lineDash.map((n) => n * this.pixelRatio_),\n        lineDashOffset:\n          (strokeStyleLineDashOffset\n            ? strokeStyleLineDashOffset\n            : defaultLineDashOffset) * this.pixelRatio_,\n        lineJoin:\n          strokeStyleLineJoin !== undefined\n            ? strokeStyleLineJoin\n            : defaultLineJoin,\n        lineWidth:\n          (strokeStyleWidth !== undefined\n            ? strokeStyleWidth\n            : defaultLineWidth) * this.pixelRatio_,\n        miterLimit:\n          strokeStyleMiterLimit !== undefined\n            ? strokeStyleMiterLimit\n            : defaultMiterLimit,\n        strokeStyle: asColorLike(\n          strokeStyleColor ? strokeStyleColor : defaultStrokeStyle,\n        ),\n        strokeOffset: (strokeOffset ?? 0) * this.pixelRatio_,\n      };\n    }\n  }\n\n  /**\n   * Set the image style for subsequent draw operations.  Pass null to remove\n   * the image style.\n   *\n   * @param {import(\"../../style/Image.js\").default} imageStyle Image style.\n   * @override\n   */\n  setImageStyle(imageStyle) {\n    let imageSize;\n    if (!imageStyle || !(imageSize = imageStyle.getSize())) {\n      this.image_ = null;\n      return;\n    }\n    const imagePixelRatio = imageStyle.getPixelRatio(this.pixelRatio_);\n    const imageAnchor = imageStyle.getAnchor();\n    const imageOrigin = imageStyle.getOrigin();\n    this.image_ = imageStyle.getImage(this.pixelRatio_);\n    this.imageAnchorX_ = imageAnchor[0] * imagePixelRatio;\n    this.imageAnchorY_ = imageAnchor[1] * imagePixelRatio;\n    this.imageHeight_ = imageSize[1] * imagePixelRatio;\n    this.imageOpacity_ = imageStyle.getOpacity();\n    this.imageOriginX_ = imageOrigin[0];\n    this.imageOriginY_ = imageOrigin[1];\n    this.imageRotateWithView_ = imageStyle.getRotateWithView();\n    this.imageRotation_ = imageStyle.getRotation();\n    const imageScale = imageStyle.getScaleArray();\n    this.imageScale_ = [\n      (imageScale[0] * this.pixelRatio_) / imagePixelRatio,\n      (imageScale[1] * this.pixelRatio_) / imagePixelRatio,\n    ];\n    this.imageWidth_ = imageSize[0] * imagePixelRatio;\n  }\n\n  /**\n   * Set the text style for subsequent draw operations.  Pass null to\n   * remove the text style.\n   *\n   * @param {import(\"../../style/Text.js\").default} textStyle Text style.\n   * @override\n   */\n  setTextStyle(textStyle) {\n    if (!textStyle) {\n      this.text_ = '';\n    } else {\n      const textFillStyle = textStyle.getFill();\n      if (!textFillStyle) {\n        this.textFillState_ = null;\n      } else {\n        const textFillStyleColor = textFillStyle.getColor();\n        this.textFillState_ = {\n          fillStyle: asColorLike(\n            textFillStyleColor ? textFillStyleColor : defaultFillStyle,\n          ),\n        };\n      }\n      const textStrokeStyle = textStyle.getStroke();\n      if (!textStrokeStyle) {\n        this.textStrokeState_ = null;\n      } else {\n        const textStrokeStyleColor = textStrokeStyle.getColor();\n        const textStrokeStyleLineCap = textStrokeStyle.getLineCap();\n        const textStrokeStyleLineDash = textStrokeStyle.getLineDash();\n        const textStrokeStyleLineDashOffset =\n          textStrokeStyle.getLineDashOffset();\n        const textStrokeStyleLineJoin = textStrokeStyle.getLineJoin();\n        const textStrokeStyleWidth = textStrokeStyle.getWidth();\n        const textStrokeStyleMiterLimit = textStrokeStyle.getMiterLimit();\n        this.textStrokeState_ = {\n          lineCap:\n            textStrokeStyleLineCap !== undefined\n              ? textStrokeStyleLineCap\n              : defaultLineCap,\n          lineDash: textStrokeStyleLineDash\n            ? textStrokeStyleLineDash\n            : defaultLineDash,\n          lineDashOffset: textStrokeStyleLineDashOffset\n            ? textStrokeStyleLineDashOffset\n            : defaultLineDashOffset,\n          lineJoin:\n            textStrokeStyleLineJoin !== undefined\n              ? textStrokeStyleLineJoin\n              : defaultLineJoin,\n          lineWidth:\n            textStrokeStyleWidth !== undefined\n              ? textStrokeStyleWidth\n              : defaultLineWidth,\n          miterLimit:\n            textStrokeStyleMiterLimit !== undefined\n              ? textStrokeStyleMiterLimit\n              : defaultMiterLimit,\n          strokeStyle: asColorLike(\n            textStrokeStyleColor ? textStrokeStyleColor : defaultStrokeStyle,\n          ),\n        };\n      }\n      const textFont = textStyle.getFont();\n      const textOffsetX = textStyle.getOffsetX();\n      const textOffsetY = textStyle.getOffsetY();\n      const textRotateWithView = textStyle.getRotateWithView();\n      const textRotation = textStyle.getRotation();\n      const textScale = textStyle.getScaleArray();\n      const textText = textStyle.getText();\n      const textTextAlign = textStyle.getTextAlign();\n      const textTextBaseline = textStyle.getTextBaseline();\n      this.textState_ = {\n        font: textFont !== undefined ? textFont : defaultFont,\n        textAlign:\n          textTextAlign !== undefined ? textTextAlign : defaultTextAlign,\n        textBaseline:\n          textTextBaseline !== undefined\n            ? textTextBaseline\n            : defaultTextBaseline,\n      };\n      this.text_ =\n        textText !== undefined\n          ? Array.isArray(textText)\n            ? textText.reduce((acc, t, i) => (acc += i % 2 ? ' ' : t), '')\n            : textText\n          : '';\n      this.textOffsetX_ =\n        textOffsetX !== undefined ? this.pixelRatio_ * textOffsetX : 0;\n      this.textOffsetY_ =\n        textOffsetY !== undefined ? this.pixelRatio_ * textOffsetY : 0;\n      this.textRotateWithView_ =\n        textRotateWithView !== undefined ? textRotateWithView : false;\n      this.textRotation_ = textRotation !== undefined ? textRotation : 0;\n      this.textScale_ = [\n        this.pixelRatio_ * textScale[0],\n        this.pixelRatio_ * textScale[1],\n      ];\n    }\n  }\n}\n\nexport default CanvasImmediateRenderer;\n","/**\n * @module ol/render/canvas/hitdetect\n */\n\nimport {ascending} from '../../array.js';\nimport {createCanvasContext2D} from '../../dom.js';\nimport {intersects} from '../../extent.js';\nimport {clamp} from '../../math.js';\nimport {\n  getTransformFromProjections,\n  getUserProjection,\n  toUserExtent,\n} from '../../proj.js';\nimport {Icon} from '../../style.js';\nimport CanvasImmediateRenderer from './Immediate.js';\n\nexport const HIT_DETECT_RESOLUTION = 0.5;\n\n/**\n * @param {import(\"../../size.js\").Size} size Canvas size in css pixels.\n * @param {Array<import(\"../../transform.js\").Transform>} transforms Transforms\n * for rendering features to all worlds of the viewport, from coordinates to css\n * pixels.\n * @param {Array<import(\"../../Feature.js\").FeatureLike>} features\n * Features to consider for hit detection.\n * @param {import(\"../../style/Style.js\").StyleFunction|undefined} styleFunction\n * Layer style function.\n * @param {import(\"../../extent.js\").Extent} extent Extent in render projection.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {number} [squaredTolerance] Squared tolerance.\n * @param {import(\"../../proj/Projection.js\").default} [projection] Render projection.\n * @return {ImageData} Hit detection image data.\n */\nexport function createHitDetectionImageData(\n  size,\n  transforms,\n  features,\n  styleFunction,\n  extent,\n  resolution,\n  rotation,\n  squaredTolerance,\n  projection,\n) {\n  const userExtent = projection ? toUserExtent(extent, projection) : extent;\n  const width = size[0] * HIT_DETECT_RESOLUTION;\n  const height = size[1] * HIT_DETECT_RESOLUTION;\n  const context = createCanvasContext2D(width, height);\n  context.imageSmoothingEnabled = false;\n  const canvas = context.canvas;\n  const renderer = new CanvasImmediateRenderer(\n    context,\n    HIT_DETECT_RESOLUTION,\n    extent,\n    null,\n    rotation,\n    squaredTolerance,\n    projection\n      ? getTransformFromProjections(getUserProjection(), projection)\n      : null,\n  );\n  const featureCount = features.length;\n  // Stretch hit detection index to use the whole available color range\n  const indexFactor = Math.floor((256 * 256 * 256 - 1) / featureCount);\n  const featuresByZIndex = {};\n  for (let i = 1; i <= featureCount; ++i) {\n    const feature = features[i - 1];\n    const featureStyleFunction = feature.getStyleFunction() || styleFunction;\n    if (!featureStyleFunction) {\n      continue;\n    }\n    let styles = featureStyleFunction(feature, resolution);\n    if (!styles) {\n      continue;\n    }\n    if (!Array.isArray(styles)) {\n      styles = [styles];\n    }\n    const index = i * indexFactor;\n    const color = index.toString(16).padStart(7, '#00000');\n    for (let j = 0, jj = styles.length; j < jj; ++j) {\n      const originalStyle = styles[j];\n      const geometry = originalStyle.getGeometryFunction()(feature);\n      if (!geometry || !intersects(userExtent, geometry.getExtent())) {\n        continue;\n      }\n      const style = originalStyle.clone();\n      const fill = style.getFill();\n      if (fill) {\n        fill.setColor(color);\n      }\n      const stroke = style.getStroke();\n      if (stroke) {\n        stroke.setColor(color);\n        stroke.setLineDash(null);\n      }\n      style.setText(undefined);\n      const image = originalStyle.getImage();\n      if (image) {\n        const imgSize = image.getImageSize();\n        if (!imgSize) {\n          continue;\n        }\n\n        const imgContext = createCanvasContext2D(\n          imgSize[0],\n          imgSize[1],\n          undefined,\n          {alpha: false},\n        );\n        const img = imgContext.canvas;\n        imgContext.fillStyle = color;\n        imgContext.fillRect(0, 0, img.width, img.height);\n        style.setImage(\n          new Icon({\n            img: img,\n            anchor: image.getAnchor(),\n            anchorXUnits: 'pixels',\n            anchorYUnits: 'pixels',\n            offset: image.getOrigin(),\n            opacity: 1,\n            size: image.getSize(),\n            scale: image.getScale(),\n            rotation: image.getRotation(),\n            rotateWithView: image.getRotateWithView(),\n          }),\n        );\n      }\n      const zIndex = style.getZIndex() || 0;\n      let byGeometryType = featuresByZIndex[zIndex];\n      if (!byGeometryType) {\n        byGeometryType = {};\n        featuresByZIndex[zIndex] = byGeometryType;\n        byGeometryType['Polygon'] = [];\n        byGeometryType['Circle'] = [];\n        byGeometryType['LineString'] = [];\n        byGeometryType['Point'] = [];\n      }\n      const type = geometry.getType();\n      if (type === 'GeometryCollection') {\n        const geometries =\n          /** @type {import(\"../../geom/GeometryCollection.js\").default} */ (\n            geometry\n          ).getGeometriesArrayRecursive();\n        for (let i = 0, ii = geometries.length; i < ii; ++i) {\n          const geometry = geometries[i];\n          byGeometryType[geometry.getType().replace('Multi', '')].push(\n            geometry,\n            style,\n          );\n        }\n      } else {\n        byGeometryType[type.replace('Multi', '')].push(geometry, style);\n      }\n    }\n  }\n\n  const zIndexKeys = Object.keys(featuresByZIndex).map(Number).sort(ascending);\n  for (let i = 0, ii = zIndexKeys.length; i < ii; ++i) {\n    const byGeometryType = featuresByZIndex[zIndexKeys[i]];\n    for (const type in byGeometryType) {\n      const geomAndStyle = byGeometryType[type];\n      for (let j = 0, jj = geomAndStyle.length; j < jj; j += 2) {\n        renderer.setStyle(geomAndStyle[j + 1]);\n        for (let k = 0, kk = transforms.length; k < kk; ++k) {\n          renderer.setTransform(transforms[k]);\n          renderer.drawGeometry(geomAndStyle[j]);\n        }\n      }\n    }\n  }\n  return context.getImageData(0, 0, canvas.width, canvas.height);\n}\n\n/**\n * @param {import(\"../../pixel\").Pixel} pixel Pixel coordinate on the hit\n * detection canvas in css pixels.\n * @param {Array<F>} features Features. Has to\n * match the `features` array that was passed to `createHitDetectionImageData()`.\n * @param {ImageData} imageData Hit detection image data generated by\n * `createHitDetectionImageData()`.\n * @return {Array<F>} Features.\n * @template {import(\"../../Feature.js\").FeatureLike} F\n */\nexport function hitDetect(pixel, features, imageData) {\n  /** @type {Array<F>} */\n  const resultFeatures = [];\n  if (imageData) {\n    const x = Math.floor(Math.round(pixel[0]) * HIT_DETECT_RESOLUTION);\n    const y = Math.floor(Math.round(pixel[1]) * HIT_DETECT_RESOLUTION);\n    // The pixel coordinate is clamped down to the hit-detect canvas' size to account\n    // for browsers returning coordinates slightly larger than the actual canvas size\n    // due to a non-integer pixel ratio.\n    const index =\n      (clamp(x, 0, imageData.width - 1) +\n        clamp(y, 0, imageData.height - 1) * imageData.width) *\n      4;\n    const r = imageData.data[index];\n    const g = imageData.data[index + 1];\n    const b = imageData.data[index + 2];\n    const i = b + 256 * (g + 256 * r);\n    const indexFactor = Math.floor((256 * 256 * 256 - 1) / features.length);\n    if (i && i % indexFactor === 0) {\n      resultFeatures.push(features[i / indexFactor - 1]);\n    }\n  }\n  return resultFeatures;\n}\n","/**\n * @module ol/renderer/vector\n */\nimport ImageState from '../ImageState.js';\nimport {getUid} from '../util.js';\n\n/**\n * Feature callback. The callback will be called with three arguments. The first\n * argument is one {@link module:ol/Feature~Feature feature} or {@link module:ol/render/Feature~RenderFeature render feature}\n * at the pixel, the second is the {@link module:ol/layer/Layer~Layer layer} of the feature and will be null for\n * unmanaged layers. The third is the {@link module:ol/geom/SimpleGeometry~SimpleGeometry} of the feature. For features\n * with a GeometryCollection geometry, it will be the first detected geometry from the collection.\n * @template T\n * @typedef {function(import(\"../Feature.js\").FeatureLike, import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>, import(\"../geom/SimpleGeometry.js\").default): T} FeatureCallback\n */\n\n/**\n * Tolerance for geometry simplification in device pixels.\n * @type {number}\n */\nconst SIMPLIFY_TOLERANCE = 0.5;\n\n/**\n * @const\n * @type {Object<import(\"../geom/Geometry.js\").Type,\n *                function(import(\"../render/canvas/BuilderGroup.js\").default, import(\"../geom/Geometry.js\").default,\n *                         import(\"../style/Style.js\").default, Object): void>}\n */\nconst GEOMETRY_RENDERERS = {\n  'Point': renderPointGeometry,\n  'LineString': renderLineStringGeometry,\n  'Polygon': renderPolygonGeometry,\n  'MultiPoint': renderMultiPointGeometry,\n  'MultiLineString': renderMultiLineStringGeometry,\n  'MultiPolygon': renderMultiPolygonGeometry,\n  'GeometryCollection': renderGeometryCollectionGeometry,\n  'Circle': renderCircleGeometry,\n};\n\n/**\n * @param {import(\"../Feature.js\").FeatureLike} feature1 Feature 1.\n * @param {import(\"../Feature.js\").FeatureLike} feature2 Feature 2.\n * @return {number} Order.\n */\nexport function defaultOrder(feature1, feature2) {\n  return parseInt(getUid(feature1), 10) - parseInt(getUid(feature2), 10);\n}\n\n/**\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Squared pixel tolerance.\n */\nexport function getSquaredTolerance(resolution, pixelRatio) {\n  const tolerance = getTolerance(resolution, pixelRatio);\n  return tolerance * tolerance;\n}\n\n/**\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Pixel tolerance.\n */\nexport function getTolerance(resolution, pixelRatio) {\n  return (SIMPLIFY_TOLERANCE * resolution) / pixelRatio;\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Builder group.\n * @param {import(\"../geom/Circle.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {number} [index] Render order index.\n */\nfunction renderCircleGeometry(builderGroup, geometry, style, feature, index) {\n  const fillStyle = style.getFill();\n  const strokeStyle = style.getStroke();\n  if (fillStyle || strokeStyle) {\n    const circleReplay = builderGroup.getBuilder(style.getZIndex(), 'Circle');\n    circleReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n    circleReplay.drawCircle(geometry, feature, index);\n  }\n  const textStyle = style.getText();\n  if (textStyle && textStyle.getText()) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle);\n    textReplay.drawText(geometry, feature);\n  }\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n * @param {import(\"../proj.js\").TransformFunction} [transform] Transform from user to view projection.\n * @param {boolean} [declutter] Enable decluttering.\n * @param {number} [index] Render order index..\n * @return {boolean} `true` if style is loading.\n */\nexport function renderFeature(\n  replayGroup,\n  feature,\n  style,\n  squaredTolerance,\n  listener,\n  transform,\n  declutter,\n  index,\n) {\n  const loadingPromises = [];\n  const imageStyle = style.getImage();\n  if (imageStyle) {\n    let loading = true;\n    const imageState = imageStyle.getImageState();\n    if (imageState == ImageState.LOADED || imageState == ImageState.ERROR) {\n      loading = false;\n    } else {\n      if (imageState == ImageState.IDLE) {\n        imageStyle.load();\n      }\n    }\n    if (loading) {\n      loadingPromises.push(imageStyle.ready());\n    }\n  }\n  const fillStyle = style.getFill();\n  if (fillStyle && fillStyle.loading()) {\n    loadingPromises.push(fillStyle.ready());\n  }\n  const loading = loadingPromises.length > 0;\n  if (loading) {\n    Promise.all(loadingPromises).then(() => listener(null));\n  }\n  renderFeatureInternal(\n    replayGroup,\n    feature,\n    style,\n    squaredTolerance,\n    transform,\n    declutter,\n    index,\n  );\n\n  return loading;\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n * @param {boolean} [declutter] Enable decluttering.\n * @param {number} [index] Render order index..\n */\nfunction renderFeatureInternal(\n  replayGroup,\n  feature,\n  style,\n  squaredTolerance,\n  transform,\n  declutter,\n  index,\n) {\n  const geometry = style.getGeometryFunction()(feature);\n  if (!geometry) {\n    return;\n  }\n  const simplifiedGeometry = geometry.simplifyTransformed(\n    squaredTolerance,\n    transform,\n  );\n  const renderer = style.getRenderer();\n  if (renderer) {\n    renderGeometry(replayGroup, simplifiedGeometry, style, feature, index);\n  } else {\n    const geometryRenderer = GEOMETRY_RENDERERS[simplifiedGeometry.getType()];\n    geometryRenderer(\n      replayGroup,\n      simplifiedGeometry,\n      style,\n      feature,\n      index,\n      declutter,\n    );\n  }\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../geom/Geometry.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\nfunction renderGeometry(replayGroup, geometry, style, feature, index) {\n  if (geometry.getType() == 'GeometryCollection') {\n    const geometries =\n      /** @type {import(\"../geom/GeometryCollection.js\").default} */ (\n        geometry\n      ).getGeometries();\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      renderGeometry(replayGroup, geometries[i], style, feature, index);\n    }\n    return;\n  }\n  const replay = replayGroup.getBuilder(style.getZIndex(), 'Default');\n  replay.drawCustom(\n    /** @type {import(\"../geom/SimpleGeometry.js\").default} */ (geometry),\n    feature,\n    style.getRenderer(),\n    style.getHitDetectionRenderer(),\n    index,\n  );\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [declutterBuilderGroup] Builder for decluttering.\n * @param {number} [index] Render order index.\n */\nfunction renderGeometryCollectionGeometry(\n  replayGroup,\n  geometry,\n  style,\n  feature,\n  declutterBuilderGroup,\n  index,\n) {\n  const geometries = geometry.getGeometriesArray();\n  let i, ii;\n  for (i = 0, ii = geometries.length; i < ii; ++i) {\n    const geometryRenderer = GEOMETRY_RENDERERS[geometries[i].getType()];\n    geometryRenderer(\n      replayGroup,\n      geometries[i],\n      style,\n      feature,\n      declutterBuilderGroup,\n      index,\n    );\n  }\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/LineString.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\nfunction renderLineStringGeometry(\n  builderGroup,\n  geometry,\n  style,\n  feature,\n  index,\n) {\n  const strokeStyle = style.getStroke();\n  if (strokeStyle) {\n    const lineStringReplay = builderGroup.getBuilder(\n      style.getZIndex(),\n      'LineString',\n    );\n    lineStringReplay.setFillStrokeStyle(null, strokeStyle);\n    lineStringReplay.drawLineString(geometry, feature, index);\n  }\n  const textStyle = style.getText();\n  if (textStyle && textStyle.getText()) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle);\n    textReplay.drawText(geometry, feature, index);\n  }\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiLineString.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\nfunction renderMultiLineStringGeometry(\n  builderGroup,\n  geometry,\n  style,\n  feature,\n  index,\n) {\n  const strokeStyle = style.getStroke();\n  if (strokeStyle) {\n    const lineStringReplay = builderGroup.getBuilder(\n      style.getZIndex(),\n      'LineString',\n    );\n    lineStringReplay.setFillStrokeStyle(null, strokeStyle);\n    lineStringReplay.drawMultiLineString(geometry, feature, index);\n  }\n  const textStyle = style.getText();\n  if (textStyle && textStyle.getText()) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle);\n    textReplay.drawText(geometry, feature, index);\n  }\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {number} [index] Render order index.\n */\nfunction renderMultiPolygonGeometry(\n  builderGroup,\n  geometry,\n  style,\n  feature,\n  index,\n) {\n  const fillStyle = style.getFill();\n  const strokeStyle = style.getStroke();\n  if (strokeStyle || fillStyle) {\n    const polygonReplay = builderGroup.getBuilder(style.getZIndex(), 'Polygon');\n    polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n    polygonReplay.drawMultiPolygon(geometry, feature, index);\n  }\n  const textStyle = style.getText();\n  if (textStyle && textStyle.getText()) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle);\n    textReplay.drawText(geometry, feature, index);\n  }\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/Point.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n * @param {boolean} [declutter] Enable decluttering.\n */\nfunction renderPointGeometry(\n  builderGroup,\n  geometry,\n  style,\n  feature,\n  index,\n  declutter,\n) {\n  const imageStyle = style.getImage();\n  const textStyle = style.getText();\n  const hasText = textStyle && textStyle.getText();\n  /** @type {import(\"../render/canvas.js\").DeclutterImageWithText} */\n  const declutterImageWithText =\n    declutter && imageStyle && hasText ? {} : undefined;\n  if (imageStyle) {\n    if (imageStyle.getImageState() != ImageState.LOADED) {\n      return;\n    }\n    const imageReplay = builderGroup.getBuilder(style.getZIndex(), 'Image');\n    imageReplay.setImageStyle(imageStyle, declutterImageWithText);\n    imageReplay.drawPoint(geometry, feature, index);\n  }\n  if (hasText) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle, declutterImageWithText);\n    textReplay.drawText(geometry, feature, index);\n  }\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiPoint.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n * @param {boolean} [declutter] Enable decluttering.\n */\nfunction renderMultiPointGeometry(\n  builderGroup,\n  geometry,\n  style,\n  feature,\n  index,\n  declutter,\n) {\n  const imageStyle = style.getImage();\n  const hasImage = imageStyle && imageStyle.getOpacity() !== 0;\n  const textStyle = style.getText();\n  const hasText = textStyle && textStyle.getText();\n  /** @type {import(\"../render/canvas.js\").DeclutterImageWithText} */\n  const declutterImageWithText =\n    declutter && hasImage && hasText ? {} : undefined;\n  if (hasImage) {\n    if (imageStyle.getImageState() != ImageState.LOADED) {\n      return;\n    }\n    const imageReplay = builderGroup.getBuilder(style.getZIndex(), 'Image');\n    imageReplay.setImageStyle(imageStyle, declutterImageWithText);\n    imageReplay.drawMultiPoint(geometry, feature, index);\n  }\n  if (hasText) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle, declutterImageWithText);\n    textReplay.drawText(geometry, feature, index);\n  }\n}\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/Polygon.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {number} [index] Render order index.\n */\nfunction renderPolygonGeometry(builderGroup, geometry, style, feature, index) {\n  const fillStyle = style.getFill();\n  const strokeStyle = style.getStroke();\n  if (fillStyle || strokeStyle) {\n    const polygonReplay = builderGroup.getBuilder(style.getZIndex(), 'Polygon');\n    polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n    polygonReplay.drawPolygon(geometry, feature, index);\n  }\n  const textStyle = style.getText();\n  if (textStyle && textStyle.getText()) {\n    const textReplay = builderGroup.getBuilder(style.getZIndex(), 'Text');\n    textReplay.setTextStyle(textStyle);\n    textReplay.drawText(geometry, feature, index);\n  }\n}\n","/**\n * @module ol/render/Event\n */\n\nimport Event from '../events/Event.js';\n\nclass RenderEvent extends Event {\n  /**\n   * @param {import(\"./EventType.js\").default} type Type.\n   * @param {import(\"../transform.js\").Transform} [inversePixelTransform] Transform for\n   *     CSS pixels to rendered pixels.\n   * @param {import(\"../Map.js\").FrameState} [frameState] Frame state.\n   * @param {?(CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D|WebGLRenderingContext)} [context] Context.\n   */\n  constructor(type, inversePixelTransform, frameState, context) {\n    super(type);\n\n    /**\n     * Transform from CSS pixels (relative to the top-left corner of the map viewport)\n     * to rendered pixels on this event's `context`. Only available when a Canvas renderer is used, null otherwise.\n     * @type {import(\"../transform.js\").Transform|undefined}\n     * @api\n     */\n    this.inversePixelTransform = inversePixelTransform;\n\n    /**\n     * An object representing the current render frame state.\n     * @type {import(\"../Map.js\").FrameState|undefined}\n     * @api\n     */\n    this.frameState = frameState;\n\n    /**\n     * Canvas context. Not available when the event is dispatched by the map. For Canvas 2D layers,\n     * the context will be the 2D rendering context.  For WebGL layers, the context will be the WebGL\n     * context.\n     * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D|WebGLRenderingContext|undefined}\n     * @api\n     */\n    this.context = context;\n  }\n}\n\nexport default RenderEvent;\n","/**\n * @module ol/renderer/Layer\n */\nimport ImageState from '../ImageState.js';\nimport Observable from '../Observable.js';\nimport EventType from '../events/EventType.js';\nimport {abstract} from '../util.js';\n\nconst maxStaleKeys = 5;\n\n/**\n * @template {import(\"../layer/Layer.js\").default} LayerType\n */\nclass LayerRenderer extends Observable {\n  /**\n   * @param {LayerType} layer Layer.\n   */\n  constructor(layer) {\n    super();\n\n    /**\n     * The renderer is initialized and ready to render.\n     * @type {boolean}\n     */\n    this.ready = true;\n\n    /** @private */\n    this.boundHandleImageChange_ = this.handleImageChange_.bind(this);\n\n    /**\n     * @private\n     * @type {LayerType}\n     */\n    this.layer_ = layer;\n\n    /**\n     * @type {Array<string>}\n     * @private\n     */\n    this.staleKeys_ = new Array();\n\n    /**\n     * @type {number}\n     * @protected\n     */\n    this.maxStaleKeys = maxStaleKeys;\n  }\n\n  /**\n   * @return {Array<string>} Get the list of stale keys.\n   */\n  getStaleKeys() {\n    return this.staleKeys_;\n  }\n\n  /**\n   * @param {string} key The new stale key.\n   */\n  prependStaleKey(key) {\n    this.staleKeys_.unshift(key);\n    if (this.staleKeys_.length > this.maxStaleKeys) {\n      this.staleKeys_.length = this.maxStaleKeys;\n    }\n  }\n\n  /**\n   * Asynchronous layer level hit detection.\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../Feature\").FeatureLike>>} Promise that resolves with\n   * an array of features.\n   */\n  getFeatures(pixel) {\n    return abstract();\n  }\n\n  /**\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n   */\n  getData(pixel) {\n    return null;\n  }\n\n  /**\n   * Determine whether render should be called.\n   * @abstract\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   */\n  prepareFrame(frameState) {\n    return abstract();\n  }\n\n  /**\n   * Render the layer.\n   * @abstract\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement|null} target Target that may be used to render content to.\n   * @return {HTMLElement} The rendered element.\n   */\n  renderFrame(frameState, target) {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {import(\"./vector.js\").FeatureCallback<T>} callback Feature callback.\n   * @param {Array<import(\"./Map.js\").HitMatch<T>>} matches The hit detected matches with tolerance.\n   * @return {T|undefined} Callback result.\n   * @template T\n   */\n  forEachFeatureAtCoordinate(\n    coordinate,\n    frameState,\n    hitTolerance,\n    callback,\n    matches,\n  ) {\n    return undefined;\n  }\n\n  /**\n   * @return {LayerType} Layer.\n   */\n  getLayer() {\n    return this.layer_;\n  }\n\n  /**\n   * Perform action necessary to get the layer rendered after new fonts have loaded\n   * @abstract\n   */\n  handleFontsChanged() {}\n\n  /**\n   * Handle changes in image state.\n   * @param {import(\"../events/Event.js\").default} event Image change event.\n   * @private\n   */\n  handleImageChange_(event) {\n    const image = /** @type {import(\"../Image.js\").default} */ (event.target);\n    if (\n      image.getState() === ImageState.LOADED ||\n      image.getState() === ImageState.ERROR\n    ) {\n      this.renderIfReadyAndVisible();\n    }\n  }\n\n  /**\n   * Load the image if not already loaded, and register the image change\n   * listener if needed.\n   * @param {import(\"../Image.js\").default} image Image.\n   * @return {boolean} `true` if the image is already loaded, `false` otherwise.\n   * @protected\n   */\n  loadImage(image) {\n    let imageState = image.getState();\n    if (imageState != ImageState.LOADED && imageState != ImageState.ERROR) {\n      image.addEventListener(EventType.CHANGE, this.boundHandleImageChange_);\n    }\n    if (imageState == ImageState.IDLE) {\n      image.load();\n      imageState = image.getState();\n    }\n    return imageState == ImageState.LOADED;\n  }\n\n  /**\n   * @protected\n   */\n  renderIfReadyAndVisible() {\n    const layer = this.getLayer();\n    if (layer && layer.getVisible() && layer.getSourceState() === 'ready') {\n      layer.changed();\n    }\n  }\n\n  /**\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   */\n  renderDeferred(frameState) {}\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    delete this.layer_;\n    super.disposeInternal();\n  }\n}\n\nexport default LayerRenderer;\n","/**\n * @module ol/renderer/canvas/Layer\n */\nimport {equals} from '../../array.js';\nimport {asArray} from '../../color.js';\nimport {createCanvasContext2D, createMockDiv, isCanvas} from '../../dom.js';\nimport {\n  getBottomLeft,\n  getBottomRight,\n  getHeight,\n  getTopLeft,\n  getTopRight,\n  getWidth,\n} from '../../extent.js';\nimport {WORKER_OFFSCREEN_CANVAS} from '../../has.js';\nimport RenderEvent from '../../render/Event.js';\nimport RenderEventType from '../../render/EventType.js';\nimport ZIndexContext from '../../render/canvas/ZIndexContext.js';\nimport {\n  apply as applyTransform,\n  compose as composeTransform,\n  create as createTransform,\n  equivalent,\n  makeInverse,\n  toString as toTransformString,\n} from '../../transform.js';\nimport LayerRenderer from '../Layer.js';\n\n/**\n * @type {Array<HTMLCanvasElement|OffscreenCanvas>}\n */\nexport const canvasPool = [];\n\n/**\n * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}\n */\nlet pixelContext = null;\n\nfunction createPixelContext() {\n  pixelContext = createCanvasContext2D(1, 1, undefined, {\n    willReadFrequently: true,\n  });\n}\n\n/**\n * @abstract\n * @template {import(\"../../layer/Layer.js\").default} LayerType\n * @extends {LayerRenderer<LayerType>}\n */\nclass CanvasLayerRenderer extends LayerRenderer {\n  /**\n   * @param {LayerType} layer Layer.\n   */\n  constructor(layer) {\n    super(layer);\n\n    /**\n     * HTMLElement container for the layer to be rendered in.\n     * @protected\n     * @type {HTMLElement}\n     */\n    this.container = null;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.renderedResolution;\n\n    /**\n     * A temporary transform.  The values in this transform should only be used in a\n     * function that sets the values.\n     * @protected\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.tempTransform = createTransform();\n\n    /**\n     * The transform for rendered pixels to viewport CSS pixels.  This transform must\n     * be set when rendering a frame and may be used by other functions after rendering.\n     * @protected\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.pixelTransform = createTransform();\n\n    /**\n     * The transform for viewport CSS pixels to rendered pixels.  This transform must\n     * be set when rendering a frame and may be used by other functions after rendering.\n     * @protected\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.inversePixelTransform = createTransform();\n\n    /**\n     * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}\n     */\n    this.context = null;\n\n    /**\n     * @private\n     * @type {ZIndexContext}\n     */\n    this.deferredContext_ = null;\n\n    /**\n     * true if the container has been reused from the previous renderer\n     * @type {boolean}\n     */\n    this.containerReused = false;\n\n    /**\n     * @protected\n     * @type {import(\"../../Map.js\").FrameState|null}\n     */\n    this.frameState = null;\n  }\n\n  /**\n   * @param {import('../../DataTile.js').ImageLike} image Image.\n   * @param {number} col The column index.\n   * @param {number} row The row index.\n   * @return {Uint8ClampedArray|null} The image data.\n   */\n  getImageData(image, col, row) {\n    if (!pixelContext) {\n      createPixelContext();\n    }\n    pixelContext.clearRect(0, 0, 1, 1);\n\n    let data;\n    try {\n      pixelContext.drawImage(image, col, row, 1, 1, 0, 0, 1, 1);\n      data = pixelContext.getImageData(0, 0, 1, 1).data;\n    } catch {\n      pixelContext = null;\n      return null;\n    }\n    return data;\n  }\n\n  /**\n   * @param {import('../../Map.js').FrameState} frameState Frame state.\n   * @return {string} Background color.\n   */\n  getBackground(frameState) {\n    const layer = this.getLayer();\n    let background = layer.getBackground();\n    if (typeof background === 'function') {\n      background = background(frameState.viewState.resolution);\n    }\n    return background || undefined;\n  }\n\n  /**\n   * Get a rendering container from an existing target, if compatible.\n   * @param {HTMLElement} target Potential render target.\n   * @param {string} transform CSS transform matrix.\n   * @param {string} [backgroundColor] Background color.\n   */\n  useContainer(target, transform, backgroundColor) {\n    // renderer canvas to target canvas\n    const layerClassName = this.getLayer().getClassName();\n    let container, context;\n    if (\n      target &&\n      target.className === layerClassName &&\n      (!backgroundColor ||\n        (target &&\n          target.style.backgroundColor &&\n          equals(\n            asArray(target.style.backgroundColor),\n            asArray(backgroundColor),\n          )))\n    ) {\n      const canvas = target.firstElementChild;\n      if (isCanvas(canvas)) {\n        context = canvas.getContext('2d');\n      }\n    }\n    if (context && equivalent(context.canvas.style.transform, transform)) {\n      // Container of the previous layer renderer can be used.\n      this.container = target;\n      this.context = context;\n      this.containerReused = true;\n    } else if (this.containerReused) {\n      // Previously reused container cannot be used any more.\n      this.container = null;\n      this.context = null;\n      this.containerReused = false;\n    } else if (this.container) {\n      this.container.style.backgroundColor = null;\n    }\n    if (!this.container) {\n      container = WORKER_OFFSCREEN_CANVAS\n        ? createMockDiv()\n        : document.createElement('div');\n      container.className = layerClassName;\n      let style = container.style;\n      style.position = 'absolute';\n      style.width = '100%';\n      style.height = '100%';\n      context = createCanvasContext2D();\n      const canvas = /** @type {HTMLCanvasElement} */ (context.canvas);\n      container.appendChild(canvas);\n      style = canvas.style;\n      style.position = 'absolute';\n      style.left = '0';\n      style.transformOrigin = 'top left';\n      this.container = container;\n      this.context = context;\n    }\n    if (\n      !this.containerReused &&\n      backgroundColor &&\n      !this.container.style.backgroundColor\n    ) {\n      this.container.style.backgroundColor = backgroundColor;\n    }\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../../extent.js\").Extent} extent Clip extent.\n   * @protected\n   */\n  clipUnrotated(context, frameState, extent) {\n    const topLeft = getTopLeft(extent);\n    const topRight = getTopRight(extent);\n    const bottomRight = getBottomRight(extent);\n    const bottomLeft = getBottomLeft(extent);\n\n    applyTransform(frameState.coordinateToPixelTransform, topLeft);\n    applyTransform(frameState.coordinateToPixelTransform, topRight);\n    applyTransform(frameState.coordinateToPixelTransform, bottomRight);\n    applyTransform(frameState.coordinateToPixelTransform, bottomLeft);\n\n    const inverted = this.inversePixelTransform;\n    applyTransform(inverted, topLeft);\n    applyTransform(inverted, topRight);\n    applyTransform(inverted, bottomRight);\n    applyTransform(inverted, bottomLeft);\n\n    context.save();\n    context.beginPath();\n    context.moveTo(Math.round(topLeft[0]), Math.round(topLeft[1]));\n    context.lineTo(Math.round(topRight[0]), Math.round(topRight[1]));\n    context.lineTo(Math.round(bottomRight[0]), Math.round(bottomRight[1]));\n    context.lineTo(Math.round(bottomLeft[0]), Math.round(bottomLeft[1]));\n    context.clip();\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement} target Target that may be used to render content to.\n   * @protected\n   */\n  prepareContainer(frameState, target) {\n    const extent = frameState.extent;\n    const resolution = frameState.viewState.resolution;\n    const rotation = frameState.viewState.rotation;\n    const pixelRatio = frameState.pixelRatio;\n    const width = Math.round((getWidth(extent) / resolution) * pixelRatio);\n    const height = Math.round((getHeight(extent) / resolution) * pixelRatio);\n    // set forward and inverse pixel transforms\n    composeTransform(\n      this.pixelTransform,\n      frameState.size[0] / 2,\n      frameState.size[1] / 2,\n      1 / pixelRatio,\n      1 / pixelRatio,\n      rotation,\n      -width / 2,\n      -height / 2,\n    );\n    makeInverse(this.inversePixelTransform, this.pixelTransform);\n\n    const canvasTransform = toTransformString(this.pixelTransform);\n    this.useContainer(target, canvasTransform, this.getBackground(frameState));\n    if (!this.containerReused) {\n      const canvas = this.context.canvas;\n      if (canvas.width != width || canvas.height != height) {\n        canvas.width = width;\n        canvas.height = height;\n      } else {\n        this.context.clearRect(0, 0, width, height);\n      }\n      if (\n        canvasTransform !==\n        /** @type {HTMLCanvasElement} */ (canvas).style.transform\n      ) {\n        /** @type {HTMLCanvasElement} */ (canvas).style.transform =\n          canvasTransform;\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../../render/EventType.js\").default} type Event type.\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @private\n   */\n  dispatchRenderEvent_(type, context, frameState) {\n    const layer = this.getLayer();\n    if (layer.hasListener(type)) {\n      const event = new RenderEvent(\n        type,\n        this.inversePixelTransform,\n        frameState,\n        context,\n      );\n      layer.dispatchEvent(event);\n    }\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @protected\n   */\n  preRender(context, frameState) {\n    this.frameState = frameState;\n    if (frameState.declutter) {\n      return;\n    }\n    this.dispatchRenderEvent_(RenderEventType.PRERENDER, context, frameState);\n  }\n\n  /**\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @protected\n   */\n  postRender(context, frameState) {\n    if (frameState.declutter) {\n      return;\n    }\n    this.dispatchRenderEvent_(RenderEventType.POSTRENDER, context, frameState);\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   */\n  renderDeferredInternal(frameState) {}\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {import('../../render/canvas/ZIndexContext.js').ZIndexContextProxy} Context.\n   */\n  getRenderContext(frameState) {\n    if (frameState.declutter && !this.deferredContext_) {\n      this.deferredContext_ = new ZIndexContext();\n    }\n    return frameState.declutter\n      ? this.deferredContext_.getContext()\n      : this.context;\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @override\n   */\n  renderDeferred(frameState) {\n    if (!frameState.declutter) {\n      return;\n    }\n    this.dispatchRenderEvent_(\n      RenderEventType.PRERENDER,\n      this.context,\n      frameState,\n    );\n    if (frameState.declutter && this.deferredContext_) {\n      this.deferredContext_.draw(this.context);\n      this.deferredContext_.clear();\n    }\n    this.renderDeferredInternal(frameState);\n    this.dispatchRenderEvent_(\n      RenderEventType.POSTRENDER,\n      this.context,\n      frameState,\n    );\n  }\n\n  /**\n   * Creates a transform for rendering to an element that will be rotated after rendering.\n   * @param {import(\"../../coordinate.js\").Coordinate} center Center.\n   * @param {number} resolution Resolution.\n   * @param {number} rotation Rotation.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {number} width Width of the rendered element (in pixels).\n   * @param {number} height Height of the rendered element (in pixels).\n   * @param {number} offsetX Offset on the x-axis in view coordinates.\n   * @protected\n   * @return {!import(\"../../transform.js\").Transform} Transform.\n   */\n  getRenderTransform(\n    center,\n    resolution,\n    rotation,\n    pixelRatio,\n    width,\n    height,\n    offsetX,\n  ) {\n    const dx1 = width / 2;\n    const dy1 = height / 2;\n    const sx = pixelRatio / resolution;\n    const sy = -sx;\n    const dx2 = -center[0] + offsetX;\n    const dy2 = -center[1];\n    return composeTransform(\n      this.tempTransform,\n      dx1,\n      dy1,\n      sx,\n      sy,\n      -rotation,\n      dx2,\n      dy2,\n    );\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    delete this.frameState;\n    super.disposeInternal();\n  }\n}\n\nexport default CanvasLayerRenderer;\n","/**\n * @module ol/renderer/canvas/VectorLayer\n */\nimport ViewHint from '../../ViewHint.js';\nimport {equals} from '../../array.js';\nimport {wrapX as wrapCoordinateX} from '../../coordinate.js';\nimport {createCanvasContext2D, releaseCanvas} from '../../dom.js';\nimport {\n  buffer,\n  containsExtent,\n  createEmpty,\n  getHeight,\n  getWidth,\n  intersects as intersectsExtent,\n  isEmpty,\n  wrapX as wrapExtentX,\n} from '../../extent.js';\nimport {\n  fromUserExtent,\n  getTransformFromProjections,\n  getUserProjection,\n  toUserExtent,\n  toUserResolution,\n} from '../../proj.js';\nimport RenderEventType from '../../render/EventType.js';\nimport CanvasBuilderGroup from '../../render/canvas/BuilderGroup.js';\nimport ExecutorGroup, {\n  ALL,\n  DECLUTTER,\n  NON_DECLUTTER,\n} from '../../render/canvas/ExecutorGroup.js';\nimport {\n  HIT_DETECT_RESOLUTION,\n  createHitDetectionImageData,\n  hitDetect,\n} from '../../render/canvas/hitdetect.js';\nimport {getUid} from '../../util.js';\nimport {\n  defaultOrder as defaultRenderOrder,\n  getSquaredTolerance as getSquaredRenderTolerance,\n  getTolerance as getRenderTolerance,\n  renderFeature,\n} from '../vector.js';\nimport CanvasLayerRenderer, {canvasPool} from './Layer.js';\n\n/**\n * @classdesc\n * Canvas renderer for vector layers.\n * @api\n */\nclass CanvasVectorLayerRenderer extends CanvasLayerRenderer {\n  /**\n   * @param {import(\"../../layer/BaseVector.js\").default} vectorLayer Vector layer.\n   */\n  constructor(vectorLayer) {\n    super(vectorLayer);\n\n    /** @private */\n    this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this);\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.animatingOrInteracting_;\n\n    /**\n     * @private\n     * @type {ImageData|null}\n     */\n    this.hitDetectionImageData_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.clipExtent_ = null;\n\n    /**\n     * Do we need to extend the rendered area on the x-axis to handle\n     * features that cross the antimeridian?\n     * @private\n     * @type {boolean}\n     */\n    this.extendX_ = false;\n\n    /**\n     * @private\n     * @type {Array<import(\"../../Feature.js\").default>}\n     */\n    this.renderedFeatures_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedRevision_ = -1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedResolution_ = NaN;\n\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.renderedExtent_ = createEmpty();\n\n    /**\n     * @private\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.wrappedRenderedExtent_ = createEmpty();\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedRotation_;\n\n    /**\n     * @private\n     * @type {import(\"../../coordinate\").Coordinate}\n     */\n    this.renderedCenter_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../../proj/Projection\").default}\n     */\n    this.renderedProjection_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedPixelRatio_ = 1;\n\n    /**\n     * @private\n     * @type {import(\"../../render.js\").OrderFunction|null}\n     */\n    this.renderedRenderOrder_ = null;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderedFrameDeclutter_;\n\n    /**\n     * @private\n     * @type {import(\"../../render/canvas/ExecutorGroup\").default}\n     */\n    this.replayGroup_ = null;\n\n    /**\n     * A new replay group had to be created by `prepareFrame()`\n     * @type {boolean}\n     */\n    this.replayGroupChanged = true;\n\n    /**\n     * Clipping to be performed by `renderFrame()`\n     * @type {boolean}\n     */\n    this.clipping = true;\n\n    /**\n     * @private\n     * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}\n     */\n    this.targetContext_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.opacity_ = 1;\n  }\n\n  /**\n   * @param {ExecutorGroup} executorGroup Executor group.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {boolean} [declutterable] `true` to only render declutterable items,\n   *     `false` to only render non-declutterable items, `undefined` to render all.\n   */\n  renderWorlds(executorGroup, frameState, declutterable) {\n    const extent = frameState.extent;\n    const viewState = frameState.viewState;\n    const center = viewState.center;\n    const resolution = viewState.resolution;\n    const projection = viewState.projection;\n    const rotation = viewState.rotation;\n    const projectionExtent = projection.getExtent();\n    const vectorSource = this.getLayer().getSource();\n    const declutter = this.getLayer().getDeclutter();\n    const pixelRatio = frameState.pixelRatio;\n    const viewHints = frameState.viewHints;\n    const snapToPixel = !(\n      viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]\n    );\n    const context = this.context;\n    const width = Math.round((getWidth(extent) / resolution) * pixelRatio);\n    const height = Math.round((getHeight(extent) / resolution) * pixelRatio);\n\n    const multiWorld = vectorSource.getWrapX() && projection.canWrapX();\n    const worldWidth = multiWorld ? getWidth(projectionExtent) : null;\n    const endWorld = multiWorld\n      ? Math.ceil((extent[2] - projectionExtent[2]) / worldWidth) +\n        (this.extendX_ ? 2 : 1)\n      : 1;\n    let world = multiWorld\n      ? Math.floor((extent[0] - projectionExtent[0]) / worldWidth) -\n        (this.extendX_ ? 1 : 0)\n      : 0;\n    do {\n      let transform = this.getRenderTransform(\n        center,\n        resolution,\n        0,\n        pixelRatio,\n        width,\n        height,\n        world * worldWidth,\n      );\n      if (frameState.declutter) {\n        transform = transform.slice(0);\n      }\n      executorGroup.execute(\n        context,\n        [context.canvas.width, context.canvas.height],\n        transform,\n        rotation,\n        snapToPixel,\n        declutterable === undefined\n          ? ALL\n          : declutterable\n            ? DECLUTTER\n            : NON_DECLUTTER,\n        declutterable\n          ? declutter && frameState.declutter[declutter]\n          : undefined,\n      );\n    } while (++world < endWorld);\n  }\n\n  /**\n   * @private\n   */\n  setDrawContext_() {\n    if (this.opacity_ !== 1) {\n      this.targetContext_ = this.context;\n      this.context = createCanvasContext2D(\n        this.context.canvas.width,\n        this.context.canvas.height,\n        canvasPool,\n      );\n    }\n  }\n\n  /**\n   * @private\n   */\n  resetDrawContext_() {\n    if (this.opacity_ !== 1 && this.targetContext_) {\n      const alpha = this.targetContext_.globalAlpha;\n      this.targetContext_.globalAlpha = this.opacity_;\n      this.targetContext_.drawImage(this.context.canvas, 0, 0);\n      this.targetContext_.globalAlpha = alpha;\n      releaseCanvas(this.context);\n      canvasPool.push(this.context.canvas);\n      this.context = this.targetContext_;\n      this.targetContext_ = null;\n    }\n  }\n\n  /**\n   * Render declutter items for this layer\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   */\n  renderDeclutter(frameState) {\n    if (!this.replayGroup_ || !this.getLayer().getDeclutter()) {\n      return;\n    }\n    this.renderWorlds(this.replayGroup_, frameState, true);\n  }\n\n  /**\n   * Render deferred instructions.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @override\n   */\n  renderDeferredInternal(frameState) {\n    if (!this.replayGroup_) {\n      return;\n    }\n    if (this.clipExtent_) {\n      this.clipUnrotated(this.context, frameState, this.clipExtent_);\n    }\n    this.replayGroup_.renderDeferred();\n    if (this.clipExtent_) {\n      this.context.restore();\n      this.clipExtent_ = null;\n    }\n    this.resetDrawContext_();\n  }\n\n  /**\n   * Render the layer.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement|null} target Target that may be used to render content to.\n   * @return {HTMLElement} The rendered element.\n   * @override\n   */\n  renderFrame(frameState, target) {\n    const layerState = frameState.layerStatesArray[frameState.layerIndex];\n    this.opacity_ = layerState.opacity;\n    const viewState = frameState.viewState;\n\n    this.prepareContainer(frameState, target);\n    const context = this.context;\n\n    const replayGroup = this.replayGroup_;\n    let render = replayGroup && !replayGroup.isEmpty();\n    if (!render) {\n      const hasRenderListeners =\n        this.getLayer().hasListener(RenderEventType.PRERENDER) ||\n        this.getLayer().hasListener(RenderEventType.POSTRENDER);\n      if (!hasRenderListeners) {\n        return this.container;\n      }\n    }\n\n    this.setDrawContext_();\n\n    this.preRender(context, frameState);\n\n    const projection = viewState.projection;\n\n    // clipped rendering if layer extent is set\n    this.clipExtent_ = null;\n    let clipped = false;\n    if (render && layerState.extent && this.clipping) {\n      const layerExtent = fromUserExtent(layerState.extent, projection);\n      render = intersectsExtent(layerExtent, frameState.extent);\n      const needsClip =\n        render && !containsExtent(layerExtent, frameState.extent);\n      if (needsClip) {\n        if (frameState.declutter) {\n          // Store extent for deferred clipping\n          this.clipExtent_ = layerExtent;\n        } else {\n          // Apply clipping immediately for non-declutter rendering\n          this.clipUnrotated(context, frameState, layerExtent);\n          clipped = true;\n        }\n      }\n    }\n\n    if (render) {\n      this.renderWorlds(\n        replayGroup,\n        frameState,\n        this.getLayer().getDeclutter() ? false : undefined,\n      );\n    }\n\n    if (clipped) {\n      context.restore();\n    }\n\n    this.postRender(context, frameState);\n\n    if (this.renderedRotation_ !== viewState.rotation) {\n      this.renderedRotation_ = viewState.rotation;\n      this.hitDetectionImageData_ = null;\n    }\n    if (!frameState.declutter) {\n      this.resetDrawContext_();\n    }\n    return this.container;\n  }\n\n  /**\n   * Asynchronous layer level hit detection.\n   * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../../Feature\").default>>} Promise\n   * that resolves with an array of features.\n   * @override\n   */\n  getFeatures(pixel) {\n    return new Promise((resolve) => {\n      if (\n        this.frameState &&\n        !this.hitDetectionImageData_ &&\n        !this.animatingOrInteracting_\n      ) {\n        const size = this.frameState.size.slice();\n        const center = this.renderedCenter_;\n        const resolution = this.renderedResolution_;\n        const rotation = this.renderedRotation_;\n        const projection = this.renderedProjection_;\n        const extent = this.wrappedRenderedExtent_;\n        const layer = this.getLayer();\n        const transforms = [];\n        const width = size[0] * HIT_DETECT_RESOLUTION;\n        const height = size[1] * HIT_DETECT_RESOLUTION;\n        transforms.push(\n          this.getRenderTransform(\n            center,\n            resolution,\n            rotation,\n            HIT_DETECT_RESOLUTION,\n            width,\n            height,\n            0,\n          ).slice(),\n        );\n        const source = layer.getSource();\n        const projectionExtent = projection.getExtent();\n        if (\n          source.getWrapX() &&\n          projection.canWrapX() &&\n          !containsExtent(projectionExtent, extent)\n        ) {\n          let startX = extent[0];\n          const worldWidth = getWidth(projectionExtent);\n          let world = 0;\n          let offsetX;\n          while (startX < projectionExtent[0]) {\n            --world;\n            offsetX = worldWidth * world;\n            transforms.push(\n              this.getRenderTransform(\n                center,\n                resolution,\n                rotation,\n                HIT_DETECT_RESOLUTION,\n                width,\n                height,\n                offsetX,\n              ).slice(),\n            );\n            startX += worldWidth;\n          }\n          world = 0;\n          startX = extent[2];\n          while (startX > projectionExtent[2]) {\n            ++world;\n            offsetX = worldWidth * world;\n            transforms.push(\n              this.getRenderTransform(\n                center,\n                resolution,\n                rotation,\n                HIT_DETECT_RESOLUTION,\n                width,\n                height,\n                offsetX,\n              ).slice(),\n            );\n            startX -= worldWidth;\n          }\n        }\n        const userProjection = getUserProjection();\n        this.hitDetectionImageData_ = createHitDetectionImageData(\n          size,\n          transforms,\n          this.renderedFeatures_,\n          layer.getStyleFunction(),\n          extent,\n          resolution,\n          rotation,\n          getSquaredRenderTolerance(resolution, this.renderedPixelRatio_),\n          userProjection ? projection : null,\n        );\n      }\n      resolve(\n        hitDetect(pixel, this.renderedFeatures_, this.hitDetectionImageData_),\n      );\n    });\n  }\n\n  /**\n   * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {import(\"../vector.js\").FeatureCallback<T>} callback Feature callback.\n   * @param {Array<import(\"../Map.js\").HitMatch<T>>} matches The hit detected matches with tolerance.\n   * @return {T|undefined} Callback result.\n   * @template T\n   * @override\n   */\n  forEachFeatureAtCoordinate(\n    coordinate,\n    frameState,\n    hitTolerance,\n    callback,\n    matches,\n  ) {\n    if (!this.replayGroup_) {\n      return undefined;\n    }\n    const resolution = frameState.viewState.resolution;\n    const rotation = frameState.viewState.rotation;\n    const layer = this.getLayer();\n\n    /** @type {!Object<string, import(\"../Map.js\").HitMatch<T>|true>} */\n    const features = {};\n\n    /**\n     * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n     * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n     * @param {number} distanceSq The squared distance to the click position\n     * @return {T|undefined} Callback result.\n     */\n    const featureCallback = function (feature, geometry, distanceSq) {\n      const key = getUid(feature);\n      const match = features[key];\n      if (!match) {\n        if (distanceSq === 0) {\n          features[key] = true;\n          return callback(feature, layer, geometry);\n        }\n        matches.push(\n          (features[key] = {\n            feature: feature,\n            layer: layer,\n            geometry: geometry,\n            distanceSq: distanceSq,\n            callback: callback,\n          }),\n        );\n      } else if (match !== true && distanceSq < match.distanceSq) {\n        if (distanceSq === 0) {\n          features[key] = true;\n          matches.splice(matches.lastIndexOf(match), 1);\n          return callback(feature, layer, geometry);\n        }\n        match.geometry = geometry;\n        match.distanceSq = distanceSq;\n      }\n      return undefined;\n    };\n\n    const declutter = this.getLayer().getDeclutter();\n    return this.replayGroup_.forEachFeatureAtCoordinate(\n      coordinate,\n      resolution,\n      rotation,\n      hitTolerance,\n      featureCallback,\n      declutter\n        ? frameState.declutter?.[declutter]?.all().map((item) => item.value)\n        : null,\n    );\n  }\n\n  /**\n   * Perform action necessary to get the layer rendered after new fonts have loaded\n   * @override\n   */\n  handleFontsChanged() {\n    const layer = this.getLayer();\n    if (layer.getVisible() && this.replayGroup_) {\n      layer.changed();\n    }\n  }\n\n  /**\n   * Handle changes in image style state.\n   * @param {import(\"../../events/Event.js\").default} event Image style change event.\n   * @private\n   */\n  handleStyleImageChange_(event) {\n    this.renderIfReadyAndVisible();\n  }\n\n  /**\n   * Determine whether render should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrame(frameState) {\n    const vectorLayer = this.getLayer();\n    const vectorSource = vectorLayer.getSource();\n    if (!vectorSource) {\n      return false;\n    }\n\n    const animating = frameState.viewHints[ViewHint.ANIMATING];\n    const interacting = frameState.viewHints[ViewHint.INTERACTING];\n    const updateWhileAnimating = vectorLayer.getUpdateWhileAnimating();\n    const updateWhileInteracting = vectorLayer.getUpdateWhileInteracting();\n\n    if (\n      (this.ready && !updateWhileAnimating && animating) ||\n      (!updateWhileInteracting && interacting)\n    ) {\n      this.animatingOrInteracting_ = true;\n      return true;\n    }\n    this.animatingOrInteracting_ = false;\n\n    const frameStateExtent = frameState.extent;\n    const viewState = frameState.viewState;\n    const projection = viewState.projection;\n    const resolution = viewState.resolution;\n    const pixelRatio = frameState.pixelRatio;\n    const vectorLayerRevision = vectorLayer.getRevision();\n    const vectorLayerRenderBuffer = vectorLayer.getRenderBuffer();\n    let vectorLayerRenderOrder = vectorLayer.getRenderOrder();\n\n    if (vectorLayerRenderOrder === undefined) {\n      vectorLayerRenderOrder = defaultRenderOrder;\n    }\n\n    const center = viewState.center.slice();\n    const extent = buffer(\n      frameStateExtent,\n      vectorLayerRenderBuffer * resolution,\n    );\n    const renderedExtent = extent.slice();\n    const loadExtents = [extent.slice()];\n    const projectionExtent = projection.getExtent();\n\n    const canWrapX = vectorSource.getWrapX() && projection.canWrapX();\n    this.extendX_ = false;\n    if (canWrapX) {\n      const sourceExtent = vectorSource.getExtent();\n      if (sourceExtent && !isEmpty(sourceExtent)) {\n        this.extendX_ =\n          sourceExtent[0] < projectionExtent[0] ||\n          sourceExtent[2] > projectionExtent[2];\n      }\n    }\n\n    if (\n      canWrapX &&\n      (!containsExtent(projectionExtent, frameState.extent) || this.extendX_)\n    ) {\n      // For the replay group, we need an extent that intersects the real world\n      // (-180° to +180°). To support geometries in a coordinate range from -540°\n      // to +540°, we add at least 1 world width on each side of the projection\n      // extent. If the viewport is wider than the world, we need to add half of\n      // the viewport width to make sure we cover the whole viewport.\n      const worldWidth = getWidth(projectionExtent);\n      const gutter = Math.max(getWidth(extent) / 2, worldWidth);\n      let projMinX = projectionExtent[0];\n      let projMaxX = projectionExtent[2];\n      if (this.extendX_) {\n        projMinX -= worldWidth;\n        projMaxX += worldWidth;\n      }\n      extent[0] = projMinX - gutter;\n      extent[2] = projMaxX + gutter;\n      wrapCoordinateX(center, projection);\n      const loadExtent = wrapExtentX(loadExtents[0], projection);\n      // If the extent crosses the date line, we load data for both edges of the worlds\n      if (\n        loadExtent[0] < projectionExtent[0] &&\n        loadExtent[2] < projectionExtent[2]\n      ) {\n        loadExtents.push([\n          loadExtent[0] + worldWidth,\n          loadExtent[1],\n          loadExtent[2] + worldWidth,\n          loadExtent[3],\n        ]);\n      } else if (\n        loadExtent[0] > projectionExtent[0] &&\n        loadExtent[2] > projectionExtent[2]\n      ) {\n        loadExtents.push([\n          loadExtent[0] - worldWidth,\n          loadExtent[1],\n          loadExtent[2] - worldWidth,\n          loadExtent[3],\n        ]);\n      }\n    }\n\n    if (\n      this.ready &&\n      this.renderedResolution_ == resolution &&\n      this.renderedPixelRatio_ === pixelRatio &&\n      this.renderedRevision_ == vectorLayerRevision &&\n      this.renderedRenderOrder_ == vectorLayerRenderOrder &&\n      this.renderedFrameDeclutter_ === !!frameState.declutter &&\n      containsExtent(this.wrappedRenderedExtent_, extent)\n    ) {\n      if (!equals(this.renderedExtent_, renderedExtent)) {\n        this.hitDetectionImageData_ = null;\n        this.renderedExtent_ = renderedExtent;\n      }\n      this.renderedCenter_ = center;\n      this.replayGroupChanged = false;\n      return true;\n    }\n\n    this.replayGroup_ = null;\n\n    const replayGroup = new CanvasBuilderGroup(\n      getRenderTolerance(resolution, pixelRatio),\n      extent,\n      resolution,\n      pixelRatio,\n    );\n\n    const userProjection = getUserProjection();\n    let userTransform;\n    if (userProjection) {\n      for (let i = 0, ii = loadExtents.length; i < ii; ++i) {\n        const extent = loadExtents[i];\n        const userExtent = toUserExtent(extent, projection);\n        vectorSource.loadFeatures(\n          userExtent,\n          toUserResolution(resolution, projection),\n          userProjection,\n        );\n      }\n      userTransform = getTransformFromProjections(userProjection, projection);\n    } else {\n      for (let i = 0, ii = loadExtents.length; i < ii; ++i) {\n        vectorSource.loadFeatures(loadExtents[i], resolution, projection);\n      }\n    }\n\n    const squaredTolerance = getSquaredRenderTolerance(resolution, pixelRatio);\n    let ready = true;\n    const render =\n      /**\n       * @param {import(\"../../Feature.js\").default} feature Feature.\n       * @param {number} index Index.\n       */\n      (feature, index) => {\n        let styles;\n        const styleFunction =\n          feature.getStyleFunction() || vectorLayer.getStyleFunction();\n        if (styleFunction) {\n          styles = styleFunction(feature, resolution);\n        }\n        if (styles) {\n          const dirty = this.renderFeature(\n            feature,\n            squaredTolerance,\n            styles,\n            replayGroup,\n            userTransform,\n            this.getLayer().getDeclutter(),\n            index,\n          );\n          ready = ready && !dirty;\n        }\n      };\n\n    const userExtent = toUserExtent(extent, projection);\n    /** @type {Array<import(\"../../Feature.js\").default>} */\n    const features = vectorSource.getFeaturesInExtent(userExtent);\n    if (vectorLayerRenderOrder) {\n      features.sort(vectorLayerRenderOrder);\n    }\n    for (let i = 0, ii = features.length; i < ii; ++i) {\n      render(features[i], i);\n    }\n    this.renderedFeatures_ = features;\n    this.ready = ready;\n\n    const replayGroupInstructions = replayGroup.finish();\n    const executorGroup = new ExecutorGroup(\n      extent,\n      resolution,\n      pixelRatio,\n      vectorSource.getOverlaps(),\n      replayGroupInstructions,\n      vectorLayer.getRenderBuffer(),\n      !!frameState.declutter,\n    );\n\n    this.renderedResolution_ = resolution;\n    this.renderedRevision_ = vectorLayerRevision;\n    this.renderedRenderOrder_ = vectorLayerRenderOrder;\n    this.renderedFrameDeclutter_ = !!frameState.declutter;\n    this.renderedExtent_ = renderedExtent;\n    this.wrappedRenderedExtent_ = extent;\n    this.renderedCenter_ = center;\n    this.renderedProjection_ = projection;\n    this.renderedPixelRatio_ = pixelRatio;\n    this.replayGroup_ = executorGroup;\n    this.hitDetectionImageData_ = null;\n\n    this.replayGroupChanged = true;\n    return true;\n  }\n\n  /**\n   * @param {import(\"../../Feature.js\").default} feature Feature.\n   * @param {number} squaredTolerance Squared render tolerance.\n   * @param {import(\"../../style/Style.js\").default|Array<import(\"../../style/Style.js\").default>} styles The style or array of styles.\n   * @param {import(\"../../render/canvas/BuilderGroup.js\").default} builderGroup Builder group.\n   * @param {import(\"../../proj.js\").TransformFunction} [transform] Transform from user to view projection.\n   * @param {boolean} [declutter] Enable decluttering.\n   * @param {number} [index] Render order index.\n   * @return {boolean} `true` if an image is loading.\n   */\n  renderFeature(\n    feature,\n    squaredTolerance,\n    styles,\n    builderGroup,\n    transform,\n    declutter,\n    index,\n  ) {\n    if (!styles) {\n      return false;\n    }\n    let loading = false;\n    if (Array.isArray(styles)) {\n      for (let i = 0, ii = styles.length; i < ii; ++i) {\n        loading =\n          renderFeature(\n            builderGroup,\n            feature,\n            styles[i],\n            squaredTolerance,\n            this.boundHandleStyleImageChange_,\n            transform,\n            declutter,\n            index,\n          ) || loading;\n      }\n    } else {\n      loading = renderFeature(\n        builderGroup,\n        feature,\n        styles,\n        squaredTolerance,\n        this.boundHandleStyleImageChange_,\n        transform,\n        declutter,\n        index,\n      );\n    }\n    return loading;\n  }\n}\n\nexport default CanvasVectorLayerRenderer;\n","\n/**\n * Rearranges items so that all items in the [left, k] are the smallest.\n * The k-th element will have the (k - left + 1)-th smallest value in [left, right].\n *\n * @template T\n * @param {T[]} arr the array to partially sort (in place)\n * @param {number} k middle index for partial sorting (as defined above)\n * @param {number} [left=0] left index of the range to sort\n * @param {number} [right=arr.length-1] right index\n * @param {(a: T, b: T) => number} [compare = (a, b) => a - b] compare function\n */\nexport default function quickselect(arr, k, left = 0, right = arr.length - 1, compare = defaultCompare) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            const n = right - left + 1;\n            const m = k - left + 1;\n            const z = Math.log(n);\n            const s = 0.5 * Math.exp(2 * z / 3);\n            const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            quickselect(arr, k, newLeft, newRight, compare);\n        }\n\n        const t = arr[k];\n        let i = left;\n        /** @type {number} */\n        let j = right;\n\n        swap(arr, left, k);\n        if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n        while (i < j) {\n            swap(arr, i, j);\n            i++;\n            j--;\n            while (compare(arr[i], t) < 0) i++;\n            while (compare(arr[j], t) > 0) j--;\n        }\n\n        if (compare(arr[left], t) === 0) swap(arr, left, j);\n        else {\n            j++;\n            swap(arr, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\n/**\n * @template T\n * @param {T[]} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\n/**\n * @template T\n * @param {T} a\n * @param {T} b\n * @returns {number}\n */\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n","import quickselect from 'quickselect';\n\nexport default class RBush {\n    constructor(maxEntries = 9) {\n        // max entries in a node is 9 by default; min node fill is 40% for best performance\n        this._maxEntries = Math.max(4, maxEntries);\n        this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n        this.clear();\n    }\n\n    all() {\n        return this._all(this.data, []);\n    }\n\n    search(bbox) {\n        let node = this.data;\n        const result = [];\n\n        if (!intersects(bbox, node)) return result;\n\n        const toBBox = this.toBBox;\n        const nodesToSearch = [];\n\n        while (node) {\n            for (let i = 0; i < node.children.length; i++) {\n                const child = node.children[i];\n                const childBBox = node.leaf ? toBBox(child) : child;\n\n                if (intersects(bbox, childBBox)) {\n                    if (node.leaf) result.push(child);\n                    else if (contains(bbox, childBBox)) this._all(child, result);\n                    else nodesToSearch.push(child);\n                }\n            }\n            node = nodesToSearch.pop();\n        }\n\n        return result;\n    }\n\n    collides(bbox) {\n        let node = this.data;\n\n        if (!intersects(bbox, node)) return false;\n\n        const nodesToSearch = [];\n        while (node) {\n            for (let i = 0; i < node.children.length; i++) {\n                const child = node.children[i];\n                const childBBox = node.leaf ? this.toBBox(child) : child;\n\n                if (intersects(bbox, childBBox)) {\n                    if (node.leaf || contains(bbox, childBBox)) return true;\n                    nodesToSearch.push(child);\n                }\n            }\n            node = nodesToSearch.pop();\n        }\n\n        return false;\n    }\n\n    load(data) {\n        if (!(data && data.length)) return this;\n\n        if (data.length < this._minEntries) {\n            for (let i = 0; i < data.length; i++) {\n                this.insert(data[i]);\n            }\n            return this;\n        }\n\n        // recursively build the tree with the given data from scratch using OMT algorithm\n        let node = this._build(data.slice(), 0, data.length - 1, 0);\n\n        if (!this.data.children.length) {\n            // save as is if tree is empty\n            this.data = node;\n\n        } else if (this.data.height === node.height) {\n            // split root if trees have the same height\n            this._splitRoot(this.data, node);\n\n        } else {\n            if (this.data.height < node.height) {\n                // swap trees if inserted one is bigger\n                const tmpNode = this.data;\n                this.data = node;\n                node = tmpNode;\n            }\n\n            // insert the small tree into the large tree at appropriate level\n            this._insert(node, this.data.height - node.height - 1, true);\n        }\n\n        return this;\n    }\n\n    insert(item) {\n        if (item) this._insert(item, this.data.height - 1);\n        return this;\n    }\n\n    clear() {\n        this.data = createNode([]);\n        return this;\n    }\n\n    remove(item, equalsFn) {\n        if (!item) return this;\n\n        let node = this.data;\n        const bbox = this.toBBox(item);\n        const path = [];\n        const indexes = [];\n        let i, parent, goingUp;\n\n        // depth-first iterative tree traversal\n        while (node || path.length) {\n\n            if (!node) { // go up\n                node = path.pop();\n                parent = path[path.length - 1];\n                i = indexes.pop();\n                goingUp = true;\n            }\n\n            if (node.leaf) { // check current node\n                const index = findItem(item, node.children, equalsFn);\n\n                if (index !== -1) {\n                    // item found, remove the item and condense tree upwards\n                    node.children.splice(index, 1);\n                    path.push(node);\n                    this._condense(path);\n                    return this;\n                }\n            }\n\n            if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n                path.push(node);\n                indexes.push(i);\n                i = 0;\n                parent = node;\n                node = node.children[0];\n\n            } else if (parent) { // go right\n                i++;\n                node = parent.children[i];\n                goingUp = false;\n\n            } else node = null; // nothing found\n        }\n\n        return this;\n    }\n\n    toBBox(item) { return item; }\n\n    compareMinX(a, b) { return a.minX - b.minX; }\n    compareMinY(a, b) { return a.minY - b.minY; }\n\n    toJSON() { return this.data; }\n\n    fromJSON(data) {\n        this.data = data;\n        return this;\n    }\n\n    _all(node, result) {\n        const nodesToSearch = [];\n        while (node) {\n            if (node.leaf) result.push(...node.children);\n            else nodesToSearch.push(...node.children);\n\n            node = nodesToSearch.pop();\n        }\n        return result;\n    }\n\n    _build(items, left, right, height) {\n\n        const N = right - left + 1;\n        let M = this._maxEntries;\n        let node;\n\n        if (N <= M) {\n            // reached leaf level; return leaf\n            node = createNode(items.slice(left, right + 1));\n            calcBBox(node, this.toBBox);\n            return node;\n        }\n\n        if (!height) {\n            // target height of the bulk-loaded tree\n            height = Math.ceil(Math.log(N) / Math.log(M));\n\n            // target number of root entries to maximize storage utilization\n            M = Math.ceil(N / Math.pow(M, height - 1));\n        }\n\n        node = createNode([]);\n        node.leaf = false;\n        node.height = height;\n\n        // split the items into M mostly square tiles\n\n        const N2 = Math.ceil(N / M);\n        const N1 = N2 * Math.ceil(Math.sqrt(M));\n\n        multiSelect(items, left, right, N1, this.compareMinX);\n\n        for (let i = left; i <= right; i += N1) {\n\n            const right2 = Math.min(i + N1 - 1, right);\n\n            multiSelect(items, i, right2, N2, this.compareMinY);\n\n            for (let j = i; j <= right2; j += N2) {\n\n                const right3 = Math.min(j + N2 - 1, right2);\n\n                // pack each entry recursively\n                node.children.push(this._build(items, j, right3, height - 1));\n            }\n        }\n\n        calcBBox(node, this.toBBox);\n\n        return node;\n    }\n\n    _chooseSubtree(bbox, node, level, path) {\n        while (true) {\n            path.push(node);\n\n            if (node.leaf || path.length - 1 === level) break;\n\n            let minArea = Infinity;\n            let minEnlargement = Infinity;\n            let targetNode;\n\n            for (let i = 0; i < node.children.length; i++) {\n                const child = node.children[i];\n                const area = bboxArea(child);\n                const enlargement = enlargedArea(bbox, child) - area;\n\n                // choose entry with the least area enlargement\n                if (enlargement < minEnlargement) {\n                    minEnlargement = enlargement;\n                    minArea = area < minArea ? area : minArea;\n                    targetNode = child;\n\n                } else if (enlargement === minEnlargement) {\n                    // otherwise choose one with the smallest area\n                    if (area < minArea) {\n                        minArea = area;\n                        targetNode = child;\n                    }\n                }\n            }\n\n            node = targetNode || node.children[0];\n        }\n\n        return node;\n    }\n\n    _insert(item, level, isNode) {\n        const bbox = isNode ? item : this.toBBox(item);\n        const insertPath = [];\n\n        // find the best node for accommodating the item, saving all nodes along the path too\n        const node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n        // put the item into the node\n        node.children.push(item);\n        extend(node, bbox);\n\n        // split on node overflow; propagate upwards if necessary\n        while (level >= 0) {\n            if (insertPath[level].children.length > this._maxEntries) {\n                this._split(insertPath, level);\n                level--;\n            } else break;\n        }\n\n        // adjust bboxes along the insertion path\n        this._adjustParentBBoxes(bbox, insertPath, level);\n    }\n\n    // split overflowed node into two\n    _split(insertPath, level) {\n        const node = insertPath[level];\n        const M = node.children.length;\n        const m = this._minEntries;\n\n        this._chooseSplitAxis(node, m, M);\n\n        const splitIndex = this._chooseSplitIndex(node, m, M);\n\n        const newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n        newNode.height = node.height;\n        newNode.leaf = node.leaf;\n\n        calcBBox(node, this.toBBox);\n        calcBBox(newNode, this.toBBox);\n\n        if (level) insertPath[level - 1].children.push(newNode);\n        else this._splitRoot(node, newNode);\n    }\n\n    _splitRoot(node, newNode) {\n        // split root node\n        this.data = createNode([node, newNode]);\n        this.data.height = node.height + 1;\n        this.data.leaf = false;\n        calcBBox(this.data, this.toBBox);\n    }\n\n    _chooseSplitIndex(node, m, M) {\n        let index;\n        let minOverlap = Infinity;\n        let minArea = Infinity;\n\n        for (let i = m; i <= M - m; i++) {\n            const bbox1 = distBBox(node, 0, i, this.toBBox);\n            const bbox2 = distBBox(node, i, M, this.toBBox);\n\n            const overlap = intersectionArea(bbox1, bbox2);\n            const area = bboxArea(bbox1) + bboxArea(bbox2);\n\n            // choose distribution with minimum overlap\n            if (overlap < minOverlap) {\n                minOverlap = overlap;\n                index = i;\n\n                minArea = area < minArea ? area : minArea;\n\n            } else if (overlap === minOverlap) {\n                // otherwise choose distribution with minimum area\n                if (area < minArea) {\n                    minArea = area;\n                    index = i;\n                }\n            }\n        }\n\n        return index || M - m;\n    }\n\n    // sorts node children by the best axis for split\n    _chooseSplitAxis(node, m, M) {\n        const compareMinX = node.leaf ? this.compareMinX : compareNodeMinX;\n        const compareMinY = node.leaf ? this.compareMinY : compareNodeMinY;\n        const xMargin = this._allDistMargin(node, m, M, compareMinX);\n        const yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n        // if total distributions margin value is minimal for x, sort by minX,\n        // otherwise it's already sorted by minY\n        if (xMargin < yMargin) node.children.sort(compareMinX);\n    }\n\n    // total margin of all possible split distributions where each node is at least m full\n    _allDistMargin(node, m, M, compare) {\n        node.children.sort(compare);\n\n        const toBBox = this.toBBox;\n        const leftBBox = distBBox(node, 0, m, toBBox);\n        const rightBBox = distBBox(node, M - m, M, toBBox);\n        let margin = bboxMargin(leftBBox) + bboxMargin(rightBBox);\n\n        for (let i = m; i < M - m; i++) {\n            const child = node.children[i];\n            extend(leftBBox, node.leaf ? toBBox(child) : child);\n            margin += bboxMargin(leftBBox);\n        }\n\n        for (let i = M - m - 1; i >= m; i--) {\n            const child = node.children[i];\n            extend(rightBBox, node.leaf ? toBBox(child) : child);\n            margin += bboxMargin(rightBBox);\n        }\n\n        return margin;\n    }\n\n    _adjustParentBBoxes(bbox, path, level) {\n        // adjust bboxes along the given tree path\n        for (let i = level; i >= 0; i--) {\n            extend(path[i], bbox);\n        }\n    }\n\n    _condense(path) {\n        // go through the path, removing empty nodes and updating bboxes\n        for (let i = path.length - 1, siblings; i >= 0; i--) {\n            if (path[i].children.length === 0) {\n                if (i > 0) {\n                    siblings = path[i - 1].children;\n                    siblings.splice(siblings.indexOf(path[i]), 1);\n\n                } else this.clear();\n\n            } else calcBBox(path[i], this.toBBox);\n        }\n    }\n}\n\nfunction findItem(item, items, equalsFn) {\n    if (!equalsFn) return items.indexOf(item);\n\n    for (let i = 0; i < items.length; i++) {\n        if (equalsFn(item, items[i])) return i;\n    }\n    return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n    distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n    if (!destNode) destNode = createNode(null);\n    destNode.minX = Infinity;\n    destNode.minY = Infinity;\n    destNode.maxX = -Infinity;\n    destNode.maxY = -Infinity;\n\n    for (let i = k; i < p; i++) {\n        const child = node.children[i];\n        extend(destNode, node.leaf ? toBBox(child) : child);\n    }\n\n    return destNode;\n}\n\nfunction extend(a, b) {\n    a.minX = Math.min(a.minX, b.minX);\n    a.minY = Math.min(a.minY, b.minY);\n    a.maxX = Math.max(a.maxX, b.maxX);\n    a.maxY = Math.max(a.maxY, b.maxY);\n    return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a)   { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n    return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n           (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n    const minX = Math.max(a.minX, b.minX);\n    const minY = Math.max(a.minY, b.minY);\n    const maxX = Math.min(a.maxX, b.maxX);\n    const maxY = Math.min(a.maxY, b.maxY);\n\n    return Math.max(0, maxX - minX) *\n           Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n    return a.minX <= b.minX &&\n           a.minY <= b.minY &&\n           b.maxX <= a.maxX &&\n           b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n    return b.minX <= a.maxX &&\n           b.minY <= a.maxY &&\n           b.maxX >= a.minX &&\n           b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n    return {\n        children,\n        height: 1,\n        leaf: true,\n        minX: Infinity,\n        minY: Infinity,\n        maxX: -Infinity,\n        maxY: -Infinity\n    };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n    const stack = [left, right];\n\n    while (stack.length) {\n        right = stack.pop();\n        left = stack.pop();\n\n        if (right - left <= n) continue;\n\n        const mid = left + Math.ceil((right - left) / n / 2) * n;\n        quickselect(arr, mid, left, right, compare);\n\n        stack.push(left, mid, mid, right);\n    }\n}\n","/**\n * @module ol/expr/expression\n */\nimport {ascending} from '../array.js';\nimport {fromString as colorFromString} from '../color.js';\nimport {toSize} from '../size.js';\n\n/**\n * @fileoverview This module includes types and functions for parsing array encoded expressions.\n * The result of parsing an encoded expression is one of the specific expression classes.\n * During parsing, information is added to the parsing context about the data accessed by the\n * expression.\n */\n\n/**\n * Base type used for literal style parameters; can be a number literal or the output of an operator,\n * which in turns takes {@link import(\"./expression.js\").ExpressionValue} arguments.\n *\n * See below for details on the available operators (with notes for those that are WebGL or Canvas only).\n *\n * Reading operators:\n *   * `['band', bandIndex, xOffset, yOffset]` For tile layers only. Fetches pixel values from band\n *     `bandIndex` of the source's data. The first `bandIndex` of the source data is `1`. Fetched values\n *     are in the 0..1 range. {@link import(\"../source/TileImage.js\").default} sources have 4 bands: red,\n *     green, blue and alpha. {@link import(\"../source/DataTile.js\").default} sources can have any number\n *     of bands, depending on the underlying data source and\n *     {@link import(\"../source/GeoTIFF.js\").Options configuration}. `xOffset` and `yOffset` are optional\n *     and allow specifying pixel offsets for x and y. This is used for sampling data from neighboring pixels (WebGL only).\n *   * `['get', attributeName]` fetches a feature property value, similar to `feature.get('attributeName')`.\n *   * `['get', attributeName, keyOrArrayIndex, ...]` (Canvas only) Access nested properties and array items of a\n *     feature property. The result is `undefined` when there is nothing at the specified key or index.\n *   * `['geometry-type']` returns a feature's geometry type as string, either: 'LineString', 'Point' or 'Polygon'\n *     `Multi*` values are returned as their singular equivalent\n *     `Circle` geometries are returned as 'Polygon'\n *     `GeometryCollection` geometries are returned as the type of the first geometry found in the collection (WebGL only).\n *   * `['resolution']` returns the current resolution\n *   * `['time']` The time in seconds since the creation of the layer (WebGL only).\n *   * `['var', 'varName']` fetches a value from the style variables; will throw an error if that variable is undefined\n *   * `['zoom']` The current zoom level (WebGL only).\n *   * `['line-metric']` returns the M component of the current point on a line (WebGL only); in case where the geometry layout of the line\n *      does not contain an M component (e.g. XY or XYZ), 0 is returned; 0 is also returned for geometries other than lines.\n *      Please note that the M component will be linearly interpolated between the two points composing a segment.\n *\n * Math operators:\n *   * `['*', value1, value2, ...]` multiplies the values (either numbers or colors)\n *   * `['/', value1, value2]` divides `value1` by `value2`\n *   * `['+', value1, value2, ...]` adds the values\n *   * `['-', value1, value2]` subtracts `value2` from `value1`\n *   * `['clamp', value, low, high]` clamps `value` between `low` and `high`\n *   * `['%', value1, value2]` returns the result of `value1 % value2` (modulo)\n *   * `['^', value1, value2]` returns the value of `value1` raised to the `value2` power\n *   * `['abs', value1]` returns the absolute value of `value1`\n *   * `['floor', value1]` returns the nearest integer less than or equal to `value1`\n *   * `['round', value1]` returns the nearest integer to `value1`\n *   * `['ceil', value1]` returns the nearest integer greater than or equal to `value1`\n *   * `['sin', value1]` returns the sine of `value1`\n *   * `['cos', value1]` returns the cosine of `value1`\n *   * `['atan', value1, value2]` returns `atan2(value1, value2)`. If `value2` is not provided, returns `atan(value1)`\n *   * `['sqrt', value1]` returns the square root of `value1`\n *\n * * Transform operators:\n *   * `['case', condition1, output1, ...conditionN, outputN, fallback]` selects the first output whose corresponding\n *     condition evaluates to `true`. If no match is found, returns the `fallback` value.\n *     All conditions should be `boolean`, output and fallback can be any kind.\n *   * `['match', input, match1, output1, ...matchN, outputN, fallback]` compares the `input` value against all\n *     provided `matchX` values, returning the output associated with the first valid match. If no match is found,\n *     returns the `fallback` value.\n *     `input` and `matchX` values must all be of the same type, and can be `number` or `string`. `outputX` and\n *     `fallback` values must be of the same type, and can be of any kind.\n *   * `['interpolate', interpolation, input, stop1, output1, ...stopN, outputN]` returns a value by interpolating between\n *     pairs of inputs and outputs; `interpolation` can either be `['linear']` or `['exponential', base]` where `base` is\n *     the rate of increase from stop A to stop B (i.e. power to which the interpolation ratio is raised); a value\n *     of 1 is equivalent to `['linear']`.\n *     `input` and `stopX` values must all be of type `number`. `outputX` values can be `number` or `color` values.\n *     Note: `input` will be clamped between `stop1` and `stopN`, meaning that all output values will be comprised\n *     between `output1` and `outputN`.\n *   * `['string', value1, value2, ...]` returns the first value in the list that evaluates to a string.\n *     An example would be to provide a default value for get: `['string', ['get', 'propertyname'], 'default value']]`\n *     (Canvas only).\n *   * `['number', value1, value2, ...]` returns the first value in the list that evaluates to a number.\n *     An example would be to provide a default value for get: `['string', ['get', 'propertyname'], 42]]`\n *     (Canvas only).\n *   * `['coalesce', value1, value2, ...]` returns the first value in the list which is not null or undefined.\n *     An example would be to provide a default value for get: `['coalesce', ['get','propertyname'], 'default value']]`\n *     (Canvas only).\n *\n * * Logical operators:\n *   * `['<', value1, value2]` returns `true` if `value1` is strictly lower than `value2`, or `false` otherwise.\n *   * `['<=', value1, value2]` returns `true` if `value1` is lower than or equals `value2`, or `false` otherwise.\n *   * `['>', value1, value2]` returns `true` if `value1` is strictly greater than `value2`, or `false` otherwise.\n *   * `['>=', value1, value2]` returns `true` if `value1` is greater than or equals `value2`, or `false` otherwise.\n *   * `['==', value1, value2]` returns `true` if `value1` equals `value2`, or `false` otherwise.\n *   * `['!=', value1, value2]` returns `true` if `value1` does not equal `value2`, or `false` otherwise.\n *   * `['!', value1]` returns `false` if `value1` is `true` or greater than `0`, or `true` otherwise.\n *   * `['all', value1, value2, ...]` returns `true` if all the inputs are `true`, `false` otherwise.\n *   * `['any', value1, value2, ...]` returns `true` if any of the inputs are `true`, `false` otherwise.\n *   * `['has', attributeName, keyOrArrayIndex, ...]` returns `true` if feature properties include the (nested) key `attributeName`,\n *     `false` otherwise.\n *     Note that for WebGL layers, the hardcoded value `-9999999` is used to distinguish when a property is not defined.\n *   * `['between', value1, value2, value3]` returns `true` if `value1` is contained between `value2` and `value3`\n *     (inclusively), or `false` otherwise.\n *   * `['in', needle, haystack]` returns `true` if `needle` is found in `haystack`, and\n *     `false` otherwise.\n *     This operator has the following limitations:\n *     * `haystack` has to be an array of numbers or strings (searching for a substring in a string is not supported yet)\n *     * Only literal arrays are supported as `haystack` for now; this means that `haystack` cannot be the result of an\n *     expression. If `haystack` is an array of strings, use the `literal` operator to disambiguate from an expression:\n *     `['literal', ['abc', 'def', 'ghi']]`\n *\n * * Conversion operators:\n *   * `['array', value1, ...valueN]` creates a numerical array from `number` values; please note that the amount of\n *     values can currently only be 2, 3 or 4 (WebGL only).\n *   * `['color', red, green, blue, alpha]` or `['color', shade, alpha]` creates a `color` value from `number` values;\n *     the `alpha` parameter is optional; if not specified, it will be set to 1 (WebGL only).\n *     Note: `red`, `green` and `blue` or `shade` components must be values between 0 and 255; `alpha` between 0 and 1.\n *   * `['palette', index, colors]` picks a `color` value from an array of colors using the given index; the `index`\n *     expression must evaluate to a number; the items in the `colors` array must be strings with hex colors\n *     (e.g. `'#86A136'`), colors using the rgba[a] functional notation (e.g. `'rgb(134, 161, 54)'` or `'rgba(134, 161, 54, 1)'`),\n *     named colors (e.g. `'red'`), or array literals with 3 ([r, g, b]) or 4 ([r, g, b, a]) values (with r, g, and b\n *     in the 0-255 range and a in the 0-1 range) (WebGL only).\n *   * `['to-string', value]` converts the input value to a string. If the input is a boolean, the result is \"true\" or \"false\".\n *     If the input is a number, it is converted to a string as specified by the \"NumberToString\" algorithm of the ECMAScript\n *     Language Specification. If the input is a color, it is converted to a string of the form \"rgba(r,g,b,a)\". (Canvas only)\n *\n * Values can either be literals or another operator, as they will be evaluated recursively.\n * Literal values can be of the following types:\n * * `boolean`\n * * `number`\n * * `number[]` (number arrays can only have a length of 2, 3 or 4)\n * * `string`\n * * {@link module:ol/color~Color}\n *\n * @typedef {Array<*>|import(\"../color.js\").Color|string|number|boolean} ExpressionValue\n * @api\n */\n\nlet numTypes = 0;\nexport const NoneType = 0;\nexport const BooleanType = 1 << numTypes++;\nexport const NumberType = 1 << numTypes++;\nexport const StringType = 1 << numTypes++;\nexport const ColorType = 1 << numTypes++;\nexport const NumberArrayType = 1 << numTypes++;\nexport const SizeType = 1 << numTypes++;\nexport const AnyType = Math.pow(2, numTypes) - 1;\n\nconst typeNames = {\n  [BooleanType]: 'boolean',\n  [NumberType]: 'number',\n  [StringType]: 'string',\n  [ColorType]: 'color',\n  [NumberArrayType]: 'number[]',\n  [SizeType]: 'size',\n};\n\nconst namedTypes = Object.keys(typeNames).map(Number).sort(ascending);\n\n/**\n * @param {number} type The type.\n * @return {boolean} The type is one of the specific types (not any or a union type).\n */\nfunction isSpecific(type) {\n  return type in typeNames;\n}\n\n/**\n * Get a string representation for a type.\n * @param {number} type The type.\n * @return {string} The type name.\n */\nexport function typeName(type) {\n  const names = [];\n  for (const namedType of namedTypes) {\n    if (includesType(type, namedType)) {\n      names.push(typeNames[namedType]);\n    }\n  }\n  if (names.length === 0) {\n    return 'untyped';\n  }\n  if (names.length < 3) {\n    return names.join(' or ');\n  }\n  return names.slice(0, -1).join(', ') + ', or ' + names[names.length - 1];\n}\n\n/**\n * @param {number} broad The broad type.\n * @param {number} specific The specific type.\n * @return {boolean} The broad type includes the specific type.\n */\nexport function includesType(broad, specific) {\n  return (broad & specific) === specific;\n}\n\n/**\n * @param {number} oneType One type.\n * @param {number} otherType Another type.\n * @return {boolean} The set of types overlap (share a common specific type)\n */\nexport function overlapsType(oneType, otherType) {\n  return !!(oneType & otherType);\n}\n\n/**\n * @param {number} type The type.\n * @param {number} expected The expected type.\n * @return {boolean} The given type is exactly the expected type.\n */\nexport function isType(type, expected) {\n  return type === expected;\n}\n\n/**\n * @typedef {boolean|number|string|Array<number>} LiteralValue\n */\n\nexport class LiteralExpression {\n  /**\n   * @param {number} type The value type.\n   * @param {LiteralValue} value The literal value.\n   */\n  constructor(type, value) {\n    if (!isSpecific(type)) {\n      throw new Error(\n        `literal expressions must have a specific type, got ${typeName(type)}`,\n      );\n    }\n    this.type = type;\n    this.value = value;\n  }\n}\n\nexport class CallExpression {\n  /**\n   * @param {number} type The return type.\n   * @param {string} operator The operator.\n   * @param {...Expression} args The arguments.\n   */\n  constructor(type, operator, ...args) {\n    this.type = type;\n    this.operator = operator;\n    this.args = args;\n  }\n}\n\n/**\n * @typedef {LiteralExpression|CallExpression} Expression\n */\n\n/**\n * @typedef {Object} ParsingContext\n * @property {Set<string>} variables Variables referenced with the 'var' operator.\n * @property {Set<string>} properties Properties referenced with the 'get' operator.\n * @property {boolean} featureId The style uses the feature id.\n * @property {boolean} geometryType The style uses the feature geometry type.\n * @property {boolean} mapState The style uses the map state (view state or time elapsed).\n */\n\n/**\n * @return {ParsingContext} A new parsing context.\n */\nexport function newParsingContext() {\n  return {\n    variables: new Set(),\n    properties: new Set(),\n    featureId: false,\n    geometryType: false,\n    mapState: false,\n  };\n}\n\n/**\n * @typedef {LiteralValue|Array} EncodedExpression\n */\n\n/**\n * @param {EncodedExpression} encoded The encoded expression.\n * @param {number} expectedType The expected type.\n * @param {ParsingContext} context The parsing context.\n * @return {Expression} The parsed expression result.\n */\nexport function parse(encoded, expectedType, context) {\n  switch (typeof encoded) {\n    case 'boolean': {\n      if (isType(expectedType, StringType)) {\n        return new LiteralExpression(StringType, encoded ? 'true' : 'false');\n      }\n      if (!includesType(expectedType, BooleanType)) {\n        throw new Error(\n          `got a boolean, but expected ${typeName(expectedType)}`,\n        );\n      }\n      return new LiteralExpression(BooleanType, encoded);\n    }\n    case 'number': {\n      if (isType(expectedType, SizeType)) {\n        return new LiteralExpression(SizeType, toSize(encoded));\n      }\n      if (isType(expectedType, BooleanType)) {\n        return new LiteralExpression(BooleanType, !!encoded);\n      }\n      if (isType(expectedType, StringType)) {\n        return new LiteralExpression(StringType, encoded.toString());\n      }\n      if (!includesType(expectedType, NumberType)) {\n        throw new Error(`got a number, but expected ${typeName(expectedType)}`);\n      }\n      return new LiteralExpression(NumberType, encoded);\n    }\n    case 'string': {\n      if (isType(expectedType, ColorType)) {\n        return new LiteralExpression(ColorType, colorFromString(encoded));\n      }\n      if (isType(expectedType, BooleanType)) {\n        return new LiteralExpression(BooleanType, !!encoded);\n      }\n      if (!includesType(expectedType, StringType)) {\n        throw new Error(`got a string, but expected ${typeName(expectedType)}`);\n      }\n      return new LiteralExpression(StringType, encoded);\n    }\n    default: {\n      // pass\n    }\n  }\n\n  if (!Array.isArray(encoded)) {\n    throw new Error('expression must be an array or a primitive value');\n  }\n\n  if (encoded.length === 0) {\n    throw new Error('empty expression');\n  }\n\n  if (typeof encoded[0] === 'string') {\n    return parseCallExpression(encoded, expectedType, context);\n  }\n\n  for (const item of encoded) {\n    if (typeof item !== 'number') {\n      throw new Error('expected an array of numbers');\n    }\n  }\n\n  if (isType(expectedType, SizeType)) {\n    if (encoded.length !== 2) {\n      throw new Error(\n        `expected an array of two values for a size, got ${encoded.length}`,\n      );\n    }\n    return new LiteralExpression(SizeType, encoded);\n  }\n\n  if (isType(expectedType, ColorType)) {\n    if (encoded.length === 3) {\n      return new LiteralExpression(ColorType, [...encoded, 1]);\n    }\n    if (encoded.length === 4) {\n      return new LiteralExpression(ColorType, encoded);\n    }\n    throw new Error(\n      `expected an array of 3 or 4 values for a color, got ${encoded.length}`,\n    );\n  }\n\n  if (!includesType(expectedType, NumberArrayType)) {\n    throw new Error(\n      `got an array of numbers, but expected ${typeName(expectedType)}`,\n    );\n  }\n\n  return new LiteralExpression(NumberArrayType, encoded);\n}\n\n/**\n * @type {Object<string, string>}\n */\nexport const Ops = {\n  Get: 'get',\n  Var: 'var',\n  Concat: 'concat',\n  GeometryType: 'geometry-type',\n  LineMetric: 'line-metric',\n  Any: 'any',\n  All: 'all',\n  Not: '!',\n  Resolution: 'resolution',\n  Zoom: 'zoom',\n  Time: 'time',\n  Equal: '==',\n  NotEqual: '!=',\n  GreaterThan: '>',\n  GreaterThanOrEqualTo: '>=',\n  LessThan: '<',\n  LessThanOrEqualTo: '<=',\n  Multiply: '*',\n  Divide: '/',\n  Add: '+',\n  Subtract: '-',\n  Clamp: 'clamp',\n  Mod: '%',\n  Pow: '^',\n  Abs: 'abs',\n  Floor: 'floor',\n  Ceil: 'ceil',\n  Round: 'round',\n  Sin: 'sin',\n  Cos: 'cos',\n  Atan: 'atan',\n  Sqrt: 'sqrt',\n  Match: 'match',\n  Between: 'between',\n  Interpolate: 'interpolate',\n  Coalesce: 'coalesce',\n  Case: 'case',\n  In: 'in',\n  Number: 'number',\n  String: 'string',\n  Array: 'array',\n  Color: 'color',\n  Id: 'id',\n  Band: 'band',\n  Palette: 'palette',\n  ToString: 'to-string',\n  Has: 'has',\n};\n\n/**\n * @typedef {function(Array, number, ParsingContext):Expression} Parser\n *\n * Second argument is the expected type.\n */\n\n/**\n * @type {Object<string, Parser>}\n */\nconst parsers = {\n  [Ops.Get]: createCallExpressionParser(hasArgsCount(1, Infinity), withGetArgs),\n  [Ops.Var]: createCallExpressionParser(hasArgsCount(1, 1), withVarArgs),\n  [Ops.Has]: createCallExpressionParser(hasArgsCount(1, Infinity), withGetArgs),\n  [Ops.Id]: createCallExpressionParser(usesFeatureId, withNoArgs),\n  [Ops.Concat]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfType(StringType),\n  ),\n  [Ops.GeometryType]: createCallExpressionParser(usesGeometryType, withNoArgs),\n  [Ops.LineMetric]: createCallExpressionParser(withNoArgs),\n  [Ops.Resolution]: createCallExpressionParser(usesMapState, withNoArgs),\n  [Ops.Zoom]: createCallExpressionParser(usesMapState, withNoArgs),\n  [Ops.Time]: createCallExpressionParser(usesMapState, withNoArgs),\n  [Ops.Any]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfType(BooleanType),\n  ),\n  [Ops.All]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfType(BooleanType),\n  ),\n  [Ops.Not]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(BooleanType),\n  ),\n  [Ops.Equal]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(AnyType),\n  ),\n  [Ops.NotEqual]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(AnyType),\n  ),\n  [Ops.GreaterThan]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.GreaterThanOrEqualTo]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.LessThan]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.LessThanOrEqualTo]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Multiply]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfReturnType,\n  ),\n  [Ops.Coalesce]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfReturnType,\n  ),\n  [Ops.Divide]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Add]: createCallExpressionParser(\n    hasArgsCount(2, Infinity),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Subtract]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Clamp]: createCallExpressionParser(\n    hasArgsCount(3, 3),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Mod]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Pow]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Abs]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Floor]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Ceil]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Round]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Sin]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Cos]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Atan]: createCallExpressionParser(\n    hasArgsCount(1, 2),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Sqrt]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Match]: createCallExpressionParser(\n    hasArgsCount(4, Infinity),\n    hasEvenArgs,\n    withMatchArgs,\n  ),\n  [Ops.Between]: createCallExpressionParser(\n    hasArgsCount(3, 3),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Interpolate]: createCallExpressionParser(\n    hasArgsCount(6, Infinity),\n    hasEvenArgs,\n    withInterpolateArgs,\n  ),\n  [Ops.Case]: createCallExpressionParser(\n    hasArgsCount(3, Infinity),\n    hasOddArgs,\n    withCaseArgs,\n  ),\n  [Ops.In]: createCallExpressionParser(hasArgsCount(2, 2), withInArgs),\n  [Ops.Number]: createCallExpressionParser(\n    hasArgsCount(1, Infinity),\n    withArgsOfType(AnyType),\n  ),\n  [Ops.String]: createCallExpressionParser(\n    hasArgsCount(1, Infinity),\n    withArgsOfType(AnyType),\n  ),\n  [Ops.Array]: createCallExpressionParser(\n    hasArgsCount(1, Infinity),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Color]: createCallExpressionParser(\n    hasArgsCount(1, 4),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Band]: createCallExpressionParser(\n    hasArgsCount(1, 3),\n    withArgsOfType(NumberType),\n  ),\n  [Ops.Palette]: createCallExpressionParser(\n    hasArgsCount(2, 2),\n    withPaletteArgs,\n  ),\n  [Ops.ToString]: createCallExpressionParser(\n    hasArgsCount(1, 1),\n    withArgsOfType(BooleanType | NumberType | StringType | ColorType),\n  ),\n};\n\n/**\n * @typedef {function(Array<EncodedExpression>, number, ParsingContext):Array<Expression>|void} ArgValidator\n *\n * An argument validator applies various checks to an encoded expression arguments and\n * returns the parsed arguments if any.  The second argument is the return type of the call expression.\n */\n\n/**\n * @type {ArgValidator}\n */\nfunction withGetArgs(encoded, returnType, context) {\n  const argsCount = encoded.length - 1;\n  const args = new Array(argsCount);\n  for (let i = 0; i < argsCount; ++i) {\n    const key = encoded[i + 1];\n    switch (typeof key) {\n      case 'number': {\n        args[i] = new LiteralExpression(NumberType, key);\n        break;\n      }\n      case 'string': {\n        args[i] = new LiteralExpression(StringType, key);\n        break;\n      }\n      default: {\n        throw new Error(\n          `expected a string key or numeric array index for a get operation, got ${key}`,\n        );\n      }\n    }\n    if (i === 0) {\n      context.properties.add(String(key));\n    }\n  }\n  return args;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withVarArgs(encoded, returnType, context) {\n  const name = encoded[1];\n  if (typeof name !== 'string') {\n    throw new Error('expected a string argument for var operation');\n  }\n  context.variables.add(name);\n\n  return [new LiteralExpression(StringType, name)];\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction usesFeatureId(encoded, returnType, context) {\n  context.featureId = true;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction usesGeometryType(encoded, returnType, context) {\n  context.geometryType = true;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction usesMapState(encoded, returnType, context) {\n  context.mapState = true;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withNoArgs(encoded, returnType, context) {\n  const operation = encoded[0];\n  if (encoded.length !== 1) {\n    throw new Error(`expected no arguments for ${operation} operation`);\n  }\n  return [];\n}\n\n/**\n * @param {number} minArgs The minimum number of arguments.\n * @param {number} maxArgs The maximum number of arguments.\n * @return {ArgValidator} The argument validator\n */\nfunction hasArgsCount(minArgs, maxArgs) {\n  return function (encoded, returnType, context) {\n    const operation = encoded[0];\n    const argCount = encoded.length - 1;\n    if (minArgs === maxArgs) {\n      if (argCount !== minArgs) {\n        const plural = minArgs === 1 ? '' : 's';\n        throw new Error(\n          `expected ${minArgs} argument${plural} for ${operation}, got ${argCount}`,\n        );\n      }\n    } else if (argCount < minArgs || argCount > maxArgs) {\n      const range =\n        maxArgs === Infinity\n          ? `${minArgs} or more`\n          : `${minArgs} to ${maxArgs}`;\n      throw new Error(\n        `expected ${range} arguments for ${operation}, got ${argCount}`,\n      );\n    }\n  };\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withArgsOfReturnType(encoded, returnType, context) {\n  const argCount = encoded.length - 1;\n  /**\n   * @type {Array<Expression>}\n   */\n  const args = new Array(argCount);\n  for (let i = 0; i < argCount; ++i) {\n    const expression = parse(encoded[i + 1], returnType, context);\n    args[i] = expression;\n  }\n  return args;\n}\n\n/**\n * @param {number} argType The argument type.\n * @return {ArgValidator} The argument validator\n */\nfunction withArgsOfType(argType) {\n  return function (encoded, returnType, context) {\n    const argCount = encoded.length - 1;\n    /**\n     * @type {Array<Expression>}\n     */\n    const args = new Array(argCount);\n    for (let i = 0; i < argCount; ++i) {\n      const expression = parse(encoded[i + 1], argType, context);\n      args[i] = expression;\n    }\n    return args;\n  };\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction hasOddArgs(encoded, returnType, context) {\n  const operation = encoded[0];\n  const argCount = encoded.length - 1;\n  if (argCount % 2 === 0) {\n    throw new Error(\n      `expected an odd number of arguments for ${operation}, got ${argCount} instead`,\n    );\n  }\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction hasEvenArgs(encoded, returnType, context) {\n  const operation = encoded[0];\n  const argCount = encoded.length - 1;\n  if (argCount % 2 === 1) {\n    throw new Error(\n      `expected an even number of arguments for operation ${operation}, got ${argCount} instead`,\n    );\n  }\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withMatchArgs(encoded, returnType, context) {\n  const argsCount = encoded.length - 1;\n\n  const inputType = StringType | NumberType | BooleanType;\n\n  const input = parse(encoded[1], inputType, context);\n\n  const fallback = parse(encoded[encoded.length - 1], returnType, context);\n\n  const args = new Array(argsCount - 2);\n  for (let i = 0; i < argsCount - 2; i += 2) {\n    try {\n      const match = parse(encoded[i + 2], input.type, context);\n      args[i] = match;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i + 1} of match expression: ${err.message}`,\n      );\n    }\n    try {\n      const output = parse(encoded[i + 3], fallback.type, context);\n      args[i + 1] = output;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i + 2} of match expression: ${err.message}`,\n      );\n    }\n  }\n\n  return [input, ...args, fallback];\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withInterpolateArgs(encoded, returnType, context) {\n  const interpolationType = encoded[1];\n  /**\n   * @type {number}\n   */\n  let base;\n  switch (interpolationType[0]) {\n    case 'linear':\n      base = 1;\n      break;\n    case 'exponential':\n      const b = interpolationType[1];\n      if (typeof b !== 'number' || b <= 0) {\n        throw new Error(\n          `expected a number base for exponential interpolation` +\n            `, got ${JSON.stringify(b)} instead`,\n        );\n      }\n      base = b;\n      break;\n    default:\n      throw new Error(\n        `invalid interpolation type: ${JSON.stringify(interpolationType)}`,\n      );\n  }\n\n  const interpolation = new LiteralExpression(NumberType, base);\n\n  let input;\n  try {\n    input = parse(encoded[2], NumberType, context);\n  } catch (err) {\n    throw new Error(\n      `failed to parse argument 1 in interpolate expression: ${err.message}`,\n    );\n  }\n\n  const args = new Array(encoded.length - 3);\n  for (let i = 0; i < args.length; i += 2) {\n    try {\n      const stop = parse(encoded[i + 3], NumberType, context);\n      args[i] = stop;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i + 2} for interpolate expression: ${err.message}`,\n      );\n    }\n    try {\n      const output = parse(encoded[i + 4], returnType, context);\n      args[i + 1] = output;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i + 3} for interpolate expression: ${err.message}`,\n      );\n    }\n  }\n\n  return [interpolation, input, ...args];\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withCaseArgs(encoded, returnType, context) {\n  const fallback = parse(encoded[encoded.length - 1], returnType, context);\n\n  const args = new Array(encoded.length - 1);\n  for (let i = 0; i < args.length - 1; i += 2) {\n    try {\n      const condition = parse(encoded[i + 1], BooleanType, context);\n      args[i] = condition;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i} of case expression: ${err.message}`,\n      );\n    }\n    try {\n      const output = parse(encoded[i + 2], fallback.type, context);\n      args[i + 1] = output;\n    } catch (err) {\n      throw new Error(\n        `failed to parse argument ${i + 1} of case expression: ${err.message}`,\n      );\n    }\n  }\n\n  args[args.length - 1] = fallback;\n  return args;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withInArgs(encoded, returnType, context) {\n  let haystack = encoded[2];\n  if (!Array.isArray(haystack)) {\n    throw new Error(\n      `the second argument for the \"in\" operator must be an array`,\n    );\n  }\n  /**\n   * @type {number}\n   */\n  let needleType;\n  if (typeof haystack[0] === 'string') {\n    if (haystack[0] !== 'literal') {\n      throw new Error(\n        `for the \"in\" operator, a string array should be wrapped in a \"literal\" operator to disambiguate from expressions`,\n      );\n    }\n    if (!Array.isArray(haystack[1])) {\n      throw new Error(\n        `failed to parse \"in\" expression: the literal operator must be followed by an array`,\n      );\n    }\n    haystack = haystack[1];\n    needleType = StringType;\n  } else {\n    needleType = NumberType;\n  }\n\n  const args = new Array(haystack.length);\n  for (let i = 0; i < args.length; i++) {\n    try {\n      const arg = parse(haystack[i], needleType, context);\n      args[i] = arg;\n    } catch (err) {\n      throw new Error(\n        `failed to parse haystack item ${i} for \"in\" expression: ${err.message}`,\n      );\n    }\n  }\n\n  const needle = parse(encoded[1], needleType, context);\n  return [needle, ...args];\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withPaletteArgs(encoded, returnType, context) {\n  let index;\n  try {\n    index = parse(encoded[1], NumberType, context);\n  } catch (err) {\n    throw new Error(\n      `failed to parse first argument in palette expression: ${err.message}`,\n    );\n  }\n  const colors = encoded[2];\n  if (!Array.isArray(colors)) {\n    throw new Error('the second argument of palette must be an array');\n  }\n  const parsedColors = new Array(colors.length);\n  for (let i = 0; i < parsedColors.length; i++) {\n    let color;\n    try {\n      color = parse(colors[i], ColorType, context);\n    } catch (err) {\n      throw new Error(\n        `failed to parse color at index ${i} in palette expression: ${err.message}`,\n      );\n    }\n    if (!(color instanceof LiteralExpression)) {\n      throw new Error(\n        `the palette color at index ${i} must be a literal value`,\n      );\n    }\n    parsedColors[i] = color;\n  }\n  return [index, ...parsedColors];\n}\n\n/**\n * @param {Array<ArgValidator>} validators A chain of argument validators.  The last validator is expected\n * to return the parsed arguments.\n * @return {Parser} The parser.\n */\nfunction createCallExpressionParser(...validators) {\n  return function (encoded, returnType, context) {\n    const operator = encoded[0];\n\n    /**\n     * @type {Array<Expression>}\n     */\n    let args;\n    for (let i = 0; i < validators.length; i++) {\n      const parsed = validators[i](encoded, returnType, context);\n      if (i == validators.length - 1) {\n        if (!parsed) {\n          throw new Error(\n            'expected last argument validator to return the parsed args',\n          );\n        }\n        args = parsed;\n      }\n    }\n    return new CallExpression(returnType, operator, ...args);\n  };\n}\n\n/**\n * @param {Array} encoded The encoded expression.\n * @param {number} returnType The expected return type of the call expression.\n * @param {ParsingContext} context The parsing context.\n * @return {Expression} The parsed expression.\n */\nfunction parseCallExpression(encoded, returnType, context) {\n  const operator = encoded[0];\n\n  const parser = parsers[operator];\n  if (!parser) {\n    throw new Error(`unknown operator: ${operator}`);\n  }\n  return parser(encoded, returnType, context);\n}\n\n/**\n * Returns a simplified geometry type suited for the `geometry-type` operator\n * @param {import('../geom/Geometry.js').default|import('../render/Feature.js').default} geometry Geometry object\n * @return {'Point'|'LineString'|'Polygon'|''} Simplified geometry type; empty string of no geometry found\n */\nexport function computeGeometryType(geometry) {\n  if (!geometry) {\n    return '';\n  }\n  const type = geometry.getType();\n  switch (type) {\n    case 'Point':\n    case 'LineString':\n    case 'Polygon':\n      return type;\n    case 'MultiPoint':\n    case 'MultiLineString':\n    case 'MultiPolygon':\n      return /** @type {'Point'|'LineString'|'Polygon'} */ (type.substring(5));\n    case 'Circle':\n      return 'Polygon';\n    case 'GeometryCollection':\n      return computeGeometryType(\n        /** @type {import(\"../geom/GeometryCollection.js\").default} */ (\n          geometry\n        ).getGeometries()[0],\n      );\n    default:\n      return '';\n  }\n}\n","/**\n * @module ol/expr/cpu\n */\n\nimport {\n  fromString,\n  lchaToRgba,\n  rgbaToLcha,\n  toString,\n  withAlpha,\n} from '../color.js';\nimport {ColorType, LiteralExpression, Ops, parse} from './expression.js';\n\n/**\n * @fileoverview This module includes functions to build expressions for evaluation on the CPU.\n * Building is composed of two steps: parsing and compiling.  The parsing step takes an encoded\n * expression and returns an instance of one of the expression classes.  The compiling step takes\n * the expression instance and returns a function that can be evaluated in to return a literal\n * value.  The evaluator function should do as little allocation and work as possible.\n */\n\n/**\n * @typedef {Object} EvaluationContext\n * @property {Object} properties The values for properties used in 'get' expressions.\n * @property {Object} variables The values for variables used in 'var' expressions.\n * @property {number} resolution The map resolution.\n * @property {string|number|null} featureId The feature id.\n * @property {string} geometryType Geometry type of the current object.\n */\n\n/**\n * @return {EvaluationContext} A new evaluation context.\n */\nexport function newEvaluationContext() {\n  return {\n    variables: {},\n    properties: {},\n    resolution: NaN,\n    featureId: null,\n    geometryType: '',\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):import(\"./expression.js\").LiteralValue} ExpressionEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):boolean} BooleanEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):number} NumberEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):string} StringEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):(Array<number>|string)} ColorLikeEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):Array<number>} NumberArrayEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):Array<number>} CoordinateEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):(Array<number>)} SizeEvaluator\n */\n\n/**\n * @typedef {function(EvaluationContext):(Array<number>|number)} SizeLikeEvaluator\n */\n\n/**\n * @param {import('./expression.js').EncodedExpression} encoded The encoded expression.\n * @param {number} type The expected type.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The expression evaluator.\n */\nexport function buildExpression(encoded, type, context) {\n  const expression = parse(encoded, type, context);\n  return compileExpression(expression, context);\n}\n\n/**\n * @param {import(\"./expression.js\").Expression} expression The expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileExpression(expression, context) {\n  if (expression instanceof LiteralExpression) {\n    // convert colors to array if possible\n    if (expression.type === ColorType && typeof expression.value === 'string') {\n      const colorValue = fromString(expression.value);\n      return function () {\n        return colorValue;\n      };\n    }\n    return function () {\n      return expression.value;\n    };\n  }\n  const operator = expression.operator;\n  switch (operator) {\n    case Ops.Number:\n    case Ops.String:\n    case Ops.Coalesce: {\n      return compileAssertionExpression(expression, context);\n    }\n    case Ops.Get:\n    case Ops.Var:\n    case Ops.Has: {\n      return compileAccessorExpression(expression, context);\n    }\n    case Ops.Id: {\n      return (context) => context.featureId;\n    }\n    case Ops.GeometryType: {\n      return (context) => context.geometryType;\n    }\n    case Ops.Concat: {\n      const args = expression.args.map((e) => compileExpression(e, context));\n      return (context) =>\n        ''.concat(...args.map((arg) => arg(context).toString()));\n    }\n    case Ops.Resolution: {\n      return (context) => context.resolution;\n    }\n    case Ops.Any:\n    case Ops.All:\n    case Ops.Between:\n    case Ops.In:\n    case Ops.Not: {\n      return compileLogicalExpression(expression, context);\n    }\n    case Ops.Equal:\n    case Ops.NotEqual:\n    case Ops.LessThan:\n    case Ops.LessThanOrEqualTo:\n    case Ops.GreaterThan:\n    case Ops.GreaterThanOrEqualTo: {\n      return compileComparisonExpression(expression, context);\n    }\n    case Ops.Multiply:\n    case Ops.Divide:\n    case Ops.Add:\n    case Ops.Subtract:\n    case Ops.Clamp:\n    case Ops.Mod:\n    case Ops.Pow:\n    case Ops.Abs:\n    case Ops.Floor:\n    case Ops.Ceil:\n    case Ops.Round:\n    case Ops.Sin:\n    case Ops.Cos:\n    case Ops.Atan:\n    case Ops.Sqrt: {\n      return compileNumericExpression(expression, context);\n    }\n    case Ops.Case: {\n      return compileCaseExpression(expression, context);\n    }\n    case Ops.Match: {\n      return compileMatchExpression(expression, context);\n    }\n    case Ops.Interpolate: {\n      return compileInterpolateExpression(expression, context);\n    }\n    case Ops.ToString: {\n      return compileConvertExpression(expression, context);\n    }\n    default: {\n      throw new Error(`Unsupported operator ${operator}`);\n    }\n    // TODO: unimplemented\n    // Ops.Zoom\n    // Ops.Time\n    // Ops.Array\n    // Ops.Color\n    // Ops.Band\n    // Ops.Palette\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileAssertionExpression(expression, context) {\n  const type = expression.operator;\n  const length = expression.args.length;\n\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  switch (type) {\n    case Ops.Coalesce: {\n      return (context) => {\n        for (let i = 0; i < length; ++i) {\n          const value = args[i](context);\n          if (typeof value !== 'undefined' && value !== null) {\n            return value;\n          }\n        }\n        throw new Error('Expected one of the values to be non-null');\n      };\n    }\n    case Ops.Number:\n    case Ops.String: {\n      return (context) => {\n        for (let i = 0; i < length; ++i) {\n          const value = args[i](context);\n          if (typeof value === type) {\n            return value;\n          }\n        }\n        throw new Error(`Expected one of the values to be a ${type}`);\n      };\n    }\n    default: {\n      throw new Error(`Unsupported assertion operator ${type}`);\n    }\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileAccessorExpression(expression, context) {\n  const nameExpression = /** @type {LiteralExpression} */ (expression.args[0]);\n  const name = /** @type {string} */ (nameExpression.value);\n  switch (expression.operator) {\n    case Ops.Get: {\n      return (context) => {\n        const args = expression.args;\n        let value = context.properties[name];\n        for (let i = 1, ii = args.length; i < ii; ++i) {\n          const keyExpression = /** @type {LiteralExpression} */ (args[i]);\n          const key = /** @type {string|number} */ (keyExpression.value);\n          value = value[key];\n        }\n        return value;\n      };\n    }\n    case Ops.Var: {\n      return (context) => context.variables[name];\n    }\n    case Ops.Has: {\n      return (context) => {\n        const args = expression.args;\n        if (!(name in context.properties)) {\n          return false;\n        }\n        let value = context.properties[name];\n        for (let i = 1, ii = args.length; i < ii; ++i) {\n          const keyExpression = /** @type {LiteralExpression} */ (args[i]);\n          const key = /** @type {string|number} */ (keyExpression.value);\n          if (!value || !Object.hasOwn(value, key)) {\n            return false;\n          }\n          value = value[key];\n        }\n        return true;\n      };\n    }\n    default: {\n      throw new Error(`Unsupported accessor operator ${expression.operator}`);\n    }\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {BooleanEvaluator} The evaluator function.\n */\nfunction compileComparisonExpression(expression, context) {\n  const op = expression.operator;\n  const left = compileExpression(expression.args[0], context);\n  const right = compileExpression(expression.args[1], context);\n  switch (op) {\n    case Ops.Equal: {\n      return (context) => left(context) === right(context);\n    }\n    case Ops.NotEqual: {\n      return (context) => left(context) !== right(context);\n    }\n    case Ops.LessThan: {\n      return (context) => left(context) < right(context);\n    }\n    case Ops.LessThanOrEqualTo: {\n      return (context) => left(context) <= right(context);\n    }\n    case Ops.GreaterThan: {\n      return (context) => left(context) > right(context);\n    }\n    case Ops.GreaterThanOrEqualTo: {\n      return (context) => left(context) >= right(context);\n    }\n    default: {\n      throw new Error(`Unsupported comparison operator ${op}`);\n    }\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {BooleanEvaluator} The evaluator function.\n */\nfunction compileLogicalExpression(expression, context) {\n  const op = expression.operator;\n  const length = expression.args.length;\n\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  switch (op) {\n    case Ops.Any: {\n      return (context) => {\n        for (let i = 0; i < length; ++i) {\n          if (args[i](context)) {\n            return true;\n          }\n        }\n        return false;\n      };\n    }\n    case Ops.All: {\n      return (context) => {\n        for (let i = 0; i < length; ++i) {\n          if (!args[i](context)) {\n            return false;\n          }\n        }\n        return true;\n      };\n    }\n    case Ops.Between: {\n      return (context) => {\n        const value = args[0](context);\n        const min = args[1](context);\n        const max = args[2](context);\n        return value >= min && value <= max;\n      };\n    }\n    case Ops.In: {\n      return (context) => {\n        const value = args[0](context);\n        for (let i = 1; i < length; ++i) {\n          if (value === args[i](context)) {\n            return true;\n          }\n        }\n        return false;\n      };\n    }\n    case Ops.Not: {\n      return (context) => !args[0](context);\n    }\n    default: {\n      throw new Error(`Unsupported logical operator ${op}`);\n    }\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {NumberEvaluator} The evaluator function.\n */\nfunction compileNumericExpression(expression, context) {\n  const op = expression.operator;\n  const length = expression.args.length;\n\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  switch (op) {\n    case Ops.Multiply: {\n      return (context) => {\n        let value = 1;\n        for (let i = 0; i < length; ++i) {\n          value *= args[i](context);\n        }\n        return value;\n      };\n    }\n    case Ops.Divide: {\n      return (context) => args[0](context) / args[1](context);\n    }\n    case Ops.Add: {\n      return (context) => {\n        let value = 0;\n        for (let i = 0; i < length; ++i) {\n          value += args[i](context);\n        }\n        return value;\n      };\n    }\n    case Ops.Subtract: {\n      return (context) => args[0](context) - args[1](context);\n    }\n    case Ops.Clamp: {\n      return (context) => {\n        const value = args[0](context);\n        const min = args[1](context);\n        if (value < min) {\n          return min;\n        }\n        const max = args[2](context);\n        if (value > max) {\n          return max;\n        }\n        return value;\n      };\n    }\n    case Ops.Mod: {\n      return (context) => args[0](context) % args[1](context);\n    }\n    case Ops.Pow: {\n      return (context) => Math.pow(args[0](context), args[1](context));\n    }\n    case Ops.Abs: {\n      return (context) => Math.abs(args[0](context));\n    }\n    case Ops.Floor: {\n      return (context) => Math.floor(args[0](context));\n    }\n    case Ops.Ceil: {\n      return (context) => Math.ceil(args[0](context));\n    }\n    case Ops.Round: {\n      return (context) => Math.round(args[0](context));\n    }\n    case Ops.Sin: {\n      return (context) => Math.sin(args[0](context));\n    }\n    case Ops.Cos: {\n      return (context) => Math.cos(args[0](context));\n    }\n    case Ops.Atan: {\n      if (length === 2) {\n        return (context) => Math.atan2(args[0](context), args[1](context));\n      }\n      return (context) => Math.atan(args[0](context));\n    }\n    case Ops.Sqrt: {\n      return (context) => Math.sqrt(args[0](context));\n    }\n    default: {\n      throw new Error(`Unsupported numeric operator ${op}`);\n    }\n  }\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileCaseExpression(expression, context) {\n  const length = expression.args.length;\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  return (context) => {\n    for (let i = 0; i < length - 1; i += 2) {\n      const condition = args[i](context);\n      if (condition) {\n        return args[i + 1](context);\n      }\n    }\n    return args[length - 1](context);\n  };\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileMatchExpression(expression, context) {\n  const length = expression.args.length;\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  return (context) => {\n    const value = args[0](context);\n    for (let i = 1; i < length - 1; i += 2) {\n      if (value === args[i](context)) {\n        return args[i + 1](context);\n      }\n    }\n    return args[length - 1](context);\n  };\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileInterpolateExpression(expression, context) {\n  const length = expression.args.length;\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  return (context) => {\n    const base = args[0](context);\n    const value = args[1](context);\n\n    let previousInput;\n    let previousOutput;\n    for (let i = 2; i < length; i += 2) {\n      const input = args[i](context);\n      let output = args[i + 1](context);\n      const isColor = Array.isArray(output);\n      if (isColor) {\n        output = withAlpha(output);\n      }\n      if (input >= value) {\n        if (i === 2) {\n          return output;\n        }\n        if (isColor) {\n          return interpolateColor(\n            base,\n            value,\n            previousInput,\n            previousOutput,\n            input,\n            output,\n          );\n        }\n        return interpolateNumber(\n          base,\n          value,\n          previousInput,\n          previousOutput,\n          input,\n          output,\n        );\n      }\n      previousInput = input;\n      previousOutput = output;\n    }\n    return previousOutput;\n  };\n}\n\n/**\n * @param {import('./expression.js').CallExpression} expression The call expression.\n * @param {import('./expression.js').ParsingContext} context The parsing context.\n * @return {ExpressionEvaluator} The evaluator function.\n */\nfunction compileConvertExpression(expression, context) {\n  const op = expression.operator;\n  const length = expression.args.length;\n\n  const args = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    args[i] = compileExpression(expression.args[i], context);\n  }\n  switch (op) {\n    case Ops.ToString: {\n      return (context) => {\n        const value = args[0](context);\n        if (expression.args[0].type === ColorType) {\n          return toString(value);\n        }\n        return value.toString();\n      };\n    }\n    default: {\n      throw new Error(`Unsupported convert operator ${op}`);\n    }\n  }\n}\n\n/**\n * @param {number} base The base.\n * @param {number} value The value.\n * @param {number} input1 The first input value.\n * @param {number} output1 The first output value.\n * @param {number} input2 The second input value.\n * @param {number} output2 The second output value.\n * @return {number} The interpolated value.\n */\nfunction interpolateNumber(base, value, input1, output1, input2, output2) {\n  const delta = input2 - input1;\n  if (delta === 0) {\n    return output1;\n  }\n  const along = value - input1;\n  const factor =\n    base === 1\n      ? along / delta\n      : (Math.pow(base, along) - 1) / (Math.pow(base, delta) - 1);\n  return output1 + factor * (output2 - output1);\n}\n\n/**\n * @param {number} base The base.\n * @param {number} value The value.\n * @param {number} input1 The first input value.\n * @param {import('../color.js').Color} rgba1 The first output value.\n * @param {number} input2 The second input value.\n * @param {import('../color.js').Color} rgba2 The second output value.\n * @return {import('../color.js').Color} The interpolated color.\n */\nfunction interpolateColor(base, value, input1, rgba1, input2, rgba2) {\n  const delta = input2 - input1;\n  if (delta === 0) {\n    return rgba1;\n  }\n  const lcha1 = rgbaToLcha(rgba1);\n  const lcha2 = rgbaToLcha(rgba2);\n  let deltaHue = lcha2[2] - lcha1[2];\n  if (deltaHue > 180) {\n    deltaHue -= 360;\n  } else if (deltaHue < -180) {\n    deltaHue += 360;\n  }\n\n  const lcha = [\n    interpolateNumber(base, value, input1, lcha1[0], input2, lcha2[0]),\n    interpolateNumber(base, value, input1, lcha1[1], input2, lcha2[1]),\n    lcha1[2] + interpolateNumber(base, value, input1, 0, input2, deltaHue),\n    interpolateNumber(base, value, input1, rgba1[3], input2, rgba2[3]),\n  ];\n  return lchaToRgba(lcha);\n}\n","/**\n * @module ol/render/canvas/style\n */\n\nimport {NO_COLOR} from '../../color.js';\nimport {buildExpression, newEvaluationContext} from '../../expr/cpu.js';\nimport {\n  BooleanType,\n  ColorType,\n  NumberArrayType,\n  NumberType,\n  StringType,\n  computeGeometryType,\n  newParsingContext,\n} from '../../expr/expression.js';\nimport {isEmpty} from '../../obj.js';\nimport {toSize} from '../../size.js';\nimport Circle from '../../style/Circle.js';\nimport Fill from '../../style/Fill.js';\nimport Icon from '../../style/Icon.js';\nimport RegularShape from '../../style/RegularShape.js';\nimport Stroke from '../../style/Stroke.js';\nimport Style from '../../style/Style.js';\nimport Text from '../../style/Text.js';\n\n/**\n * @fileoverview This module includes functions to build styles for the canvas renderer.  Building\n * is composed of two steps: parsing and compiling.  The parsing step takes an encoded expression\n * and returns an instance of one of the expression classes.  The compiling step takes the\n * expression instance and returns a function that can be evaluated to return a literal value.  The\n * evaluator function should do as little allocation and work as possible.\n */\n\n/**\n * @typedef {import(\"../../style/flat.js\").FlatStyle} FlatStyle\n */\n\n/**\n * @typedef {import(\"../../expr/expression.js\").EncodedExpression} EncodedExpression\n */\n\n/**\n * @typedef {import(\"../../expr/expression.js\").ParsingContext} ParsingContext\n */\n\n/**\n * @typedef {import(\"../../expr/expression.js\").CallExpression} CallExpression\n */\n\n/**\n * @typedef {import(\"../../expr/cpu.js\").EvaluationContext} EvaluationContext\n */\n\n/**\n * @typedef {import(\"../../expr/cpu.js\").ExpressionEvaluator} ExpressionEvaluator\n */\n\n/**\n * @param {EvaluationContext} context The evaluation context.\n * @return {boolean} Always true.\n */\nfunction always(context) {\n  return true;\n}\n\n/**\n * This function adapts a rule evaluator to the existing style function interface.\n * After we have deprecated the style function, we can use the compiled rules directly\n * and pass a more complete evaluation context (variables, zoom, time, etc.).\n *\n * @param {Array<import('../../style/flat.js').Rule>} rules The rules.\n * @return {import('../../style/Style.js').StyleFunction} A style function.\n */\nexport function rulesToStyleFunction(rules) {\n  const parsingContext = newParsingContext();\n  const evaluator = buildRuleSet(rules, parsingContext);\n  const evaluationContext = newEvaluationContext();\n  return function (feature, resolution) {\n    evaluationContext.properties = feature.getPropertiesInternal();\n    evaluationContext.resolution = resolution;\n    if (parsingContext.featureId) {\n      const id = feature.getId();\n      if (id !== undefined) {\n        evaluationContext.featureId = id;\n      } else {\n        evaluationContext.featureId = null;\n      }\n    }\n    if (parsingContext.geometryType) {\n      evaluationContext.geometryType = computeGeometryType(\n        feature.getGeometry(),\n      );\n    }\n    return evaluator(evaluationContext);\n  };\n}\n\n/**\n * This function adapts a style evaluator to the existing style function interface.\n * After we have deprecated the style function, we can use the compiled rules directly\n * and pass a more complete evaluation context (variables, zoom, time, etc.).\n *\n * @param {Array<import('../../style/flat.js').FlatStyle>} flatStyles The flat styles.\n * @return {import('../../style/Style.js').StyleFunction} A style function.\n */\nexport function flatStylesToStyleFunction(flatStyles) {\n  const parsingContext = newParsingContext();\n  const length = flatStyles.length;\n\n  /**\n   * @type {Array<StyleEvaluator>}\n   */\n  const evaluators = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    evaluators[i] = buildStyle(flatStyles[i], parsingContext);\n  }\n  const evaluationContext = newEvaluationContext();\n\n  /**\n   * @type {Array<Style>}\n   */\n  const styles = new Array(length);\n\n  return function (feature, resolution) {\n    evaluationContext.properties = feature.getPropertiesInternal();\n    evaluationContext.resolution = resolution;\n    if (parsingContext.featureId) {\n      const id = feature.getId();\n      if (id !== undefined) {\n        evaluationContext.featureId = id;\n      } else {\n        evaluationContext.featureId = null;\n      }\n    }\n    let nonNullCount = 0;\n    for (let i = 0; i < length; ++i) {\n      const style = evaluators[i](evaluationContext);\n      if (style) {\n        styles[nonNullCount] = style;\n        nonNullCount += 1;\n      }\n    }\n    styles.length = nonNullCount;\n    return styles;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):Array<Style>} RuleSetEvaluator\n */\n\n/**\n * @typedef {Object} CompiledRule\n * @property {ExpressionEvaluator} filter The compiled filter evaluator.\n * @property {Array<StyleEvaluator>} styles The list of compiled style evaluators.\n */\n\n/**\n * @param {Array<import('../../style/flat.js').Rule>} rules The rules.\n * @param {ParsingContext} context The parsing context.\n * @return {RuleSetEvaluator} The evaluator function.\n */\nexport function buildRuleSet(rules, context) {\n  const length = rules.length;\n\n  /**\n   * @type {Array<CompiledRule>}\n   */\n  const compiledRules = new Array(length);\n\n  for (let i = 0; i < length; ++i) {\n    const rule = rules[i];\n    const filter =\n      'filter' in rule\n        ? buildExpression(rule.filter, BooleanType, context)\n        : always;\n\n    /**\n     * @type {Array<StyleEvaluator>}\n     */\n    let styles;\n    if (Array.isArray(rule.style)) {\n      const styleLength = rule.style.length;\n      styles = new Array(styleLength);\n      for (let j = 0; j < styleLength; ++j) {\n        styles[j] = buildStyle(rule.style[j], context);\n      }\n    } else {\n      styles = [buildStyle(rule.style, context)];\n    }\n\n    compiledRules[i] = {filter, styles};\n  }\n\n  return function (context) {\n    /**\n     * @type {Array<Style>}\n     */\n    const styles = [];\n\n    let someMatched = false;\n    for (let i = 0; i < length; ++i) {\n      const filterEvaluator = compiledRules[i].filter;\n      if (!filterEvaluator(context)) {\n        continue;\n      }\n      if (rules[i].else && someMatched) {\n        continue;\n      }\n      someMatched = true;\n      for (const styleEvaluator of compiledRules[i].styles) {\n        const style = styleEvaluator(context);\n        if (!style) {\n          continue;\n        }\n        styles.push(style);\n      }\n    }\n\n    return styles;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):Style|null} StyleEvaluator\n */\n\n/**\n * @param {FlatStyle} flatStyle A flat style literal.\n * @param {ParsingContext} context The parsing context.\n * @return {StyleEvaluator} A function that evaluates to a style.  The style returned by\n * this function will be reused between invocations.\n */\nexport function buildStyle(flatStyle, context) {\n  const evaluateFill = buildFill(flatStyle, '', context);\n  const evaluateStroke = buildStroke(flatStyle, '', context);\n  const evaluateText = buildText(flatStyle, context);\n  const evaluateImage = buildImage(flatStyle, context);\n  const evaluateZIndex = numberEvaluator(flatStyle, 'z-index', context);\n\n  if (\n    !evaluateFill &&\n    !evaluateStroke &&\n    !evaluateText &&\n    !evaluateImage &&\n    !isEmpty(flatStyle)\n  ) {\n    // assume this is a user error\n    // would be nice to check the properties and suggest \"did you mean...\"\n    throw new Error(\n      'No fill, stroke, point, or text symbolizer properties in style: ' +\n        JSON.stringify(flatStyle),\n    );\n  }\n\n  const style = new Style();\n  return function (context) {\n    let empty = true;\n    if (evaluateFill) {\n      const fill = evaluateFill(context);\n      if (fill) {\n        empty = false;\n      }\n      style.setFill(fill);\n    }\n    if (evaluateStroke) {\n      const stroke = evaluateStroke(context);\n      if (stroke) {\n        empty = false;\n      }\n      style.setStroke(stroke);\n    }\n    if (evaluateText) {\n      const text = evaluateText(context);\n      if (text) {\n        empty = false;\n      }\n      style.setText(text);\n    }\n    if (evaluateImage) {\n      const image = evaluateImage(context);\n      if (image) {\n        empty = false;\n      }\n      style.setImage(image);\n    }\n    if (evaluateZIndex) {\n      style.setZIndex(evaluateZIndex(context));\n    }\n    if (empty) {\n      return null;\n    }\n    return style;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):Fill|null} FillEvaluator\n */\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} prefix The property prefix.\n * @param {ParsingContext} context The parsing context.\n * @return {FillEvaluator?} A function that evaluates to a fill.\n */\nfunction buildFill(flatStyle, prefix, context) {\n  let evaluateColor;\n  if (prefix + 'fill-pattern-src' in flatStyle) {\n    evaluateColor = patternEvaluator(flatStyle, prefix + 'fill-', context);\n  } else {\n    if (flatStyle[prefix + 'fill-color'] === 'none') {\n      // avoids hit detection\n      return (context) => null;\n    }\n\n    evaluateColor = colorLikeEvaluator(\n      flatStyle,\n      prefix + 'fill-color',\n      context,\n    );\n  }\n  if (!evaluateColor) {\n    return null;\n  }\n\n  const fill = new Fill();\n  return function (context) {\n    const color = evaluateColor(context);\n    if (color === NO_COLOR) {\n      return null;\n    }\n    fill.setColor(color);\n    return fill;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):Stroke|null} StrokeEvaluator\n */\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} prefix The property prefix.\n * @param {ParsingContext} context The parsing context.\n * @return {StrokeEvaluator?} A function the evaluates to a stroke.\n */\nfunction buildStroke(flatStyle, prefix, context) {\n  const evaluateWidth = numberEvaluator(\n    flatStyle,\n    prefix + 'stroke-width',\n    context,\n  );\n\n  const evaluateColor = colorLikeEvaluator(\n    flatStyle,\n    prefix + 'stroke-color',\n    context,\n  );\n\n  if (!evaluateWidth && !evaluateColor) {\n    return null;\n  }\n\n  const evaluateLineCap = stringEvaluator(\n    flatStyle,\n    prefix + 'stroke-line-cap',\n    context,\n  );\n\n  const evaluateLineJoin = stringEvaluator(\n    flatStyle,\n    prefix + 'stroke-line-join',\n    context,\n  );\n\n  const evaluateLineDash = numberArrayEvaluator(\n    flatStyle,\n    prefix + 'stroke-line-dash',\n    context,\n  );\n\n  const evaluateLineDashOffset = numberEvaluator(\n    flatStyle,\n    prefix + 'stroke-line-dash-offset',\n    context,\n  );\n\n  const evaluateMiterLimit = numberEvaluator(\n    flatStyle,\n    prefix + 'stroke-miter-limit',\n    context,\n  );\n\n  const evaluateOffset = numberEvaluator(\n    flatStyle,\n    prefix + 'stroke-offset',\n    context,\n  );\n\n  const stroke = new Stroke();\n  return function (context) {\n    if (evaluateColor) {\n      const color = evaluateColor(context);\n      if (color === NO_COLOR) {\n        return null;\n      }\n      stroke.setColor(color);\n    }\n\n    if (evaluateWidth) {\n      stroke.setWidth(evaluateWidth(context));\n    }\n\n    if (evaluateLineCap) {\n      const lineCap = evaluateLineCap(context);\n      if (lineCap !== 'butt' && lineCap !== 'round' && lineCap !== 'square') {\n        throw new Error('Expected butt, round, or square line cap');\n      }\n      stroke.setLineCap(lineCap);\n    }\n\n    if (evaluateLineJoin) {\n      const lineJoin = evaluateLineJoin(context);\n      if (\n        lineJoin !== 'bevel' &&\n        lineJoin !== 'round' &&\n        lineJoin !== 'miter'\n      ) {\n        throw new Error('Expected bevel, round, or miter line join');\n      }\n      stroke.setLineJoin(lineJoin);\n    }\n\n    if (evaluateLineDash) {\n      stroke.setLineDash(evaluateLineDash(context));\n    }\n\n    if (evaluateLineDashOffset) {\n      stroke.setLineDashOffset(evaluateLineDashOffset(context));\n    }\n\n    if (evaluateMiterLimit) {\n      stroke.setMiterLimit(evaluateMiterLimit(context));\n    }\n\n    if (evaluateOffset) {\n      stroke.setOffset(evaluateOffset(context));\n    }\n\n    return stroke;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):Text} TextEvaluator\n */\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {ParsingContext} context The parsing context.\n * @return {TextEvaluator?} A function that evaluates to a text symbolizer.\n */\nfunction buildText(flatStyle, context) {\n  const prefix = 'text-';\n\n  // Currently, an Array<string> may be used for rich text support.  This doesn't\n  // work with our expression syntax where arrays of strings are interpreted as\n  // call expressions.  To support rich text, we could add a 'strings' operator\n  // where all the following arguments would be string values.\n  const evaluateValue = stringEvaluator(flatStyle, prefix + 'value', context);\n  if (!evaluateValue) {\n    return null;\n  }\n\n  const evaluateFill = buildFill(flatStyle, prefix, context);\n\n  const evaluateBackgroundFill = buildFill(\n    flatStyle,\n    prefix + 'background-',\n    context,\n  );\n\n  const evaluateStroke = buildStroke(flatStyle, prefix, context);\n\n  const evaluateBackgroundStroke = buildStroke(\n    flatStyle,\n    prefix + 'background-',\n    context,\n  );\n\n  const evaluateFont = stringEvaluator(flatStyle, prefix + 'font', context);\n\n  const evaluateMaxAngle = numberEvaluator(\n    flatStyle,\n    prefix + 'max-angle',\n    context,\n  );\n\n  const evaluateOffsetX = numberEvaluator(\n    flatStyle,\n    prefix + 'offset-x',\n    context,\n  );\n\n  const evaluateOffsetY = numberEvaluator(\n    flatStyle,\n    prefix + 'offset-y',\n    context,\n  );\n\n  const evaluateOverflow = booleanEvaluator(\n    flatStyle,\n    prefix + 'overflow',\n    context,\n  );\n\n  const evaluatePlacement = stringEvaluator(\n    flatStyle,\n    prefix + 'placement',\n    context,\n  );\n\n  const evaluateRepeat = numberEvaluator(flatStyle, prefix + 'repeat', context);\n\n  const evaluateScale = sizeLikeEvaluator(flatStyle, prefix + 'scale', context);\n\n  const evaluateRotateWithView = booleanEvaluator(\n    flatStyle,\n    prefix + 'rotate-with-view',\n    context,\n  );\n\n  const evaluateRotation = numberEvaluator(\n    flatStyle,\n    prefix + 'rotation',\n    context,\n  );\n\n  const evaluateAlign = stringEvaluator(flatStyle, prefix + 'align', context);\n\n  const evaluateJustify = stringEvaluator(\n    flatStyle,\n    prefix + 'justify',\n    context,\n  );\n\n  const evaluateBaseline = stringEvaluator(\n    flatStyle,\n    prefix + 'baseline',\n    context,\n  );\n\n  const evaluateKeepUpright = booleanEvaluator(\n    flatStyle,\n    prefix + 'keep-upright',\n    context,\n  );\n\n  const evaluatePadding = numberArrayEvaluator(\n    flatStyle,\n    prefix + 'padding',\n    context,\n  );\n\n  // The following properties are not currently settable\n  const declutterMode = optionalDeclutterMode(\n    flatStyle,\n    prefix + 'declutter-mode',\n  );\n\n  const text = new Text({declutterMode});\n\n  return function (context) {\n    text.setText(evaluateValue(context));\n\n    if (evaluateFill) {\n      text.setFill(evaluateFill(context));\n    }\n\n    if (evaluateBackgroundFill) {\n      text.setBackgroundFill(evaluateBackgroundFill(context));\n    }\n\n    if (evaluateStroke) {\n      text.setStroke(evaluateStroke(context));\n    }\n\n    if (evaluateBackgroundStroke) {\n      text.setBackgroundStroke(evaluateBackgroundStroke(context));\n    }\n\n    if (evaluateFont) {\n      text.setFont(evaluateFont(context));\n    }\n\n    if (evaluateMaxAngle) {\n      text.setMaxAngle(evaluateMaxAngle(context));\n    }\n\n    if (evaluateOffsetX) {\n      text.setOffsetX(evaluateOffsetX(context));\n    }\n\n    if (evaluateOffsetY) {\n      text.setOffsetY(evaluateOffsetY(context));\n    }\n\n    if (evaluateOverflow) {\n      text.setOverflow(evaluateOverflow(context));\n    }\n\n    if (evaluatePlacement) {\n      const placement = evaluatePlacement(context);\n      if (placement !== 'point' && placement !== 'line') {\n        throw new Error('Expected point or line for text-placement');\n      }\n      text.setPlacement(placement);\n    }\n\n    if (evaluateRepeat) {\n      text.setRepeat(evaluateRepeat(context));\n    }\n\n    if (evaluateScale) {\n      text.setScale(evaluateScale(context));\n    }\n\n    if (evaluateRotateWithView) {\n      text.setRotateWithView(evaluateRotateWithView(context));\n    }\n\n    if (evaluateRotation) {\n      text.setRotation(evaluateRotation(context));\n    }\n\n    if (evaluateAlign) {\n      const textAlign = evaluateAlign(context);\n      if (\n        textAlign !== 'left' &&\n        textAlign !== 'center' &&\n        textAlign !== 'right' &&\n        textAlign !== 'end' &&\n        textAlign !== 'start'\n      ) {\n        throw new Error(\n          'Expected left, right, center, start, or end for text-align',\n        );\n      }\n      text.setTextAlign(textAlign);\n    }\n\n    if (evaluateJustify) {\n      const justify = evaluateJustify(context);\n      if (justify !== 'left' && justify !== 'right' && justify !== 'center') {\n        throw new Error('Expected left, right, or center for text-justify');\n      }\n      text.setJustify(justify);\n    }\n\n    if (evaluateBaseline) {\n      const textBaseline = evaluateBaseline(context);\n      if (\n        textBaseline !== 'bottom' &&\n        textBaseline !== 'top' &&\n        textBaseline !== 'middle' &&\n        textBaseline !== 'alphabetic' &&\n        textBaseline !== 'hanging'\n      ) {\n        throw new Error(\n          'Expected bottom, top, middle, alphabetic, or hanging for text-baseline',\n        );\n      }\n      text.setTextBaseline(textBaseline);\n    }\n\n    if (evaluatePadding) {\n      text.setPadding(evaluatePadding(context));\n    }\n\n    if (evaluateKeepUpright) {\n      text.setKeepUpright(evaluateKeepUpright(context));\n    }\n\n    return text;\n  };\n}\n\n/**\n * @typedef {function(EvaluationContext):import(\"../../style/Image.js\").default} ImageEvaluator\n */\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {ParsingContext} context The parsing context.\n * @return {ImageEvaluator?} A function that evaluates to an image symbolizer.\n */\nfunction buildImage(flatStyle, context) {\n  if ('icon-src' in flatStyle) {\n    return buildIcon(flatStyle, context);\n  }\n\n  if ('shape-points' in flatStyle) {\n    return buildShape(flatStyle, context);\n  }\n\n  if ('circle-radius' in flatStyle) {\n    return buildCircle(flatStyle, context);\n  }\n\n  return null;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {ParsingContext} context The parsing context.\n * @return {ImageEvaluator} A function that evaluates to an image symbolizer.\n */\nfunction buildIcon(flatStyle, context) {\n  const prefix = 'icon-';\n\n  // required property\n  const srcName = prefix + 'src';\n  const src = requireString(flatStyle[srcName], srcName);\n\n  // settable properties\n  const evaluateAnchor = coordinateEvaluator(\n    flatStyle,\n    prefix + 'anchor',\n    context,\n  );\n\n  const evaluateScale = sizeLikeEvaluator(flatStyle, prefix + 'scale', context);\n\n  const evaluateOpacity = numberEvaluator(\n    flatStyle,\n    prefix + 'opacity',\n    context,\n  );\n\n  const evaluateDisplacement = coordinateEvaluator(\n    flatStyle,\n    prefix + 'displacement',\n    context,\n  );\n\n  const evaluateRotation = numberEvaluator(\n    flatStyle,\n    prefix + 'rotation',\n    context,\n  );\n\n  const evaluateRotateWithView = booleanEvaluator(\n    flatStyle,\n    prefix + 'rotate-with-view',\n    context,\n  );\n\n  // the remaining symbolizer properties are not currently settable\n  const anchorOrigin = optionalIconOrigin(flatStyle, prefix + 'anchor-origin');\n  const anchorXUnits = optionalIconAnchorUnits(\n    flatStyle,\n    prefix + 'anchor-x-units',\n  );\n  const anchorYUnits = optionalIconAnchorUnits(\n    flatStyle,\n    prefix + 'anchor-y-units',\n  );\n  const colorValue = getExpressionValue(flatStyle, prefix + 'color');\n  let color;\n  let evaluateColor = null;\n  if (colorValue !== undefined) {\n    const isColorExpression =\n      Array.isArray(colorValue) &&\n      colorValue.length > 0 &&\n      typeof colorValue[0] === 'string';\n    if (isColorExpression) {\n      evaluateColor = colorLikeEvaluator(flatStyle, prefix + 'color', context);\n    } else {\n      color = requireColorLike(colorValue, prefix + 'color');\n    }\n  }\n  const crossOrigin = optionalString(flatStyle, prefix + 'cross-origin');\n  const offset = optionalNumberArray(flatStyle, prefix + 'offset');\n  const offsetOrigin = optionalIconOrigin(flatStyle, prefix + 'offset-origin');\n  const width = optionalNumber(flatStyle, prefix + 'width');\n  const height = optionalNumber(flatStyle, prefix + 'height');\n  const size = optionalSize(flatStyle, prefix + 'size');\n  const declutterMode = optionalDeclutterMode(\n    flatStyle,\n    prefix + 'declutter-mode',\n  );\n\n  const iconOptions = {\n    src,\n    anchorOrigin,\n    anchorXUnits,\n    anchorYUnits,\n    crossOrigin,\n    offset,\n    offsetOrigin,\n    height,\n    width,\n    size,\n    declutterMode,\n  };\n\n  let icon = null;\n\n  return function (context) {\n    if (!icon) {\n      // lazily create the icon to allow for expression evaluation\n      const initialColor = evaluateColor ? evaluateColor(context) : color;\n      icon = new Icon(\n        initialColor !== undefined\n          ? Object.assign({}, iconOptions, {color: initialColor})\n          : Object.assign({}, iconOptions),\n      );\n    } else if (evaluateColor) {\n      icon.setColor(evaluateColor(context));\n    }\n    if (evaluateOpacity) {\n      icon.setOpacity(evaluateOpacity(context));\n    }\n\n    if (evaluateDisplacement) {\n      icon.setDisplacement(evaluateDisplacement(context));\n    }\n\n    if (evaluateRotation) {\n      icon.setRotation(evaluateRotation(context));\n    }\n\n    if (evaluateRotateWithView) {\n      icon.setRotateWithView(evaluateRotateWithView(context));\n    }\n\n    if (evaluateScale) {\n      icon.setScale(evaluateScale(context));\n    }\n\n    if (evaluateAnchor) {\n      icon.setAnchor(evaluateAnchor(context));\n    }\n    return icon;\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {ParsingContext} context The parsing context.\n * @return {ImageEvaluator} A function that evaluates to an icon symbolizer.\n */\nfunction buildShape(flatStyle, context) {\n  const prefix = 'shape-';\n\n  // required property\n  const pointsName = prefix + 'points';\n  const radiusName = prefix + 'radius';\n  const points = requireNumber(flatStyle[pointsName], pointsName);\n  if (!(radiusName in flatStyle)) {\n    throw new Error(`Expected a number for ${radiusName}`);\n  }\n  const evaluateRadius = numberEvaluator(flatStyle, radiusName, context);\n  const initialRadius =\n    typeof flatStyle[radiusName] === 'number' ? flatStyle[radiusName] : 5;\n  const radius2Name = prefix + 'radius2';\n  const evaluateRadius2 = numberEvaluator(flatStyle, radius2Name, context);\n  const initialRadius2 =\n    typeof flatStyle[radius2Name] === 'number'\n      ? flatStyle[radius2Name]\n      : undefined;\n\n  // settable properties\n  const evaluateFill = buildFill(flatStyle, prefix, context);\n  const evaluateStroke = buildStroke(flatStyle, prefix, context);\n  const evaluateScale = sizeLikeEvaluator(flatStyle, prefix + 'scale', context);\n  const evaluateDisplacement = coordinateEvaluator(\n    flatStyle,\n    prefix + 'displacement',\n    context,\n  );\n  const evaluateRotation = numberEvaluator(\n    flatStyle,\n    prefix + 'rotation',\n    context,\n  );\n  const evaluateRotateWithView = booleanEvaluator(\n    flatStyle,\n    prefix + 'rotate-with-view',\n    context,\n  );\n\n  // the remaining properties are not currently settable\n  const angle = optionalNumber(flatStyle, prefix + 'angle');\n  const declutterMode = optionalDeclutterMode(\n    flatStyle,\n    prefix + 'declutter-mode',\n  );\n\n  const shape = new RegularShape({\n    points,\n    radius: initialRadius,\n    radius2: initialRadius2,\n    angle,\n    declutterMode,\n  });\n\n  return function (context) {\n    if (evaluateRadius) {\n      shape.setRadius(evaluateRadius(context));\n    }\n    if (evaluateRadius2) {\n      shape.setRadius2(evaluateRadius2(context));\n    }\n    if (evaluateFill) {\n      shape.setFill(evaluateFill(context));\n    }\n    if (evaluateStroke) {\n      shape.setStroke(evaluateStroke(context));\n    }\n    if (evaluateDisplacement) {\n      shape.setDisplacement(evaluateDisplacement(context));\n    }\n    if (evaluateRotation) {\n      shape.setRotation(evaluateRotation(context));\n    }\n    if (evaluateRotateWithView) {\n      shape.setRotateWithView(evaluateRotateWithView(context));\n    }\n    if (evaluateScale) {\n      shape.setScale(evaluateScale(context));\n    }\n\n    return shape;\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {ParsingContext} context The parsing context.\n * @return {ImageEvaluator} A function that evaluates to a circle symbolizer.\n */\nfunction buildCircle(flatStyle, context) {\n  const prefix = 'circle-';\n\n  // settable properties\n  const evaluateFill = buildFill(flatStyle, prefix, context);\n  const evaluateStroke = buildStroke(flatStyle, prefix, context);\n  const evaluateRadius = numberEvaluator(flatStyle, prefix + 'radius', context);\n  const evaluateScale = sizeLikeEvaluator(flatStyle, prefix + 'scale', context);\n  const evaluateDisplacement = coordinateEvaluator(\n    flatStyle,\n    prefix + 'displacement',\n    context,\n  );\n  const evaluateRotation = numberEvaluator(\n    flatStyle,\n    prefix + 'rotation',\n    context,\n  );\n  const evaluateRotateWithView = booleanEvaluator(\n    flatStyle,\n    prefix + 'rotate-with-view',\n    context,\n  );\n\n  // the remaining properties are not currently settable\n  const declutterMode = optionalDeclutterMode(\n    flatStyle,\n    prefix + 'declutter-mode',\n  );\n\n  const circle = new Circle({\n    radius: 5, // this is arbitrary, but required - the evaluated radius is used below\n    declutterMode,\n  });\n\n  return function (context) {\n    if (evaluateRadius) {\n      circle.setRadius(evaluateRadius(context));\n    }\n    if (evaluateFill) {\n      circle.setFill(evaluateFill(context));\n    }\n    if (evaluateStroke) {\n      circle.setStroke(evaluateStroke(context));\n    }\n    if (evaluateDisplacement) {\n      circle.setDisplacement(evaluateDisplacement(context));\n    }\n    if (evaluateRotation) {\n      circle.setRotation(evaluateRotation(context));\n    }\n    if (evaluateRotateWithView) {\n      circle.setRotateWithView(evaluateRotateWithView(context));\n    }\n    if (evaluateScale) {\n      circle.setScale(evaluateScale(context));\n    }\n\n    return circle;\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @return {any|undefined} The encoded value, or undefined if not provided.\n */\nfunction getExpressionValue(flatStyle, name) {\n  if (!(name in flatStyle)) {\n    return undefined;\n  }\n  const value = flatStyle[name];\n  return value === undefined ? undefined : value;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').NumberEvaluator|undefined} The expression evaluator or undefined.\n */\nfunction numberEvaluator(flatStyle, name, context) {\n  const encoded = getExpressionValue(flatStyle, name);\n  if (encoded === undefined) {\n    return undefined;\n  }\n  const evaluator = buildExpression(encoded, NumberType, context);\n  return function (context) {\n    return requireNumber(evaluator(context), name);\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').StringEvaluator?} The expression evaluator.\n */\nfunction stringEvaluator(flatStyle, name, context) {\n  const encoded = getExpressionValue(flatStyle, name);\n  if (encoded === undefined) {\n    return null;\n  }\n  const evaluator = buildExpression(encoded, StringType, context);\n  return function (context) {\n    return requireString(evaluator(context), name);\n  };\n}\n\nfunction patternEvaluator(flatStyle, prefix, context) {\n  const srcEvaluator = stringEvaluator(\n    flatStyle,\n    prefix + 'pattern-src',\n    context,\n  );\n  const offsetEvaluator = sizeEvaluator(\n    flatStyle,\n    prefix + 'pattern-offset',\n    context,\n  );\n  const patternSizeEvaluator = sizeEvaluator(\n    flatStyle,\n    prefix + 'pattern-size',\n    context,\n  );\n  const colorEvaluator = colorLikeEvaluator(\n    flatStyle,\n    prefix + 'color',\n    context,\n  );\n  return function (context) {\n    return {\n      src: srcEvaluator(context),\n      offset: offsetEvaluator && offsetEvaluator(context),\n      size: patternSizeEvaluator && patternSizeEvaluator(context),\n      color: colorEvaluator && colorEvaluator(context),\n    };\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').BooleanEvaluator?} The expression evaluator.\n */\nfunction booleanEvaluator(flatStyle, name, context) {\n  const encoded = getExpressionValue(flatStyle, name);\n  if (encoded === undefined) {\n    return null;\n  }\n  const evaluator = buildExpression(encoded, BooleanType, context);\n  return function (context) {\n    const value = evaluator(context);\n    if (typeof value !== 'boolean') {\n      throw new Error(`Expected a boolean for ${name}`);\n    }\n    return value;\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').ColorLikeEvaluator?} The expression evaluator.\n */\nfunction colorLikeEvaluator(flatStyle, name, context) {\n  const encoded = getExpressionValue(flatStyle, name);\n  if (encoded === undefined) {\n    return null;\n  }\n  const evaluator = buildExpression(encoded, ColorType, context);\n  return function (context) {\n    return requireColorLike(evaluator(context), name);\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').NumberArrayEvaluator?} The expression evaluator.\n */\nfunction numberArrayEvaluator(flatStyle, name, context) {\n  const encoded = getExpressionValue(flatStyle, name);\n  if (encoded === undefined) {\n    return null;\n  }\n  if (\n    Array.isArray(encoded) &&\n    (encoded.length === 0 || typeof encoded[0] !== 'string')\n  ) {\n    /** @type {Array<import('../../expr/cpu.js').NumberEvaluator>} */\n    const evaluators = encoded.map((value, index) => {\n      if (typeof value === 'number') {\n        return () => value;\n      }\n      const evaluator = buildExpression(value, NumberType, context);\n      return function (context) {\n        return requireNumber(evaluator(context), `${name}[${index}]`);\n      };\n    });\n    return function (context) {\n      const array = new Array(evaluators.length);\n      for (let i = 0; i < evaluators.length; ++i) {\n        array[i] = evaluators[i](context);\n      }\n      return array;\n    };\n  }\n  const evaluator = buildExpression(encoded, NumberArrayType, context);\n  return function (context) {\n    return requireNumberArray(evaluator(context), name);\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').CoordinateEvaluator?} The expression evaluator.\n */\nfunction coordinateEvaluator(flatStyle, name, context) {\n  const encoded = getExpressionValue(flatStyle, name);\n  if (encoded === undefined) {\n    return null;\n  }\n  const evaluator = buildExpression(encoded, NumberArrayType, context);\n  return function (context) {\n    const array = requireNumberArray(evaluator(context), name);\n    if (array.length !== 2) {\n      throw new Error(`Expected two numbers for ${name}`);\n    }\n    return array;\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').SizeEvaluator?} The expression evaluator.\n */\nfunction sizeEvaluator(flatStyle, name, context) {\n  const encoded = getExpressionValue(flatStyle, name);\n  if (encoded === undefined) {\n    return null;\n  }\n  const evaluator = buildExpression(encoded, NumberArrayType, context);\n  return function (context) {\n    return requireSize(evaluator(context), name);\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} name The property name.\n * @param {ParsingContext} context The parsing context.\n * @return {import('../../expr/cpu.js').SizeLikeEvaluator?} The expression evaluator.\n */\nfunction sizeLikeEvaluator(flatStyle, name, context) {\n  const encoded = getExpressionValue(flatStyle, name);\n  if (encoded === undefined) {\n    return null;\n  }\n  const evaluator = buildExpression(\n    encoded,\n    NumberArrayType | NumberType,\n    context,\n  );\n  return function (context) {\n    return requireSizeLike(evaluator(context), name);\n  };\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {number|undefined} A number or undefined.\n */\nfunction optionalNumber(flatStyle, property) {\n  const value = flatStyle[property];\n  if (value === undefined) {\n    return undefined;\n  }\n  if (typeof value !== 'number') {\n    throw new Error(`Expected a number for ${property}`);\n  }\n  return value;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {import(\"../../size.js\").Size|undefined} A size or undefined.\n */\nfunction optionalSize(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  if (typeof encoded === 'number') {\n    return toSize(encoded);\n  }\n  if (!Array.isArray(encoded)) {\n    throw new Error(`Expected a number or size array for ${property}`);\n  }\n  if (\n    encoded.length !== 2 ||\n    typeof encoded[0] !== 'number' ||\n    typeof encoded[1] !== 'number'\n  ) {\n    throw new Error(`Expected a number or size array for ${property}`);\n  }\n  return encoded;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {string|undefined} A string or undefined.\n */\nfunction optionalString(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  if (typeof encoded !== 'string') {\n    throw new Error(`Expected a string for ${property}`);\n  }\n  return encoded;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {import(\"../../style/Icon.js\").IconOrigin|undefined} An icon origin or undefined.\n */\nfunction optionalIconOrigin(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  if (\n    encoded !== 'bottom-left' &&\n    encoded !== 'bottom-right' &&\n    encoded !== 'top-left' &&\n    encoded !== 'top-right'\n  ) {\n    throw new Error(\n      `Expected bottom-left, bottom-right, top-left, or top-right for ${property}`,\n    );\n  }\n  return encoded;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {import(\"../../style/Icon.js\").IconAnchorUnits|undefined} Icon anchor units or undefined.\n */\nfunction optionalIconAnchorUnits(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  if (encoded !== 'pixels' && encoded !== 'fraction') {\n    throw new Error(`Expected pixels or fraction for ${property}`);\n  }\n  return encoded;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {Array<number>|undefined} An array of numbers or undefined.\n */\nfunction optionalNumberArray(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  return requireNumberArray(encoded, property);\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} property The symbolizer property.\n * @return {import('../../style/Style.js').DeclutterMode} Icon declutter mode.\n */\nfunction optionalDeclutterMode(flatStyle, property) {\n  const encoded = flatStyle[property];\n  if (encoded === undefined) {\n    return undefined;\n  }\n  if (typeof encoded !== 'string') {\n    throw new Error(`Expected a string for ${property}`);\n  }\n  if (encoded !== 'declutter' && encoded !== 'obstacle' && encoded !== 'none') {\n    throw new Error(`Expected declutter, obstacle, or none for ${property}`);\n  }\n  return encoded;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {Array<number>} An array of numbers.\n */\nfunction requireNumberArray(value, property) {\n  if (!Array.isArray(value)) {\n    throw new Error(`Expected an array for ${property}`);\n  }\n  const length = value.length;\n  for (let i = 0; i < length; ++i) {\n    if (typeof value[i] !== 'number') {\n      throw new Error(`Expected an array of numbers for ${property}`);\n    }\n  }\n  return value;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {string} A string.\n */\nfunction requireString(value, property) {\n  if (typeof value !== 'string') {\n    throw new Error(`Expected a string for ${property}`);\n  }\n  return value;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {number} A number.\n */\nfunction requireNumber(value, property) {\n  if (typeof value !== 'number') {\n    throw new Error(`Expected a number for ${property}`);\n  }\n  return value;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {Array<number>|string} A color.\n */\nfunction requireColorLike(value, property) {\n  if (typeof value === 'string') {\n    return value;\n  }\n  const array = requireNumberArray(value, property);\n  const length = array.length;\n  if (length < 3 || length > 4) {\n    throw new Error(`Expected a color with 3 or 4 values for ${property}`);\n  }\n  return array;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {Array<number>} A number or an array of two numbers.\n */\nfunction requireSize(value, property) {\n  const size = requireNumberArray(value, property);\n  if (size.length !== 2) {\n    throw new Error(`Expected an array of two numbers for ${property}`);\n  }\n  return size;\n}\n\n/**\n * @param {any} value The value.\n * @param {string} property The property.\n * @return {number|Array<number>} A number or an array of two numbers.\n */\nfunction requireSizeLike(value, property) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return requireSize(value, property);\n}\n","/**\n * @module ol/ViewProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  CENTER: 'center',\n  RESOLUTION: 'resolution',\n  ROTATION: 'rotation',\n};\n","/**\n * @module ol/centerconstraint\n */\nimport {clamp} from './math.js';\n\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=, Array<number>=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n  return (\n    /**\n     * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n     * @param {number|undefined} resolution Resolution.\n     * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n     * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n     * @param {Array<number>} [centerShift] Shift between map center and viewport center.\n     * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n     */\n    function (center, resolution, size, isMoving, centerShift) {\n      if (!center) {\n        return undefined;\n      }\n      if (!resolution && !onlyCenter) {\n        return center;\n      }\n      const viewWidth = onlyCenter ? 0 : size[0] * resolution;\n      const viewHeight = onlyCenter ? 0 : size[1] * resolution;\n      const shiftX = centerShift ? centerShift[0] : 0;\n      const shiftY = centerShift ? centerShift[1] : 0;\n      let minX = extent[0] + viewWidth / 2 + shiftX;\n      let maxX = extent[2] - viewWidth / 2 + shiftX;\n      let minY = extent[1] + viewHeight / 2 + shiftY;\n      let maxY = extent[3] - viewHeight / 2 + shiftY;\n\n      // note: when zooming out of bounds, min and max values for x and y may\n      // end up inverted (min > max); this has to be accounted for\n      if (minX > maxX) {\n        minX = (maxX + minX) / 2;\n        maxX = minX;\n      }\n      if (minY > maxY) {\n        minY = (maxY + minY) / 2;\n        maxY = minY;\n      }\n\n      let x = clamp(center[0], minX, maxX);\n      let y = clamp(center[1], minY, maxY);\n\n      // during an interaction, allow some overscroll\n      if (isMoving && smooth && resolution) {\n        const ratio = 30 * resolution;\n        x +=\n          -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n          ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n        y +=\n          -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n          ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n      }\n\n      return [x, y];\n    }\n  );\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} [center] Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n  return center;\n}\n","/**\n * @module ol/easing\n */\n\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n  return Math.pow(t, 3);\n}\n\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n  return 1 - easeIn(1 - t);\n}\n\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n  return 3 * t * t - 2 * t * t * t;\n}\n\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n  return t;\n}\n\n/**\n * Start slow, speed up, and at the very end slow down again.  This has the\n * same general behavior as {@link module:ol/easing.inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n  if (t < 0.5) {\n    return inAndOut(2 * t);\n  }\n  return 1 - inAndOut(2 * (t - 0.5));\n}\n","/**\n * @module ol/geom/flat/area\n */\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n  let twiceArea = 0;\n  const x0 = flatCoordinates[end - stride];\n  const y0 = flatCoordinates[end - stride + 1];\n  let dx1 = 0;\n  let dy1 = 0;\n  for (; offset < end; offset += stride) {\n    const dx2 = flatCoordinates[offset] - x0;\n    const dy2 = flatCoordinates[offset + 1] - y0;\n    twiceArea += dy1 * dx2 - dx1 * dy2;\n    dx1 = dx2;\n    dy1 = dy2;\n  }\n  return twiceArea / 2;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n  let area = 0;\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    area += linearRing(flatCoordinates, offset, end, stride);\n    offset = end;\n  }\n  return area;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n  let area = 0;\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    area += linearRings(flatCoordinates, offset, ends, stride);\n    offset = ends[ends.length - 1];\n  }\n  return area;\n}\n","/**\n * @module ol/geom/flat/closest\n */\nimport {lerp, squaredDistance as squaredDx} from '../../math.js';\n\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y).  Extra\n * dimensions are linearly interpolated.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array<number>} closestPoint Closest point.\n */\nfunction assignClosest(\n  flatCoordinates,\n  offset1,\n  offset2,\n  stride,\n  x,\n  y,\n  closestPoint,\n) {\n  const x1 = flatCoordinates[offset1];\n  const y1 = flatCoordinates[offset1 + 1];\n  const dx = flatCoordinates[offset2] - x1;\n  const dy = flatCoordinates[offset2 + 1] - y1;\n  let offset;\n  if (dx === 0 && dy === 0) {\n    offset = offset1;\n  } else {\n    const t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n    if (t > 1) {\n      offset = offset2;\n    } else if (t > 0) {\n      for (let i = 0; i < stride; ++i) {\n        closestPoint[i] = lerp(\n          flatCoordinates[offset1 + i],\n          flatCoordinates[offset2 + i],\n          t,\n        );\n      }\n      closestPoint.length = stride;\n      return;\n    } else {\n      offset = offset1;\n    }\n  }\n  for (let i = 0; i < stride; ++i) {\n    closestPoint[i] = flatCoordinates[offset + i];\n  }\n  closestPoint.length = stride;\n}\n\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n  let x1 = flatCoordinates[offset];\n  let y1 = flatCoordinates[offset + 1];\n  for (offset += stride; offset < end; offset += stride) {\n    const x2 = flatCoordinates[offset];\n    const y2 = flatCoordinates[offset + 1];\n    const squaredDelta = squaredDx(x1, y1, x2, y2);\n    if (squaredDelta > max) {\n      max = squaredDelta;\n    }\n    x1 = x2;\n    y1 = y2;\n  }\n  return max;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  max,\n) {\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n    offset = end;\n  }\n  return max;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  max,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n    offset = ends[ends.length - 1];\n  }\n  return max;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array<number>} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array<number>} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  maxDelta,\n  isRing,\n  x,\n  y,\n  closestPoint,\n  minSquaredDistance,\n  tmpPoint,\n) {\n  if (offset == end) {\n    return minSquaredDistance;\n  }\n  let i, squaredDistance;\n  if (maxDelta === 0) {\n    // All points are identical, so just test the first point.\n    squaredDistance = squaredDx(\n      x,\n      y,\n      flatCoordinates[offset],\n      flatCoordinates[offset + 1],\n    );\n    if (squaredDistance < minSquaredDistance) {\n      for (i = 0; i < stride; ++i) {\n        closestPoint[i] = flatCoordinates[offset + i];\n      }\n      closestPoint.length = stride;\n      return squaredDistance;\n    }\n    return minSquaredDistance;\n  }\n  tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n  let index = offset + stride;\n  while (index < end) {\n    assignClosest(\n      flatCoordinates,\n      index - stride,\n      index,\n      stride,\n      x,\n      y,\n      tmpPoint,\n    );\n    squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n    if (squaredDistance < minSquaredDistance) {\n      minSquaredDistance = squaredDistance;\n      for (i = 0; i < stride; ++i) {\n        closestPoint[i] = tmpPoint[i];\n      }\n      closestPoint.length = stride;\n      index += stride;\n    } else {\n      // Skip ahead multiple points, because we know that all the skipped\n      // points cannot be any closer than the closest point we have found so\n      // far.  We know this because we know how close the current point is, how\n      // close the closest point we have found so far is, and the maximum\n      // distance between consecutive points.  For example, if we're currently\n      // at distance 10, the best we've found so far is 3, and that the maximum\n      // distance between consecutive points is 2, then we'll need to skip at\n      // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n      // finding a closer point.  We use Math.max(..., 1) to ensure that we\n      // always advance at least one point, to avoid an infinite loop.\n      index +=\n        stride *\n        Math.max(\n          ((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n            maxDelta) |\n            0,\n          1,\n        );\n    }\n  }\n  if (isRing) {\n    // Check the closing segment.\n    assignClosest(\n      flatCoordinates,\n      end - stride,\n      offset,\n      stride,\n      x,\n      y,\n      tmpPoint,\n    );\n    squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n    if (squaredDistance < minSquaredDistance) {\n      minSquaredDistance = squaredDistance;\n      for (i = 0; i < stride; ++i) {\n        closestPoint[i] = tmpPoint[i];\n      }\n      closestPoint.length = stride;\n    }\n  }\n  return minSquaredDistance;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array<number>} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array<number>} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  maxDelta,\n  isRing,\n  x,\n  y,\n  closestPoint,\n  minSquaredDistance,\n  tmpPoint,\n) {\n  tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    minSquaredDistance = assignClosestPoint(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      maxDelta,\n      isRing,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n      tmpPoint,\n    );\n    offset = end;\n  }\n  return minSquaredDistance;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array<number>} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array<number>} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  maxDelta,\n  isRing,\n  x,\n  y,\n  closestPoint,\n  minSquaredDistance,\n  tmpPoint,\n) {\n  tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    minSquaredDistance = assignClosestArrayPoint(\n      flatCoordinates,\n      offset,\n      ends,\n      stride,\n      maxDelta,\n      isRing,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n      tmpPoint,\n    );\n    offset = ends[ends.length - 1];\n  }\n  return minSquaredDistance;\n}\n","/**\n * @module ol/geom/LinearRing\n */\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {linearRing as linearRingArea} from './flat/area.js';\nimport {assignClosestPoint, maxSquaredDelta} from './flat/closest.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {douglasPeucker} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nclass LinearRing extends SimpleGeometry {\n  /**\n   * @param {Array<import(\"../coordinate.js\").Coordinate>|Array<number>} coordinates Coordinates.\n   *     For internal use, flat coordinates in combination with `layout` are also accepted.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  constructor(coordinates, layout) {\n    super();\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDelta_ = -1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDeltaRevision_ = -1;\n\n    if (layout !== undefined && !Array.isArray(coordinates[0])) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n    } else {\n      this.setCoordinates(\n        /** @type {Array<import(\"../coordinate.js\").Coordinate>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    }\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!LinearRing} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    return new LinearRing(this.flatCoordinates.slice(), this.layout);\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n   * @param {number} minSquaredDistance Minimum squared distance.\n   * @return {number} Minimum squared distance.\n   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n      return minSquaredDistance;\n    }\n    if (this.maxDeltaRevision_ != this.getRevision()) {\n      this.maxDelta_ = Math.sqrt(\n        maxSquaredDelta(\n          this.flatCoordinates,\n          0,\n          this.flatCoordinates.length,\n          this.stride,\n          0,\n        ),\n      );\n      this.maxDeltaRevision_ = this.getRevision();\n    }\n    return assignClosestPoint(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      this.maxDelta_,\n      true,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n    );\n  }\n\n  /**\n   * Return the area of the linear ring on projected plane.\n   * @return {number} Area (on projected plane).\n   * @api\n   */\n  getArea() {\n    return linearRingArea(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n    );\n  }\n\n  /**\n   * Return the coordinates of the linear ring.\n   * @return {Array<import(\"../coordinate.js\").Coordinate>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates() {\n    return inflateCoordinates(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n    );\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {LinearRing} Simplified LinearRing.\n   * @protected\n   * @override\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    /** @type {Array<number>} */\n    const simplifiedFlatCoordinates = [];\n    simplifiedFlatCoordinates.length = douglasPeucker(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      0,\n    );\n    return new LinearRing(simplifiedFlatCoordinates, 'XY');\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'LinearRing';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return false;\n  }\n\n  /**\n   * Set the coordinates of the linear ring.\n   * @param {!Array<import(\"../coordinate.js\").Coordinate>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 1);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    this.flatCoordinates.length = deflateCoordinates(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n    );\n    this.changed();\n  }\n}\n\nexport default LinearRing;\n","/**\n * @module ol/geom/flat/contains\n */\nimport {forEachCorner} from '../../extent.js';\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  extent,\n) {\n  const outside = forEachCorner(\n    extent,\n    /**\n     * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n     * @return {boolean} Contains (x, y).\n     */\n    function (coordinate) {\n      return !linearRingContainsXY(\n        flatCoordinates,\n        offset,\n        end,\n        stride,\n        coordinate[0],\n        coordinate[1],\n      );\n    },\n  );\n  return !outside;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  x,\n  y,\n) {\n  // https://web.archive.org/web/20210504233957/http://geomalgorithms.com/a03-_inclusion.html\n  // Copyright 2000 softSurfer, 2012 Dan Sunday\n  // This code may be freely used and modified for any purpose\n  // providing that this copyright notice is included with it.\n  // SoftSurfer makes no warranty for this code, and cannot be held\n  // liable for any real or imagined damage resulting from its use.\n  // Users of this code must verify correctness for their application.\n  let wn = 0;\n  let x1 = flatCoordinates[end - stride];\n  let y1 = flatCoordinates[end - stride + 1];\n  for (; offset < end; offset += stride) {\n    const x2 = flatCoordinates[offset];\n    const y2 = flatCoordinates[offset + 1];\n    if (y1 <= y) {\n      if (y2 > y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) > 0) {\n        wn++;\n      }\n    } else if (y2 <= y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) < 0) {\n      wn--;\n    }\n    x1 = x2;\n    y1 = y2;\n  }\n  return wn !== 0;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  x,\n  y,\n) {\n  if (ends.length === 0) {\n    return false;\n  }\n  if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n    return false;\n  }\n  for (let i = 1, ii = ends.length; i < ii; ++i) {\n    if (\n      linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)\n    ) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  x,\n  y,\n) {\n  if (endss.length === 0) {\n    return false;\n  }\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n      return true;\n    }\n    offset = ends[ends.length - 1];\n  }\n  return false;\n}\n","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport {ascending} from '../../array.js';\nimport {linearRingsContainsXY} from './contains.js';\n\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {Array<number>} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array<number>} [dest] Destination.\n * @return {Array<number>} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  flatCenters,\n  flatCentersOffset,\n  dest,\n) {\n  let i, ii, x, x1, x2, y1, y2;\n  const y = flatCenters[flatCentersOffset + 1];\n  /** @type {Array<number>} */\n  const intersections = [];\n  // Calculate intersections with the horizontal line\n  for (let r = 0, rr = ends.length; r < rr; ++r) {\n    const end = ends[r];\n    x1 = flatCoordinates[end - stride];\n    y1 = flatCoordinates[end - stride + 1];\n    for (i = offset; i < end; i += stride) {\n      x2 = flatCoordinates[i];\n      y2 = flatCoordinates[i + 1];\n      if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n        x = ((y - y1) / (y2 - y1)) * (x2 - x1) + x1;\n        intersections.push(x);\n      }\n      x1 = x2;\n      y1 = y2;\n    }\n  }\n  // Find the longest segment of the horizontal line that has its center point\n  // inside the linear ring.\n  let pointX = NaN;\n  let maxSegmentLength = -Infinity;\n  intersections.sort(ascending);\n  x1 = intersections[0];\n  for (i = 1, ii = intersections.length; i < ii; ++i) {\n    x2 = intersections[i];\n    const segmentLength = Math.abs(x2 - x1);\n    if (segmentLength > maxSegmentLength) {\n      x = (x1 + x2) / 2;\n      if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n        pointX = x;\n        maxSegmentLength = segmentLength;\n      }\n    }\n    x1 = x2;\n  }\n  if (isNaN(pointX)) {\n    // There is no horizontal line that has its center point inside the linear\n    // ring.  Use the center of the the linear ring's extent.\n    pointX = flatCenters[flatCentersOffset];\n  }\n  if (dest) {\n    dest.push(pointX, y, maxSegmentLength);\n    return dest;\n  }\n  return [pointX, y, maxSegmentLength];\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array<number>} flatCenters Flat centers.\n * @return {Array<number>} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  flatCenters,\n) {\n  /** @type {Array<number>} */\n  let interiorPoints = [];\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    interiorPoints = getInteriorPointOfArray(\n      flatCoordinates,\n      offset,\n      ends,\n      stride,\n      flatCenters,\n      2 * i,\n      interiorPoints,\n    );\n    offset = ends[ends.length - 1];\n  }\n  return interiorPoints;\n}\n","/**\n * @module ol/geom/flat/segments\n */\n\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n *     called for each segment.\n * @return {T|boolean} Value.\n * @template T\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback) {\n  let ret;\n  offset += stride;\n  for (; offset < end; offset += stride) {\n    ret = callback(\n      flatCoordinates.slice(offset - stride, offset),\n      flatCoordinates.slice(offset, offset + stride),\n    );\n    if (ret) {\n      return ret;\n    }\n  }\n  return false;\n}\n\n/**\n * Calculate the intersection point of two line segments.\n * Reference: https://stackoverflow.com/a/72474223/2389327\n * @param {Array<import(\"../../coordinate.js\").Coordinate>} segment1 The first line segment as an array of two points.\n * @param {Array<import(\"../../coordinate.js\").Coordinate>} segment2 The second line segment as an array of two points.\n * @return {import(\"../../coordinate.js\").Coordinate|undefined} The intersection point or `undefined` if no intersection.\n */\nexport function getIntersectionPoint(segment1, segment2) {\n  const [a, b] = segment1;\n  const [c, d] = segment2;\n  const t =\n    ((a[0] - c[0]) * (c[1] - d[1]) - (a[1] - c[1]) * (c[0] - d[0])) /\n    ((a[0] - b[0]) * (c[1] - d[1]) - (a[1] - b[1]) * (c[0] - d[0]));\n  const u =\n    ((a[0] - c[0]) * (a[1] - b[1]) - (a[1] - c[1]) * (a[0] - b[0])) /\n    ((a[0] - b[0]) * (c[1] - d[1]) - (a[1] - b[1]) * (c[0] - d[0]));\n\n  // Check if lines actually intersect\n  if (0 <= t && t <= 1 && 0 <= u && u <= 1) {\n    return [a[0] + t * (b[0] - a[0]), a[1] + t * (b[1] - a[1])];\n  }\n  return undefined;\n}\n","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport {\n  createEmpty,\n  extendFlatCoordinates,\n  intersects,\n  intersectsSegment,\n} from '../../extent.js';\nimport {linearRingContainsExtent, linearRingContainsXY} from './contains.js';\nimport {forEach as forEachSegment} from './segments.js';\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @param {import('../../extent.js').Extent} [coordinatesExtent] Coordinates extent\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  extent,\n  coordinatesExtent,\n) {\n  coordinatesExtent =\n    coordinatesExtent ??\n    extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride);\n  if (!intersects(extent, coordinatesExtent)) {\n    return false;\n  }\n  if (\n    (coordinatesExtent[0] >= extent[0] && coordinatesExtent[2] <= extent[2]) ||\n    (coordinatesExtent[1] >= extent[1] && coordinatesExtent[3] <= extent[3])\n  ) {\n    return true;\n  }\n  return forEachSegment(\n    flatCoordinates,\n    offset,\n    end,\n    stride,\n    /**\n     * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n     * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n     * @return {boolean} `true` if the segment and the extent intersect,\n     *     `false` otherwise.\n     */\n    function (point1, point2) {\n      return intersectsSegment(extent, point1, point2);\n    },\n  );\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  extent,\n) {\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    if (\n      intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)\n    ) {\n      return true;\n    }\n    offset = ends[i];\n  }\n  return false;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  extent,\n) {\n  if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n    return true;\n  }\n  if (\n    linearRingContainsXY(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      extent[0],\n      extent[1],\n    )\n  ) {\n    return true;\n  }\n  if (\n    linearRingContainsXY(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      extent[0],\n      extent[3],\n    )\n  ) {\n    return true;\n  }\n  if (\n    linearRingContainsXY(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      extent[2],\n      extent[1],\n    )\n  ) {\n    return true;\n  }\n  if (\n    linearRingContainsXY(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n      extent[2],\n      extent[3],\n    )\n  ) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  extent,\n) {\n  if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) {\n    return false;\n  }\n  if (ends.length === 1) {\n    return true;\n  }\n  for (let i = 1, ii = ends.length; i < ii; ++i) {\n    if (\n      linearRingContainsExtent(\n        flatCoordinates,\n        ends[i - 1],\n        ends[i],\n        stride,\n        extent,\n      )\n    ) {\n      if (\n        !intersectsLineString(\n          flatCoordinates,\n          ends[i - 1],\n          ends[i],\n          stride,\n          extent,\n        )\n      ) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  extent,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    if (\n      intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)\n    ) {\n      return true;\n    }\n    offset = ends[ends.length - 1];\n  }\n  return false;\n}\n","/**\n * @module ol/geom/flat/reverse\n */\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n  while (offset < end - stride) {\n    for (let i = 0; i < stride; ++i) {\n      const tmp = flatCoordinates[offset + i];\n      flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n      flatCoordinates[end - stride + i] = tmp;\n    }\n    offset += stride;\n    end -= stride;\n  }\n}\n","/**\n * @module ol/geom/flat/orient\n */\nimport {coordinates as reverseCoordinates} from './reverse.js';\n\n/**\n * Is the linear ring oriented clockwise in a coordinate system with a bottom-left\n * coordinate origin? For a coordinate system with a top-left coordinate origin,\n * the ring's orientation is clockwise when this function returns false.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean|undefined} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n  // https://stackoverflow.com/q/1165647/clockwise-method#1165943\n  // https://github.com/OSGeo/gdal/blob/master/gdal/ogr/ogrlinearring.cpp\n  let edge = 0;\n  let x1 = flatCoordinates[end - stride];\n  let y1 = flatCoordinates[end - stride + 1];\n  for (; offset < end; offset += stride) {\n    const x2 = flatCoordinates[offset];\n    const y2 = flatCoordinates[offset + 1];\n    edge += (x2 - x1) * (y2 + y1);\n    x1 = x2;\n    y1 = y2;\n  }\n  return edge === 0 ? undefined : edge > 0;\n}\n\n/**\n * Determines if linear rings are oriented.  By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `right` argument.\n *\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [right] Test for right-hand orientation\n *     (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  right,\n) {\n  right = right !== undefined ? right : false;\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    const isClockwise = linearRingIsClockwise(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n    );\n    if (i === 0) {\n      if ((right && isClockwise) || (!right && !isClockwise)) {\n        return false;\n      }\n    } else {\n      if ((right && !isClockwise) || (!right && isClockwise)) {\n        return false;\n      }\n    }\n    offset = end;\n  }\n  return true;\n}\n\n/**\n * Determines if linear rings are oriented.  By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `right` argument.\n *\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [right] Test for right-hand orientation\n *     (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingssAreOriented(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  right,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, right)) {\n      return false;\n    }\n    if (ends.length) {\n      offset = ends[ends.length - 1];\n    }\n  }\n  return true;\n}\n\n/**\n * Orient coordinates in a flat array of linear rings.  By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings).  To orient according to the\n * right-hand rule, use the `right` argument.\n *\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean} [right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  right,\n) {\n  right = right !== undefined ? right : false;\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    const isClockwise = linearRingIsClockwise(\n      flatCoordinates,\n      offset,\n      end,\n      stride,\n    );\n    const reverse =\n      i === 0\n        ? (right && isClockwise) || (!right && !isClockwise)\n        : (right && !isClockwise) || (!right && isClockwise);\n    if (reverse) {\n      reverseCoordinates(flatCoordinates, offset, end, stride);\n    }\n    offset = end;\n  }\n  return offset;\n}\n\n/**\n * Orient coordinates in a flat array of linear rings.  By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings).  To orient according to the\n * right-hand rule, use the `right` argument.\n *\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(\n  flatCoordinates,\n  offset,\n  endss,\n  stride,\n  right,\n) {\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    offset = orientLinearRings(\n      flatCoordinates,\n      offset,\n      endss[i],\n      stride,\n      right,\n    );\n  }\n  return offset;\n}\n\n/**\n * Return a two-dimensional endss\n * @param {Array<number>} flatCoordinates Flat coordinates\n * @param {Array<number>} ends Linear ring end indexes\n * @return {Array<Array<number>>} Two dimensional endss array that can\n * be used to construct a MultiPolygon\n */\nexport function inflateEnds(flatCoordinates, ends) {\n  const endss = [];\n  let offset = 0;\n  let prevEndIndex = 0;\n  let startOrientation;\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    // classifies an array of rings into polygons with outer rings and holes\n    const orientation = linearRingIsClockwise(flatCoordinates, offset, end, 2);\n    if (startOrientation === undefined) {\n      startOrientation = orientation;\n    }\n    if (orientation === startOrientation) {\n      endss.push(ends.slice(prevEndIndex, i + 1));\n    } else {\n      if (endss.length === 0) {\n        continue;\n      }\n      endss[endss.length - 1].push(ends[prevEndIndex]);\n    }\n    prevEndIndex = i + 1;\n    offset = end;\n  }\n  return endss;\n}\n","/**\n * @module ol/geom/Polygon\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY, getCenter, isEmpty} from '../extent.js';\nimport {modulo} from '../math.js';\nimport {offset as sphereOffset} from '../sphere.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {linearRings as linearRingsArea} from './flat/area.js';\nimport {arrayMaxSquaredDelta, assignClosestArrayPoint} from './flat/closest.js';\nimport {linearRingsContainsXY} from './flat/contains.js';\nimport {deflateCoordinatesArray} from './flat/deflate.js';\nimport {inflateCoordinatesArray} from './flat/inflate.js';\nimport {getInteriorPointOfArray} from './flat/interiorpoint.js';\nimport {intersectsLinearRingArray} from './flat/intersectsextent.js';\nimport {linearRingsAreOriented, orientLinearRings} from './flat/orient.js';\nimport {quantizeArray} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nclass Polygon extends SimpleGeometry {\n  /**\n   * @param {!Array<Array<import(\"../coordinate.js\").Coordinate>>|!Array<number>} coordinates\n   *     Array of linear rings that define the polygon. The first linear ring of the\n   *     array defines the outer-boundary or surface of the polygon. Each subsequent\n   *     linear ring defines a hole in the surface of the polygon. A linear ring is\n   *     an array of vertices' coordinates where the first coordinate and the last are\n   *     equivalent. (For internal use, flat coordinates in combination with\n   *     `layout` and `ends` are also accepted.)\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @param {Array<number>} [ends] Ends (for internal use with flat coordinates).\n   */\n  constructor(coordinates, layout, ends) {\n    super();\n\n    /**\n     * @type {Array<number>}\n     * @private\n     */\n    this.ends_ = [];\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.flatInteriorPointRevision_ = -1;\n\n    /**\n     * @private\n     * @type {import(\"../coordinate.js\").Coordinate|null}\n     */\n    this.flatInteriorPoint_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDelta_ = -1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDeltaRevision_ = -1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.orientedRevision_ = -1;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.orientedFlatCoordinates_ = null;\n\n    if (layout !== undefined && ends) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n      this.ends_ = ends;\n    } else {\n      this.setCoordinates(\n        /** @type {Array<Array<import(\"../coordinate.js\").Coordinate>>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    }\n  }\n\n  /**\n   * Append the passed linear ring to this polygon.\n   * @param {LinearRing} linearRing Linear ring.\n   * @api\n   */\n  appendLinearRing(linearRing) {\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n    } else {\n      extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n    }\n    this.ends_.push(this.flatCoordinates.length);\n    this.changed();\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!Polygon} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const polygon = new Polygon(\n      this.flatCoordinates.slice(),\n      this.layout,\n      this.ends_.slice(),\n    );\n    polygon.applyProperties(this);\n    return polygon;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n   * @param {number} minSquaredDistance Minimum squared distance.\n   * @return {number} Minimum squared distance.\n   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n      return minSquaredDistance;\n    }\n    if (this.maxDeltaRevision_ != this.getRevision()) {\n      this.maxDelta_ = Math.sqrt(\n        arrayMaxSquaredDelta(\n          this.flatCoordinates,\n          0,\n          this.ends_,\n          this.stride,\n          0,\n        ),\n      );\n      this.maxDeltaRevision_ = this.getRevision();\n    }\n    return assignClosestArrayPoint(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      this.maxDelta_,\n      true,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n    );\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @return {boolean} Contains (x, y).\n   * @override\n   */\n  containsXY(x, y) {\n    return linearRingsContainsXY(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.ends_,\n      this.stride,\n      x,\n      y,\n    );\n  }\n\n  /**\n   * Return the area of the polygon on projected plane.\n   * @return {number} Area (on projected plane).\n   * @api\n   */\n  getArea() {\n    return linearRingsArea(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.ends_,\n      this.stride,\n    );\n  }\n\n  /**\n   * Get the coordinate array for this geometry.  This array has the structure\n   * of a GeoJSON coordinate array for polygons.\n   *\n   * @param {boolean} [right] Orient coordinates according to the right-hand\n   *     rule (counter-clockwise for exterior and clockwise for interior rings).\n   *     If `false`, coordinates will be oriented according to the left-hand rule\n   *     (clockwise for exterior and counter-clockwise for interior rings).\n   *     By default, coordinate orientation will depend on how the geometry was\n   *     constructed.\n   * @return {Array<Array<import(\"../coordinate.js\").Coordinate>>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates(right) {\n    let flatCoordinates;\n    if (right !== undefined) {\n      flatCoordinates = this.getOrientedFlatCoordinates().slice();\n      orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, right);\n    } else {\n      flatCoordinates = this.flatCoordinates;\n    }\n\n    return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n  }\n\n  /**\n   * @return {Array<number>} Ends.\n   */\n  getEnds() {\n    return this.ends_;\n  }\n\n  /**\n   * @return {Array<number>} Interior point.\n   */\n  getFlatInteriorPoint() {\n    if (this.flatInteriorPointRevision_ != this.getRevision()) {\n      const flatCenter = getCenter(this.getExtent());\n      this.flatInteriorPoint_ = getInteriorPointOfArray(\n        this.getOrientedFlatCoordinates(),\n        0,\n        this.ends_,\n        this.stride,\n        flatCenter,\n        0,\n      );\n      this.flatInteriorPointRevision_ = this.getRevision();\n    }\n    return /** @type {import(\"../coordinate.js\").Coordinate} */ (\n      this.flatInteriorPoint_\n    );\n  }\n\n  /**\n   * Return an interior point of the polygon.\n   * @return {Point} Interior point as XYM coordinate, where M is the\n   * length of the horizontal intersection that the point belongs to.\n   * @api\n   */\n  getInteriorPoint() {\n    return new Point(this.getFlatInteriorPoint(), 'XYM');\n  }\n\n  /**\n   * Return the number of rings of the polygon,  this includes the exterior\n   * ring and any interior rings.\n   *\n   * @return {number} Number of rings.\n   * @api\n   */\n  getLinearRingCount() {\n    return this.ends_.length;\n  }\n\n  /**\n   * Return the Nth linear ring of the polygon geometry. Return `null` if the\n   * given index is out of range.\n   * The exterior linear ring is available at index `0` and the interior rings\n   * at index `1` and beyond.\n   *\n   * @param {number} index Index.\n   * @return {LinearRing|null} Linear ring.\n   * @api\n   */\n  getLinearRing(index) {\n    if (index < 0 || this.ends_.length <= index) {\n      return null;\n    }\n    return new LinearRing(\n      this.flatCoordinates.slice(\n        index === 0 ? 0 : this.ends_[index - 1],\n        this.ends_[index],\n      ),\n      this.layout,\n    );\n  }\n\n  /**\n   * Return the linear rings of the polygon.\n   * @return {Array<LinearRing>} Linear rings.\n   * @api\n   */\n  getLinearRings() {\n    const layout = this.layout;\n    const flatCoordinates = this.flatCoordinates;\n    const ends = this.ends_;\n    const linearRings = [];\n    let offset = 0;\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      const end = ends[i];\n      const linearRing = new LinearRing(\n        flatCoordinates.slice(offset, end),\n        layout,\n      );\n      linearRings.push(linearRing);\n      offset = end;\n    }\n    return linearRings;\n  }\n\n  /**\n   * @return {Array<number>} Oriented flat coordinates.\n   */\n  getOrientedFlatCoordinates() {\n    if (this.orientedRevision_ != this.getRevision()) {\n      const flatCoordinates = this.flatCoordinates;\n      if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n        this.orientedFlatCoordinates_ = flatCoordinates;\n      } else {\n        this.orientedFlatCoordinates_ = flatCoordinates.slice();\n        this.orientedFlatCoordinates_.length = orientLinearRings(\n          this.orientedFlatCoordinates_,\n          0,\n          this.ends_,\n          this.stride,\n        );\n      }\n      this.orientedRevision_ = this.getRevision();\n    }\n    return /** @type {Array<number>} */ (this.orientedFlatCoordinates_);\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {Polygon} Simplified Polygon.\n   * @protected\n   * @override\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    /** @type {Array<number>} */\n    const simplifiedFlatCoordinates = [];\n    /** @type {Array<number>} */\n    const simplifiedEnds = [];\n    simplifiedFlatCoordinates.length = quantizeArray(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      Math.sqrt(squaredTolerance),\n      simplifiedFlatCoordinates,\n      0,\n      simplifiedEnds,\n    );\n    return new Polygon(simplifiedFlatCoordinates, 'XY', simplifiedEnds);\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'Polygon';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return intersectsLinearRingArray(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.ends_,\n      this.stride,\n      extent,\n    );\n  }\n\n  /**\n   * Set the coordinates of the polygon.\n   * @param {!Array<Array<import(\"../coordinate.js\").Coordinate>>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 2);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    const ends = deflateCoordinatesArray(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n      this.ends_,\n    );\n    this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n    this.changed();\n  }\n}\n\nexport default Polygon;\n\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n *     the polygon vertices in meters.\n * @param {number} [n] Optional number of vertices for the resulting\n *     polygon. Default is `32`.\n * @param {number} [sphereRadius] Optional radius for the sphere (defaults to\n *     the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, n, sphereRadius) {\n  n = n ? n : 32;\n  /** @type {Array<number>} */\n  const flatCoordinates = [];\n  for (let i = 0; i < n; ++i) {\n    extend(\n      flatCoordinates,\n      sphereOffset(center, radius, (2 * Math.PI * i) / n, sphereRadius),\n    );\n  }\n  flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n  return new Polygon(flatCoordinates, 'XY', [flatCoordinates.length]);\n}\n\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n  if (isEmpty(extent)) {\n    throw new Error('Cannot create polygon from empty extent');\n  }\n  const minX = extent[0];\n  const minY = extent[1];\n  const maxX = extent[2];\n  const maxY = extent[3];\n  const flatCoordinates = [\n    minX,\n    minY,\n    minX,\n    maxY,\n    maxX,\n    maxY,\n    maxX,\n    minY,\n    minX,\n    minY,\n  ];\n  return new Polygon(flatCoordinates, 'XY', [flatCoordinates.length]);\n}\n\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number} [sides] Number of sides of the polygon. Default is 32.\n * @param {number} [angle] Start angle for the first vertex of the polygon in\n *     counter-clockwise radians. 0 means East. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, sides, angle) {\n  sides = sides ? sides : 32;\n  const stride = circle.getStride();\n  const layout = circle.getLayout();\n  const center = circle.getCenter();\n  const arrayLength = stride * (sides + 1);\n  const flatCoordinates = new Array(arrayLength);\n  for (let i = 0; i < arrayLength; i += stride) {\n    flatCoordinates[i] = 0;\n    flatCoordinates[i + 1] = 0;\n    for (let j = 2; j < stride; j++) {\n      flatCoordinates[i + j] = center[j];\n    }\n  }\n  const ends = [flatCoordinates.length];\n  const polygon = new Polygon(flatCoordinates, layout, ends);\n  makeRegular(polygon, center, circle.getRadius(), angle);\n  return polygon;\n}\n\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number} [angle] Start angle for the first vertex of the polygon in\n *     counter-clockwise radians. 0 means East. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, angle) {\n  const flatCoordinates = polygon.getFlatCoordinates();\n  const stride = polygon.getStride();\n  const sides = flatCoordinates.length / stride - 1;\n  const startAngle = angle ? angle : 0;\n  for (let i = 0; i <= sides; ++i) {\n    const offset = i * stride;\n    const angle = startAngle + (modulo(i, sides) * 2 * Math.PI) / sides;\n    flatCoordinates[offset] = center[0] + radius * Math.cos(angle);\n    flatCoordinates[offset + 1] = center[1] + radius * Math.sin(angle);\n  }\n  polygon.changed();\n}\n","/**\n * @module ol/resolutionconstraint\n */\nimport {linearFindNearest} from './array.js';\nimport {getHeight, getWidth} from './extent.js';\nimport {clamp} from './math.js';\n\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(\n  resolution,\n  maxExtent,\n  viewportSize,\n  showFullExtent,\n) {\n  const xResolution = getWidth(maxExtent) / viewportSize[0];\n  const yResolution = getHeight(maxExtent) / viewportSize[1];\n\n  if (showFullExtent) {\n    return Math.min(resolution, Math.max(xResolution, yResolution));\n  }\n  return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n *  - at 1, ln(x) is 0\n *  - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n  let result = Math.min(resolution, maxResolution);\n  const ratio = 50;\n\n  result *=\n    Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n    1;\n  if (minResolution) {\n    result = Math.max(result, minResolution);\n    result /=\n      Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n        ratio +\n      1;\n  }\n  return clamp(result, minResolution / 2, maxResolution * 2);\n}\n\n/**\n * @param {Array<number>} resolutions Resolutions.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(\n  resolutions,\n  smooth,\n  maxExtent,\n  showFullExtent,\n) {\n  smooth = smooth !== undefined ? smooth : true;\n  return (\n    /**\n     * @param {number|undefined} resolution Resolution.\n     * @param {number} direction Direction.\n     * @param {import(\"./size.js\").Size} size Viewport size.\n     * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n     * @return {number|undefined} Resolution.\n     */\n    function (resolution, direction, size, isMoving) {\n      if (resolution !== undefined) {\n        const maxResolution = resolutions[0];\n        const minResolution = resolutions[resolutions.length - 1];\n        const cappedMaxRes = maxExtent\n          ? getViewportClampedResolution(\n              maxResolution,\n              maxExtent,\n              size,\n              showFullExtent,\n            )\n          : maxResolution;\n\n        // during interacting or animating, allow intermediary values\n        if (isMoving) {\n          if (!smooth) {\n            return clamp(resolution, minResolution, cappedMaxRes);\n          }\n          return getSmoothClampedResolution(\n            resolution,\n            cappedMaxRes,\n            minResolution,\n          );\n        }\n\n        const capped = Math.min(cappedMaxRes, resolution);\n        const z = Math.floor(linearFindNearest(resolutions, capped, direction));\n        if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n          return resolutions[z + 1];\n        }\n        return resolutions[z];\n      }\n      return undefined;\n    }\n  );\n}\n\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number} [minResolution] Minimum resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(\n  power,\n  maxResolution,\n  minResolution,\n  smooth,\n  maxExtent,\n  showFullExtent,\n) {\n  smooth = smooth !== undefined ? smooth : true;\n  minResolution = minResolution !== undefined ? minResolution : 0;\n\n  return (\n    /**\n     * @param {number|undefined} resolution Resolution.\n     * @param {number} direction Direction.\n     * @param {import(\"./size.js\").Size} size Viewport size.\n     * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n     * @return {number|undefined} Resolution.\n     */\n    function (resolution, direction, size, isMoving) {\n      if (resolution !== undefined) {\n        const cappedMaxRes = maxExtent\n          ? getViewportClampedResolution(\n              maxResolution,\n              maxExtent,\n              size,\n              showFullExtent,\n            )\n          : maxResolution;\n\n        // during interacting or animating, allow intermediary values\n        if (isMoving) {\n          if (!smooth) {\n            return clamp(resolution, minResolution, cappedMaxRes);\n          }\n          return getSmoothClampedResolution(\n            resolution,\n            cappedMaxRes,\n            minResolution,\n          );\n        }\n\n        const tolerance = 1e-9;\n        const minZoomLevel = Math.ceil(\n          Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance,\n        );\n        const offset = -direction * (0.5 - tolerance) + 0.5;\n        const capped = Math.min(cappedMaxRes, resolution);\n        const cappedZoomLevel = Math.floor(\n          Math.log(maxResolution / capped) / Math.log(power) + offset,\n        );\n        const zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n        const newResolution = maxResolution / Math.pow(power, zoomLevel);\n        return clamp(newResolution, minResolution, cappedMaxRes);\n      }\n      return undefined;\n    }\n  );\n}\n\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(\n  maxResolution,\n  minResolution,\n  smooth,\n  maxExtent,\n  showFullExtent,\n) {\n  smooth = smooth !== undefined ? smooth : true;\n\n  return (\n    /**\n     * @param {number|undefined} resolution Resolution.\n     * @param {number} direction Direction.\n     * @param {import(\"./size.js\").Size} size Viewport size.\n     * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n     * @return {number|undefined} Resolution.\n     */\n    function (resolution, direction, size, isMoving) {\n      if (resolution !== undefined) {\n        const cappedMaxRes = maxExtent\n          ? getViewportClampedResolution(\n              maxResolution,\n              maxExtent,\n              size,\n              showFullExtent,\n            )\n          : maxResolution;\n\n        if (!smooth || !isMoving) {\n          return clamp(resolution, minResolution, cappedMaxRes);\n        }\n        return getSmoothClampedResolution(\n          resolution,\n          cappedMaxRes,\n          minResolution,\n        );\n      }\n      return undefined;\n    }\n  );\n}\n","/**\n * @module ol/rotationconstraint\n */\nimport {toRadians} from './math.js';\n\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n  if (rotation !== undefined) {\n    return 0;\n  }\n  return undefined;\n}\n\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation) {\n  if (rotation !== undefined) {\n    return rotation;\n  }\n  return undefined;\n}\n\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n  const theta = (2 * Math.PI) / n;\n  return (\n    /**\n     * @param {number|undefined} rotation Rotation.\n     * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n     * @return {number|undefined} Rotation.\n     */\n    function (rotation, isMoving) {\n      if (isMoving) {\n        return rotation;\n      }\n\n      if (rotation !== undefined) {\n        rotation = Math.floor(rotation / theta + 0.5) * theta;\n        return rotation;\n      }\n      return undefined;\n    }\n  );\n}\n\n/**\n * @param {number} [tolerance] Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(tolerance) {\n  const t = tolerance === undefined ? toRadians(5) : tolerance;\n  return (\n    /**\n     * @param {number|undefined} rotation Rotation.\n     * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n     * @return {number|undefined} Rotation.\n     */\n    function (rotation, isMoving) {\n      if (isMoving || rotation === undefined) {\n        return rotation;\n      }\n\n      if (Math.abs(rotation) <= t) {\n        return 0;\n      }\n      return rotation;\n    }\n  );\n}\n","/**\n * @module ol/tilegrid/common\n */\n\n/**\n * Default maximum zoom for default tile grids.\n * @type {number}\n */\nexport const DEFAULT_MAX_ZOOM = 42;\n\n/**\n * Default tile size.\n * @type {number}\n */\nexport const DEFAULT_TILE_SIZE = 256;\n","/**\n * @module ol/View\n */\nimport BaseObject from './Object.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport {linearFindNearest} from './array.js';\nimport {assert} from './asserts.js';\nimport {createExtent, none as centerNone} from './centerconstraint.js';\nimport {\n  add as addCoordinate,\n  equals,\n  equals as coordinatesEqual,\n  rotate as rotateCoordinate,\n} from './coordinate.js';\nimport {easeOut, inAndOut} from './easing.js';\nimport {\n  getCenter,\n  getForViewAndSize,\n  getHeight,\n  getWidth,\n  isEmpty,\n} from './extent.js';\nimport {VOID} from './functions.js';\nimport {fromExtent as polygonFromExtent} from './geom/Polygon.js';\nimport {clamp, modulo} from './math.js';\nimport {\n  METERS_PER_UNIT,\n  createProjection,\n  disableCoordinateWarning,\n  fromUserCoordinate,\n  fromUserExtent,\n  getUserProjection,\n  toUserCoordinate,\n  toUserExtent,\n} from './proj.js';\nimport {\n  createMinMaxResolution,\n  createSnapToPower,\n  createSnapToResolutions,\n} from './resolutionconstraint.js';\nimport {\n  createSnapToN,\n  createSnapToZero,\n  disable,\n  none as rotationNone,\n} from './rotationconstraint.js';\nimport {DEFAULT_TILE_SIZE} from './tilegrid/common.js';\n\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter] Source center.\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter] Target center.\n * @property {number} [sourceResolution] Source resolution.\n * @property {number} [targetResolution] Target resolution.\n * @property {number} [sourceRotation] Source rotation.\n * @property {number} [targetRotation] Target rotation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Anchor.\n * @property {number} start Start.\n * @property {number} duration Duration.\n * @property {boolean} complete Complete.\n * @property {function(number):number} easing Easing.\n * @property {function(boolean):void} callback Callback.\n */\n\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center Center.\n * @property {import(\"./resolutionconstraint.js\").Type} resolution Resolution.\n * @property {import(\"./rotationconstraint.js\").Type} rotation Rotation.\n */\n\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to\n * fit the extent into. Defaults to the size of the map the view is associated with.\n * If no map or multiple maps are connected to the view, provide the desired box size\n * (e.g. `map.getSize()`).\n * @property {!Array<number>} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing.inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration.  The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean):void} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint.  It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`.  If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`.  Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`.  Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge.  If `true` the map\n * may show multiple worlds at low zoom levels.  Only used if the `projection` is\n * global.  Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array<number>} [resolutions] Resolutions that determine the\n * zoom levels if specified. The index in the array corresponds to the zoom level,\n * therefore the resolution values have to be in descending order. It also constrains\n * the resolution by the minimum and maximum value. If set the `maxResolution`,\n * `minResolution`, `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n * @property {!Array<number>} [padding=[0, 0, 0, 0]] Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from\n * that content. The order of the values is top, right, bottom, left.\n */\n\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation.  If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing.inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration.  The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center Center (in view projection coordinates).\n * @property {import(\"./proj/Projection.js\").default} projection Projection.\n * @property {number} resolution Resolution.\n * @property {import(\"./coordinate.js\").Coordinate} [nextCenter] The next center during an animation series.\n * @property {number} [nextResolution] The next resolution during an animation series.\n * @property {number} [nextRotation] The next rotation during an animation series.\n * @property {number} rotation Rotation.\n * @property {number} zoom Zoom.\n */\n\n/**\n * Like {@link import(\"./Map.js\").FrameState}, but just `viewState` and `extent`.\n * @typedef {Object} ViewStateLayerStateExtent\n * @property {State} viewState View state.\n * @property {import(\"./extent.js\").Extent} extent Extent (in user projection coordinates).\n * @property {Array<import(\"./layer/Layer.js\").State>} [layerStatesArray] Layer states.\n */\n\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nconst DEFAULT_MIN_ZOOM = 0;\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:center'|'change:resolution'|'change:rotation'} ViewObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *   import(\"./Observable\").OnSignature<ViewObjectEventTypes, import(\"./Object\").ObjectEvent, Return> &\n *   import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|ViewObjectEventTypes, Return>} ViewOnSignature\n */\n\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Web Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n * @extends {BaseObject<ViewOptions>}\n */\nclass View extends BaseObject {\n  /**\n   * @param {ViewOptions} [options] View options.\n   */\n  constructor(options) {\n    super();\n\n    /***\n     * @type {ViewOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {ViewOnSignature<import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {ViewOnSignature<void>}\n     */\n    this.un;\n\n    options = Object.assign({}, options);\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.hints_ = [0, 0];\n\n    /**\n     * @private\n     * @type {Array<Array<Animation>>}\n     */\n    this.animations_ = [];\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.updateAnimationKey_;\n\n    /**\n     * @private\n     * @const\n     * @type {import(\"./proj/Projection.js\").default}\n     */\n    this.projection_ = createProjection(options.projection, 'EPSG:3857');\n\n    /**\n     * @private\n     * @type {import(\"./size.js\").Size}\n     */\n    this.viewportSize_ = [100, 100];\n\n    /**\n     * @private\n     * @type {import(\"./coordinate.js\").Coordinate|undefined}\n     */\n    this.targetCenter_ = null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.targetResolution_;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.targetRotation_;\n\n    /**\n     * @private\n     * @type {import(\"./coordinate.js\").Coordinate}\n     */\n    this.nextCenter_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.nextResolution_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.nextRotation_;\n\n    /**\n     * @private\n     * @type {import(\"./coordinate.js\").Coordinate|undefined}\n     */\n    this.cancelAnchor_ = undefined;\n\n    if (options.projection) {\n      disableCoordinateWarning();\n    }\n    if (options.center) {\n      options.center = fromUserCoordinate(options.center, this.projection_);\n    }\n    if (options.extent) {\n      options.extent = fromUserExtent(options.extent, this.projection_);\n    }\n\n    this.applyOptions_(options);\n  }\n\n  /**\n   * Set up the view with the given options.\n   * @param {ViewOptions} options View options.\n   */\n  applyOptions_(options) {\n    const properties = Object.assign({}, options);\n    for (const key in ViewProperty) {\n      delete properties[key];\n    }\n    this.setProperties(properties, true);\n\n    const resolutionConstraintInfo = createResolutionConstraint(options);\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.minResolution_ = resolutionConstraintInfo.minResolution;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n\n    /**\n     * @private\n     * @type {Array<number>|undefined}\n     */\n    this.resolutions_ = options.resolutions;\n\n    /**\n     * @type {Array<number>|undefined}\n     * @private\n     */\n    this.padding_ = options.padding;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.minZoom_ = resolutionConstraintInfo.minZoom;\n\n    const centerConstraint = createCenterConstraint(options);\n    const resolutionConstraint = resolutionConstraintInfo.constraint;\n    const rotationConstraint = createRotationConstraint(options);\n\n    /**\n     * @private\n     * @type {Constraints}\n     */\n    this.constraints_ = {\n      center: centerConstraint,\n      resolution: resolutionConstraint,\n      rotation: rotationConstraint,\n    };\n\n    this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n    this.setCenterInternal(\n      options.center !== undefined ? options.center : null,\n    );\n    if (options.resolution !== undefined) {\n      this.setResolution(options.resolution);\n    } else if (options.zoom !== undefined) {\n      this.setZoom(options.zoom);\n    }\n  }\n\n  /**\n   * Padding (in css pixels).\n   * If the map viewport is partially covered with other content (overlays) along\n   * its edges, this setting allows to shift the center of the viewport away from that\n   * content. The order of the values in the array is top, right, bottom, left.\n   * The default is no padding, which is equivalent to `[0, 0, 0, 0]`.\n   * @type {Array<number>|undefined}\n   * @api\n   */\n  get padding() {\n    return this.padding_;\n  }\n  set padding(padding) {\n    let oldPadding = this.padding_;\n    this.padding_ = padding;\n    const center = this.getCenterInternal();\n    if (center) {\n      const newPadding = padding || [0, 0, 0, 0];\n      oldPadding = oldPadding || [0, 0, 0, 0];\n      const resolution = this.getResolution();\n      const offsetX =\n        (resolution / 2) *\n        (newPadding[3] - oldPadding[3] + oldPadding[1] - newPadding[1]);\n      const offsetY =\n        (resolution / 2) *\n        (newPadding[0] - oldPadding[0] + oldPadding[2] - newPadding[2]);\n      this.setCenterInternal([center[0] + offsetX, center[1] - offsetY]);\n    }\n  }\n\n  /**\n   * Get an updated version of the view options used to construct the view.  The\n   * current resolution (or zoom), center, and rotation are applied to any stored\n   * options.  The provided options can be used to apply new min/max zoom or\n   * resolution limits.\n   * @param {ViewOptions} newOptions New options to be applied.\n   * @return {ViewOptions} New options updated with the current view state.\n   */\n  getUpdatedOptions_(newOptions) {\n    const options = this.getProperties();\n\n    // preserve resolution (or zoom)\n    if (options.resolution !== undefined) {\n      options.resolution = this.getResolution();\n    } else {\n      options.zoom = this.getZoom();\n    }\n\n    // preserve center\n    options.center = this.getCenterInternal();\n\n    // preserve rotation\n    options.rotation = this.getRotation();\n\n    return Object.assign({}, options, newOptions);\n  }\n\n  /**\n   * Animate the view.  The view's center, zoom (or resolution), and rotation\n   * can be animated for smooth transitions between view states.  For example,\n   * to animate the view to a new zoom level:\n   *\n   *     view.animate({zoom: view.getZoom() + 1});\n   *\n   * By default, the animation lasts one second and uses in-and-out easing.  You\n   * can customize this behavior by including `duration` (in milliseconds) and\n   * `easing` options (see {@link module:ol/easing}).\n   *\n   * To chain together multiple animations, call the method with multiple\n   * animation objects.  For example, to first zoom and then pan:\n   *\n   *     view.animate({zoom: 10}, {center: [0, 0]});\n   *\n   * If you provide a function as the last argument to the animate method, it\n   * will get called at the end of an animation series.  The callback will be\n   * called with `true` if the animation series completed on its own or `false`\n   * if it was cancelled.\n   *\n   * Animations are cancelled by user interactions (e.g. dragging the map) or by\n   * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n   * (or another method that calls one of these).\n   *\n   * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n   *     options.  Multiple animations can be run in series by passing multiple\n   *     options objects.  To run multiple animations in parallel, call the method\n   *     multiple times.  An optional callback can be provided as a final\n   *     argument.  The callback will be called with a boolean indicating whether\n   *     the animation completed without being cancelled.\n   * @api\n   */\n  animate(var_args) {\n    if (this.isDef() && !this.getAnimating()) {\n      this.resolveConstraints(0);\n    }\n    const args = new Array(arguments.length);\n    for (let i = 0; i < args.length; ++i) {\n      let options = arguments[i];\n      if (options.center) {\n        options = Object.assign({}, options);\n        options.center = fromUserCoordinate(\n          options.center,\n          this.getProjection(),\n        );\n      }\n      if (options.anchor) {\n        options = Object.assign({}, options);\n        options.anchor = fromUserCoordinate(\n          options.anchor,\n          this.getProjection(),\n        );\n      }\n      args[i] = options;\n    }\n    this.animateInternal.apply(this, args);\n  }\n\n  /**\n   * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n   */\n  animateInternal(var_args) {\n    let animationCount = arguments.length;\n    let callback;\n    if (\n      animationCount > 1 &&\n      typeof arguments[animationCount - 1] === 'function'\n    ) {\n      callback = arguments[animationCount - 1];\n      --animationCount;\n    }\n\n    let i = 0;\n    for (; i < animationCount && !this.isDef(); ++i) {\n      // if view properties are not yet set, shortcut to the final state\n      const state = arguments[i];\n      if (state.center) {\n        this.setCenterInternal(state.center);\n      }\n      if (state.zoom !== undefined) {\n        this.setZoom(state.zoom);\n      } else if (state.resolution) {\n        this.setResolution(state.resolution);\n      }\n      if (state.rotation !== undefined) {\n        this.setRotation(state.rotation);\n      }\n    }\n    if (i === animationCount) {\n      if (callback) {\n        animationCallback(callback, true);\n      }\n      return;\n    }\n\n    let start = Date.now();\n    let center = this.targetCenter_.slice();\n    let resolution = this.targetResolution_;\n    let rotation = this.targetRotation_;\n    const series = [];\n    for (; i < animationCount; ++i) {\n      const options = /** @type {AnimationOptions} */ (arguments[i]);\n\n      const animation = {\n        start: start,\n        complete: false,\n        anchor: options.anchor,\n        duration: options.duration !== undefined ? options.duration : 1000,\n        easing: options.easing || inAndOut,\n        callback: callback,\n      };\n\n      if (options.center) {\n        animation.sourceCenter = center;\n        animation.targetCenter = options.center.slice();\n        center = animation.targetCenter;\n      }\n\n      if (options.zoom !== undefined) {\n        animation.sourceResolution = resolution;\n        animation.targetResolution = this.getResolutionForZoom(options.zoom);\n        resolution = animation.targetResolution;\n      } else if (options.resolution) {\n        animation.sourceResolution = resolution;\n        animation.targetResolution = options.resolution;\n        resolution = animation.targetResolution;\n      }\n\n      if (options.rotation !== undefined) {\n        animation.sourceRotation = rotation;\n        const delta =\n          modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n        animation.targetRotation = rotation + delta;\n        rotation = animation.targetRotation;\n      }\n\n      // check if animation is a no-op\n      if (isNoopAnimation(animation)) {\n        animation.complete = true;\n        // we still push it onto the series for callback handling\n      } else {\n        start += animation.duration;\n      }\n      series.push(animation);\n    }\n    this.animations_.push(series);\n    this.setHint(ViewHint.ANIMATING, 1);\n    this.updateAnimations_();\n  }\n\n  /**\n   * Determine if the view is being animated.\n   * @return {boolean} The view is being animated.\n   * @api\n   */\n  getAnimating() {\n    return this.hints_[ViewHint.ANIMATING] > 0;\n  }\n\n  /**\n   * Determine if the user is interacting with the view, such as panning or zooming.\n   * @return {boolean} The view is being interacted with.\n   * @api\n   */\n  getInteracting() {\n    return this.hints_[ViewHint.INTERACTING] > 0;\n  }\n\n  /**\n   * Cancel any ongoing animations.\n   * @api\n   */\n  cancelAnimations() {\n    this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n    let anchor;\n    for (let i = 0, ii = this.animations_.length; i < ii; ++i) {\n      const series = this.animations_[i];\n      if (series[0].callback) {\n        animationCallback(series[0].callback, false);\n      }\n      if (!anchor) {\n        for (let j = 0, jj = series.length; j < jj; ++j) {\n          const animation = series[j];\n          if (!animation.complete) {\n            anchor = animation.anchor;\n            break;\n          }\n        }\n      }\n    }\n    this.animations_.length = 0;\n    this.cancelAnchor_ = anchor;\n    this.nextCenter_ = null;\n    this.nextResolution_ = NaN;\n    this.nextRotation_ = NaN;\n  }\n\n  /**\n   * Update all animations.\n   */\n  updateAnimations_() {\n    if (this.updateAnimationKey_ !== undefined) {\n      cancelAnimationFrame(this.updateAnimationKey_);\n      this.updateAnimationKey_ = undefined;\n    }\n    if (!this.getAnimating()) {\n      return;\n    }\n    const now = Date.now();\n    let more = false;\n    for (let i = this.animations_.length - 1; i >= 0; --i) {\n      const series = this.animations_[i];\n      let seriesComplete = true;\n      for (let j = 0, jj = series.length; j < jj; ++j) {\n        const animation = series[j];\n        if (animation.complete) {\n          continue;\n        }\n        const elapsed = now - animation.start;\n        let fraction =\n          animation.duration > 0 ? elapsed / animation.duration : 1;\n        if (fraction >= 1) {\n          animation.complete = true;\n          fraction = 1;\n        } else {\n          seriesComplete = false;\n        }\n        const progress = animation.easing(fraction);\n        if (animation.sourceCenter) {\n          const x0 = animation.sourceCenter[0];\n          const y0 = animation.sourceCenter[1];\n          const x1 = animation.targetCenter[0];\n          const y1 = animation.targetCenter[1];\n          this.nextCenter_ = animation.targetCenter;\n          const x = x0 + progress * (x1 - x0);\n          const y = y0 + progress * (y1 - y0);\n          this.targetCenter_ = [x, y];\n        }\n        if (animation.sourceResolution && animation.targetResolution) {\n          const resolution =\n            progress === 1\n              ? animation.targetResolution\n              : animation.sourceResolution +\n                progress *\n                  (animation.targetResolution - animation.sourceResolution);\n          if (animation.anchor) {\n            const size = this.getViewportSize_(this.getRotation());\n            const constrainedResolution = this.constraints_.resolution(\n              resolution,\n              0,\n              size,\n              true,\n            );\n            this.targetCenter_ = this.calculateCenterZoom(\n              constrainedResolution,\n              animation.anchor,\n            );\n          }\n          this.nextResolution_ = animation.targetResolution;\n          this.targetResolution_ = resolution;\n          this.applyTargetState_(true);\n        }\n        if (\n          animation.sourceRotation !== undefined &&\n          animation.targetRotation !== undefined\n        ) {\n          const rotation =\n            progress === 1\n              ? modulo(animation.targetRotation + Math.PI, 2 * Math.PI) -\n                Math.PI\n              : animation.sourceRotation +\n                progress *\n                  (animation.targetRotation - animation.sourceRotation);\n          if (animation.anchor) {\n            const constrainedRotation = this.constraints_.rotation(\n              rotation,\n              true,\n            );\n            this.targetCenter_ = this.calculateCenterRotate(\n              constrainedRotation,\n              animation.anchor,\n            );\n          }\n          this.nextRotation_ = animation.targetRotation;\n          this.targetRotation_ = rotation;\n        }\n        this.applyTargetState_(true);\n        more = true;\n        if (!animation.complete) {\n          break;\n        }\n      }\n      if (seriesComplete) {\n        this.animations_[i] = null;\n        this.setHint(ViewHint.ANIMATING, -1);\n        this.nextCenter_ = null;\n        this.nextResolution_ = NaN;\n        this.nextRotation_ = NaN;\n        const callback = series[0].callback;\n        if (callback) {\n          animationCallback(callback, true);\n        }\n      }\n    }\n    // prune completed series\n    this.animations_ = this.animations_.filter(Boolean);\n    if (more && this.updateAnimationKey_ === undefined) {\n      this.updateAnimationKey_ = requestAnimationFrame(\n        this.updateAnimations_.bind(this),\n      );\n    }\n  }\n\n  /**\n   * @param {number} rotation Target rotation.\n   * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n   * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n   */\n  calculateCenterRotate(rotation, anchor) {\n    let center;\n    const currentCenter = this.getCenterInternal();\n    if (currentCenter !== undefined) {\n      center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n      rotateCoordinate(center, rotation - this.getRotation());\n      addCoordinate(center, anchor);\n    }\n    return center;\n  }\n\n  /**\n   * @param {number} resolution Target resolution.\n   * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n   * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n   */\n  calculateCenterZoom(resolution, anchor) {\n    let center;\n    const currentCenter = this.getCenterInternal();\n    const currentResolution = this.getResolution();\n    if (currentCenter !== undefined && currentResolution !== undefined) {\n      const x =\n        anchor[0] -\n        (resolution * (anchor[0] - currentCenter[0])) / currentResolution;\n      const y =\n        anchor[1] -\n        (resolution * (anchor[1] - currentCenter[1])) / currentResolution;\n      center = [x, y];\n    }\n    return center;\n  }\n\n  /**\n   * Returns the current viewport size.\n   * @private\n   * @param {number} [rotation] Take into account the rotation of the viewport when giving the size\n   * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n   */\n  getViewportSize_(rotation) {\n    const size = this.viewportSize_;\n    if (rotation) {\n      const w = size[0];\n      const h = size[1];\n      return [\n        Math.abs(w * Math.cos(rotation)) + Math.abs(h * Math.sin(rotation)),\n        Math.abs(w * Math.sin(rotation)) + Math.abs(h * Math.cos(rotation)),\n      ];\n    }\n    return size;\n  }\n\n  /**\n   * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n   * to avoid performance hit and layout reflow.\n   * This should be done on map size change.\n   * Note: the constraints are not resolved during an animation to avoid stopping it\n   * @param {import(\"./size.js\").Size} [size] Viewport size; if undefined, [100, 100] is assumed\n   */\n  setViewportSize(size) {\n    this.viewportSize_ = Array.isArray(size) ? size.slice() : [100, 100];\n    if (!this.getAnimating()) {\n      this.resolveConstraints(0);\n    }\n  }\n\n  /**\n   * Get the view center.\n   * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n   * @observable\n   * @api\n   */\n  getCenter() {\n    const center = this.getCenterInternal();\n    if (!center) {\n      return center;\n    }\n    return toUserCoordinate(center, this.getProjection());\n  }\n\n  /**\n   * Get the view center without transforming to user projection.\n   * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n   */\n  getCenterInternal() {\n    return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n      this.get(ViewProperty.CENTER)\n    );\n  }\n\n  /**\n   * @return {Constraints} Constraints.\n   */\n  getConstraints() {\n    return this.constraints_;\n  }\n\n  /**\n   * @return {boolean} Resolution constraint is set\n   */\n  getConstrainResolution() {\n    return this.get('constrainResolution');\n  }\n\n  /**\n   * @param {Array<number>} [hints] Destination array.\n   * @return {Array<number>} Hint.\n   */\n  getHints(hints) {\n    if (hints !== undefined) {\n      hints[0] = this.hints_[0];\n      hints[1] = this.hints_[1];\n      return hints;\n    }\n    return this.hints_.slice();\n  }\n\n  /**\n   * Calculate the extent for the current view state and the passed box size.\n   * @param {import(\"./size.js\").Size} [size] The pixel dimensions of the box\n   * into which the calculated extent should fit. Defaults to the size of the\n   * map the view is associated with.\n   * If no map or multiple maps are connected to the view, provide the desired\n   * box size (e.g. `map.getSize()`).\n   * @return {import(\"./extent.js\").Extent} Extent.\n   * @api\n   */\n  calculateExtent(size) {\n    const extent = this.calculateExtentInternal(size);\n    return toUserExtent(extent, this.getProjection());\n  }\n\n  /**\n   * @param {import(\"./size.js\").Size} [size] Box pixel size. If not provided,\n   * the map's last known viewport size will be used.\n   * @return {import(\"./extent.js\").Extent} Extent.\n   */\n  calculateExtentInternal(size) {\n    size = size || this.getViewportSizeMinusPadding_();\n    const center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (\n      this.getCenterInternal()\n    );\n    assert(center, 'The view center is not defined');\n    const resolution = /** @type {!number} */ (this.getResolution());\n    assert(resolution !== undefined, 'The view resolution is not defined');\n    const rotation = /** @type {!number} */ (this.getRotation());\n    assert(rotation !== undefined, 'The view rotation is not defined');\n\n    return getForViewAndSize(center, resolution, rotation, size);\n  }\n\n  /**\n   * Get the maximum resolution of the view.\n   * @return {number} The maximum resolution of the view.\n   * @api\n   */\n  getMaxResolution() {\n    return this.maxResolution_;\n  }\n\n  /**\n   * Get the minimum resolution of the view.\n   * @return {number} The minimum resolution of the view.\n   * @api\n   */\n  getMinResolution() {\n    return this.minResolution_;\n  }\n\n  /**\n   * Get the maximum zoom level for the view.\n   * @return {number} The maximum zoom level.\n   * @api\n   */\n  getMaxZoom() {\n    return /** @type {number} */ (\n      this.getZoomForResolution(this.minResolution_)\n    );\n  }\n\n  /**\n   * Set a new maximum zoom level for the view.\n   * @param {number} zoom The maximum zoom level.\n   * @api\n   */\n  setMaxZoom(zoom) {\n    this.applyOptions_(this.getUpdatedOptions_({maxZoom: zoom}));\n  }\n\n  /**\n   * Get the minimum zoom level for the view.\n   * @return {number} The minimum zoom level.\n   * @api\n   */\n  getMinZoom() {\n    return /** @type {number} */ (\n      this.getZoomForResolution(this.maxResolution_)\n    );\n  }\n\n  /**\n   * Set a new minimum zoom level for the view.\n   * @param {number} zoom The minimum zoom level.\n   * @api\n   */\n  setMinZoom(zoom) {\n    this.applyOptions_(this.getUpdatedOptions_({minZoom: zoom}));\n  }\n\n  /**\n   * Set whether the view should allow intermediary zoom levels.\n   * @param {boolean} enabled Whether the resolution is constrained.\n   * @api\n   */\n  setConstrainResolution(enabled) {\n    this.applyOptions_(this.getUpdatedOptions_({constrainResolution: enabled}));\n  }\n\n  /**\n   * Get the view projection.\n   * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n   * @api\n   */\n  getProjection() {\n    return this.projection_;\n  }\n\n  /**\n   * Get the view resolution.\n   * @return {number|undefined} The resolution of the view.\n   * @observable\n   * @api\n   */\n  getResolution() {\n    return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n  }\n\n  /**\n   * Get the resolutions for the view. This returns the array of resolutions\n   * passed to the constructor of the View, or undefined if none were given.\n   * @return {Array<number>|undefined} The resolutions of the view.\n   * @api\n   */\n  getResolutions() {\n    return this.resolutions_;\n  }\n\n  /**\n   * Get the resolution for a provided extent (in map units) and size (in pixels).\n   * @param {import(\"./extent.js\").Extent} extent Extent.\n   * @param {import(\"./size.js\").Size} [size] Box pixel size.\n   * @return {number} The resolution at which the provided extent will render at\n   *     the given size.\n   * @api\n   */\n  getResolutionForExtent(extent, size) {\n    return this.getResolutionForExtentInternal(\n      fromUserExtent(extent, this.getProjection()),\n      size,\n    );\n  }\n\n  /**\n   * Get the resolution for a provided extent (in map units) and size (in pixels).\n   * @param {import(\"./extent.js\").Extent} extent Extent.\n   * @param {import(\"./size.js\").Size} [size] Box pixel size.\n   * @return {number} The resolution at which the provided extent will render at\n   *     the given size.\n   */\n  getResolutionForExtentInternal(extent, size) {\n    size = size || this.getViewportSizeMinusPadding_();\n    const xResolution = getWidth(extent) / size[0];\n    const yResolution = getHeight(extent) / size[1];\n    return Math.max(xResolution, yResolution);\n  }\n\n  /**\n   * Return a function that returns a value between 0 and 1 for a\n   * resolution. Exponential scaling is assumed.\n   * @param {number} [power] Power.\n   * @return {function(number): number} Resolution for value function.\n   */\n  getResolutionForValueFunction(power) {\n    power = power || 2;\n    const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n    const minResolution = this.minResolution_;\n    const max = Math.log(maxResolution / minResolution) / Math.log(power);\n    return (\n      /**\n       * @param {number} value Value.\n       * @return {number} Resolution.\n       */\n      function (value) {\n        const resolution = maxResolution / Math.pow(power, value * max);\n        return resolution;\n      }\n    );\n  }\n\n  /**\n   * Get the view rotation.\n   * @return {number} The rotation of the view in radians.\n   * @observable\n   * @api\n   */\n  getRotation() {\n    return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n  }\n\n  /**\n   * Return a function that returns a resolution for a value between\n   * 0 and 1. Exponential scaling is assumed.\n   * @param {number} [power] Power.\n   * @return {function(number): number} Value for resolution function.\n   */\n  getValueForResolutionFunction(power) {\n    const logPower = Math.log(power || 2);\n    const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n    const minResolution = this.minResolution_;\n    const max = Math.log(maxResolution / minResolution) / logPower;\n    return (\n      /**\n       * @param {number} resolution Resolution.\n       * @return {number} Value.\n       */\n      function (resolution) {\n        const value = Math.log(maxResolution / resolution) / logPower / max;\n        return value;\n      }\n    );\n  }\n\n  /**\n   * Returns the size of the viewport minus padding.\n   * @private\n   * @param {number} [rotation] Take into account the rotation of the viewport when giving the size\n   * @return {import(\"./size.js\").Size} Viewport size reduced by the padding.\n   */\n  getViewportSizeMinusPadding_(rotation) {\n    let size = this.getViewportSize_(rotation);\n    const padding = this.padding_;\n    if (padding) {\n      size = [\n        size[0] - padding[1] - padding[3],\n        size[1] - padding[0] - padding[2],\n      ];\n    }\n    return size;\n  }\n\n  /**\n   * @return {State} View state.\n   */\n  getState() {\n    const projection = this.getProjection();\n    const resolution = this.getResolution();\n    const rotation = this.getRotation();\n    let center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n      this.getCenterInternal()\n    );\n    const padding = this.padding_;\n    if (padding) {\n      const reducedSize = this.getViewportSizeMinusPadding_();\n      center = calculateCenterOn(\n        center,\n        this.getViewportSize_(),\n        [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n        resolution,\n        rotation,\n      );\n    }\n    return {\n      center: center.slice(0),\n      projection: projection !== undefined ? projection : null,\n      resolution: resolution,\n      nextCenter: this.nextCenter_,\n      nextResolution: this.nextResolution_,\n      nextRotation: this.nextRotation_,\n      rotation: rotation,\n      zoom: this.getZoom(),\n    };\n  }\n\n  /**\n   * @return {ViewStateLayerStateExtent} Like `FrameState`, but just `viewState` and `extent`.\n   */\n  getViewStateAndExtent() {\n    return {\n      viewState: this.getState(),\n      extent: this.calculateExtent(),\n    };\n  }\n\n  /**\n   * Get the current zoom level. This method may return non-integer zoom levels\n   * if the view does not constrain the resolution, or if an interaction or\n   * animation is underway.\n   * @return {number|undefined} Zoom.\n   * @api\n   */\n  getZoom() {\n    let zoom;\n    const resolution = this.getResolution();\n    if (resolution !== undefined) {\n      zoom = this.getZoomForResolution(resolution);\n    }\n    return zoom;\n  }\n\n  /**\n   * Get the zoom level for a resolution.\n   * @param {number} resolution The resolution.\n   * @return {number|undefined} The zoom level for the provided resolution.\n   * @api\n   */\n  getZoomForResolution(resolution) {\n    let offset = this.minZoom_ || 0;\n    let max, zoomFactor;\n    if (this.resolutions_) {\n      const nearest = linearFindNearest(this.resolutions_, resolution, 1);\n      offset = nearest;\n      max = this.resolutions_[nearest];\n      if (nearest == this.resolutions_.length - 1) {\n        zoomFactor = 2;\n      } else {\n        zoomFactor = max / this.resolutions_[nearest + 1];\n      }\n    } else {\n      max = this.maxResolution_;\n      zoomFactor = this.zoomFactor_;\n    }\n    return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n  }\n\n  /**\n   * Get the resolution for a zoom level.\n   * @param {number} zoom Zoom level.\n   * @return {number} The view resolution for the provided zoom level.\n   * @api\n   */\n  getResolutionForZoom(zoom) {\n    if (this.resolutions_?.length) {\n      if (this.resolutions_.length === 1) {\n        return this.resolutions_[0];\n      }\n      const baseLevel = clamp(\n        Math.floor(zoom),\n        0,\n        this.resolutions_.length - 2,\n      );\n      const zoomFactor =\n        this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n      return (\n        this.resolutions_[baseLevel] /\n        Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1))\n      );\n    }\n    return (\n      this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_)\n    );\n  }\n\n  /**\n   * Fit the given geometry or extent based on the given map size and border.\n   * The size is pixel dimensions of the box to fit the extent into.\n   * In most cases you will want to use the map size, that is `map.getSize()`.\n   * Takes care of the map angle.\n   * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n   *     extent to fit the view to.\n   * @param {FitOptions} [options] Options.\n   * @api\n   */\n  fit(geometryOrExtent, options) {\n    /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n    let geometry;\n    assert(\n      Array.isArray(geometryOrExtent) ||\n        typeof (/** @type {?} */ (geometryOrExtent).getSimplifiedGeometry) ===\n          'function',\n      'Invalid extent or geometry provided as `geometry`',\n    );\n    if (Array.isArray(geometryOrExtent)) {\n      assert(\n        !isEmpty(geometryOrExtent),\n        'Cannot fit empty extent provided as `geometry`',\n      );\n      const extent = fromUserExtent(geometryOrExtent, this.getProjection());\n      geometry = polygonFromExtent(extent);\n    } else if (geometryOrExtent.getType() === 'Circle') {\n      const extent = fromUserExtent(\n        geometryOrExtent.getExtent(),\n        this.getProjection(),\n      );\n      geometry = polygonFromExtent(extent);\n      geometry.rotate(this.getRotation(), getCenter(extent));\n    } else {\n      const userProjection = getUserProjection();\n      if (userProjection) {\n        geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n          geometryOrExtent\n            .clone()\n            .transform(userProjection, this.getProjection())\n        );\n      } else {\n        geometry = geometryOrExtent;\n      }\n    }\n\n    this.fitInternal(geometry, options);\n  }\n\n  /**\n   * Calculate rotated extent\n   * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n   * @return {import(\"./extent\").Extent} The rotated extent for the geometry.\n   */\n  rotatedExtentForGeometry(geometry) {\n    const rotation = this.getRotation();\n    const cosAngle = Math.cos(rotation);\n    const sinAngle = Math.sin(-rotation);\n    const coords = geometry.getFlatCoordinates();\n    const stride = geometry.getStride();\n    let minRotX = +Infinity;\n    let minRotY = +Infinity;\n    let maxRotX = -Infinity;\n    let maxRotY = -Infinity;\n    for (let i = 0, ii = coords.length; i < ii; i += stride) {\n      const rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n      const rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n      minRotX = Math.min(minRotX, rotX);\n      minRotY = Math.min(minRotY, rotY);\n      maxRotX = Math.max(maxRotX, rotX);\n      maxRotY = Math.max(maxRotY, rotY);\n    }\n    return [minRotX, minRotY, maxRotX, maxRotY];\n  }\n\n  /**\n   * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n   * @param {FitOptions} [options] Options.\n   */\n  fitInternal(geometry, options) {\n    options = options || {};\n    let size = options.size;\n    if (!size) {\n      size = this.getViewportSizeMinusPadding_();\n    }\n    const padding =\n      options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n    const nearest = options.nearest !== undefined ? options.nearest : false;\n    let minResolution;\n    if (options.minResolution !== undefined) {\n      minResolution = options.minResolution;\n    } else if (options.maxZoom !== undefined) {\n      minResolution = this.getResolutionForZoom(options.maxZoom);\n    } else {\n      minResolution = 0;\n    }\n\n    const rotatedExtent = this.rotatedExtentForGeometry(geometry);\n\n    // calculate resolution\n    let resolution = this.getResolutionForExtentInternal(rotatedExtent, [\n      size[0] - padding[1] - padding[3],\n      size[1] - padding[0] - padding[2],\n    ]);\n    resolution = isNaN(resolution)\n      ? minResolution\n      : Math.max(resolution, minResolution);\n    resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n\n    // calculate center\n    const rotation = this.getRotation();\n    const sinAngle = Math.sin(rotation);\n    const cosAngle = Math.cos(rotation);\n    const centerRot = getCenter(rotatedExtent);\n    centerRot[0] += ((padding[1] - padding[3]) / 2) * resolution;\n    centerRot[1] += ((padding[0] - padding[2]) / 2) * resolution;\n    const centerX = centerRot[0] * cosAngle - centerRot[1] * sinAngle;\n    const centerY = centerRot[1] * cosAngle + centerRot[0] * sinAngle;\n    const center = this.getConstrainedCenter([centerX, centerY], resolution);\n    const callback = options.callback ? options.callback : VOID;\n\n    if (options.duration !== undefined) {\n      this.animateInternal(\n        {\n          resolution: resolution,\n          center: center,\n          duration: options.duration,\n          easing: options.easing,\n        },\n        callback,\n      );\n    } else {\n      this.targetResolution_ = resolution;\n      this.targetCenter_ = center;\n      this.applyTargetState_(false, true);\n      animationCallback(callback, true);\n    }\n  }\n\n  /**\n   * Center on coordinate and view position.\n   * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"./size.js\").Size} size Box pixel size.\n   * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n   * @api\n   */\n  centerOn(coordinate, size, position) {\n    this.centerOnInternal(\n      fromUserCoordinate(coordinate, this.getProjection()),\n      size,\n      position,\n    );\n  }\n\n  /**\n   * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"./size.js\").Size} size Box pixel size.\n   * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n   */\n  centerOnInternal(coordinate, size, position) {\n    this.setCenterInternal(\n      calculateCenterOn(\n        coordinate,\n        size,\n        position,\n        this.getResolution(),\n        this.getRotation(),\n      ),\n    );\n  }\n\n  /**\n   * Calculates the shift between map and viewport center.\n   * @param {import(\"./coordinate.js\").Coordinate} center Center.\n   * @param {number} resolution Resolution.\n   * @param {number} rotation Rotation.\n   * @param {import(\"./size.js\").Size} size Size.\n   * @return {Array<number>|undefined} Center shift.\n   */\n  calculateCenterShift(center, resolution, rotation, size) {\n    let centerShift;\n    const padding = this.padding_;\n    if (padding && center) {\n      const reducedSize = this.getViewportSizeMinusPadding_(-rotation);\n      const shiftedCenter = calculateCenterOn(\n        center,\n        size,\n        [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n        resolution,\n        rotation,\n      );\n      centerShift = [\n        center[0] - shiftedCenter[0],\n        center[1] - shiftedCenter[1],\n      ];\n    }\n    return centerShift;\n  }\n\n  /**\n   * @return {boolean} Is defined.\n   */\n  isDef() {\n    return !!this.getCenterInternal() && this.getResolution() !== undefined;\n  }\n\n  /**\n   * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n   * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n   * @api\n   */\n  adjustCenter(deltaCoordinates) {\n    const center = toUserCoordinate(this.targetCenter_, this.getProjection());\n    this.setCenter([\n      center[0] + deltaCoordinates[0],\n      center[1] + deltaCoordinates[1],\n    ]);\n  }\n\n  /**\n   * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n   * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n   */\n  adjustCenterInternal(deltaCoordinates) {\n    const center = this.targetCenter_;\n    this.setCenterInternal([\n      center[0] + deltaCoordinates[0],\n      center[1] + deltaCoordinates[1],\n    ]);\n  }\n\n  /**\n   * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n   * constraint will apply.\n   * @param {number} ratio The ratio to apply on the view resolution.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n   * @api\n   */\n  adjustResolution(ratio, anchor) {\n    anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n    this.adjustResolutionInternal(ratio, anchor);\n  }\n\n  /**\n   * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n   * constraint will apply.\n   * @param {number} ratio The ratio to apply on the view resolution.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n   */\n  adjustResolutionInternal(ratio, anchor) {\n    const isMoving = this.getAnimating() || this.getInteracting();\n    const size = this.getViewportSize_(this.getRotation());\n    const newResolution = this.constraints_.resolution(\n      this.targetResolution_ * ratio,\n      0,\n      size,\n      isMoving,\n    );\n\n    if (anchor) {\n      this.targetCenter_ = this.calculateCenterZoom(newResolution, anchor);\n    }\n\n    this.targetResolution_ *= ratio;\n    this.applyTargetState_();\n  }\n\n  /**\n   * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n   * constraint will apply.\n   * @param {number} delta Relative value to add to the zoom level.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n   * @api\n   */\n  adjustZoom(delta, anchor) {\n    this.adjustResolution(Math.pow(this.zoomFactor_, -delta), anchor);\n  }\n\n  /**\n   * Adds a value to the view rotation, optionally using an anchor. Any rotation\n   * constraint will apply.\n   * @param {number} delta Relative value to add to the zoom rotation, in radians.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The rotation center.\n   * @api\n   */\n  adjustRotation(delta, anchor) {\n    if (anchor) {\n      anchor = fromUserCoordinate(anchor, this.getProjection());\n    }\n    this.adjustRotationInternal(delta, anchor);\n  }\n\n  /**\n   * @param {number} delta Relative value to add to the zoom rotation, in radians.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The rotation center.\n   */\n  adjustRotationInternal(delta, anchor) {\n    const isMoving = this.getAnimating() || this.getInteracting();\n    const newRotation = this.constraints_.rotation(\n      this.targetRotation_ + delta,\n      isMoving,\n    );\n    if (anchor) {\n      this.targetCenter_ = this.calculateCenterRotate(newRotation, anchor);\n    }\n    this.targetRotation_ += delta;\n    this.applyTargetState_();\n  }\n\n  /**\n   * Set the center of the current view. Any extent constraint will apply.\n   * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n   * @observable\n   * @api\n   */\n  setCenter(center) {\n    this.setCenterInternal(\n      center ? fromUserCoordinate(center, this.getProjection()) : center,\n    );\n  }\n\n  /**\n   * Set the center using the view projection (not the user projection).\n   * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n   */\n  setCenterInternal(center) {\n    this.targetCenter_ = center;\n    this.applyTargetState_();\n  }\n\n  /**\n   * @param {import(\"./ViewHint.js\").default} hint Hint.\n   * @param {number} delta Delta.\n   * @return {number} New value.\n   */\n  setHint(hint, delta) {\n    this.hints_[hint] += delta;\n    this.changed();\n    return this.hints_[hint];\n  }\n\n  /**\n   * Set the resolution for this view. Any resolution constraint will apply.\n   * @param {number|undefined} resolution The resolution of the view.\n   * @observable\n   * @api\n   */\n  setResolution(resolution) {\n    this.targetResolution_ = resolution;\n    this.applyTargetState_();\n  }\n\n  /**\n   * Set the rotation for this view. Any rotation constraint will apply.\n   * @param {number} rotation The rotation of the view in radians.\n   * @observable\n   * @api\n   */\n  setRotation(rotation) {\n    this.targetRotation_ = rotation;\n    this.applyTargetState_();\n  }\n\n  /**\n   * Zoom to a specific zoom level. Any resolution constrain will apply.\n   * @param {number} zoom Zoom level.\n   * @api\n   */\n  setZoom(zoom) {\n    this.setResolution(this.getResolutionForZoom(zoom));\n  }\n\n  /**\n   * Recompute rotation/resolution/center based on target values.\n   * Note: we have to compute rotation first, then resolution and center considering that\n   * parameters can influence one another in case a view extent constraint is present.\n   * @param {boolean} [doNotCancelAnims] Do not cancel animations.\n   * @param {boolean} [forceMoving] Apply constraints as if the view is moving.\n   * @private\n   */\n  applyTargetState_(doNotCancelAnims, forceMoving) {\n    const isMoving =\n      this.getAnimating() || this.getInteracting() || forceMoving;\n\n    // compute rotation\n    const newRotation = this.constraints_.rotation(\n      this.targetRotation_,\n      isMoving,\n    );\n    const size = this.getViewportSize_(newRotation);\n    const newResolution = this.constraints_.resolution(\n      this.targetResolution_,\n      0,\n      size,\n      isMoving,\n    );\n    const newCenter = this.constraints_.center(\n      this.targetCenter_,\n      newResolution,\n      size,\n      isMoving,\n      this.calculateCenterShift(\n        this.targetCenter_,\n        newResolution,\n        newRotation,\n        size,\n      ),\n    );\n\n    if (this.get(ViewProperty.ROTATION) !== newRotation) {\n      this.set(ViewProperty.ROTATION, newRotation);\n    }\n    if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n      this.set(ViewProperty.RESOLUTION, newResolution);\n      this.set('zoom', this.getZoom(), true);\n    }\n    if (\n      !newCenter ||\n      !this.get(ViewProperty.CENTER) ||\n      !equals(this.get(ViewProperty.CENTER), newCenter)\n    ) {\n      this.set(ViewProperty.CENTER, newCenter);\n    }\n\n    if (this.getAnimating() && !doNotCancelAnims) {\n      this.cancelAnimations();\n    }\n    this.cancelAnchor_ = undefined;\n  }\n\n  /**\n   * If any constraints need to be applied, an animation will be triggered.\n   * This is typically done on interaction end.\n   * Note: calling this with a duration of 0 will apply the constrained values straight away,\n   * without animation.\n   * @param {number} [duration] The animation duration in ms.\n   * @param {number} [resolutionDirection] Which direction to zoom.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n   */\n  resolveConstraints(duration, resolutionDirection, anchor) {\n    duration = duration !== undefined ? duration : 200;\n    const direction = resolutionDirection || 0;\n\n    const newRotation = this.constraints_.rotation(this.targetRotation_);\n    const size = this.getViewportSize_(newRotation);\n    const newResolution = this.constraints_.resolution(\n      this.targetResolution_,\n      direction,\n      size,\n    );\n    const newCenter = this.constraints_.center(\n      this.targetCenter_,\n      newResolution,\n      size,\n      false,\n      this.calculateCenterShift(\n        this.targetCenter_,\n        newResolution,\n        newRotation,\n        size,\n      ),\n    );\n\n    if (duration === 0 && !this.cancelAnchor_) {\n      this.targetResolution_ = newResolution;\n      this.targetRotation_ = newRotation;\n      this.targetCenter_ = newCenter;\n      this.applyTargetState_();\n      return;\n    }\n\n    anchor = anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n    this.cancelAnchor_ = undefined;\n\n    if (\n      this.getResolution() !== newResolution ||\n      this.getRotation() !== newRotation ||\n      !this.getCenterInternal() ||\n      !equals(this.getCenterInternal(), newCenter)\n    ) {\n      if (this.getAnimating()) {\n        this.cancelAnimations();\n      }\n\n      this.animateInternal({\n        rotation: newRotation,\n        center: newCenter,\n        resolution: newResolution,\n        duration: duration,\n        easing: easeOut,\n        anchor: anchor,\n      });\n    }\n  }\n\n  /**\n   * Notify the View that an interaction has started.\n   * The view state will be resolved to a stable one if needed\n   * (depending on its constraints).\n   * @api\n   */\n  beginInteraction() {\n    this.resolveConstraints(0);\n\n    this.setHint(ViewHint.INTERACTING, 1);\n  }\n\n  /**\n   * Notify the View that an interaction has ended. The view state will be resolved\n   * to a stable one if needed (depending on its constraints).\n   * @param {number} [duration] Animation duration in ms.\n   * @param {number} [resolutionDirection] Which direction to zoom.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n   * @api\n   */\n  endInteraction(duration, resolutionDirection, anchor) {\n    anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n    this.endInteractionInternal(duration, resolutionDirection, anchor);\n  }\n\n  /**\n   * Notify the View that an interaction has ended. The view state will be resolved\n   * to a stable one if needed (depending on its constraints).\n   * @param {number} [duration] Animation duration in ms.\n   * @param {number} [resolutionDirection] Which direction to zoom.\n   * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n   */\n  endInteractionInternal(duration, resolutionDirection, anchor) {\n    if (!this.getInteracting()) {\n      return;\n    }\n    this.setHint(ViewHint.INTERACTING, -1);\n    this.resolveConstraints(duration, resolutionDirection, anchor);\n  }\n\n  /**\n   * Get a valid position for the view center according to the current constraints.\n   * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n   * @param {number} [targetResolution] Target resolution. If not supplied, the current one will be used.\n   * This is useful to guess a valid center position at a different zoom level.\n   * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n   */\n  getConstrainedCenter(targetCenter, targetResolution) {\n    const size = this.getViewportSize_(this.getRotation());\n    return this.constraints_.center(\n      targetCenter,\n      targetResolution || this.getResolution(),\n      size,\n    );\n  }\n\n  /**\n   * Get a valid zoom level according to the current view constraints.\n   * @param {number|undefined} targetZoom Target zoom.\n   * @param {number} [direction] Indicate which resolution should be used\n   * by a renderer if the view resolution does not match any resolution of the tile source.\n   * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n   * will be used. If -1, the nearest higher resolution will be used.\n   * @return {number|undefined} Valid zoom level.\n   */\n  getConstrainedZoom(targetZoom, direction) {\n    const targetRes = this.getResolutionForZoom(targetZoom);\n    return this.getZoomForResolution(\n      this.getConstrainedResolution(targetRes, direction),\n    );\n  }\n\n  /**\n   * Get a valid resolution according to the current view constraints.\n   * @param {number|undefined} targetResolution Target resolution.\n   * @param {number} [direction] Indicate which resolution should be used\n   * by a renderer if the view resolution does not match any resolution of the tile source.\n   * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n   * will be used. If -1, the nearest higher resolution will be used.\n   * @return {number|undefined} Valid resolution.\n   */\n  getConstrainedResolution(targetResolution, direction) {\n    direction = direction || 0;\n    const size = this.getViewportSize_(this.getRotation());\n\n    return this.constraints_.resolution(targetResolution, direction, size);\n  }\n}\n\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n  setTimeout(function () {\n    callback(returnValue);\n  }, 0);\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n  if (options.extent !== undefined) {\n    const smooth =\n      options.smoothExtentConstraint !== undefined\n        ? options.smoothExtentConstraint\n        : true;\n    return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n  }\n\n  const projection = createProjection(options.projection, 'EPSG:3857');\n  if (options.multiWorld !== true && projection.isGlobal()) {\n    const extent = projection.getExtent().slice();\n    extent[0] = -Infinity;\n    extent[2] = Infinity;\n    return createExtent(extent, false, false);\n  }\n\n  return centerNone;\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n *     minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n  let resolutionConstraint;\n  let maxResolution;\n  let minResolution;\n\n  // TODO: move these to be ol constants\n  // see https://github.com/openlayers/openlayers/issues/2076\n  const defaultMaxZoom = 28;\n  const defaultZoomFactor = 2;\n\n  let minZoom =\n    options.minZoom !== undefined ? options.minZoom : DEFAULT_MIN_ZOOM;\n\n  let maxZoom =\n    options.maxZoom !== undefined ? options.maxZoom : defaultMaxZoom;\n\n  const zoomFactor =\n    options.zoomFactor !== undefined ? options.zoomFactor : defaultZoomFactor;\n\n  const multiWorld =\n    options.multiWorld !== undefined ? options.multiWorld : false;\n\n  const smooth =\n    options.smoothResolutionConstraint !== undefined\n      ? options.smoothResolutionConstraint\n      : true;\n\n  const showFullExtent =\n    options.showFullExtent !== undefined ? options.showFullExtent : false;\n\n  const projection = createProjection(options.projection, 'EPSG:3857');\n  const projExtent = projection.getExtent();\n  let constrainOnlyCenter = options.constrainOnlyCenter;\n  let extent = options.extent;\n  if (!multiWorld && !extent && projection.isGlobal()) {\n    constrainOnlyCenter = false;\n    extent = projExtent;\n  }\n\n  if (options.resolutions !== undefined) {\n    const resolutions = options.resolutions;\n    maxResolution = resolutions[minZoom];\n    minResolution =\n      resolutions[maxZoom] !== undefined\n        ? resolutions[maxZoom]\n        : resolutions[resolutions.length - 1];\n\n    if (options.constrainResolution) {\n      resolutionConstraint = createSnapToResolutions(\n        resolutions,\n        smooth,\n        !constrainOnlyCenter && extent,\n        showFullExtent,\n      );\n    } else {\n      resolutionConstraint = createMinMaxResolution(\n        maxResolution,\n        minResolution,\n        smooth,\n        !constrainOnlyCenter && extent,\n        showFullExtent,\n      );\n    }\n  } else {\n    // calculate the default min and max resolution\n    const size = !projExtent\n      ? // use an extent that can fit the whole world if need be\n        (360 * METERS_PER_UNIT.degrees) / projection.getMetersPerUnit()\n      : Math.max(getWidth(projExtent), getHeight(projExtent));\n\n    const defaultMaxResolution =\n      size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n\n    const defaultMinResolution =\n      defaultMaxResolution /\n      Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n\n    // user provided maxResolution takes precedence\n    maxResolution = options.maxResolution;\n    if (maxResolution !== undefined) {\n      minZoom = 0;\n    } else {\n      maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n    }\n\n    // user provided minResolution takes precedence\n    minResolution = options.minResolution;\n    if (minResolution === undefined) {\n      if (options.maxZoom !== undefined) {\n        if (options.maxResolution !== undefined) {\n          minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n        } else {\n          minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n        }\n      } else {\n        minResolution = defaultMinResolution;\n      }\n    }\n\n    // given discrete zoom levels, minResolution may be different than provided\n    maxZoom =\n      minZoom +\n      Math.floor(\n        Math.log(maxResolution / minResolution) / Math.log(zoomFactor),\n      );\n    minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n\n    if (options.constrainResolution) {\n      resolutionConstraint = createSnapToPower(\n        zoomFactor,\n        maxResolution,\n        minResolution,\n        smooth,\n        !constrainOnlyCenter && extent,\n        showFullExtent,\n      );\n    } else {\n      resolutionConstraint = createMinMaxResolution(\n        maxResolution,\n        minResolution,\n        smooth,\n        !constrainOnlyCenter && extent,\n        showFullExtent,\n      );\n    }\n  }\n  return {\n    constraint: resolutionConstraint,\n    maxResolution: maxResolution,\n    minResolution: minResolution,\n    minZoom: minZoom,\n    zoomFactor: zoomFactor,\n  };\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n  const enableRotation =\n    options.enableRotation !== undefined ? options.enableRotation : true;\n  if (enableRotation) {\n    const constrainRotation = options.constrainRotation;\n    if (constrainRotation === undefined || constrainRotation === true) {\n      return createSnapToZero();\n    }\n    if (constrainRotation === false) {\n      return rotationNone;\n    }\n    if (typeof constrainRotation === 'number') {\n      return createSnapToN(constrainRotation);\n    }\n    return rotationNone;\n  }\n  return disable;\n}\n\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n  if (animation.sourceCenter && animation.targetCenter) {\n    if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n      return false;\n    }\n  }\n  if (animation.sourceResolution !== animation.targetResolution) {\n    return false;\n  }\n  if (animation.sourceRotation !== animation.targetRotation) {\n    return false;\n  }\n  return true;\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @return {import(\"./coordinate.js\").Coordinate} Shifted center.\n */\nfunction calculateCenterOn(coordinate, size, position, resolution, rotation) {\n  // calculate rotated position\n  const cosAngle = Math.cos(-rotation);\n  let sinAngle = Math.sin(-rotation);\n  let rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n  let rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n  rotX += (size[0] / 2 - position[0]) * resolution;\n  rotY += (position[1] - size[1] / 2) * resolution;\n\n  // go back to original angle\n  sinAngle = -sinAngle; // go back to original rotation\n  const centerX = rotX * cosAngle - rotY * sinAngle;\n  const centerY = rotY * cosAngle + rotX * sinAngle;\n\n  return [centerX, centerY];\n}\n\nexport default View;\n\n/**\n * @typedef {function(ViewOptions):ViewOptions} ViewTransform\n */\n\n/**\n * Adds higher resolutions.\n * @param {number} num The number of higher resolution levels to use.\n * @return {ViewTransform} A view transform.\n */\nexport function withHigherResolutions(num) {\n  return function (options) {\n    if (!options.resolutions) {\n      return options;\n    }\n    const resolutions = [...options.resolutions];\n    const highest = resolutions[resolutions.length - 1];\n    for (let i = 0; i < num; ++i) {\n      resolutions.push(highest / Math.pow(2, i + 1));\n    }\n    return {\n      ...options,\n      resolutions,\n    };\n  };\n}\n\n/**\n * Adds lower resolutions.\n * @param {number} num The number of lower resolution levels to use.\n * @return {ViewTransform} A view transform.\n * @api\n */\nexport function withLowerResolutions(num) {\n  return function (options) {\n    if (!options.resolutions) {\n      return options;\n    }\n    const resolutions = [...options.resolutions];\n    const lowest = resolutions[0];\n    for (let i = 0; i < num; ++i) {\n      resolutions.unshift(lowest * Math.pow(2, i + 1));\n    }\n    return {\n      ...options,\n      resolutions,\n    };\n  };\n}\n\n/**\n * Applies a center based on the extent.\n * @return {ViewTransform} A view transform.\n * @api\n */\nexport function withExtentCenter() {\n  return function (options) {\n    if (!options.extent) {\n      return options;\n    }\n    const center = getCenter(options.extent);\n    const newOptions = {...options, center};\n    delete newOptions.extent;\n    return newOptions;\n  };\n}\n\n/**\n * Applies a zoom level.\n * @param {number} z The zoom level.\n * @return {ViewTransform} A view transform.\n * @api\n */\nexport function withZoom(z) {\n  return function (options) {\n    return {...options, zoom: z};\n  };\n}\n\n/**\n * Applies a series of transforms to a view that is resolved from a source.\n * @param {import(\"./source/Source.js\").default} source The source.\n * @param {...ViewTransform} transforms The transforms to apply.\n * @return {Promise<ViewOptions>} The view options.\n * @api\n */\nexport async function getView(source, ...transforms) {\n  let config = await source.getView();\n  for (const transform of transforms) {\n    config = transform(config);\n  }\n  return config;\n}\n","/**\n * @module ol/layer/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  OPACITY: 'opacity',\n  VISIBLE: 'visible',\n  EXTENT: 'extent',\n  Z_INDEX: 'zIndex',\n  MAX_RESOLUTION: 'maxResolution',\n  MIN_RESOLUTION: 'minResolution',\n  MAX_ZOOM: 'maxZoom',\n  MIN_ZOOM: 'minZoom',\n  SOURCE: 'source',\n  MAP: 'map',\n};\n","/**\n * @module ol/layer/Base\n */\nimport BaseObject from '../Object.js';\nimport {assert} from '../asserts.js';\nimport {clamp} from '../math.js';\nimport {abstract} from '../util.js';\nimport LayerProperty from './Property.js';\n\n/**\n * A css color, or a function called with a view resolution returning a css color.\n *\n * @typedef {string|function(number):string} BackgroundColor\n * @api\n */\n\n/**\n * @typedef {import(\"../ObjectEventType\").Types|'change:extent'|'change:maxResolution'|'change:maxZoom'|\n *    'change:minResolution'|'change:minZoom'|'change:opacity'|'change:visible'|'change:zIndex'} BaseLayerObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<BaseLayerObjectEventTypes, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|BaseLayerObjectEventTypes, Return>} BaseLayerOnSignature\n */\n\n/**\n * @template {Object<string, *>} [Properties=Object<string, *>]\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering.  The layer will not be\n * rendered outside of this extent.\n * @property {number | undefined} [zIndex] The z-index for layer rendering.  At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {Properties} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base~BaseLayer} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object~BaseObject} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n * @template {Object<string, *>} [Properties=Object<string, *>]\n * @extends {BaseObject<NoInfer<Properties> & Object<string, *>>}\n */\nclass BaseLayer extends BaseObject {\n  /**\n   * @param {Options<NoInfer<Properties>>} options Layer options.\n   */\n  constructor(options) {\n    super();\n\n    /***\n     * @type {BaseLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {BaseLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {BaseLayerOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @type {BackgroundColor|false}\n     * @private\n     */\n    this.background_ = options.background;\n\n    /**\n     * @type {?}\n     */\n    const properties = Object.assign({}, options);\n    if (typeof options.properties === 'object') {\n      delete properties.properties;\n      Object.assign(properties, options.properties);\n    }\n\n    properties[LayerProperty.OPACITY] =\n      options.opacity !== undefined ? options.opacity : 1;\n    assert(\n      typeof properties[LayerProperty.OPACITY] === 'number',\n      'Layer opacity must be a number',\n    );\n\n    properties[LayerProperty.VISIBLE] =\n      options.visible !== undefined ? options.visible : true;\n    properties[LayerProperty.Z_INDEX] = options.zIndex;\n    properties[LayerProperty.MAX_RESOLUTION] =\n      options.maxResolution !== undefined ? options.maxResolution : Infinity;\n    properties[LayerProperty.MIN_RESOLUTION] =\n      options.minResolution !== undefined ? options.minResolution : 0;\n    properties[LayerProperty.MIN_ZOOM] =\n      options.minZoom !== undefined ? options.minZoom : -Infinity;\n    properties[LayerProperty.MAX_ZOOM] =\n      options.maxZoom !== undefined ? options.maxZoom : Infinity;\n\n    /**\n     * @type {string}\n     * @private\n     */\n    this.className_ =\n      properties.className !== undefined ? properties.className : 'ol-layer';\n    delete properties.className;\n\n    this.setProperties(properties);\n\n    /**\n     * @type {import(\"./Layer.js\").State}\n     * @private\n     */\n    this.state_ = null;\n  }\n\n  /**\n   * Get the background for this layer.\n   * @return {BackgroundColor|false} Layer background.\n   */\n  getBackground() {\n    return this.background_;\n  }\n\n  /**\n   * @return {string} CSS class name.\n   */\n  getClassName() {\n    return this.className_;\n  }\n\n  /**\n   * This method is not meant to be called by layers or layer renderers because the state\n   * is incorrect if the layer is included in a layer group.\n   *\n   * @param {boolean} [managed] Layer is managed.\n   * @return {import(\"./Layer.js\").State} Layer state.\n   */\n  getLayerState(managed) {\n    /** @type {import(\"./Layer.js\").State} */\n    const state =\n      this.state_ ||\n      /** @type {?} */ ({\n        layer: this,\n        managed: managed === undefined ? true : managed,\n      });\n    const zIndex = this.getZIndex();\n    state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n    state.visible = this.getVisible();\n    state.extent = this.getExtent();\n    state.zIndex = zIndex === undefined && !state.managed ? Infinity : zIndex;\n    state.maxResolution = this.getMaxResolution();\n    state.minResolution = Math.max(this.getMinResolution(), 0);\n    state.minZoom = this.getMinZoom();\n    state.maxZoom = this.getMaxZoom();\n    this.state_ = state;\n\n    return state;\n  }\n\n  /**\n   * @abstract\n   * @param {Array<import(\"./Layer.js\").default>} [array] Array of layers (to be\n   *     modified in place).\n   * @return {Array<import(\"./Layer.js\").default>} Array of layers.\n   */\n  getLayersArray(array) {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @param {Array<import(\"./Layer.js\").State>} [states] Optional list of layer\n   *     states (to be modified in place).\n   * @return {Array<import(\"./Layer.js\").State>} List of layer states.\n   */\n  getLayerStatesArray(states) {\n    return abstract();\n  }\n\n  /**\n   * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n   * will be visible regardless of extent.\n   * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n   * @observable\n   * @api\n   */\n  getExtent() {\n    return /** @type {import(\"../extent.js\").Extent|undefined} */ (\n      this.get(LayerProperty.EXTENT)\n    );\n  }\n\n  /**\n   * Return the maximum resolution of the layer. Returns Infinity if\n   * the layer has no maximum resolution set.\n   * @return {number} The maximum resolution of the layer.\n   * @observable\n   * @api\n   */\n  getMaxResolution() {\n    return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n  }\n\n  /**\n   * Return the minimum resolution of the layer. Returns 0 if\n   * the layer has no minimum resolution set.\n   * @return {number} The minimum resolution of the layer.\n   * @observable\n   * @api\n   */\n  getMinResolution() {\n    return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n  }\n\n  /**\n   * Return the minimum zoom level of the layer. Returns -Infinity if\n   * the layer has no minimum zoom set.\n   * @return {number} The minimum zoom level of the layer.\n   * @observable\n   * @api\n   */\n  getMinZoom() {\n    return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\n  }\n\n  /**\n   * Return the maximum zoom level of the layer. Returns Infinity if\n   * the layer has no maximum zoom set.\n   * @return {number} The maximum zoom level of the layer.\n   * @observable\n   * @api\n   */\n  getMaxZoom() {\n    return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\n  }\n\n  /**\n   * Return the opacity of the layer (between 0 and 1).\n   * @return {number} The opacity of the layer.\n   * @observable\n   * @api\n   */\n  getOpacity() {\n    return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n  }\n\n  /**\n   * @abstract\n   * @return {import(\"../source/Source.js\").State} Source state.\n   */\n  getSourceState() {\n    return abstract();\n  }\n\n  /**\n   * Return the value of this layer's `visible` property. To find out whether the layer\n   * is visible on a map, use `isVisible()` instead.\n   * @return {boolean} The value of the `visible` property of the layer.\n   * @observable\n   * @api\n   */\n  getVisible() {\n    return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n  }\n\n  /**\n   * Return the Z-index of the layer, which is used to order layers before\n   * rendering. Returns undefined if the layer is unmanaged.\n   * @return {number|undefined} The Z-index of the layer.\n   * @observable\n   * @api\n   */\n  getZIndex() {\n    return /** @type {number|undefined} */ (this.get(LayerProperty.Z_INDEX));\n  }\n\n  /**\n   * Sets the background color.\n   * @param {BackgroundColor} [background] Background color.\n   */\n  setBackground(background) {\n    this.background_ = background;\n    this.changed();\n  }\n\n  /**\n   * Set the extent at which the layer is visible.  If `undefined`, the layer\n   * will be visible at all extents.\n   * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n   * @observable\n   * @api\n   */\n  setExtent(extent) {\n    this.set(LayerProperty.EXTENT, extent);\n  }\n\n  /**\n   * Set the maximum resolution at which the layer is visible.\n   * @param {number} maxResolution The maximum resolution of the layer.\n   * @observable\n   * @api\n   */\n  setMaxResolution(maxResolution) {\n    this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n  }\n\n  /**\n   * Set the minimum resolution at which the layer is visible.\n   * @param {number} minResolution The minimum resolution of the layer.\n   * @observable\n   * @api\n   */\n  setMinResolution(minResolution) {\n    this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n  }\n\n  /**\n   * Set the maximum zoom (exclusive) at which the layer is visible.\n   * Note that the zoom levels for layer visibility are based on the\n   * view zoom level, which may be different from a tile source zoom level.\n   * @param {number} maxZoom The maximum zoom of the layer.\n   * @observable\n   * @api\n   */\n  setMaxZoom(maxZoom) {\n    this.set(LayerProperty.MAX_ZOOM, maxZoom);\n  }\n\n  /**\n   * Set the minimum zoom (inclusive) at which the layer is visible.\n   * Note that the zoom levels for layer visibility are based on the\n   * view zoom level, which may be different from a tile source zoom level.\n   * @param {number} minZoom The minimum zoom of the layer.\n   * @observable\n   * @api\n   */\n  setMinZoom(minZoom) {\n    this.set(LayerProperty.MIN_ZOOM, minZoom);\n  }\n\n  /**\n   * Set the opacity of the layer, allowed values range from 0 to 1.\n   * @param {number} opacity The opacity of the layer.\n   * @observable\n   * @api\n   */\n  setOpacity(opacity) {\n    assert(typeof opacity === 'number', 'Layer opacity must be a number');\n    this.set(LayerProperty.OPACITY, opacity);\n  }\n\n  /**\n   * Set the visibility of the layer (`true` or `false`).\n   * @param {boolean} visible The visibility of the layer.\n   * @observable\n   * @api\n   */\n  setVisible(visible) {\n    this.set(LayerProperty.VISIBLE, visible);\n  }\n\n  /**\n   * Set Z-index of the layer, which is used to order layers before rendering.\n   * The default Z-index is 0.\n   * @param {number} zindex The z-index of the layer.\n   * @observable\n   * @api\n   */\n  setZIndex(zindex) {\n    this.set(LayerProperty.Z_INDEX, zindex);\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    if (this.state_) {\n      this.state_.layer = null;\n      this.state_ = null;\n    }\n    super.disposeInternal();\n  }\n}\n\nexport default BaseLayer;\n","/**\n * @module ol/layer/Layer\n */\nimport View from '../View.js';\nimport {assert} from '../asserts.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {intersects} from '../extent.js';\nimport RenderEventType from '../render/EventType.js';\nimport BaseLayer from './Base.js';\nimport LayerProperty from './Property.js';\n\n/**\n * @typedef {function(import(\"../Map.js\").FrameState):HTMLElement} RenderFunction\n */\n\n/**\n * @typedef {'sourceready'|'change:source'} LayerEventType\n */\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./Base\").BaseLayerObjectEventTypes|\n *     LayerEventType, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../render/EventType\").LayerRenderEventTypes, import(\"../render/Event\").default, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"./Base\").BaseLayerObjectEventTypes|LayerEventType|\n *     import(\"../render/EventType\").LayerRenderEventTypes, Return>} LayerOnSignature\n */\n\n/**\n * @template {import(\"../source/Source.js\").default} [SourceType=import(\"../source/Source.js\").default]\n * @template {Object<string, *>} [Properties=Object<string, *>]\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering.  The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering.  At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {SourceType} [source] Source for this layer.  If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer~Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../Map.js\").default|null} [map] Map.\n * @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return an\n * HTML element. Will overwrite the default rendering for the layer.\n * @property {Properties} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @typedef {Object} State\n * @property {import(\"./Layer.js\").default} layer Layer.\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {boolean} visible Visible.\n * @property {boolean} managed Managed.\n * @property {import(\"../extent.js\").Extent} [extent] Extent.\n * @property {number} zIndex ZIndex.\n * @property {number} maxResolution Maximum resolution.\n * @property {number} minResolution Minimum resolution.\n * @property {number} minZoom Minimum zoom.\n * @property {number} maxZoom Maximum zoom.\n */\n\n/**\n * @classdesc\n * Base class from which all layer types are derived. This should only be instantiated\n * in the case where a custom layer is added to the map with a custom `render` function.\n * Such a function can be specified in the `options` object, and is expected to return an HTML element.\n *\n * A visual representation of raster or vector map data.\n * Layers group together those properties that pertain to how the data is to be\n * displayed, irrespective of the source of that data.\n *\n * Layers are usually added to a map with [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * Components like {@link module:ol/interaction/Draw~Draw} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * [layer.setMap()]{@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n * A `sourceready` event is fired when the layer's source is ready.\n *\n * @fires import(\"../render/Event.js\").RenderEvent#prerender\n * @fires import(\"../render/Event.js\").RenderEvent#postrender\n * @fires import(\"../events/Event.js\").BaseEvent#sourceready\n *\n * @template {import(\"../source/Source.js\").default} [SourceType=import(\"../source/Source.js\").default]\n * @template {import(\"../renderer/Layer.js\").default} [RendererType=import(\"../renderer/Layer.js\").default]\n * @template {Object<string, *>} [Properties=Object<string, *>]\n * @extends {BaseLayer<NoInfer<Properties>>}\n * @api\n */\nclass Layer extends BaseLayer {\n  /**\n   * @param {Options<SourceType, NoInfer<Properties>>} options Layer options.\n   */\n  constructor(options) {\n    const baseOptions = Object.assign({}, options);\n    delete baseOptions.source;\n\n    super(baseOptions);\n\n    /***\n     * @type {LayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {LayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {LayerOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {?import(\"../events.js\").EventsKey}\n     */\n    this.mapPrecomposeKey_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"../events.js\").EventsKey}\n     */\n    this.mapRenderKey_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"../events.js\").EventsKey}\n     */\n    this.sourceChangeKey_ = null;\n\n    /**\n     * @private\n     * @type {RendererType}\n     */\n    this.renderer_ = null;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.sourceReady_ = false;\n\n    /**\n     * @protected\n     * @type {boolean}\n     */\n    this.rendered = false;\n\n    // Overwrite default render method with a custom one\n    if (options.render) {\n      this.render = options.render;\n    }\n\n    if (options.map) {\n      this.setMap(options.map);\n    }\n\n    this.addChangeListener(\n      LayerProperty.SOURCE,\n      this.handleSourcePropertyChange_,\n    );\n\n    const source = options.source\n      ? /** @type {SourceType} */ (options.source)\n      : null;\n    this.setSource(source);\n  }\n\n  /**\n   * @param {Array<import(\"./Layer.js\").default>} [array] Array of layers (to be modified in place).\n   * @return {Array<import(\"./Layer.js\").default>} Array of layers.\n   * @override\n   */\n  getLayersArray(array) {\n    array = array ? array : [];\n    array.push(this);\n    return array;\n  }\n\n  /**\n   * @param {Array<import(\"./Layer.js\").State>} [states] Optional list of layer states (to be modified in place).\n   * @return {Array<import(\"./Layer.js\").State>} List of layer states.\n   * @override\n   */\n  getLayerStatesArray(states) {\n    states = states ? states : [];\n    states.push(this.getLayerState());\n    return states;\n  }\n\n  /**\n   * Get the layer source.\n   * @return {SourceType|null} The layer source (or `null` if not yet set).\n   * @observable\n   * @api\n   */\n  getSource() {\n    return /** @type {SourceType} */ (this.get(LayerProperty.SOURCE)) || null;\n  }\n\n  /**\n   * @return {SourceType|null} The source being rendered.\n   */\n  getRenderSource() {\n    return this.getSource();\n  }\n\n  /**\n   * @return {import(\"../source/Source.js\").State} Source state.\n   * @override\n   */\n  getSourceState() {\n    const source = this.getSource();\n    return !source ? 'undefined' : source.getState();\n  }\n\n  /**\n   * @private\n   */\n  handleSourceChange_() {\n    this.changed();\n    if (this.sourceReady_ || this.getSource().getState() !== 'ready') {\n      return;\n    }\n    this.sourceReady_ = true;\n    this.dispatchEvent('sourceready');\n  }\n\n  /**\n   * @private\n   */\n  handleSourcePropertyChange_() {\n    if (this.sourceChangeKey_) {\n      unlistenByKey(this.sourceChangeKey_);\n      this.sourceChangeKey_ = null;\n    }\n    this.sourceReady_ = false;\n    const source = this.getSource();\n    if (source) {\n      this.sourceChangeKey_ = listen(\n        source,\n        EventType.CHANGE,\n        this.handleSourceChange_,\n        this,\n      );\n      if (source.getState() === 'ready') {\n        this.sourceReady_ = true;\n        setTimeout(() => {\n          this.dispatchEvent('sourceready');\n        }, 0);\n      }\n    }\n    this.changed();\n  }\n\n  /**\n   * @param {import(\"../pixel\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../Feature\").FeatureLike>>} Promise that resolves with\n   * an array of features.\n   */\n  getFeatures(pixel) {\n    if (!this.renderer_) {\n      return Promise.resolve([]);\n    }\n    return this.renderer_.getFeatures(pixel);\n  }\n\n  /**\n   * @param {import(\"../pixel\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n   */\n  getData(pixel) {\n    if (!this.renderer_ || !this.rendered) {\n      return null;\n    }\n    return this.renderer_.getData(pixel);\n  }\n\n  /**\n   * The layer is visible on the map view, i.e. within its min/max resolution or zoom and\n   * extent, not set to `visible: false`, and not inside a layer group that is set\n   * to `visible: false`.\n   * @param {View|import(\"../View.js\").ViewStateLayerStateExtent} [view] View or {@link import(\"../Map.js\").FrameState}.\n   * Only required when the layer is not added to a map.\n   * @return {boolean} The layer is visible in the map view.\n   * @api\n   */\n  isVisible(view) {\n    let frameState;\n    const map = this.getMapInternal();\n    if (!view && map) {\n      view = map.getView();\n    }\n    if (view instanceof View) {\n      frameState = {\n        viewState: view.getState(),\n        extent: view.calculateExtent(),\n      };\n    } else {\n      frameState = view;\n    }\n    if (!frameState.layerStatesArray && map) {\n      frameState.layerStatesArray = map.getLayerGroup().getLayerStatesArray();\n    }\n    let layerState;\n    if (frameState.layerStatesArray) {\n      layerState = frameState.layerStatesArray.find(\n        (layerState) => layerState.layer === this,\n      );\n      if (!layerState) {\n        return false;\n      }\n    } else {\n      layerState = this.getLayerState();\n    }\n\n    const layerExtent = this.getExtent();\n\n    return (\n      inView(layerState, frameState.viewState) &&\n      (!layerExtent || intersects(layerExtent, frameState.extent))\n    );\n  }\n\n  /**\n   * Get the attributions of the source of this layer for the given view.\n   * @param {View|import(\"../View.js\").ViewStateLayerStateExtent} [view] View or {@link import(\"../Map.js\").FrameState}.\n   * Only required when the layer is not added to a map.\n   * @return {Array<string>} Attributions for this layer at the given view.\n   * @api\n   */\n  getAttributions(view) {\n    if (!this.isVisible(view)) {\n      return [];\n    }\n    const getAttributions = this.getSource()?.getAttributions();\n    if (!getAttributions) {\n      return [];\n    }\n    const frameState =\n      view instanceof View ? view.getViewStateAndExtent() : view;\n    let attributions = getAttributions(frameState);\n    if (!Array.isArray(attributions)) {\n      attributions = [attributions];\n    }\n    return attributions;\n  }\n\n  /**\n   * In charge to manage the rendering of the layer. One layer type is\n   * bounded with one layer renderer.\n   * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement} target Target which the renderer may (but need not) use\n   * for rendering its content.\n   * @return {HTMLElement|null} The rendered element.\n   */\n  render(frameState, target) {\n    const layerRenderer = this.getRenderer();\n\n    if (layerRenderer.prepareFrame(frameState)) {\n      this.rendered = true;\n      return layerRenderer.renderFrame(frameState, target);\n    }\n    return null;\n  }\n\n  /**\n   * Called when a layer is not visible during a map render.\n   */\n  unrender() {\n    this.rendered = false;\n  }\n\n  /** @return {string} Declutter */\n  getDeclutter() {\n    return undefined;\n  }\n\n  /**\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../layer/Layer.js\").State} layerState Layer state.\n   */\n  renderDeclutter(frameState, layerState) {}\n\n  /**\n   * When the renderer follows a layout -> render approach, do the final rendering here.\n   * @param {import('../Map.js').FrameState} frameState Frame state\n   */\n  renderDeferred(frameState) {\n    const layerRenderer = this.getRenderer();\n    if (!layerRenderer) {\n      return;\n    }\n    layerRenderer.renderDeferred(frameState);\n  }\n\n  /**\n   * For use inside the library only.\n   * @param {import(\"../Map.js\").default|null} map Map.\n   */\n  setMapInternal(map) {\n    if (!map) {\n      this.unrender();\n    }\n    this.set(LayerProperty.MAP, map);\n  }\n\n  /**\n   * For use inside the library only.\n   * @return {import(\"../Map.js\").default|null} Map.\n   */\n  getMapInternal() {\n    return this.get(LayerProperty.MAP);\n  }\n\n  /**\n   * Sets the layer to be rendered on top of other layers on a map. The map will\n   * not manage this layer in its layers collection. This\n   * is useful for temporary layers. To remove an unmanaged layer from the map,\n   * use `#setMap(null)`.\n   *\n   * To add the layer to a map and have it managed by the map, use\n   * {@link module:ol/Map~Map#addLayer} instead.\n   * @param {import(\"../Map.js\").default|null} map Map.\n   * @api\n   */\n  setMap(map) {\n    if (this.mapPrecomposeKey_) {\n      unlistenByKey(this.mapPrecomposeKey_);\n      this.mapPrecomposeKey_ = null;\n    }\n    if (!map) {\n      this.changed();\n    }\n    if (this.mapRenderKey_) {\n      unlistenByKey(this.mapRenderKey_);\n      this.mapRenderKey_ = null;\n    }\n    if (map) {\n      this.mapPrecomposeKey_ = listen(\n        map,\n        RenderEventType.PRECOMPOSE,\n        this.handlePrecompose_,\n        this,\n      );\n      this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n      this.changed();\n    }\n  }\n\n  /**\n   * @param {import(\"../events/Event.js\").default} renderEvent Render event\n   * @private\n   */\n  handlePrecompose_(renderEvent) {\n    const layerStatesArray =\n      /** @type {import(\"../render/Event.js\").default} */ (renderEvent)\n        .frameState.layerStatesArray;\n    const layerState = this.getLayerState(false);\n    assert(\n      !layerStatesArray.some(\n        (arrayLayerState) => arrayLayerState.layer === layerState.layer,\n      ),\n      'A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.',\n    );\n    layerStatesArray.push(layerState);\n  }\n\n  /**\n   * Set the layer source.\n   * @param {SourceType|null} source The layer source.\n   * @observable\n   * @api\n   */\n  setSource(source) {\n    this.set(LayerProperty.SOURCE, source);\n  }\n\n  /**\n   * Get the renderer for this layer.\n   * @return {RendererType|null} The layer renderer.\n   */\n  getRenderer() {\n    if (!this.renderer_) {\n      this.renderer_ = this.createRenderer();\n    }\n    return this.renderer_;\n  }\n\n  /**\n   * @return {boolean} The layer has a renderer.\n   */\n  hasRenderer() {\n    return !!this.renderer_;\n  }\n\n  /**\n   * Create a renderer for this layer.\n   * @return {RendererType} A layer renderer.\n   * @protected\n   */\n  createRenderer() {\n    return null;\n  }\n\n  /**\n   * This will clear the renderer so that a new one can be created next time it is needed\n   */\n  clearRenderer() {\n    if (this.renderer_) {\n      this.renderer_.dispose();\n      delete this.renderer_;\n    }\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.clearRenderer();\n    this.setSource(null);\n    super.disposeInternal();\n  }\n}\n\n/**\n * Return `true` if the layer is visible and if the provided view state\n * has resolution and zoom levels that are in range of the layer's min/max.\n * @param {State} layerState Layer state.\n * @param {import(\"../View.js\").State} viewState View state.\n * @return {boolean} The layer is visible at the given view state.\n */\nexport function inView(layerState, viewState) {\n  if (!layerState.visible) {\n    return false;\n  }\n  const resolution = viewState.resolution;\n  if (\n    resolution < layerState.minResolution ||\n    resolution >= layerState.maxResolution\n  ) {\n    return false;\n  }\n  const zoom = viewState.zoom;\n  return zoom > layerState.minZoom && zoom <= layerState.maxZoom;\n}\n\nexport default Layer;\n","/**\n * @module ol/layer/BaseVector\n */\nimport RBush from 'rbush';\nimport {\n  flatStylesToStyleFunction,\n  rulesToStyleFunction,\n} from '../render/canvas/style.js';\nimport Style, {\n  createDefaultStyle,\n  toFunction as toStyleFunction,\n} from '../style/Style.js';\nimport Layer from './Layer.js';\n\n/***\n * @template T\n * @typedef {T extends import(\"../source/Vector.js\").default<infer U extends import(\"../Feature.js\").FeatureLike> ? U : never} ExtractedFeatureType\n */\n\n/**\n * @template {import('../Feature').FeatureLike} FeatureType\n * @template {import(\"../source/Vector.js\").default<FeatureType>|import(\"../source/VectorTile.js\").default<FeatureType>} VectorSourceType<FeatureType>\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering.  The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering.  At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"../render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the viewport extent used by the\n * renderer when getting features from the vector source for the rendering or hit-detection.\n * Recommended value: the size of the largest symbol, line width or label.\n * @property {VectorSourceType} [source] Source.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * @property {boolean|string|number} [declutter=false] Declutter images and text. Any truthy value will enable\n * decluttering. Within a layer, a feature rendered before another has higher priority. All layers with the\n * same `declutter` value will be decluttered together. The priority is determined by the drawing order of the\n * layers with the same `declutter` value. Higher in the layer stack means higher priority. To declutter distinct\n * layers or groups of layers separately, use different truthy values for `declutter`.\n * @property {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style. When set to `null`, only\n * features that have their own style will be rendered. See {@link module:ol/style/Style~Style} for the default style\n * which will be used if this is not set.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will\n * be recreated during animations. This means that no vectors will be shown clipped, but the\n * setting will have a performance impact for large amounts of vector data. When set to `false`,\n * batches will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will\n * be recreated during interactions. See also `updateWhileAnimating`.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n  RENDER_ORDER: 'renderOrder',\n};\n\n/**\n * @classdesc\n * Vector data that is rendered client-side.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import('../Feature').FeatureLike} FeatureType\n * @template {import(\"../source/Vector.js\").default<FeatureType>|import(\"../source/VectorTile.js\").default<FeatureType>} VectorSourceType<FeatureType>\n * @extends {Layer<VectorSourceType, RendererType>}\n * @template {import(\"../renderer/canvas/VectorLayer.js\").default|import(\"../renderer/canvas/VectorTileLayer.js\").default|import(\"../renderer/canvas/VectorImageLayer.js\").default|import(\"../renderer/webgl/VectorLayer.js\").default|import(\"../renderer/webgl/PointsLayer.js\").default} RendererType\n * @api\n */\nclass BaseVectorLayer extends Layer {\n  /**\n   * @param {Options<FeatureType, VectorSourceType>} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const baseOptions = Object.assign({}, options);\n\n    delete baseOptions.style;\n    delete baseOptions.renderBuffer;\n    delete baseOptions.updateWhileAnimating;\n    delete baseOptions.updateWhileInteracting;\n    super(baseOptions);\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.declutter_ = options.declutter ? String(options.declutter) : undefined;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.renderBuffer_ =\n      options.renderBuffer !== undefined ? options.renderBuffer : 100;\n\n    /**\n     * User provided style.\n     * @type {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike}\n     * @private\n     */\n    this.style_ = null;\n\n    /**\n     * Style function for use within the library.\n     * @type {import(\"../style/Style.js\").StyleFunction|undefined}\n     * @private\n     */\n    this.styleFunction_ = undefined;\n\n    this.setStyle(options.style);\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.updateWhileAnimating_ =\n      options.updateWhileAnimating !== undefined\n        ? options.updateWhileAnimating\n        : false;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.updateWhileInteracting_ =\n      options.updateWhileInteracting !== undefined\n        ? options.updateWhileInteracting\n        : false;\n  }\n\n  /**\n   * @return {string} Declutter group.\n   * @override\n   */\n  getDeclutter() {\n    return this.declutter_;\n  }\n\n  /**\n   * Get the topmost feature that intersects the given pixel on the viewport. Returns a promise\n   * that resolves with an array of features. The array will either contain the topmost feature\n   * when a hit was detected, or it will be empty.\n   *\n   * The hit detection algorithm used for this method is optimized for performance, but is less\n   * accurate than the one used in [map.getFeaturesAtPixel()]{@link import(\"../Map.js\").default#getFeaturesAtPixel}.\n   * Text is not considered, and icons are only represented by their bounding box instead of the exact\n   * image.\n   *\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../Feature\").FeatureLike>>} Promise that resolves with an array of features.\n   * @api\n   * @override\n   */\n  getFeatures(pixel) {\n    return super.getFeatures(pixel);\n  }\n\n  /**\n   * @return {number|undefined} Render buffer.\n   */\n  getRenderBuffer() {\n    return this.renderBuffer_;\n  }\n\n  /**\n   * @return {import(\"../render.js\").OrderFunction|null|undefined} Render order.\n   */\n  getRenderOrder() {\n    return /** @type {import(\"../render.js\").OrderFunction|null|undefined} */ (\n      this.get(Property.RENDER_ORDER)\n    );\n  }\n\n  /**\n   * Get the style for features.  This returns whatever was passed to the `style`\n   * option at construction or to the `setStyle` method.\n   * @return {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null|undefined} Layer style.\n   * @api\n   */\n  getStyle() {\n    return this.style_;\n  }\n\n  /**\n   * Get the style function.\n   * @return {import(\"../style/Style.js\").StyleFunction|undefined} Layer style function.\n   * @api\n   */\n  getStyleFunction() {\n    return this.styleFunction_;\n  }\n\n  /**\n   * @return {boolean} Whether the rendered layer should be updated while\n   *     animating.\n   */\n  getUpdateWhileAnimating() {\n    return this.updateWhileAnimating_;\n  }\n\n  /**\n   * @return {boolean} Whether the rendered layer should be updated while\n   *     interacting.\n   */\n  getUpdateWhileInteracting() {\n    return this.updateWhileInteracting_;\n  }\n\n  /**\n   * Render declutter items for this layer\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../layer/Layer.js\").State} layerState Layer state.\n   * @override\n   */\n  renderDeclutter(frameState, layerState) {\n    const declutterGroup = this.getDeclutter();\n    if (declutterGroup in frameState.declutter === false) {\n      frameState.declutter[declutterGroup] = new RBush(9);\n    }\n    this.getRenderer().renderDeclutter(frameState, layerState);\n  }\n\n  /**\n   * @param {import(\"../render.js\").OrderFunction|null|undefined} renderOrder\n   *     Render order.\n   */\n  setRenderOrder(renderOrder) {\n    this.set(Property.RENDER_ORDER, renderOrder);\n  }\n\n  /**\n   * Set the style for features.  This can be a single style object, an array\n   * of styles, or a function that takes a feature and resolution and returns\n   * an array of styles. If set to `null`, the layer has no style (a `null` style),\n   * so only features that have their own styles will be rendered in the layer. Call\n   * `setStyle()` without arguments to reset to the default style. See\n   * [the ol/style/Style module]{@link module:ol/style/Style~Style} for information on the default style.\n   *\n   * If your layer has a static style, you can use [flat style]{@link module:ol/style/flat~FlatStyle} object\n   * literals instead of using the `Style` and symbolizer constructors (`Fill`, `Stroke`, etc.):\n   * ```js\n   * vectorLayer.setStyle({\n   *   \"fill-color\": \"yellow\",\n   *   \"stroke-color\": \"black\",\n   *   \"stroke-width\": 4\n   * })\n   * ```\n   *\n   * @param {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style.\n   * @api\n   */\n  setStyle(style) {\n    this.style_ = style === undefined ? createDefaultStyle : style;\n    const styleLike = toStyleLike(style);\n    this.styleFunction_ =\n      style === null ? undefined : toStyleFunction(styleLike);\n    this.changed();\n  }\n\n  /**\n   * @param {boolean|string|number} declutter Declutter images and text.\n   * @api\n   */\n  setDeclutter(declutter) {\n    this.declutter_ = declutter ? String(declutter) : undefined;\n    this.changed();\n  }\n}\n\n/**\n * Coerce the allowed style types into a shorter list of types.  Flat styles, arrays of flat\n * styles, and arrays of rules are converted into style functions.\n *\n * @param {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style.\n * @return {import(\"../style/Style.js\").StyleLike|null} The style.\n */\nfunction toStyleLike(style) {\n  if (style === undefined) {\n    return createDefaultStyle;\n  }\n  if (!style) {\n    return null;\n  }\n  if (typeof style === 'function') {\n    return style;\n  }\n  if (style instanceof Style) {\n    return style;\n  }\n  if (!Array.isArray(style)) {\n    return flatStylesToStyleFunction([style]);\n  }\n  if (style.length === 0) {\n    return [];\n  }\n\n  const length = style.length;\n  const first = style[0];\n\n  if (first instanceof Style) {\n    /**\n     * @type {Array<Style>}\n     */\n    const styles = new Array(length);\n    for (let i = 0; i < length; ++i) {\n      const candidate = style[i];\n      if (!(candidate instanceof Style)) {\n        throw new Error('Expected a list of style instances');\n      }\n      styles[i] = candidate;\n    }\n    return styles;\n  }\n\n  if ('style' in first) {\n    /**\n     * @type {Array<import(\"../style/flat.js\").Rule>}\n     */\n    const rules = new Array(length);\n    for (let i = 0; i < length; ++i) {\n      const candidate = style[i];\n      if (!('style' in candidate)) {\n        throw new Error('Expected a list of rules with a style property');\n      }\n      rules[i] = candidate;\n    }\n    return rulesToStyleFunction(rules);\n  }\n\n  const flatStyles =\n    /** @type {Array<import(\"../style/flat.js\").FlatStyle>} */ (style);\n  return flatStylesToStyleFunction(flatStyles);\n}\n\nexport default BaseVectorLayer;\n","/**\n * @module ol/layer/Vector\n */\nimport CanvasVectorLayerRenderer from '../renderer/canvas/VectorLayer.js';\nimport BaseVectorLayer from './BaseVector.js';\n\n/**\n * @template {import(\"../source/Vector.js\").default<FeatureType>} [VectorSourceType=import(\"../source/Vector.js\").default<*>]\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import(\"./BaseVector.js\").ExtractedFeatureType<VectorSourceType>]\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering.  The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering.  At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"../render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the viewport extent used by the\n * renderer when getting features from the vector source for the rendering or hit-detection.\n * Recommended value: the size of the largest symbol, line width or label.\n * @property {VectorSourceType} [source] Source.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * @property {boolean|string|number} [declutter=false] Declutter images and text. Any truthy value will enable\n * decluttering. Within a layer, a feature rendered before another has higher priority. All layers with the\n * same `declutter` value will be decluttered together. The priority is determined by the drawing order of the\n * layers with the same `declutter` value. Higher in the layer stack means higher priority. To declutter distinct\n * layers or groups of layers separately, use different truthy values for `declutter`.\n * @property {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style. When set to `null`, only\n * features that have their own style will be rendered. See {@link module:ol/style/Style~Style} for the default style\n * which will be used if this is not set.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will\n * be recreated during animations. This means that no vectors will be shown clipped, but the\n * setting will have a performance impact for large amounts of vector data. When set to `false`,\n * batches will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will\n * be recreated during interactions. See also `updateWhileAnimating`.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @classdesc\n * Vector data is rendered client-side, as vectors. This layer type provides most accurate rendering\n * even during animations. Points and labels stay upright on rotated views. For very large\n * amounts of vector data, performance may suffer during pan and zoom animations. In this case,\n * try {@link module:ol/layer/VectorImage~VectorImageLayer}.\n *\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Vector.js\").default<FeatureType>} [VectorSourceType=import(\"../source/Vector.js\").default<*>]\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import(\"./BaseVector.js\").ExtractedFeatureType<VectorSourceType>]\n * @extends {BaseVectorLayer<FeatureType, VectorSourceType, CanvasVectorLayerRenderer>}\n * @api\n */\nclass VectorLayer extends BaseVectorLayer {\n  /**\n   * @param {Options<VectorSourceType, FeatureType>} [options] Options.\n   */\n  constructor(options) {\n    super(options);\n  }\n\n  /**\n   * @override\n   */\n  createRenderer() {\n    return new CanvasVectorLayerRenderer(this);\n  }\n}\n\nexport default VectorLayer;\n","/**\n * @module ol/interaction/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  ACTIVE: 'active',\n};\n","/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport {easeOut, linear} from '../easing.js';\nimport InteractionProperty from './Property.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types|\n *     'change:active', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     'change:active', Return>} InteractionOnSignature\n */\n\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleEvent]\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return). The interactions\n * are traversed in reverse order of the interactions collection of the map.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nclass Interaction extends BaseObject {\n  /**\n   * @param {InteractionOptions} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    /***\n     * @type {InteractionOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {InteractionOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {InteractionOnSignature<void>}\n     */\n    this.un;\n\n    if (options && options.handleEvent) {\n      this.handleEvent = options.handleEvent;\n    }\n\n    /**\n     * @private\n     * @type {import(\"../Map.js\").default|null}\n     */\n    this.map_ = null;\n\n    this.setActive(true);\n  }\n\n  /**\n   * Return whether the interaction is currently active.\n   * @return {boolean} `true` if the interaction is active, `false` otherwise.\n   * @observable\n   * @api\n   */\n  getActive() {\n    return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n  }\n\n  /**\n   * Get the map associated with this interaction.\n   * @return {import(\"../Map.js\").default|null} Map.\n   * @api\n   */\n  getMap() {\n    return this.map_;\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event}.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @api\n   */\n  handleEvent(mapBrowserEvent) {\n    return true;\n  }\n\n  /**\n   * Activate or deactivate the interaction.\n   * @param {boolean} active Active.\n   * @observable\n   * @api\n   */\n  setActive(active) {\n    this.set(InteractionProperty.ACTIVE, active);\n  }\n\n  /**\n   * Remove the interaction from its current map and attach it to the new map.\n   * Subclasses may set up event handlers to get notified about changes to\n   * the map here.\n   * @param {import(\"../Map.js\").default|null} map Map.\n   */\n  setMap(map) {\n    this.map_ = map;\n  }\n}\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number} [duration] Duration.\n */\nexport function pan(view, delta, duration) {\n  const currentCenter = view.getCenterInternal();\n  if (currentCenter) {\n    const center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n    view.animateInternal({\n      duration: duration !== undefined ? duration : 250,\n      easing: linear,\n      center: view.getConstrainedCenter(center),\n    });\n  }\n}\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate} [anchor] Anchor coordinate in the user projection.\n * @param {number} [duration] Duration.\n */\nexport function zoomByDelta(view, delta, anchor, duration) {\n  const currentZoom = view.getZoom();\n\n  if (currentZoom === undefined) {\n    return;\n  }\n\n  const newZoom = view.getConstrainedZoom(currentZoom + delta);\n  const newResolution = view.getResolutionForZoom(newZoom);\n\n  if (view.getAnimating()) {\n    view.cancelAnimations();\n  }\n  view.animate({\n    resolution: newResolution,\n    anchor: anchor,\n    duration: duration !== undefined ? duration : 250,\n    easing: easeOut,\n  });\n}\n\nexport default Interaction;\n","/**\n * @module ol/interaction/Select\n */\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport Feature from '../Feature.js';\nimport {extend} from '../array.js';\nimport Event from '../events/Event.js';\nimport {never, shiftKeyOnly, singleClick} from '../events/condition.js';\nimport {TRUE} from '../functions.js';\nimport VectorLayer from '../layer/Vector.js';\nimport {createEditingStyle} from '../style/Style.js';\nimport {getUid} from '../util.js';\nimport Interaction from './Interaction.js';\n\n/**\n * @enum {string}\n */\nconst SelectEventType = {\n  /**\n   * Triggered when feature(s) has been (de)selected.\n   * @event SelectEvent#select\n   * @api\n   */\n  SELECT: 'select',\n};\n\n/**\n * A function that takes a {@link module:ol/Feature~Feature} and returns `true` if the feature may be\n * selected or `false` otherwise.\n * @typedef {function(import(\"../Feature.js\").default, import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>):boolean} FilterFunction\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [addCondition] A function\n * that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * By default, this is {@link module:ol/events/condition.never}. Use this if you\n * want to use different events for add and remove instead of `toggle`.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. This is the event\n * for the selected features as a whole. By default, this is\n * {@link module:ol/events/condition.singleClick}. Clicking on a feature selects that\n * feature and removes any that were in the selection. Clicking outside any\n * feature removes all from the selection.\n * See `toggle`, `add`, `remove` options for adding/removing extra features to/\n * from the selection.\n * @property {Array<import(\"../layer/Layer.js\").default>|function(import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>): boolean} [layers]\n * A list of layers from which features should be selected. Alternatively, a\n * filter function can be provided. The function will be called for each layer\n * in the map and should return `true` for layers that you want to be\n * selectable. If the option is absent, all visible layers will be considered\n * selectable.\n * @property {import(\"../style/Style.js\").StyleLike|null} [style]\n * Style for the selected features. By default the default edit style is used\n * (see {@link module:ol/style/Style~Style}). Set to `null` if this interaction should not apply\n * any style changes for selected features.\n * If set to a falsey value, the selected feature's style will not change.\n * @property {import(\"../events/condition.js\").Condition} [removeCondition] A function\n * that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * By default, this is {@link module:ol/events/condition.never}. Use this if you\n * want to use different events for add and remove instead of `toggle`.\n * @property {import(\"../events/condition.js\").Condition} [toggleCondition] A function\n * that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. This is in addition\n * to the `condition` event. By default,\n * {@link module:ol/events/condition.shiftKeyOnly}, i.e. pressing `shift` as\n * well as the `condition` event, adds that feature to the current selection if\n * it is not currently selected, and removes it if it is. See `add` and `remove`\n * if you want to use different events instead of a toggle.\n * @property {boolean} [multi=false] A boolean that determines if the default\n * behaviour should select only single features or all (overlapping) features at\n * the clicked map position. The default of `false` means single select.\n * @property {Collection<Feature>} [features]\n * Collection where the interaction will place selected features. Optional. If\n * not set the interaction will create a collection. In any case the collection\n * used by the interaction is returned by\n * {@link module:ol/interaction/Select~Select#getFeatures}.\n * @property {FilterFunction} [filter] A function\n * that takes a {@link module:ol/Feature~Feature} and a\n * {@link module:ol/layer/Layer~Layer} and returns `true` if the feature may be\n * selected or `false` otherwise.\n * @property {number} [hitTolerance=0] Hit-detection tolerance. Pixels inside\n * the radius around the given position will be checked for features.\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/Select~Select} instances are instances of\n * this type.\n */\nexport class SelectEvent extends Event {\n  /**\n   * @param {SelectEventType} type The event type.\n   * @param {Array<import(\"../Feature.js\").default>} selected Selected features.\n   * @param {Array<import(\"../Feature.js\").default>} deselected Deselected features.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Associated\n   *     {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n   */\n  constructor(type, selected, deselected, mapBrowserEvent) {\n    super(type);\n\n    /**\n     * Selected features array.\n     * @type {Array<import(\"../Feature.js\").default>}\n     * @api\n     */\n    this.selected = selected;\n\n    /**\n     * Deselected features array.\n     * @type {Array<import(\"../Feature.js\").default>}\n     * @api\n     */\n    this.deselected = deselected;\n\n    /**\n     * Associated {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n     * @type {import(\"../MapBrowserEvent.js\").default}\n     * @api\n     */\n    this.mapBrowserEvent = mapBrowserEvent;\n  }\n}\n\n/**\n * Original feature styles to reset to when features are no longer selected.\n * @type {Object<number, import(\"../style/Style.js\").default|Array<import(\"../style/Style.js\").default>|import(\"../style/Style.js\").StyleFunction>}\n */\nconst originalFeatureStyles = {};\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types|\n *     'change:active', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<'select', SelectEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     'change:active'|'select', Return>} SelectOnSignature\n */\n\n/**\n * @classdesc\n * Interaction for selecting vector features. By default, selected features are\n * styled differently, so this interaction can be used for visual highlighting,\n * as well as selecting features for other actions, such as modification or\n * output. There are three ways of controlling which features are selected:\n * using the browser event as defined by the `condition` and optionally the\n * `toggle`, `add`/`remove`, and `multi` options; a `layers` filter; and a\n * further feature filter using the `filter` option.\n *\n * @fires SelectEvent\n * @api\n */\nclass Select extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    /***\n     * @type {SelectOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {SelectOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {SelectOnSignature<void>}\n     */\n    this.un;\n\n    options = options ? options : {};\n\n    /**\n     * @private\n     */\n    this.boundAddFeature_ = this.addFeature_.bind(this);\n\n    /**\n     * @private\n     */\n    this.boundRemoveFeature_ = this.removeFeature_.bind(this);\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition ? options.condition : singleClick;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.addCondition_ = options.addCondition ? options.addCondition : never;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.removeCondition_ = options.removeCondition\n      ? options.removeCondition\n      : never;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.toggleCondition_ = options.toggleCondition\n      ? options.toggleCondition\n      : shiftKeyOnly;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.multi_ = options.multi ? options.multi : false;\n\n    /**\n     * @private\n     * @type {FilterFunction}\n     */\n    this.filter_ = options.filter ? options.filter : TRUE;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.hitTolerance_ = options.hitTolerance ? options.hitTolerance : 0;\n\n    /**\n     * @private\n     * @type {import(\"../style/Style.js\").default|Array<import(\"../style/Style.js\").default>|import(\"../style/Style.js\").StyleFunction|null}\n     */\n    this.style_ =\n      options.style !== undefined ? options.style : getDefaultStyleFunction();\n\n    /**\n     * @private\n     * @type {Collection<Feature>}\n     */\n    this.features_ = options.features || new Collection();\n\n    /** @type {function(import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>): boolean} */\n    let layerFilter;\n    if (options.layers) {\n      if (typeof options.layers === 'function') {\n        layerFilter = options.layers;\n      } else {\n        const layers = options.layers;\n        layerFilter = function (layer) {\n          return layers.includes(layer);\n        };\n      }\n    } else {\n      layerFilter = TRUE;\n    }\n\n    /**\n     * @private\n     * @type {function(import(\"../layer/Layer.js\").default<import(\"../source/Source\").default>): boolean}\n     */\n    this.layerFilter_ = layerFilter;\n\n    /**\n     * An association between selected feature (key)\n     * and layer (value)\n     * @private\n     * @type {Object<string, import(\"../layer/Layer.js\").default>}\n     */\n    this.featureLayerAssociation_ = {};\n  }\n\n  /**\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"../layer/Layer.js\").default} layer Layer.\n   * @private\n   */\n  addFeatureLayerAssociation_(feature, layer) {\n    this.featureLayerAssociation_[getUid(feature)] = layer;\n  }\n\n  /**\n   * Get the selected features.\n   * @return {Collection<Feature>} Features collection.\n   * @api\n   */\n  getFeatures() {\n    return this.features_;\n  }\n\n  /**\n   * Returns the Hit-detection tolerance.\n   * @return {number} Hit tolerance in pixels.\n   * @api\n   */\n  getHitTolerance() {\n    return this.hitTolerance_;\n  }\n\n  /**\n   * Returns the associated {@link module:ol/layer/Vector~VectorLayer vector layer} of\n   * a selected feature.\n   * @param {import(\"../Feature.js\").default} feature Feature\n   * @return {import('../layer/Vector.js').default} Layer.\n   * @api\n   */\n  getLayer(feature) {\n    return /** @type {import('../layer/Vector.js').default} */ (\n      this.featureLayerAssociation_[getUid(feature)]\n    );\n  }\n\n  /**\n   * Hit-detection tolerance. Pixels inside the radius around the given position\n   * will be checked for features.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @api\n   */\n  setHitTolerance(hitTolerance) {\n    this.hitTolerance_ = hitTolerance;\n  }\n\n  /**\n   * Remove the interaction from its current map, if any,  and attach it to a new\n   * map, if any. Pass `null` to just remove the interaction from the current map.\n   * @param {import(\"../Map.js\").default|null} map Map.\n   * @api\n   * @override\n   */\n  setMap(map) {\n    const currentMap = this.getMap();\n    if (currentMap && this.style_) {\n      this.features_.forEach(this.restorePreviousStyle_.bind(this));\n    }\n    super.setMap(map);\n    if (map) {\n      this.features_.addEventListener(\n        CollectionEventType.ADD,\n        this.boundAddFeature_,\n      );\n      this.features_.addEventListener(\n        CollectionEventType.REMOVE,\n        this.boundRemoveFeature_,\n      );\n\n      if (this.style_) {\n        this.features_.forEach(this.applySelectedStyle_.bind(this));\n      }\n    } else {\n      this.features_.removeEventListener(\n        CollectionEventType.ADD,\n        this.boundAddFeature_,\n      );\n      this.features_.removeEventListener(\n        CollectionEventType.REMOVE,\n        this.boundRemoveFeature_,\n      );\n    }\n  }\n\n  /**\n   * @param {import(\"../Collection.js\").CollectionEvent<Feature>} evt Event.\n   * @private\n   */\n  addFeature_(evt) {\n    const feature = evt.element;\n    if (this.style_) {\n      this.applySelectedStyle_(feature);\n    }\n    if (!this.getLayer(feature)) {\n      const layer = this.findLayerOfFeature_(feature);\n      if (layer) {\n        this.addFeatureLayerAssociation_(feature, layer);\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../Collection.js\").CollectionEvent<Feature>} evt Event.\n   * @private\n   */\n  removeFeature_(evt) {\n    if (this.style_) {\n      this.restorePreviousStyle_(evt.element);\n    }\n    this.removeFeatureLayerAssociation_(evt.element);\n  }\n\n  /**\n   * @param {Feature} feature Feature of which to get the layer\n   * @return {VectorLayer} layer, if one was found.\n   * @private\n   */\n  findLayerOfFeature_(feature) {\n    const layer = /** @type {VectorLayer} */ (\n      this.getMap()\n        .getAllLayers()\n        .find(function (layer) {\n          if (\n            layer instanceof VectorLayer &&\n            layer.getSource() &&\n            layer.getSource().hasFeature(feature)\n          ) {\n            return layer;\n          }\n        })\n    );\n    return layer;\n  }\n\n  /**\n   * @return {import(\"../style/Style.js\").StyleLike|null} Select style.\n   */\n  getStyle() {\n    return this.style_;\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @private\n   */\n  applySelectedStyle_(feature) {\n    const key = getUid(feature);\n    if (!(key in originalFeatureStyles)) {\n      originalFeatureStyles[key] = feature.getStyle();\n    }\n    feature.setStyle(this.style_);\n  }\n\n  /**\n   * @param {Feature} feature Feature\n   * @private\n   */\n  restorePreviousStyle_(feature) {\n    const interactions = this.getMap().getInteractions().getArray();\n    for (let i = interactions.length - 1; i >= 0; --i) {\n      const interaction = interactions[i];\n      if (\n        interaction !== this &&\n        interaction instanceof Select &&\n        interaction.getStyle() &&\n        interaction.getFeatures().getArray().lastIndexOf(feature) !== -1\n      ) {\n        feature.setStyle(interaction.getStyle());\n        return;\n      }\n    }\n\n    const key = getUid(feature);\n    feature.setStyle(originalFeatureStyles[key]);\n    delete originalFeatureStyles[key];\n  }\n\n  /**\n   * @param {Feature} feature Feature.\n   * @private\n   */\n  removeFeatureLayerAssociation_(feature) {\n    delete this.featureLayerAssociation_[getUid(feature)];\n  }\n\n  /**\n   * Try to select a feature as if it was clicked and `addCondition` evaluated to True.\n   * Unlike modifying `select.getFeatures()` directly, this respects the `filter` and `layers` options (except `multi`, which is ignored).\n   * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property\n   * @param {Feature} feature The feature to select\n   * @return {boolean} True if the feature was selected\n   * @api\n   */\n  selectFeature(feature) {\n    const layer = this.findLayerOfFeature_(feature);\n    if (!this.layerFilter_(layer) || !this.filter_(feature, layer)) {\n      return false;\n    }\n    const features = this.getFeatures();\n    if (features.getArray().includes(feature)) {\n      return false;\n    }\n    this.addFeatureLayerAssociation_(feature, layer);\n    features.push(feature);\n    this.dispatchEvent(\n      new SelectEvent(SelectEventType.SELECT, [feature], [], undefined),\n    );\n    return true;\n  }\n\n  /**\n   * Try to deselect a feature as if it was clicked.\n   * Compared to `select.getFeatures().remove(feature)` this causes a SelectEvent.\n   * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property\n   * @param {Feature} feature The feature to deselect\n   * @return {boolean} True if the feature was deselected\n   * @api\n   */\n  deselectFeature(feature) {\n    const features = this.getFeatures();\n    const index = features.getArray().indexOf(feature);\n    if (index === -1) {\n      return false;\n    }\n    features.removeAt(index);\n    this.dispatchEvent(\n      new SelectEvent(SelectEventType.SELECT, [], [feature], undefined),\n    );\n    return true;\n  }\n\n  /**\n   * Try to toggle a feature as if it was clicked and `toggleCondition` was True.\n   * Unlike modifying `select.getFeatures()` directly, this respects the `filter` and `layers` options (except `multi`, which is ignored).\n   * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property\n   * @param {Feature} feature The feature to deselect\n   * @api\n   */\n  toggleFeature(feature) {\n    if (!this.deselectFeature(feature)) {\n      this.selectFeature(feature);\n    }\n  }\n\n  /**\n   * Deselect all features as if a user deselected them.\n   * Compared to `select.getFeatures().clear()` this causes a SelectEvent.\n   * The {@link module:ol/interaction/Select~SelectEvent} fired by this won't have a mapBrowserEvent property\n   * @api\n   */\n  clearSelection() {\n    const features = this.getFeatures();\n    if (features.getLength() !== 0) {\n      const deselected = features.getArray().slice(); // shallow copy\n      features.clear();\n      this.dispatchEvent(\n        new SelectEvent(SelectEventType.SELECT, [], deselected, undefined),\n      );\n    }\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may change the\n   * selected state of features.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    if (!this.condition_(mapBrowserEvent)) {\n      return true;\n    }\n    const add = this.addCondition_(mapBrowserEvent);\n    const remove = this.removeCondition_(mapBrowserEvent);\n    const toggle = this.toggleCondition_(mapBrowserEvent);\n    const set = !add && !remove && !toggle;\n    const map = mapBrowserEvent.map;\n    const features = this.getFeatures();\n\n    /**\n     * @type {Array<Feature>}\n     */\n    const deselected = [];\n\n    /**\n     * @type {Array<Feature>}\n     */\n    const selected = [];\n\n    if (set) {\n      // Replace the currently selected feature(s) with the feature(s) at the\n      // pixel, or clear the selected feature(s) if there is no feature at\n      // the pixel.\n      map.forEachFeatureAtPixel(\n        mapBrowserEvent.pixel,\n        (feature, layer) => {\n          if (!(feature instanceof Feature) || !this.filter_(feature, layer)) {\n            return;\n          }\n          this.addFeatureLayerAssociation_(feature, layer);\n          selected.push(feature);\n          return !this.multi_;\n        },\n        {\n          layerFilter: this.layerFilter_,\n          hitTolerance: this.hitTolerance_,\n        },\n      );\n\n      for (let i = features.getLength() - 1; i >= 0; --i) {\n        const feature = features.item(i);\n        const index = selected.indexOf(feature);\n        if (index === -1) {\n          features.removeAt(i);\n          deselected.push(feature);\n        } else {\n          // feature is already selected\n          selected.splice(index, 1);\n        }\n      }\n      if (selected.length !== 0) {\n        features.extend(selected);\n      }\n    } else {\n      // Modify the currently selected feature(s).\n      map.forEachFeatureAtPixel(\n        mapBrowserEvent.pixel,\n        (feature, layer) => {\n          if (!(feature instanceof Feature) || !this.filter_(feature, layer)) {\n            return;\n          }\n          const hasFeature = features.getArray().includes(feature);\n          if (hasFeature && (remove || toggle)) {\n            deselected.push(feature);\n          } else if (!hasFeature && (add || toggle)) {\n            this.addFeatureLayerAssociation_(feature, layer);\n            selected.push(feature);\n          }\n          return !this.multi_; // stop if not multi\n        },\n        {\n          layerFilter: this.layerFilter_,\n          hitTolerance: this.hitTolerance_,\n        },\n      );\n      for (let j = deselected.length - 1; j >= 0; --j) {\n        features.remove(deselected[j]);\n      }\n      features.extend(selected);\n    }\n    if (selected.length > 0 || deselected.length > 0) {\n      this.dispatchEvent(\n        new SelectEvent(\n          SelectEventType.SELECT,\n          selected,\n          deselected,\n          mapBrowserEvent,\n        ),\n      );\n    }\n    return true;\n  }\n}\n\n/**\n * @return {import(\"../style/Style.js\").StyleFunction} Styles.\n */\nfunction getDefaultStyleFunction() {\n  const styles = createEditingStyle();\n  extend(styles['Polygon'], styles['LineString']);\n  extend(styles['GeometryCollection'], styles['LineString']);\n\n  return function (feature) {\n    if (!feature.getGeometry()) {\n      return null;\n    }\n    return styles[feature.getGeometry().getType()];\n  };\n}\n\nexport default Select;\n","import Select from \"ol/interaction/Select\";\nimport { click } from \"ol/events/condition\";\nimport { Feature, Map as OlMap } from \"ol\";\nimport type VectorLayer from \"ol/layer/Vector\";\nimport { Stroke, Style } from \"ol/style\";\nimport type { StyleFunction } from \"ol/style/Style\";\n\ninterface AddSelectInteractionOptions {\n  map: OlMap;\n  layer: VectorLayer;\n  onSelect?: (features: Feature[]) => void;\n}\n\nexport const addSelectInteraction = ({\n  map,\n  layer,\n  onSelect,\n}: AddSelectInteractionOptions): Select => {\n  const select = new Select({\n    layers: [layer],\n    condition: click,\n    style: (feat) => {\n      const original = feat.get(\"originalStyle\") as Style | Style[] | undefined;\n      const baseStyles = Array.isArray(original)\n        ? original\n        : original\n        ? [original]\n        : [];\n      // Add highlight on top\n      return baseStyles;\n    },\n  });\n\n  map.addInteraction(select);\n\n  if (onSelect) {\n    select.on(\"select\", (evt) => {\n      const selected = evt.selected as Feature[];\n      onSelect(selected);\n    });\n  }\n\n  return select;\n};\n","import Fill from \"ol/style/Fill\";\nimport Stroke from \"ol/style/Stroke\";\nimport Style from \"ol/style/Style\";\nimport CircleStyle from \"ol/style/Circle\";\n\nconst DEFAULT_PIN_SVG = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"36\" viewBox=\"0 0 24 36\">\n  <path d=\"M12 0C7 0 3 4 3 9c0 7.5 9 27 9 27s9-19.5 9-27c0-5-4-9-9-9z\" fill=\"#FF6600\"/>\n  <circle cx=\"12\" cy=\"9\" r=\"4\" fill=\"#fff\"/>\n</svg>\n`;\n\nexport const DEFAULT_MARKER_ICON_URL = `data:image/svg+xml;base64,${btoa(\n  DEFAULT_PIN_SVG\n)}`;\n\nexport const defaultVectorStyle = new Style({\n  fill: new Fill({ color: \"rgba(0, 0, 255, 0.1)\" }),\n  stroke: new Stroke({ color: \"#3399CC\", width: 1 }),\n  image: new CircleStyle({\n    radius: 5,\n    fill: new Fill({ color: \"#3399CC\" }),\n    stroke: new Stroke({ color: \"#000\", width: 1 }),\n  }),\n  text: undefined,\n});\n","import Style, { StyleLike } from \"ol/style/Style\";\nimport {\n  DEFAULT_MARKER_ICON_URL,\n  defaultVectorStyle,\n} from \"../styles/defaults\";\nimport { StyleConfig } from \"../types/map-types\";\nimport { Fill, Stroke } from \"ol/style\";\nimport CircleStyle from \"ol/style/Circle\";\nimport BaseLayer from \"ol/layer/Base\";\nimport Text from \"ol/style/Text\";\nimport VectorLayer from \"ol/layer/Vector\";\nimport { MarkerFeature } from \"../types/markers\";\nimport geohash from \"../../utils/geohash/geohash\";\nimport { OverlayFeatureConfig } from \"../types/overlays\";\n\nexport const convertMarkerToFeature = (marker: MarkerFeature) => {\n  const gh = marker.geohash.includes(\"http\")\n    ? marker.geohash.split(\"http://geohash.org/\")[1]\n    : marker.geohash;\n  const { latitude, longitude } = geohash.decode(gh);\n  return {\n    type: \"Point\",\n    coordinates: [longitude, latitude], // TODO: convert from geohash\n    label: marker.meta?.label, // TODO create a getMeta?\n    marker: marker?.style ?? DEFAULT_MARKER_ICON_URL,\n    meta: marker.meta,\n  } as OverlayFeatureConfig;\n};\n\nexport const toOlStyle = (\n  styleConfig?: StyleConfig,\n  feature?: unknown\n): StyleLike => {\n  if (!styleConfig) return defaultVectorStyle;\n\n  if (typeof styleConfig === \"function\") {\n    const result = styleConfig(feature);\n    return toOlStyle(result);\n  }\n\n  return new Style({\n    fill: new Fill({ color: styleConfig.fillColor }),\n    stroke: new Stroke({\n      color: styleConfig.strokeColor,\n      width: styleConfig.strokeWidth,\n    }),\n    image: new CircleStyle({\n      radius: styleConfig.radius || 5,\n      fill: new Fill({ color: styleConfig.fillColor }),\n    }),\n    text: new Text({ text: styleConfig.text }),\n  });\n};\n\nexport const findVectorLayerById = (\n  layers: BaseLayer[],\n  id: string\n): VectorLayer | undefined =>\n  layers.find((l) => l.get(\"id\") === id) as VectorLayer | undefined;\n","var $version = 8;\nvar $root = {\n\tversion: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: [\n\t\t\t8\n\t\t]\n\t},\n\tname: {\n\t\ttype: \"string\"\n\t},\n\tmetadata: {\n\t\ttype: \"*\"\n\t},\n\tcenter: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\"\n\t},\n\tcenterAltitude: {\n\t\ttype: \"number\"\n\t},\n\tzoom: {\n\t\ttype: \"number\"\n\t},\n\tbearing: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\"\n\t},\n\tpitch: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tunits: \"degrees\"\n\t},\n\troll: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tunits: \"degrees\"\n\t},\n\tstate: {\n\t\ttype: \"state\",\n\t\t\"default\": {\n\t\t}\n\t},\n\tlight: {\n\t\ttype: \"light\"\n\t},\n\tsky: {\n\t\ttype: \"sky\"\n\t},\n\tprojection: {\n\t\ttype: \"projection\"\n\t},\n\tterrain: {\n\t\ttype: \"terrain\"\n\t},\n\tsources: {\n\t\trequired: true,\n\t\ttype: \"sources\"\n\t},\n\tsprite: {\n\t\ttype: \"sprite\"\n\t},\n\tglyphs: {\n\t\ttype: \"string\"\n\t},\n\ttransition: {\n\t\ttype: \"transition\"\n\t},\n\tlayers: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tvalue: \"layer\"\n\t}\n};\nvar sources = {\n\t\"*\": {\n\t\ttype: \"source\"\n\t}\n};\nvar source = [\n\t\"source_vector\",\n\t\"source_raster\",\n\t\"source_raster_dem\",\n\t\"source_geojson\",\n\t\"source_video\",\n\t\"source_image\"\n];\nvar source_vector = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvector: {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\ttype: \"string\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t]\n\t},\n\tscheme: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\txyz: {\n\t\t\t},\n\t\t\ttms: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"xyz\"\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tpromoteId: {\n\t\ttype: \"promoteId\"\n\t},\n\tvolatile: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\t\"*\": {\n\t\ttype: \"*\"\n\t}\n};\nvar source_raster = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\traster: {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\ttype: \"string\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t]\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22\n\t},\n\ttileSize: {\n\t\ttype: \"number\",\n\t\t\"default\": 512,\n\t\tunits: \"pixels\"\n\t},\n\tscheme: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\txyz: {\n\t\t\t},\n\t\t\ttms: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"xyz\"\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tvolatile: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\t\"*\": {\n\t\ttype: \"*\"\n\t}\n};\nvar source_raster_dem = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\t\"raster-dem\": {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\ttype: \"string\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t]\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22\n\t},\n\ttileSize: {\n\t\ttype: \"number\",\n\t\t\"default\": 512,\n\t\tunits: \"pixels\"\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tencoding: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tterrarium: {\n\t\t\t},\n\t\t\tmapbox: {\n\t\t\t},\n\t\t\tcustom: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"mapbox\"\n\t},\n\tredFactor: {\n\t\ttype: \"number\",\n\t\t\"default\": 1\n\t},\n\tblueFactor: {\n\t\ttype: \"number\",\n\t\t\"default\": 1\n\t},\n\tgreenFactor: {\n\t\ttype: \"number\",\n\t\t\"default\": 1\n\t},\n\tbaseShift: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tvolatile: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\t\"*\": {\n\t\ttype: \"*\"\n\t}\n};\nvar source_geojson = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tgeojson: {\n\t\t\t}\n\t\t}\n\t},\n\tdata: {\n\t\trequired: true,\n\t\ttype: \"*\"\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 18\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tbuffer: {\n\t\ttype: \"number\",\n\t\t\"default\": 128,\n\t\tmaximum: 512,\n\t\tminimum: 0\n\t},\n\tfilter: {\n\t\ttype: \"*\"\n\t},\n\ttolerance: {\n\t\ttype: \"number\",\n\t\t\"default\": 0.375\n\t},\n\tcluster: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tclusterRadius: {\n\t\ttype: \"number\",\n\t\t\"default\": 50,\n\t\tminimum: 0\n\t},\n\tclusterMaxZoom: {\n\t\ttype: \"number\"\n\t},\n\tclusterMinPoints: {\n\t\ttype: \"number\"\n\t},\n\tclusterProperties: {\n\t\ttype: \"*\"\n\t},\n\tlineMetrics: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tgenerateId: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tpromoteId: {\n\t\ttype: \"promoteId\"\n\t}\n};\nvar source_video = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvideo: {\n\t\t\t}\n\t\t}\n\t},\n\turls: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tcoordinates: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tlength: 4,\n\t\tvalue: {\n\t\t\ttype: \"array\",\n\t\t\tlength: 2,\n\t\t\tvalue: \"number\"\n\t\t}\n\t}\n};\nvar source_image = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\timage: {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\trequired: true,\n\t\ttype: \"string\"\n\t},\n\tcoordinates: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tlength: 4,\n\t\tvalue: {\n\t\t\ttype: \"array\",\n\t\t\tlength: 2,\n\t\t\tvalue: \"number\"\n\t\t}\n\t}\n};\nvar layer = {\n\tid: {\n\t\ttype: \"string\",\n\t\trequired: true\n\t},\n\ttype: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tfill: {\n\t\t\t},\n\t\t\tline: {\n\t\t\t},\n\t\t\tsymbol: {\n\t\t\t},\n\t\t\tcircle: {\n\t\t\t},\n\t\t\theatmap: {\n\t\t\t},\n\t\t\t\"fill-extrusion\": {\n\t\t\t},\n\t\t\traster: {\n\t\t\t},\n\t\t\thillshade: {\n\t\t\t},\n\t\t\t\"color-relief\": {\n\t\t\t},\n\t\t\tbackground: {\n\t\t\t}\n\t\t},\n\t\trequired: true\n\t},\n\tmetadata: {\n\t\ttype: \"*\"\n\t},\n\tsource: {\n\t\ttype: \"string\"\n\t},\n\t\"source-layer\": {\n\t\ttype: \"string\"\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\tmaximum: 24\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\tmaximum: 24\n\t},\n\tfilter: {\n\t\ttype: \"filter\"\n\t},\n\tlayout: {\n\t\ttype: \"layout\"\n\t},\n\tpaint: {\n\t\ttype: \"paint\"\n\t}\n};\nvar layout = [\n\t\"layout_fill\",\n\t\"layout_line\",\n\t\"layout_circle\",\n\t\"layout_heatmap\",\n\t\"layout_fill-extrusion\",\n\t\"layout_symbol\",\n\t\"layout_raster\",\n\t\"layout_hillshade\",\n\t\"layout_color-relief\",\n\t\"layout_background\"\n];\nvar layout_background = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_fill = {\n\t\"fill-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_circle = {\n\t\"circle-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_heatmap = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_line = {\n\t\"line-cap\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tbutt: {\n\t\t\t},\n\t\t\tround: {\n\t\t\t},\n\t\t\tsquare: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"butt\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-join\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tbevel: {\n\t\t\t},\n\t\t\tround: {\n\t\t\t},\n\t\t\tmiter: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"miter\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-miter-limit\": {\n\t\ttype: \"number\",\n\t\t\"default\": 2,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"line-join\": \"miter\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-round-limit\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1.05,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"line-join\": \"round\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_symbol = {\n\t\"symbol-placement\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tpoint: {\n\t\t\t},\n\t\t\tline: {\n\t\t\t},\n\t\t\t\"line-center\": {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"point\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-spacing\": {\n\t\ttype: \"number\",\n\t\t\"default\": 250,\n\t\tminimum: 1,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"symbol-placement\": \"line\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-avoid-edges\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"symbol-z-order\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tauto: {\n\t\t\t},\n\t\t\t\"viewport-y\": {\n\t\t\t},\n\t\t\tsource: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-allow-overlap\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t{\n\t\t\t\t\"!\": \"icon-overlap\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-overlap\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnever: {\n\t\t\t},\n\t\t\talways: {\n\t\t\t},\n\t\t\tcooperative: {\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-ignore-placement\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-optional\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-rotation-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-size\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tunits: \"factor of the original icon size\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-text-fit\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnone: {\n\t\t\t},\n\t\t\twidth: {\n\t\t\t},\n\t\t\theight: {\n\t\t\t},\n\t\t\tboth: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"none\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-text-fit-padding\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"icon-text-fit\": [\n\t\t\t\t\t\"both\",\n\t\t\t\t\t\"width\",\n\t\t\t\t\t\"height\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-image\": {\n\t\ttype: \"resolvedImage\",\n\t\ttokens: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-padding\": {\n\t\ttype: \"padding\",\n\t\t\"default\": [\n\t\t\t2\n\t\t],\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-keep-upright\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t{\n\t\t\t\t\"icon-rotation-alignment\": \"map\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-offset\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t},\n\t\t\ttop: {\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-rotation-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\t\"viewport-glyph\": {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-field\": {\n\t\ttype: \"formatted\",\n\t\t\"default\": \"\",\n\t\ttokens: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-font\": {\n\t\ttype: \"array\",\n\t\tvalue: \"string\",\n\t\t\"default\": [\n\t\t\t\"Open Sans Regular\",\n\t\t\t\"Arial Unicode MS Regular\"\n\t\t],\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-size\": {\n\t\ttype: \"number\",\n\t\t\"default\": 16,\n\t\tminimum: 0,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-max-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 10,\n\t\tminimum: 0,\n\t\tunits: \"ems\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-line-height\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1.2,\n\t\tunits: \"ems\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-letter-spacing\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tunits: \"ems\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-justify\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tauto: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-radial-offset\": {\n\t\ttype: \"number\",\n\t\tunits: \"ems\",\n\t\t\"default\": 0,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"property-type\": \"data-driven\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t}\n\t},\n\t\"text-variable-anchor\": {\n\t\ttype: \"array\",\n\t\tvalue: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t},\n\t\t\ttop: {\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"point\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-variable-anchor-offset\": {\n\t\ttype: \"variableAnchorOffsetCollection\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"point\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t},\n\t\t\ttop: {\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"!\": \"text-variable-anchor\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-max-angle\": {\n\t\ttype: \"number\",\n\t\t\"default\": 45,\n\t\tunits: \"degrees\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-writing-mode\": {\n\t\ttype: \"array\",\n\t\tvalue: \"enum\",\n\t\tvalues: {\n\t\t\thorizontal: {\n\t\t\t},\n\t\t\tvertical: {\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"point\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-padding\": {\n\t\ttype: \"number\",\n\t\t\"default\": 2,\n\t\tminimum: 0,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-keep-upright\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"text-rotation-alignment\": \"map\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-transform\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnone: {\n\t\t\t},\n\t\t\tuppercase: {\n\t\t\t},\n\t\t\tlowercase: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"none\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-offset\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tunits: \"ems\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"!\": \"text-radial-offset\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-allow-overlap\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"!\": \"text-overlap\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-overlap\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnever: {\n\t\t\t},\n\t\t\talways: {\n\t\t\t},\n\t\t\tcooperative: {\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-ignore-placement\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-optional\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_raster = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_hillshade = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar filter = {\n\ttype: \"array\",\n\tvalue: \"*\"\n};\nvar filter_operator = {\n\ttype: \"enum\",\n\tvalues: {\n\t\t\"==\": {\n\t\t},\n\t\t\"!=\": {\n\t\t},\n\t\t\">\": {\n\t\t},\n\t\t\">=\": {\n\t\t},\n\t\t\"<\": {\n\t\t},\n\t\t\"<=\": {\n\t\t},\n\t\t\"in\": {\n\t\t},\n\t\t\"!in\": {\n\t\t},\n\t\tall: {\n\t\t},\n\t\tany: {\n\t\t},\n\t\tnone: {\n\t\t},\n\t\thas: {\n\t\t},\n\t\t\"!has\": {\n\t\t}\n\t}\n};\nvar geometry_type = {\n\ttype: \"enum\",\n\tvalues: {\n\t\tPoint: {\n\t\t},\n\t\tLineString: {\n\t\t},\n\t\tPolygon: {\n\t\t}\n\t}\n};\nvar function_stop = {\n\ttype: \"array\",\n\tminimum: 0,\n\tmaximum: 24,\n\tvalue: [\n\t\t\"number\",\n\t\t\"color\"\n\t],\n\tlength: 2\n};\nvar expression$1 = {\n\ttype: \"array\",\n\tvalue: \"*\",\n\tminimum: 1\n};\nvar light = {\n\tanchor: {\n\t\ttype: \"enum\",\n\t\t\"default\": \"viewport\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"data-constant\",\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t}\n\t},\n\tposition: {\n\t\ttype: \"array\",\n\t\t\"default\": [\n\t\t\t1.15,\n\t\t\t210,\n\t\t\t30\n\t\t],\n\t\tlength: 3,\n\t\tvalue: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t}\n\t},\n\tcolor: {\n\t\ttype: \"color\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": \"#ffffff\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\tintensity: {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.5,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t}\n};\nvar sky = {\n\t\"sky-color\": {\n\t\ttype: \"color\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": \"#88C6FC\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"horizon-color\": {\n\t\ttype: \"color\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": \"#ffffff\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"fog-color\": {\n\t\ttype: \"color\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": \"#ffffff\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"fog-ground-blend\": {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.5,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"horizon-fog-blend\": {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.8,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"sky-horizon-blend\": {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.8,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"atmosphere-blend\": {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.8,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t}\n};\nvar terrain = {\n\tsource: {\n\t\ttype: \"string\",\n\t\trequired: true\n\t},\n\texaggeration: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\t\"default\": 1\n\t}\n};\nvar projection = {\n\ttype: {\n\t\ttype: \"projectionDefinition\",\n\t\t\"default\": \"mercator\",\n\t\t\"property-type\": \"data-constant\",\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t}\n\t}\n};\nvar paint = [\n\t\"paint_fill\",\n\t\"paint_line\",\n\t\"paint_circle\",\n\t\"paint_heatmap\",\n\t\"paint_fill-extrusion\",\n\t\"paint_symbol\",\n\t\"paint_raster\",\n\t\"paint_hillshade\",\n\t\"paint_color-relief\",\n\t\"paint_background\"\n];\nvar paint_fill = {\n\t\"fill-antialias\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-outline-color\": {\n\t\ttype: \"color\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-pattern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"fill-antialias\": true\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"fill-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t}\n};\nvar paint_line = {\n\t\"line-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"line-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-gap-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-offset\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-dasharray\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"line widths\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded\"\n\t},\n\t\"line-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t},\n\t\"line-gradient\": {\n\t\ttype: \"color\",\n\t\ttransition: false,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-dasharray\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tsource: \"geojson\",\n\t\t\t\thas: {\n\t\t\t\t\tlineMetrics: true\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"line-progress\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t}\n};\nvar paint_circle = {\n\t\"circle-radius\": {\n\t\ttype: \"number\",\n\t\t\"default\": 5,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"circle-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-pitch-scale\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"viewport\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-stroke-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-stroke-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-stroke-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t}\n};\nvar paint_heatmap = {\n\t\"heatmap-radius\": {\n\t\ttype: \"number\",\n\t\t\"default\": 30,\n\t\tminimum: 1,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"heatmap-weight\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"heatmap-intensity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"heatmap-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": [\n\t\t\t\"interpolate\",\n\t\t\t[\n\t\t\t\t\"linear\"\n\t\t\t],\n\t\t\t[\n\t\t\t\t\"heatmap-density\"\n\t\t\t],\n\t\t\t0,\n\t\t\t\"rgba(0, 0, 255, 0)\",\n\t\t\t0.1,\n\t\t\t\"royalblue\",\n\t\t\t0.3,\n\t\t\t\"cyan\",\n\t\t\t0.5,\n\t\t\t\"lime\",\n\t\t\t0.7,\n\t\t\t\"yellow\",\n\t\t\t1,\n\t\t\t\"red\"\n\t\t],\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"heatmap-density\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t},\n\t\"heatmap-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_symbol = {\n\t\"icon-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"rgba(0, 0, 0, 0)\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"icon-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\toverridable: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"rgba(0, 0, 0, 0)\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t\"text-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_raster = {\n\t\"raster-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-hue-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\ttransition: true,\n\t\tunits: \"degrees\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-brightness-min\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-brightness-max\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-saturation\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: -1,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-contrast\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: -1,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-resampling\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tlinear: {\n\t\t\t},\n\t\t\tnearest: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"linear\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-fade-duration\": {\n\t\ttype: \"number\",\n\t\t\"default\": 300,\n\t\tminimum: 0,\n\t\ttransition: false,\n\t\tunits: \"milliseconds\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_hillshade = {\n\t\"hillshade-illumination-direction\": {\n\t\ttype: \"numberArray\",\n\t\t\"default\": 335,\n\t\tminimum: 0,\n\t\tmaximum: 359,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-illumination-altitude\": {\n\t\ttype: \"numberArray\",\n\t\t\"default\": 45,\n\t\tminimum: 0,\n\t\tmaximum: 90,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-illumination-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"viewport\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-exaggeration\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0.5,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-shadow-color\": {\n\t\ttype: \"colorArray\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-highlight-color\": {\n\t\ttype: \"colorArray\",\n\t\t\"default\": \"#FFFFFF\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-accent-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-method\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tstandard: {\n\t\t\t},\n\t\t\tbasic: {\n\t\t\t},\n\t\t\tcombined: {\n\t\t\t},\n\t\t\tigor: {\n\t\t\t},\n\t\t\tmultidirectional: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"standard\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_background = {\n\t\"background-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"background-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"background-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded\"\n\t},\n\t\"background-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar transition = {\n\tduration: {\n\t\ttype: \"number\",\n\t\t\"default\": 300,\n\t\tminimum: 0,\n\t\tunits: \"milliseconds\"\n\t},\n\tdelay: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"milliseconds\"\n\t}\n};\nvar promoteId = {\n\t\"*\": {\n\t\ttype: \"string\"\n\t}\n};\nvar v8Spec = {\n\t$version: $version,\n\t$root: $root,\n\tsources: sources,\n\tsource: source,\n\tsource_vector: source_vector,\n\tsource_raster: source_raster,\n\tsource_raster_dem: source_raster_dem,\n\tsource_geojson: source_geojson,\n\tsource_video: source_video,\n\tsource_image: source_image,\n\tlayer: layer,\n\tlayout: layout,\n\tlayout_background: layout_background,\n\tlayout_fill: layout_fill,\n\tlayout_circle: layout_circle,\n\tlayout_heatmap: layout_heatmap,\n\t\"layout_fill-extrusion\": {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n},\n\tlayout_line: layout_line,\n\tlayout_symbol: layout_symbol,\n\tlayout_raster: layout_raster,\n\tlayout_hillshade: layout_hillshade,\n\t\"layout_color-relief\": {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\t\"property-type\": \"constant\"\n\t}\n},\n\tfilter: filter,\n\tfilter_operator: filter_operator,\n\tgeometry_type: geometry_type,\n\t\"function\": {\n\texpression: {\n\t\ttype: \"expression\"\n\t},\n\tstops: {\n\t\ttype: \"array\",\n\t\tvalue: \"function_stop\"\n\t},\n\tbase: {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0\n\t},\n\tproperty: {\n\t\ttype: \"string\",\n\t\t\"default\": \"$zoom\"\n\t},\n\ttype: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tidentity: {\n\t\t\t},\n\t\t\texponential: {\n\t\t\t},\n\t\t\tinterval: {\n\t\t\t},\n\t\t\tcategorical: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"exponential\"\n\t},\n\tcolorSpace: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\trgb: {\n\t\t\t},\n\t\t\tlab: {\n\t\t\t},\n\t\t\thcl: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"rgb\"\n\t},\n\t\"default\": {\n\t\ttype: \"*\",\n\t\trequired: false\n\t}\n},\n\tfunction_stop: function_stop,\n\texpression: expression$1,\n\tlight: light,\n\tsky: sky,\n\tterrain: terrain,\n\tprojection: projection,\n\tpaint: paint,\n\tpaint_fill: paint_fill,\n\t\"paint_fill-extrusion\": {\n\t\"fill-extrusion-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-extrusion-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"fill-extrusion-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t},\n\t\"fill-extrusion-height\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"meters\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-base\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"meters\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"fill-extrusion-height\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-vertical-gradient\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n},\n\tpaint_line: paint_line,\n\tpaint_circle: paint_circle,\n\tpaint_heatmap: paint_heatmap,\n\tpaint_symbol: paint_symbol,\n\tpaint_raster: paint_raster,\n\tpaint_hillshade: paint_hillshade,\n\t\"paint_color-relief\": {\n\t\"color-relief-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"color-relief-color\": {\n\t\ttype: \"color\",\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"elevation\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t}\n},\n\tpaint_background: paint_background,\n\ttransition: transition,\n\t\"property-type\": {\n\t\"data-driven\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"cross-faded\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"cross-faded-data-driven\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"color-ramp\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"data-constant\": {\n\t\ttype: \"property-type\"\n\t},\n\tconstant: {\n\t\ttype: \"property-type\"\n\t}\n},\n\tpromoteId: promoteId\n};\n\nconst refProperties = ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n\nfunction deref(layer, parent) {\n    const result = {};\n    for (const k in layer) {\n        if (k !== 'ref') {\n            result[k] = layer[k];\n        }\n    }\n    refProperties.forEach((k) => {\n        if (k in parent) {\n            result[k] = parent[k];\n        }\n    });\n    return result;\n}\n/**\n * Given an array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property, return a new array where\n * such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @private\n * @param {Array<Layer>} layers\n * @returns {Array<Layer>}\n */\nfunction derefLayers(layers) {\n    layers = layers.slice();\n    const map = Object.create(null);\n    for (let i = 0; i < layers.length; i++) {\n        map[layers[i].id] = layers[i];\n    }\n    for (let i = 0; i < layers.length; i++) {\n        if ('ref' in layers[i]) {\n            layers[i] = deref(layers[i], map[layers[i].ref]);\n        }\n    }\n    return layers;\n}\n\n/**\n * Deeply compares two object literals.\n *\n * @private\n */\nfunction deepEqual(a, b) {\n    if (Array.isArray(a)) {\n        if (!Array.isArray(b) || a.length !== b.length)\n            return false;\n        for (let i = 0; i < a.length; i++) {\n            if (!deepEqual(a[i], b[i]))\n                return false;\n        }\n        return true;\n    }\n    if (typeof a === 'object' && a !== null && b !== null) {\n        if (!(typeof b === 'object'))\n            return false;\n        const keys = Object.keys(a);\n        if (keys.length !== Object.keys(b).length)\n            return false;\n        for (const key in a) {\n            if (!deepEqual(a[key], b[key]))\n                return false;\n        }\n        return true;\n    }\n    return a === b;\n}\n\n/**\n * The main reason for this method is to allow type check when adding a command to the array.\n * @param commands - The commands array to add to\n * @param command - The command to add\n */\nfunction addCommand(commands, command) {\n    commands.push(command);\n}\nfunction addSource(sourceId, after, commands) {\n    addCommand(commands, { command: 'addSource', args: [sourceId, after[sourceId]] });\n}\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n    addCommand(commands, { command: 'removeSource', args: [sourceId] });\n    sourcesRemoved[sourceId] = true;\n}\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n    removeSource(sourceId, commands, sourcesRemoved);\n    addSource(sourceId, after, commands);\n}\nfunction canUpdateGeoJSON(before, after, sourceId) {\n    let prop;\n    for (prop in before[sourceId]) {\n        if (!Object.prototype.hasOwnProperty.call(before[sourceId], prop))\n            continue;\n        if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n            return false;\n        }\n    }\n    for (prop in after[sourceId]) {\n        if (!Object.prototype.hasOwnProperty.call(after[sourceId], prop))\n            continue;\n        if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction diffSources(before, after, commands, sourcesRemoved) {\n    before = before || {};\n    after = after || {};\n    let sourceId;\n    // look for sources to remove\n    for (sourceId in before) {\n        if (!Object.prototype.hasOwnProperty.call(before, sourceId))\n            continue;\n        if (!Object.prototype.hasOwnProperty.call(after, sourceId)) {\n            removeSource(sourceId, commands, sourcesRemoved);\n        }\n    }\n    // look for sources to add/update\n    for (sourceId in after) {\n        if (!Object.prototype.hasOwnProperty.call(after, sourceId))\n            continue;\n        if (!Object.prototype.hasOwnProperty.call(before, sourceId)) {\n            addSource(sourceId, after, commands);\n        }\n        else if (!deepEqual(before[sourceId], after[sourceId])) {\n            if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n                addCommand(commands, { command: 'setGeoJSONSourceData', args: [sourceId, after[sourceId].data] });\n            }\n            else {\n                // no update command, must remove then add\n                updateSource(sourceId, after, commands, sourcesRemoved);\n            }\n        }\n    }\n}\nfunction diffLayerPropertyChanges(before, after, commands, layerId, klass, command) {\n    before = before || {};\n    after = after || {};\n    for (const prop in before) {\n        if (!Object.prototype.hasOwnProperty.call(before, prop))\n            continue;\n        if (!deepEqual(before[prop], after[prop])) {\n            commands.push({ command, args: [layerId, prop, after[prop], klass] });\n        }\n    }\n    for (const prop in after) {\n        if (!Object.prototype.hasOwnProperty.call(after, prop) || Object.prototype.hasOwnProperty.call(before, prop))\n            continue;\n        if (!deepEqual(before[prop], after[prop])) {\n            commands.push({ command, args: [layerId, prop, after[prop], klass] });\n        }\n    }\n}\nfunction pluckId(layer) {\n    return layer.id;\n}\nfunction indexById(group, layer) {\n    group[layer.id] = layer;\n    return group;\n}\nfunction diffLayers(before, after, commands) {\n    before = before || [];\n    after = after || [];\n    // order of layers by id\n    const beforeOrder = before.map(pluckId);\n    const afterOrder = after.map(pluckId);\n    // index of layer by id\n    const beforeIndex = before.reduce(indexById, {});\n    const afterIndex = after.reduce(indexById, {});\n    // track order of layers as if they have been mutated\n    const tracker = beforeOrder.slice();\n    // layers that have been added do not need to be diffed\n    const clean = Object.create(null);\n    let layerId;\n    let beforeLayer;\n    let afterLayer;\n    let insertBeforeLayerId;\n    let prop;\n    // remove layers\n    for (let i = 0, d = 0; i < beforeOrder.length; i++) {\n        layerId = beforeOrder[i];\n        if (!Object.prototype.hasOwnProperty.call(afterIndex, layerId)) {\n            addCommand(commands, { command: 'removeLayer', args: [layerId] });\n            tracker.splice(tracker.indexOf(layerId, d), 1);\n        }\n        else {\n            // limit where in tracker we need to look for a match\n            d++;\n        }\n    }\n    // add/reorder layers\n    for (let i = 0, d = 0; i < afterOrder.length; i++) {\n        // work backwards as insert is before an existing layer\n        layerId = afterOrder[afterOrder.length - 1 - i];\n        if (tracker[tracker.length - 1 - i] === layerId)\n            continue;\n        if (Object.prototype.hasOwnProperty.call(beforeIndex, layerId)) {\n            // remove the layer before we insert at the correct position\n            addCommand(commands, { command: 'removeLayer', args: [layerId] });\n            tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n        }\n        else {\n            // limit where in tracker we need to look for a match\n            d++;\n        }\n        // add layer at correct position\n        insertBeforeLayerId = tracker[tracker.length - i];\n        addCommand(commands, { command: 'addLayer', args: [afterIndex[layerId], insertBeforeLayerId] });\n        tracker.splice(tracker.length - i, 0, layerId);\n        clean[layerId] = true;\n    }\n    // update layers\n    for (let i = 0; i < afterOrder.length; i++) {\n        layerId = afterOrder[i];\n        beforeLayer = beforeIndex[layerId];\n        afterLayer = afterIndex[layerId];\n        // no need to update if previously added (new or moved)\n        if (clean[layerId] || deepEqual(beforeLayer, afterLayer))\n            continue;\n        // If source, source-layer, or type have changes, then remove the layer\n        // and add it back 'from scratch'.\n        if (!deepEqual(beforeLayer.source, afterLayer.source) || !deepEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !deepEqual(beforeLayer.type, afterLayer.type)) {\n            addCommand(commands, { command: 'removeLayer', args: [layerId] });\n            // we add the layer back at the same position it was already in, so\n            // there's no need to update the `tracker`\n            insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n            addCommand(commands, { command: 'addLayer', args: [afterLayer, insertBeforeLayerId] });\n            continue;\n        }\n        // layout, paint, filter, minzoom, maxzoom\n        diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, 'setLayoutProperty');\n        diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, 'setPaintProperty');\n        if (!deepEqual(beforeLayer.filter, afterLayer.filter)) {\n            addCommand(commands, { command: 'setFilter', args: [layerId, afterLayer.filter] });\n        }\n        if (!deepEqual(beforeLayer.minzoom, afterLayer.minzoom) || !deepEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n            addCommand(commands, { command: 'setLayerZoomRange', args: [layerId, afterLayer.minzoom, afterLayer.maxzoom] });\n        }\n        // handle all other layer props, including paint.*\n        for (prop in beforeLayer) {\n            if (!Object.prototype.hasOwnProperty.call(beforeLayer, prop))\n                continue;\n            if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n                prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom')\n                continue;\n            if (prop.indexOf('paint.') === 0) {\n                diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), 'setPaintProperty');\n            }\n            else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n                addCommand(commands, { command: 'setLayerProperty', args: [layerId, prop, afterLayer[prop]] });\n            }\n        }\n        for (prop in afterLayer) {\n            if (!Object.prototype.hasOwnProperty.call(afterLayer, prop) || Object.prototype.hasOwnProperty.call(beforeLayer, prop))\n                continue;\n            if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n                prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom')\n                continue;\n            if (prop.indexOf('paint.') === 0) {\n                diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), 'setPaintProperty');\n            }\n            else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n                addCommand(commands, { command: 'setLayerProperty', args: [layerId, prop, afterLayer[prop]] });\n            }\n        }\n    }\n}\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the maplibre-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n *     { command: 'setConstant', args: ['@water', '#0000FF'] },\n *     { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nfunction diff(before, after) {\n    if (!before)\n        return [{ command: 'setStyle', args: [after] }];\n    let commands = [];\n    try {\n        // Handle changes to top-level properties\n        if (!deepEqual(before.version, after.version)) {\n            return [{ command: 'setStyle', args: [after] }];\n        }\n        if (!deepEqual(before.center, after.center)) {\n            commands.push({ command: 'setCenter', args: [after.center] });\n        }\n        if (!deepEqual(before.state, after.state)) {\n            commands.push({ command: 'setGlobalState', args: [after.state] });\n        }\n        if (!deepEqual(before.centerAltitude, after.centerAltitude)) {\n            commands.push({ command: 'setCenterAltitude', args: [after.centerAltitude] });\n        }\n        if (!deepEqual(before.zoom, after.zoom)) {\n            commands.push({ command: 'setZoom', args: [after.zoom] });\n        }\n        if (!deepEqual(before.bearing, after.bearing)) {\n            commands.push({ command: 'setBearing', args: [after.bearing] });\n        }\n        if (!deepEqual(before.pitch, after.pitch)) {\n            commands.push({ command: 'setPitch', args: [after.pitch] });\n        }\n        if (!deepEqual(before.roll, after.roll)) {\n            commands.push({ command: 'setRoll', args: [after.roll] });\n        }\n        if (!deepEqual(before.sprite, after.sprite)) {\n            commands.push({ command: 'setSprite', args: [after.sprite] });\n        }\n        if (!deepEqual(before.glyphs, after.glyphs)) {\n            commands.push({ command: 'setGlyphs', args: [after.glyphs] });\n        }\n        if (!deepEqual(before.transition, after.transition)) {\n            commands.push({ command: 'setTransition', args: [after.transition] });\n        }\n        if (!deepEqual(before.light, after.light)) {\n            commands.push({ command: 'setLight', args: [after.light] });\n        }\n        if (!deepEqual(before.terrain, after.terrain)) {\n            commands.push({ command: 'setTerrain', args: [after.terrain] });\n        }\n        if (!deepEqual(before.sky, after.sky)) {\n            commands.push({ command: 'setSky', args: [after.sky] });\n        }\n        if (!deepEqual(before.projection, after.projection)) {\n            commands.push({ command: 'setProjection', args: [after.projection] });\n        }\n        // Handle changes to `sources`\n        // If a source is to be removed, we also--before the removeSource\n        // command--need to remove all the style layers that depend on it.\n        const sourcesRemoved = {};\n        // First collect the {add,remove}Source commands\n        const removeOrAddSourceCommands = [];\n        diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n        // Push a removeLayer command for each style layer that depends on a\n        // source that's being removed.\n        // Also, exclude any such layers them from the input to `diffLayers`\n        // below, so that diffLayers produces the appropriate `addLayers`\n        // command\n        const beforeLayers = [];\n        if (before.layers) {\n            before.layers.forEach((layer) => {\n                if ('source' in layer && sourcesRemoved[layer.source]) {\n                    commands.push({ command: 'removeLayer', args: [layer.id] });\n                }\n                else {\n                    beforeLayers.push(layer);\n                }\n            });\n        }\n        commands = commands.concat(removeOrAddSourceCommands);\n        // Handle changes to `layers`\n        diffLayers(beforeLayers, after.layers, commands);\n    }\n    catch (e) {\n        // fall back to setStyle\n        console.warn('Unable to compute style diff:', e);\n        commands = [{ command: 'setStyle', args: [after] }];\n    }\n    return commands;\n}\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\nclass ValidationError {\n    constructor(key, value, message, identifier) {\n        this.message = (key ? `${key}: ` : '') + message;\n        if (identifier)\n            this.identifier = identifier;\n        if (value !== null && value !== undefined && value.__line__) {\n            this.line = value.__line__;\n        }\n    }\n}\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\nclass ParsingError {\n    constructor(error) {\n        this.error = error;\n        this.message = error.message;\n        const match = error.message.match(/line (\\d+)/);\n        this.line = match ? parseInt(match[1], 10) : 0;\n    }\n}\n\nfunction extendBy(output, ...inputs) {\n    for (const input of inputs) {\n        for (const k in input) {\n            output[k] = input[k];\n        }\n    }\n    return output;\n}\n\nclass ExpressionParsingError extends Error {\n    constructor(key, message) {\n        super(message);\n        this.message = message;\n        this.key = key;\n    }\n}\n\n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nclass Scope {\n    constructor(parent, bindings = []) {\n        this.parent = parent;\n        this.bindings = {};\n        for (const [name, expression] of bindings) {\n            this.bindings[name] = expression;\n        }\n    }\n    concat(bindings) {\n        return new Scope(this, bindings);\n    }\n    get(name) {\n        if (this.bindings[name]) {\n            return this.bindings[name];\n        }\n        if (this.parent) {\n            return this.parent.get(name);\n        }\n        throw new Error(`${name} not found in scope.`);\n    }\n    has(name) {\n        if (this.bindings[name])\n            return true;\n        return this.parent ? this.parent.has(name) : false;\n    }\n}\n\nconst NullType = { kind: 'null' };\nconst NumberType = { kind: 'number' };\nconst StringType = { kind: 'string' };\nconst BooleanType = { kind: 'boolean' };\nconst ColorType = { kind: 'color' };\nconst ProjectionDefinitionType = { kind: 'projectionDefinition' };\nconst ObjectType = { kind: 'object' };\nconst ValueType = { kind: 'value' };\nconst ErrorType = { kind: 'error' };\nconst CollatorType = { kind: 'collator' };\nconst FormattedType = { kind: 'formatted' };\nconst PaddingType = { kind: 'padding' };\nconst ColorArrayType = { kind: 'colorArray' };\nconst NumberArrayType = { kind: 'numberArray' };\nconst ResolvedImageType = { kind: 'resolvedImage' };\nconst VariableAnchorOffsetCollectionType = { kind: 'variableAnchorOffsetCollection' };\nfunction array(itemType, N) {\n    return {\n        kind: 'array',\n        itemType,\n        N\n    };\n}\nfunction typeToString(type) {\n    if (type.kind === 'array') {\n        const itemType = typeToString(type.itemType);\n        return typeof type.N === 'number' ?\n            `array<${itemType}, ${type.N}>` :\n            type.itemType.kind === 'value' ? 'array' : `array<${itemType}>`;\n    }\n    else {\n        return type.kind;\n    }\n}\nconst valueMemberTypes = [\n    NullType,\n    NumberType,\n    StringType,\n    BooleanType,\n    ColorType,\n    ProjectionDefinitionType,\n    FormattedType,\n    ObjectType,\n    array(ValueType),\n    PaddingType,\n    NumberArrayType,\n    ColorArrayType,\n    ResolvedImageType,\n    VariableAnchorOffsetCollectionType\n];\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nfunction checkSubtype(expected, t) {\n    if (t.kind === 'error') {\n        // Error is a subtype of every type\n        return null;\n    }\n    else if (expected.kind === 'array') {\n        if (t.kind === 'array' &&\n            ((t.N === 0 && t.itemType.kind === 'value') || !checkSubtype(expected.itemType, t.itemType)) &&\n            (typeof expected.N !== 'number' || expected.N === t.N)) {\n            return null;\n        }\n    }\n    else if (expected.kind === t.kind) {\n        return null;\n    }\n    else if (expected.kind === 'value') {\n        for (const memberType of valueMemberTypes) {\n            if (!checkSubtype(memberType, t)) {\n                return null;\n            }\n        }\n    }\n    return `Expected ${typeToString(expected)} but found ${typeToString(t)} instead.`;\n}\nfunction isValidType(provided, allowedTypes) {\n    return allowedTypes.some(t => t.kind === provided.kind);\n}\nfunction isValidNativeType(provided, allowedTypes) {\n    return allowedTypes.some(t => {\n        if (t === 'null') {\n            return provided === null;\n        }\n        else if (t === 'array') {\n            return Array.isArray(provided);\n        }\n        else if (t === 'object') {\n            return provided && !Array.isArray(provided) && typeof provided === 'object';\n        }\n        else {\n            return t === typeof provided;\n        }\n    });\n}\n/**\n * Verify whether the specified type is of the same type as the specified sample.\n *\n * @param provided Type to verify\n * @param sample Sample type to reference\n * @returns `true` if both objects are of the same type, `false` otherwise\n * @example basic types\n * if (verifyType(outputType, ValueType)) {\n *     // type narrowed to:\n *     outputType.kind; // 'value'\n * }\n * @example array types\n * if (verifyType(outputType, array(NumberType))) {\n *     // type narrowed to:\n *     outputType.kind; // 'array'\n *     outputType.itemType; // NumberTypeT\n *     outputType.itemType.kind; // 'number'\n * }\n */\nfunction verifyType(provided, sample) {\n    if (provided.kind === 'array' && sample.kind === 'array') {\n        return provided.itemType.kind === sample.itemType.kind && typeof provided.N === 'number';\n    }\n    return provided.kind === sample.kind;\n}\n\n// See https://observablehq.com/@mbostock/lab-and-rgb\nconst Xn = 0.96422, Yn = 1, Zn = 0.82521, t0 = 4 / 29, t1 = 6 / 29, t2 = 3 * t1 * t1, t3 = t1 * t1 * t1, deg2rad = Math.PI / 180, rad2deg = 180 / Math.PI;\nfunction constrainAngle(angle) {\n    angle = angle % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nfunction rgbToLab([r, g, b, alpha]) {\n    r = rgb2xyz(r);\n    g = rgb2xyz(g);\n    b = rgb2xyz(b);\n    let x, z;\n    const y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn);\n    if (r === g && g === b) {\n        x = z = y;\n    }\n    else {\n        x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n        z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n    }\n    const l = 116 * y - 16;\n    return [(l < 0) ? 0 : l, 500 * (x - y), 200 * (y - z), alpha];\n}\nfunction rgb2xyz(x) {\n    return (x <= 0.04045) ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\nfunction xyz2lab(t) {\n    return (t > t3) ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\nfunction labToRgb([l, a, b, alpha]) {\n    let y = (l + 16) / 116, x = isNaN(a) ? y : y + a / 500, z = isNaN(b) ? y : y - b / 200;\n    y = Yn * lab2xyz(y);\n    x = Xn * lab2xyz(x);\n    z = Zn * lab2xyz(z);\n    return [\n        xyz2rgb(3.1338561 * x - 1.6168667 * y - 0.4906146 * z), // D50 -> sRGB\n        xyz2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n        xyz2rgb(0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n        alpha,\n    ];\n}\nfunction xyz2rgb(x) {\n    x = (x <= 0.00304) ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055;\n    return (x < 0) ? 0 : (x > 1) ? 1 : x; // clip to 0..1 range\n}\nfunction lab2xyz(t) {\n    return (t > t1) ? t * t * t : t2 * (t - t0);\n}\nfunction rgbToHcl(rgbColor) {\n    const [l, a, b, alpha] = rgbToLab(rgbColor);\n    const c = Math.sqrt(a * a + b * b);\n    const h = Math.round(c * 10000) ? constrainAngle(Math.atan2(b, a) * rad2deg) : NaN;\n    return [h, c, l, alpha];\n}\nfunction hclToRgb([h, c, l, alpha]) {\n    h = isNaN(h) ? 0 : h * deg2rad;\n    return labToRgb([l, Math.cos(h) * c, Math.sin(h) * c, alpha]);\n}\n// https://drafts.csswg.org/css-color-4/#hsl-to-rgb\nfunction hslToRgb([h, s, l, alpha]) {\n    h = constrainAngle(h);\n    s /= 100;\n    l /= 100;\n    function f(n) {\n        const k = (n + h / 30) % 12;\n        const a = s * Math.min(l, 1 - l);\n        return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n    }\n    return [f(0), f(8), f(4), alpha];\n}\n\n// polyfill for Object.hasOwn\nconst hasOwnProperty = Object.hasOwn ||\n    function hasOwnProperty(object, key) {\n        return Object.prototype.hasOwnProperty.call(object, key);\n    };\nfunction getOwn(object, key) {\n    return hasOwnProperty(object, key) ? object[key] : undefined;\n}\n\n/**\n * CSS color parser compliant with CSS Color 4 Specification.\n * Supports: named colors, `transparent` keyword, all rgb hex notations,\n * rgb(), rgba(), hsl() and hsla() functions.\n * Does not round the parsed values to integers from the range 0..255.\n *\n * Syntax:\n *\n * <alpha-value> = <number> | <percentage>\n *         <hue> = <number> | <angle>\n *\n *         rgb() = rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? )\n *         rgb() = rgb( <percentage>#{3} , <alpha-value>? )    | rgb( <number>#{3} , <alpha-value>? )\n *\n *         hsl() = hsl( <hue> <percentage> <percentage> [ / <alpha-value> ]? )\n *         hsl() = hsl( <hue>, <percentage>, <percentage>, <alpha-value>? )\n *\n * Caveats:\n *   - <angle> - <number> with optional `deg` suffix; `grad`, `rad`, `turn` are not supported\n *   - `none` keyword is not supported\n *   - comments inside rgb()/hsl() are not supported\n *   - legacy color syntax rgba() is supported with an identical grammar and behavior to rgb()\n *   - legacy color syntax hsla() is supported with an identical grammar and behavior to hsl()\n *\n * @param input CSS color string to parse.\n * @returns Color in sRGB color space, with `red`, `green`, `blue`\n * and `alpha` channels normalized to the range 0..1,\n * or `undefined` if the input is not a valid color string.\n */\nfunction parseCssColor(input) {\n    input = input.toLowerCase().trim();\n    if (input === 'transparent') {\n        return [0, 0, 0, 0];\n    }\n    // 'white', 'black', 'blue'\n    const namedColorsMatch = getOwn(namedColors, input);\n    if (namedColorsMatch) {\n        const [r, g, b] = namedColorsMatch;\n        return [r / 255, g / 255, b / 255, 1];\n    }\n    // #f0c, #f0cf, #ff00cc, #ff00ccff\n    if (input.startsWith('#')) {\n        const hexRegexp = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/;\n        if (hexRegexp.test(input)) {\n            const step = input.length < 6 ? 1 : 2;\n            let i = 1;\n            return [\n                parseHex(input.slice(i, i += step)),\n                parseHex(input.slice(i, i += step)),\n                parseHex(input.slice(i, i += step)),\n                parseHex(input.slice(i, i + step) || 'ff'),\n            ];\n        }\n    }\n    // rgb(128 0 0), rgb(50% 0% 0%), rgba(255,0,255,0.6), rgb(255 0 255 / 60%), rgb(100% 0% 100% /.6)\n    if (input.startsWith('rgb')) {\n        const rgbRegExp = /^rgba?\\(\\s*([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/;\n        const rgbMatch = input.match(rgbRegExp);\n        if (rgbMatch) {\n            const [_, // eslint-disable-line @typescript-eslint/no-unused-vars\n            r, // <numeric>\n            rp, // %         (optional)\n            f1, // ,         (optional)\n            g, // <numeric>\n            gp, // %         (optional)\n            f2, // ,         (optional)\n            b, // <numeric>\n            bp, // %         (optional)\n            f3, // ,|/       (optional)\n            a, // <numeric> (optional)\n            ap, // %         (optional)\n            ] = rgbMatch;\n            const argFormat = [f1 || ' ', f2 || ' ', f3].join('');\n            if (argFormat === '  ' ||\n                argFormat === '  /' ||\n                argFormat === ',,' ||\n                argFormat === ',,,') {\n                const valFormat = [rp, gp, bp].join('');\n                const maxValue = (valFormat === '%%%') ? 100 :\n                    (valFormat === '') ? 255 : 0;\n                if (maxValue) {\n                    const rgba = [\n                        clamp(+r / maxValue, 0, 1),\n                        clamp(+g / maxValue, 0, 1),\n                        clamp(+b / maxValue, 0, 1),\n                        a ? parseAlpha(+a, ap) : 1,\n                    ];\n                    if (validateNumbers(rgba)) {\n                        return rgba;\n                    }\n                    // invalid numbers\n                }\n                // values must be all numbers or all percentages\n            }\n            return; // comma optional syntax requires no commas at all\n        }\n    }\n    // hsl(120 50% 80%), hsla(120deg,50%,80%,.9), hsl(12e1 50% 80% / 90%)\n    const hslRegExp = /^hsla?\\(\\s*([\\de.+-]+)(?:deg)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/;\n    const hslMatch = input.match(hslRegExp);\n    if (hslMatch) {\n        const [_, // eslint-disable-line @typescript-eslint/no-unused-vars\n        h, // <numeric>\n        f1, // ,         (optional)\n        s, // <numeric>\n        f2, // ,         (optional)\n        l, // <numeric>\n        f3, // ,|/       (optional)\n        a, // <numeric> (optional)\n        ap, // %         (optional)\n        ] = hslMatch;\n        const argFormat = [f1 || ' ', f2 || ' ', f3].join('');\n        if (argFormat === '  ' ||\n            argFormat === '  /' ||\n            argFormat === ',,' ||\n            argFormat === ',,,') {\n            const hsla = [\n                +h,\n                clamp(+s, 0, 100),\n                clamp(+l, 0, 100),\n                a ? parseAlpha(+a, ap) : 1,\n            ];\n            if (validateNumbers(hsla)) {\n                return hslToRgb(hsla);\n            }\n            // invalid numbers\n        }\n        // comma optional syntax requires no commas at all\n    }\n}\nfunction parseHex(hex) {\n    return parseInt(hex.padEnd(2, hex), 16) / 255;\n}\nfunction parseAlpha(a, asPercentage) {\n    return clamp(asPercentage ? (a / 100) : a, 0, 1);\n}\nfunction clamp(n, min, max) {\n    return Math.min(Math.max(min, n), max);\n}\n/**\n * The regular expression for numeric values is not super specific, and it may\n * happen that it will accept a value that is not a valid number. In order to\n * detect and eliminate such values this function exists.\n *\n * @param array Array of uncertain numbers.\n * @returns `true` if the specified array contains only valid numbers, `false` otherwise.\n */\nfunction validateNumbers(array) {\n    return !array.some(Number.isNaN);\n}\n/**\n * To generate:\n * - visit {@link https://www.w3.org/TR/css-color-4/#named-colors}\n * - run in the console:\n * @example\n * copy(`{\\n${[...document.querySelector('.named-color-table tbody').children].map((tr) => `${tr.cells[2].textContent.trim()}: [${tr.cells[4].textContent.trim().split(/\\s+/).join(', ')}],`).join('\\n')}\\n}`);\n */\nconst namedColors = {\n    aliceblue: [240, 248, 255],\n    antiquewhite: [250, 235, 215],\n    aqua: [0, 255, 255],\n    aquamarine: [127, 255, 212],\n    azure: [240, 255, 255],\n    beige: [245, 245, 220],\n    bisque: [255, 228, 196],\n    black: [0, 0, 0],\n    blanchedalmond: [255, 235, 205],\n    blue: [0, 0, 255],\n    blueviolet: [138, 43, 226],\n    brown: [165, 42, 42],\n    burlywood: [222, 184, 135],\n    cadetblue: [95, 158, 160],\n    chartreuse: [127, 255, 0],\n    chocolate: [210, 105, 30],\n    coral: [255, 127, 80],\n    cornflowerblue: [100, 149, 237],\n    cornsilk: [255, 248, 220],\n    crimson: [220, 20, 60],\n    cyan: [0, 255, 255],\n    darkblue: [0, 0, 139],\n    darkcyan: [0, 139, 139],\n    darkgoldenrod: [184, 134, 11],\n    darkgray: [169, 169, 169],\n    darkgreen: [0, 100, 0],\n    darkgrey: [169, 169, 169],\n    darkkhaki: [189, 183, 107],\n    darkmagenta: [139, 0, 139],\n    darkolivegreen: [85, 107, 47],\n    darkorange: [255, 140, 0],\n    darkorchid: [153, 50, 204],\n    darkred: [139, 0, 0],\n    darksalmon: [233, 150, 122],\n    darkseagreen: [143, 188, 143],\n    darkslateblue: [72, 61, 139],\n    darkslategray: [47, 79, 79],\n    darkslategrey: [47, 79, 79],\n    darkturquoise: [0, 206, 209],\n    darkviolet: [148, 0, 211],\n    deeppink: [255, 20, 147],\n    deepskyblue: [0, 191, 255],\n    dimgray: [105, 105, 105],\n    dimgrey: [105, 105, 105],\n    dodgerblue: [30, 144, 255],\n    firebrick: [178, 34, 34],\n    floralwhite: [255, 250, 240],\n    forestgreen: [34, 139, 34],\n    fuchsia: [255, 0, 255],\n    gainsboro: [220, 220, 220],\n    ghostwhite: [248, 248, 255],\n    gold: [255, 215, 0],\n    goldenrod: [218, 165, 32],\n    gray: [128, 128, 128],\n    green: [0, 128, 0],\n    greenyellow: [173, 255, 47],\n    grey: [128, 128, 128],\n    honeydew: [240, 255, 240],\n    hotpink: [255, 105, 180],\n    indianred: [205, 92, 92],\n    indigo: [75, 0, 130],\n    ivory: [255, 255, 240],\n    khaki: [240, 230, 140],\n    lavender: [230, 230, 250],\n    lavenderblush: [255, 240, 245],\n    lawngreen: [124, 252, 0],\n    lemonchiffon: [255, 250, 205],\n    lightblue: [173, 216, 230],\n    lightcoral: [240, 128, 128],\n    lightcyan: [224, 255, 255],\n    lightgoldenrodyellow: [250, 250, 210],\n    lightgray: [211, 211, 211],\n    lightgreen: [144, 238, 144],\n    lightgrey: [211, 211, 211],\n    lightpink: [255, 182, 193],\n    lightsalmon: [255, 160, 122],\n    lightseagreen: [32, 178, 170],\n    lightskyblue: [135, 206, 250],\n    lightslategray: [119, 136, 153],\n    lightslategrey: [119, 136, 153],\n    lightsteelblue: [176, 196, 222],\n    lightyellow: [255, 255, 224],\n    lime: [0, 255, 0],\n    limegreen: [50, 205, 50],\n    linen: [250, 240, 230],\n    magenta: [255, 0, 255],\n    maroon: [128, 0, 0],\n    mediumaquamarine: [102, 205, 170],\n    mediumblue: [0, 0, 205],\n    mediumorchid: [186, 85, 211],\n    mediumpurple: [147, 112, 219],\n    mediumseagreen: [60, 179, 113],\n    mediumslateblue: [123, 104, 238],\n    mediumspringgreen: [0, 250, 154],\n    mediumturquoise: [72, 209, 204],\n    mediumvioletred: [199, 21, 133],\n    midnightblue: [25, 25, 112],\n    mintcream: [245, 255, 250],\n    mistyrose: [255, 228, 225],\n    moccasin: [255, 228, 181],\n    navajowhite: [255, 222, 173],\n    navy: [0, 0, 128],\n    oldlace: [253, 245, 230],\n    olive: [128, 128, 0],\n    olivedrab: [107, 142, 35],\n    orange: [255, 165, 0],\n    orangered: [255, 69, 0],\n    orchid: [218, 112, 214],\n    palegoldenrod: [238, 232, 170],\n    palegreen: [152, 251, 152],\n    paleturquoise: [175, 238, 238],\n    palevioletred: [219, 112, 147],\n    papayawhip: [255, 239, 213],\n    peachpuff: [255, 218, 185],\n    peru: [205, 133, 63],\n    pink: [255, 192, 203],\n    plum: [221, 160, 221],\n    powderblue: [176, 224, 230],\n    purple: [128, 0, 128],\n    rebeccapurple: [102, 51, 153],\n    red: [255, 0, 0],\n    rosybrown: [188, 143, 143],\n    royalblue: [65, 105, 225],\n    saddlebrown: [139, 69, 19],\n    salmon: [250, 128, 114],\n    sandybrown: [244, 164, 96],\n    seagreen: [46, 139, 87],\n    seashell: [255, 245, 238],\n    sienna: [160, 82, 45],\n    silver: [192, 192, 192],\n    skyblue: [135, 206, 235],\n    slateblue: [106, 90, 205],\n    slategray: [112, 128, 144],\n    slategrey: [112, 128, 144],\n    snow: [255, 250, 250],\n    springgreen: [0, 255, 127],\n    steelblue: [70, 130, 180],\n    tan: [210, 180, 140],\n    teal: [0, 128, 128],\n    thistle: [216, 191, 216],\n    tomato: [255, 99, 71],\n    turquoise: [64, 224, 208],\n    violet: [238, 130, 238],\n    wheat: [245, 222, 179],\n    white: [255, 255, 255],\n    whitesmoke: [245, 245, 245],\n    yellow: [255, 255, 0],\n    yellowgreen: [154, 205, 50],\n};\n\nfunction interpolateNumber(from, to, t) {\n    return from + t * (to - from);\n}\nfunction interpolateArray(from, to, t) {\n    return from.map((d, i) => {\n        return interpolateNumber(d, to[i], t);\n    });\n}\n\n/**\n * Checks whether the specified color space is one of the supported interpolation color spaces.\n *\n * @param colorSpace Color space key to verify.\n * @returns `true` if the specified color space is one of the supported\n * interpolation color spaces, `false` otherwise\n */\nfunction isSupportedInterpolationColorSpace(colorSpace) {\n    return colorSpace === 'rgb' || colorSpace === 'hcl' || colorSpace === 'lab';\n}\n/**\n * Color representation used by WebGL.\n * Defined in sRGB color space and pre-blended with alpha.\n * @private\n */\nclass Color {\n    /**\n     * @param r Red component premultiplied by `alpha` 0..1\n     * @param g Green component premultiplied by `alpha` 0..1\n     * @param b Blue component premultiplied by `alpha` 0..1\n     * @param [alpha=1] Alpha component 0..1\n     * @param [premultiplied=true] Whether the `r`, `g` and `b` values have already\n     * been multiplied by alpha. If `true` nothing happens if `false` then they will\n     * be multiplied automatically.\n     */\n    constructor(r, g, b, alpha = 1, premultiplied = true) {\n        this.r = r;\n        this.g = g;\n        this.b = b;\n        this.a = alpha;\n        if (!premultiplied) {\n            this.r *= alpha;\n            this.g *= alpha;\n            this.b *= alpha;\n            if (!alpha) {\n                // alpha = 0 erases completely rgb channels. This behavior is not desirable\n                // if this particular color is later used in color interpolation.\n                // Because of that, a reference to original color is saved.\n                this.overwriteGetter('rgb', [r, g, b, alpha]);\n            }\n        }\n    }\n    /**\n     * Parses CSS color strings and converts colors to sRGB color space if needed.\n     * Officially supported color formats:\n     * - keyword, e.g. 'aquamarine' or 'steelblue'\n     * - hex (with 3, 4, 6 or 8 digits), e.g. '#f0f' or '#e9bebea9'\n     * - rgb and rgba, e.g. 'rgb(0,240,120)' or 'rgba(0%,94%,47%,0.1)' or 'rgb(0 240 120 / .3)'\n     * - hsl and hsla, e.g. 'hsl(0,0%,83%)' or 'hsla(0,0%,83%,.5)' or 'hsl(0 0% 83% / 20%)'\n     *\n     * @param input CSS color string to parse.\n     * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n     */\n    static parse(input) {\n        // in zoom-and-property function input could be an instance of Color class\n        if (input instanceof Color) {\n            return input;\n        }\n        if (typeof input !== 'string') {\n            return;\n        }\n        const rgba = parseCssColor(input);\n        if (rgba) {\n            return new Color(...rgba, false);\n        }\n    }\n    /**\n     * Used in color interpolation and by 'to-rgba' expression.\n     *\n     * @returns Gien color, with reversed alpha blending, in sRGB color space.\n     */\n    get rgb() {\n        const { r, g, b, a } = this;\n        const f = a || Infinity; // reverse alpha blending factor\n        return this.overwriteGetter('rgb', [r / f, g / f, b / f, a]);\n    }\n    /**\n     * Used in color interpolation.\n     *\n     * @returns Gien color, with reversed alpha blending, in HCL color space.\n     */\n    get hcl() {\n        return this.overwriteGetter('hcl', rgbToHcl(this.rgb));\n    }\n    /**\n     * Used in color interpolation.\n     *\n     * @returns Gien color, with reversed alpha blending, in LAB color space.\n     */\n    get lab() {\n        return this.overwriteGetter('lab', rgbToLab(this.rgb));\n    }\n    /**\n     * Lazy getter pattern. When getter is called for the first time lazy value\n     * is calculated and then overwrites getter function in given object instance.\n     *\n     * @example:\n     * const redColor = Color.parse('red');\n     * let x = redColor.hcl; // this will invoke `get hcl()`, which will calculate\n     * // the value of red in HCL space and invoke this `overwriteGetter` function\n     * // which in turn will set a field with a key 'hcl' in the `redColor` object.\n     * // In other words it will override `get hcl()` from its `Color` prototype\n     * // with its own property: hcl = [calculated red value in hcl].\n     * let y = redColor.hcl; // next call will no longer invoke getter but simply\n     * // return the previously calculated value\n     * x === y; // true - `x` is exactly the same object as `y`\n     *\n     * @param getterKey Getter key\n     * @param lazyValue Lazily calculated value to be memoized by current instance\n     * @private\n     */\n    overwriteGetter(getterKey, lazyValue) {\n        Object.defineProperty(this, getterKey, { value: lazyValue });\n        return lazyValue;\n    }\n    /**\n     * Used by 'to-string' expression.\n     *\n     * @returns Serialized color in format `rgba(r,g,b,a)`\n     * where r,g,b are numbers within 0..255 and alpha is number within 1..0\n     *\n     * @example\n     * var purple = new Color.parse('purple');\n     * purple.toString; // = \"rgba(128,0,128,1)\"\n     * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');\n     * translucentGreen.toString(); // = \"rgba(26,207,26,0.73)\"\n     */\n    toString() {\n        const [r, g, b, a] = this.rgb;\n        return `rgba(${[r, g, b].map(n => Math.round(n * 255)).join(',')},${a})`;\n    }\n    static interpolate(from, to, t, spaceKey = 'rgb') {\n        switch (spaceKey) {\n            case 'rgb': {\n                const [r, g, b, alpha] = interpolateArray(from.rgb, to.rgb, t);\n                return new Color(r, g, b, alpha, false);\n            }\n            case 'hcl': {\n                const [hue0, chroma0, light0, alphaF] = from.hcl;\n                const [hue1, chroma1, light1, alphaT] = to.hcl;\n                // https://github.com/gka/chroma.js/blob/cd1b3c0926c7a85cbdc3b1453b3a94006de91a92/src/interpolator/_hsx.js\n                let hue, chroma;\n                if (!isNaN(hue0) && !isNaN(hue1)) {\n                    let dh = hue1 - hue0;\n                    if (hue1 > hue0 && dh > 180) {\n                        dh -= 360;\n                    }\n                    else if (hue1 < hue0 && hue0 - hue1 > 180) {\n                        dh += 360;\n                    }\n                    hue = hue0 + t * dh;\n                }\n                else if (!isNaN(hue0)) {\n                    hue = hue0;\n                    if (light1 === 1 || light1 === 0)\n                        chroma = chroma0;\n                }\n                else if (!isNaN(hue1)) {\n                    hue = hue1;\n                    if (light0 === 1 || light0 === 0)\n                        chroma = chroma1;\n                }\n                else {\n                    hue = NaN;\n                }\n                const [r, g, b, alpha] = hclToRgb([\n                    hue,\n                    chroma !== null && chroma !== void 0 ? chroma : interpolateNumber(chroma0, chroma1, t),\n                    interpolateNumber(light0, light1, t),\n                    interpolateNumber(alphaF, alphaT, t),\n                ]);\n                return new Color(r, g, b, alpha, false);\n            }\n            case 'lab': {\n                const [r, g, b, alpha] = labToRgb(interpolateArray(from.lab, to.lab, t));\n                return new Color(r, g, b, alpha, false);\n            }\n        }\n    }\n}\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\n\n// Flow type declarations for Intl cribbed from\n// https://github.com/facebook/flow/issues/1270\nclass Collator {\n    constructor(caseSensitive, diacriticSensitive, locale) {\n        if (caseSensitive)\n            this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n        else\n            this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n        this.locale = locale;\n        this.collator = new Intl.Collator(this.locale ? this.locale : [], { sensitivity: this.sensitivity, usage: 'search' });\n    }\n    compare(lhs, rhs) {\n        return this.collator.compare(lhs, rhs);\n    }\n    resolvedLocale() {\n        // We create a Collator without \"usage: search\" because we don't want\n        // the search options encoded in our result (e.g. \"en-u-co-search\")\n        return new Intl.Collator(this.locale ? this.locale : [])\n            .resolvedOptions().locale;\n    }\n}\n\nconst VERTICAL_ALIGN_OPTIONS = ['bottom', 'center', 'top'];\nclass FormattedSection {\n    constructor(text, image, scale, fontStack, textColor, verticalAlign) {\n        this.text = text;\n        this.image = image;\n        this.scale = scale;\n        this.fontStack = fontStack;\n        this.textColor = textColor;\n        this.verticalAlign = verticalAlign;\n    }\n}\nclass Formatted {\n    constructor(sections) {\n        this.sections = sections;\n    }\n    static fromString(unformatted) {\n        return new Formatted([new FormattedSection(unformatted, null, null, null, null, null)]);\n    }\n    isEmpty() {\n        if (this.sections.length === 0)\n            return true;\n        return !this.sections.some(section => section.text.length !== 0 ||\n            (section.image && section.image.name.length !== 0));\n    }\n    static factory(text) {\n        if (text instanceof Formatted) {\n            return text;\n        }\n        else {\n            return Formatted.fromString(text);\n        }\n    }\n    toString() {\n        if (this.sections.length === 0)\n            return '';\n        return this.sections.map(section => section.text).join('');\n    }\n}\n\n/**\n * A set of four numbers representing padding around a box. Create instances from\n * bare arrays or numeric values using the static method `Padding.parse`.\n * @private\n */\nclass Padding {\n    constructor(values) {\n        this.values = values.slice();\n    }\n    /**\n     * Numeric padding values\n     * @param input A padding value\n     * @returns A `Padding` instance, or `undefined` if the input is not a valid padding value.\n     */\n    static parse(input) {\n        if (input instanceof Padding) {\n            return input;\n        }\n        // Backwards compatibility: bare number is treated the same as array with single value.\n        // Padding applies to all four sides.\n        if (typeof input === 'number') {\n            return new Padding([input, input, input, input]);\n        }\n        if (!Array.isArray(input)) {\n            return undefined;\n        }\n        if (input.length < 1 || input.length > 4) {\n            return undefined;\n        }\n        for (const val of input) {\n            if (typeof val !== 'number') {\n                return undefined;\n            }\n        }\n        // Expand shortcut properties into explicit 4-sided values\n        switch (input.length) {\n            case 1:\n                input = [input[0], input[0], input[0], input[0]];\n                break;\n            case 2:\n                input = [input[0], input[1], input[0], input[1]];\n                break;\n            case 3:\n                input = [input[0], input[1], input[2], input[1]];\n                break;\n        }\n        return new Padding(input);\n    }\n    toString() {\n        return JSON.stringify(this.values);\n    }\n    static interpolate(from, to, t) {\n        return new Padding(interpolateArray(from.values, to.values, t));\n    }\n}\n\n/**\n * An array of numbers. Create instances from\n * bare arrays or numeric values using the static method `NumberArray.parse`.\n * @private\n */\nclass NumberArray {\n    constructor(values) {\n        this.values = values.slice();\n    }\n    /**\n     * Numeric NumberArray values\n     * @param input A NumberArray value\n     * @returns A `NumberArray` instance, or `undefined` if the input is not a valid NumberArray value.\n     */\n    static parse(input) {\n        if (input instanceof NumberArray) {\n            return input;\n        }\n        // Backwards compatibility (e.g. hillshade-illumination-direction): bare number is treated the same as array with single value.\n        if (typeof input === 'number') {\n            return new NumberArray([input]);\n        }\n        if (!Array.isArray(input)) {\n            return undefined;\n        }\n        for (const val of input) {\n            if (typeof val !== 'number') {\n                return undefined;\n            }\n        }\n        return new NumberArray(input);\n    }\n    toString() {\n        return JSON.stringify(this.values);\n    }\n    static interpolate(from, to, t) {\n        return new NumberArray(interpolateArray(from.values, to.values, t));\n    }\n}\n\n/**\n * An array of colors. Create instances from\n * bare arrays or strings using the static method `ColorArray.parse`.\n * @private\n */\nclass ColorArray {\n    constructor(values) {\n        this.values = values.slice();\n    }\n    /**\n     * ColorArray values\n     * @param input A ColorArray value\n     * @returns A `ColorArray` instance, or `undefined` if the input is not a valid ColorArray value.\n     */\n    static parse(input) {\n        if (input instanceof ColorArray) {\n            return input;\n        }\n        // Backwards compatibility (e.g. hillshade-shadow-color): bare Color is treated the same as array with single value.\n        if (typeof input === 'string') {\n            const parsed_val = Color.parse(input);\n            if (!parsed_val) {\n                return undefined;\n            }\n            return new ColorArray([parsed_val]);\n        }\n        if (!Array.isArray(input)) {\n            return undefined;\n        }\n        const colors = [];\n        for (const val of input) {\n            if (typeof val !== 'string') {\n                return undefined;\n            }\n            const parsed_val = Color.parse(val);\n            if (!parsed_val) {\n                return undefined;\n            }\n            colors.push(parsed_val);\n        }\n        return new ColorArray(colors);\n    }\n    toString() {\n        return JSON.stringify(this.values);\n    }\n    static interpolate(from, to, t, spaceKey = 'rgb') {\n        const colors = [];\n        if (from.values.length != to.values.length) {\n            throw new Error(`colorArray: Arrays have mismatched length (${from.values.length} vs. ${to.values.length}), cannot interpolate.`);\n        }\n        for (let i = 0; i < from.values.length; i++) {\n            colors.push(Color.interpolate(from.values[i], to.values[i], t, spaceKey));\n        }\n        return new ColorArray(colors);\n    }\n}\n\nclass RuntimeError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = 'RuntimeError';\n    }\n    toJSON() {\n        return this.message;\n    }\n}\n\n/** Set of valid anchor positions, as a set for validation */\nconst anchors = new Set(['center', 'left', 'right', 'top', 'bottom', 'top-left', 'top-right', 'bottom-left', 'bottom-right']);\n/**\n * Utility class to assist managing values for text-variable-anchor-offset property. Create instances from\n * bare arrays using the static method `VariableAnchorOffsetCollection.parse`.\n * @private\n */\nclass VariableAnchorOffsetCollection {\n    constructor(values) {\n        this.values = values.slice();\n    }\n    static parse(input) {\n        if (input instanceof VariableAnchorOffsetCollection) {\n            return input;\n        }\n        if (!Array.isArray(input) ||\n            input.length < 1 ||\n            input.length % 2 !== 0) {\n            return undefined;\n        }\n        for (let i = 0; i < input.length; i += 2) {\n            // Elements in even positions should be anchor positions; Elements in odd positions should be offset values\n            const anchorValue = input[i];\n            const offsetValue = input[i + 1];\n            if (typeof anchorValue !== 'string' || !anchors.has(anchorValue)) {\n                return undefined;\n            }\n            if (!Array.isArray(offsetValue) || offsetValue.length !== 2 || typeof offsetValue[0] !== 'number' || typeof offsetValue[1] !== 'number') {\n                return undefined;\n            }\n        }\n        return new VariableAnchorOffsetCollection(input);\n    }\n    toString() {\n        return JSON.stringify(this.values);\n    }\n    static interpolate(from, to, t) {\n        const fromValues = from.values;\n        const toValues = to.values;\n        if (fromValues.length !== toValues.length) {\n            throw new RuntimeError(`Cannot interpolate values of different length. from: ${from.toString()}, to: ${to.toString()}`);\n        }\n        const output = [];\n        for (let i = 0; i < fromValues.length; i += 2) {\n            // Anchor entries must match\n            if (fromValues[i] !== toValues[i]) {\n                throw new RuntimeError(`Cannot interpolate values containing mismatched anchors. from[${i}]: ${fromValues[i]}, to[${i}]: ${toValues[i]}`);\n            }\n            output.push(fromValues[i]);\n            // Interpolate the offset values for each anchor\n            const [fx, fy] = fromValues[i + 1];\n            const [tx, ty] = toValues[i + 1];\n            output.push([interpolateNumber(fx, tx, t), interpolateNumber(fy, ty, t)]);\n        }\n        return new VariableAnchorOffsetCollection(output);\n    }\n}\n\nclass ResolvedImage {\n    constructor(options) {\n        this.name = options.name;\n        this.available = options.available;\n    }\n    toString() {\n        return this.name;\n    }\n    static fromString(name) {\n        if (!name)\n            return null; // treat empty values as no image\n        return new ResolvedImage({ name, available: false });\n    }\n}\n\nclass ProjectionDefinition {\n    constructor(from, to, transition) {\n        this.from = from;\n        this.to = to;\n        this.transition = transition;\n    }\n    static interpolate(from, to, t) {\n        return new ProjectionDefinition(from, to, t);\n    }\n    static parse(input) {\n        if (input instanceof ProjectionDefinition) {\n            return input;\n        }\n        if (Array.isArray(input) && input.length === 3 && typeof input[0] === 'string' && typeof input[1] === 'string' && typeof input[2] === 'number') {\n            return new ProjectionDefinition(input[0], input[1], input[2]);\n        }\n        if (typeof input === 'object' && typeof input.from === 'string' && typeof input.to === 'string' && typeof input.transition === 'number') {\n            return new ProjectionDefinition(input.from, input.to, input.transition);\n        }\n        if (typeof input === 'string') {\n            return new ProjectionDefinition(input, input, 1);\n        }\n        return undefined;\n    }\n}\n\nfunction validateRGBA(r, g, b, a) {\n    if (!(typeof r === 'number' && r >= 0 && r <= 255 &&\n        typeof g === 'number' && g >= 0 && g <= 255 &&\n        typeof b === 'number' && b >= 0 && b <= 255)) {\n        const value = typeof a === 'number' ? [r, g, b, a] : [r, g, b];\n        return `Invalid rgba value [${value.join(', ')}]: 'r', 'g', and 'b' must be between 0 and 255.`;\n    }\n    if (!(typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1))) {\n        return `Invalid rgba value [${[r, g, b, a].join(', ')}]: 'a' must be between 0 and 1.`;\n    }\n    return null;\n}\nfunction isValue(mixed) {\n    if (mixed === null ||\n        typeof mixed === 'string' ||\n        typeof mixed === 'boolean' ||\n        typeof mixed === 'number' ||\n        mixed instanceof ProjectionDefinition ||\n        mixed instanceof Color ||\n        mixed instanceof Collator ||\n        mixed instanceof Formatted ||\n        mixed instanceof Padding ||\n        mixed instanceof NumberArray ||\n        mixed instanceof ColorArray ||\n        mixed instanceof VariableAnchorOffsetCollection ||\n        mixed instanceof ResolvedImage) {\n        return true;\n    }\n    else if (Array.isArray(mixed)) {\n        for (const item of mixed) {\n            if (!isValue(item)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    else if (typeof mixed === 'object') {\n        for (const key in mixed) {\n            if (!isValue(mixed[key])) {\n                return false;\n            }\n        }\n        return true;\n    }\n    else {\n        return false;\n    }\n}\nfunction typeOf(value) {\n    if (value === null) {\n        return NullType;\n    }\n    else if (typeof value === 'string') {\n        return StringType;\n    }\n    else if (typeof value === 'boolean') {\n        return BooleanType;\n    }\n    else if (typeof value === 'number') {\n        return NumberType;\n    }\n    else if (value instanceof Color) {\n        return ColorType;\n    }\n    else if (value instanceof ProjectionDefinition) {\n        return ProjectionDefinitionType;\n    }\n    else if (value instanceof Collator) {\n        return CollatorType;\n    }\n    else if (value instanceof Formatted) {\n        return FormattedType;\n    }\n    else if (value instanceof Padding) {\n        return PaddingType;\n    }\n    else if (value instanceof NumberArray) {\n        return NumberArrayType;\n    }\n    else if (value instanceof ColorArray) {\n        return ColorArrayType;\n    }\n    else if (value instanceof VariableAnchorOffsetCollection) {\n        return VariableAnchorOffsetCollectionType;\n    }\n    else if (value instanceof ResolvedImage) {\n        return ResolvedImageType;\n    }\n    else if (Array.isArray(value)) {\n        const length = value.length;\n        let itemType;\n        for (const item of value) {\n            const t = typeOf(item);\n            if (!itemType) {\n                itemType = t;\n            }\n            else if (itemType === t) {\n                continue;\n            }\n            else {\n                itemType = ValueType;\n                break;\n            }\n        }\n        return array(itemType || ValueType, length);\n    }\n    else {\n        return ObjectType;\n    }\n}\nfunction valueToString(value) {\n    const type = typeof value;\n    if (value === null) {\n        return '';\n    }\n    else if (type === 'string' || type === 'number' || type === 'boolean') {\n        return String(value);\n    }\n    else if (value instanceof Color || value instanceof ProjectionDefinition || value instanceof Formatted || value instanceof Padding || value instanceof NumberArray || value instanceof ColorArray || value instanceof VariableAnchorOffsetCollection || value instanceof ResolvedImage) {\n        return value.toString();\n    }\n    else {\n        return JSON.stringify(value);\n    }\n}\n\nclass Literal {\n    constructor(type, value) {\n        this.type = type;\n        this.value = value;\n    }\n    static parse(args, context) {\n        if (args.length !== 2)\n            return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n        if (!isValue(args[1]))\n            return context.error('invalid value');\n        const value = args[1];\n        let type = typeOf(value);\n        // special case: infer the item type if possible for zero-length arrays\n        const expected = context.expectedType;\n        if (type.kind === 'array' &&\n            type.N === 0 &&\n            expected &&\n            expected.kind === 'array' &&\n            (typeof expected.N !== 'number' || expected.N === 0)) {\n            type = expected;\n        }\n        return new Literal(type, value);\n    }\n    evaluate() {\n        return this.value;\n    }\n    eachChild() { }\n    outputDefined() {\n        return true;\n    }\n}\n\nconst types$1 = {\n    string: StringType,\n    number: NumberType,\n    boolean: BooleanType,\n    object: ObjectType\n};\nclass Assertion {\n    constructor(type, args) {\n        this.type = type;\n        this.args = args;\n    }\n    static parse(args, context) {\n        if (args.length < 2)\n            return context.error('Expected at least one argument.');\n        let i = 1;\n        let type;\n        const name = args[0];\n        if (name === 'array') {\n            let itemType;\n            if (args.length > 2) {\n                const type = args[1];\n                if (typeof type !== 'string' || !(type in types$1) || type === 'object')\n                    return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n                itemType = types$1[type];\n                i++;\n            }\n            else {\n                itemType = ValueType;\n            }\n            let N;\n            if (args.length > 3) {\n                if (args[2] !== null &&\n                    (typeof args[2] !== 'number' ||\n                        args[2] < 0 ||\n                        args[2] !== Math.floor(args[2]))) {\n                    return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n                }\n                N = args[2];\n                i++;\n            }\n            type = array(itemType, N);\n        }\n        else {\n            if (!types$1[name])\n                throw new Error(`Types doesn't contain name = ${name}`);\n            type = types$1[name];\n        }\n        const parsed = [];\n        for (; i < args.length; i++) {\n            const input = context.parse(args[i], i, ValueType);\n            if (!input)\n                return null;\n            parsed.push(input);\n        }\n        return new Assertion(type, parsed);\n    }\n    evaluate(ctx) {\n        for (let i = 0; i < this.args.length; i++) {\n            const value = this.args[i].evaluate(ctx);\n            const error = checkSubtype(this.type, typeOf(value));\n            if (!error) {\n                return value;\n            }\n            else if (i === this.args.length - 1) {\n                throw new RuntimeError(`Expected value to be of type ${typeToString(this.type)}, but found ${typeToString(typeOf(value))} instead.`);\n            }\n        }\n        throw new Error();\n    }\n    eachChild(fn) {\n        this.args.forEach(fn);\n    }\n    outputDefined() {\n        return this.args.every(arg => arg.outputDefined());\n    }\n}\n\nconst types = {\n    'to-boolean': BooleanType,\n    'to-color': ColorType,\n    'to-number': NumberType,\n    'to-string': StringType\n};\n/**\n * Special form for error-coalescing coercion expressions \"to-number\",\n * \"to-color\".  Since these coercions can fail at runtime, they accept multiple\n * arguments, only evaluating one at a time until one succeeds.\n *\n * @private\n */\nclass Coercion {\n    constructor(type, args) {\n        this.type = type;\n        this.args = args;\n    }\n    static parse(args, context) {\n        if (args.length < 2)\n            return context.error('Expected at least one argument.');\n        const name = args[0];\n        if (!types[name])\n            throw new Error(`Can't parse ${name} as it is not part of the known types`);\n        if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n            return context.error('Expected one argument.');\n        const type = types[name];\n        const parsed = [];\n        for (let i = 1; i < args.length; i++) {\n            const input = context.parse(args[i], i, ValueType);\n            if (!input)\n                return null;\n            parsed.push(input);\n        }\n        return new Coercion(type, parsed);\n    }\n    evaluate(ctx) {\n        switch (this.type.kind) {\n            case 'boolean':\n                return Boolean(this.args[0].evaluate(ctx));\n            case 'color': {\n                let input;\n                let error;\n                for (const arg of this.args) {\n                    input = arg.evaluate(ctx);\n                    error = null;\n                    if (input instanceof Color) {\n                        return input;\n                    }\n                    else if (typeof input === 'string') {\n                        const c = ctx.parseColor(input);\n                        if (c)\n                            return c;\n                    }\n                    else if (Array.isArray(input)) {\n                        if (input.length < 3 || input.length > 4) {\n                            error = `Invalid rgba value ${JSON.stringify(input)}: expected an array containing either three or four numeric values.`;\n                        }\n                        else {\n                            error = validateRGBA(input[0], input[1], input[2], input[3]);\n                        }\n                        if (!error) {\n                            return new Color(input[0] / 255, input[1] / 255, input[2] / 255, input[3]);\n                        }\n                    }\n                }\n                throw new RuntimeError(error || `Could not parse color from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n            }\n            case 'padding': {\n                let input;\n                for (const arg of this.args) {\n                    input = arg.evaluate(ctx);\n                    const pad = Padding.parse(input);\n                    if (pad) {\n                        return pad;\n                    }\n                }\n                throw new RuntimeError(`Could not parse padding from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n            }\n            case 'numberArray': {\n                let input;\n                for (const arg of this.args) {\n                    input = arg.evaluate(ctx);\n                    const val = NumberArray.parse(input);\n                    if (val) {\n                        return val;\n                    }\n                }\n                throw new RuntimeError(`Could not parse numberArray from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n            }\n            case 'colorArray': {\n                let input;\n                for (const arg of this.args) {\n                    input = arg.evaluate(ctx);\n                    const val = ColorArray.parse(input);\n                    if (val) {\n                        return val;\n                    }\n                }\n                throw new RuntimeError(`Could not parse colorArray from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n            }\n            case 'variableAnchorOffsetCollection': {\n                let input;\n                for (const arg of this.args) {\n                    input = arg.evaluate(ctx);\n                    const coll = VariableAnchorOffsetCollection.parse(input);\n                    if (coll) {\n                        return coll;\n                    }\n                }\n                throw new RuntimeError(`Could not parse variableAnchorOffsetCollection from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n            }\n            case 'number': {\n                let value = null;\n                for (const arg of this.args) {\n                    value = arg.evaluate(ctx);\n                    if (value === null)\n                        return 0;\n                    const num = Number(value);\n                    if (isNaN(num))\n                        continue;\n                    return num;\n                }\n                throw new RuntimeError(`Could not convert ${JSON.stringify(value)} to number.`);\n            }\n            case 'formatted':\n                // There is no explicit 'to-formatted' but this coercion can be implicitly\n                // created by properties that expect the 'formatted' type.\n                return Formatted.fromString(valueToString(this.args[0].evaluate(ctx)));\n            case 'resolvedImage':\n                return ResolvedImage.fromString(valueToString(this.args[0].evaluate(ctx)));\n            case 'projectionDefinition':\n                return this.args[0].evaluate(ctx);\n            default:\n                return valueToString(this.args[0].evaluate(ctx));\n        }\n    }\n    eachChild(fn) {\n        this.args.forEach(fn);\n    }\n    outputDefined() {\n        return this.args.every(arg => arg.outputDefined());\n    }\n}\n\nconst geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon'];\nclass EvaluationContext {\n    constructor() {\n        this.globals = null;\n        this.feature = null;\n        this.featureState = null;\n        this.formattedSection = null;\n        this._parseColorCache = new Map();\n        this.availableImages = null;\n        this.canonical = null;\n    }\n    id() {\n        return this.feature && 'id' in this.feature ? this.feature.id : null;\n    }\n    geometryType() {\n        return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n    }\n    geometry() {\n        return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n    }\n    canonicalID() {\n        return this.canonical;\n    }\n    properties() {\n        return this.feature && this.feature.properties || {};\n    }\n    parseColor(input) {\n        let cached = this._parseColorCache.get(input);\n        if (!cached) {\n            cached = Color.parse(input);\n            this._parseColorCache.set(input, cached);\n        }\n        return cached;\n    }\n}\n\n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nclass ParsingContext {\n    constructor(registry, isConstantFunc, path = [], expectedType, scope = new Scope(), errors = []) {\n        this.registry = registry;\n        this.path = path;\n        this.key = path.map(part => `[${part}]`).join('');\n        this.scope = scope;\n        this.errors = errors;\n        this.expectedType = expectedType;\n        this._isConstant = isConstantFunc;\n    }\n    /**\n     * @param expr the JSON expression to parse\n     * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed\n     * @param options\n     * @param options.omitTypeAnnotations set true to omit inferred type annotations.  Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n     * @private\n     */\n    parse(expr, index, expectedType, bindings, options = {}) {\n        if (index) {\n            return this.concat(index, expectedType, bindings)._parse(expr, options);\n        }\n        return this._parse(expr, options);\n    }\n    _parse(expr, options) {\n        if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n            expr = ['literal', expr];\n        }\n        function annotate(parsed, type, typeAnnotation) {\n            if (typeAnnotation === 'assert') {\n                return new Assertion(type, [parsed]);\n            }\n            else if (typeAnnotation === 'coerce') {\n                return new Coercion(type, [parsed]);\n            }\n            else {\n                return parsed;\n            }\n        }\n        if (Array.isArray(expr)) {\n            if (expr.length === 0) {\n                return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');\n            }\n            const op = expr[0];\n            if (typeof op !== 'string') {\n                this.error(`Expression name must be a string, but found ${typeof op} instead. If you wanted a literal array, use [\"literal\", [...]].`, 0);\n                return null;\n            }\n            const Expr = this.registry[op];\n            if (Expr) {\n                let parsed = Expr.parse(expr, this);\n                if (!parsed)\n                    return null;\n                if (this.expectedType) {\n                    const expected = this.expectedType;\n                    const actual = parsed.type;\n                    // When we expect a number, string, boolean, or array but have a value, wrap it in an assertion.\n                    // When we expect a color or formatted string, but have a string or value, wrap it in a coercion.\n                    // Otherwise, we do static type-checking.\n                    //\n                    // These behaviors are overridable for:\n                    //   * The \"coalesce\" operator, which needs to omit type annotations.\n                    //   * String-valued properties (e.g. `text-field`), where coercion is more convenient than assertion.\n                    //\n                    if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n                        parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n                    }\n                    else if (('projectionDefinition' === expected.kind && ['string', 'array'].includes(actual.kind)) ||\n                        ((['color', 'formatted', 'resolvedImage'].includes(expected.kind)) && ['value', 'string'].includes(actual.kind)) ||\n                        ((['padding', 'numberArray'].includes(expected.kind)) && ['value', 'number', 'array'].includes(actual.kind)) ||\n                        ('colorArray' === expected.kind && ['value', 'string', 'array'].includes(actual.kind)) ||\n                        ('variableAnchorOffsetCollection' === expected.kind && ['value', 'array'].includes(actual.kind))) {\n                        parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n                    }\n                    else if (this.checkSubtype(expected, actual)) {\n                        return null;\n                    }\n                }\n                // If an expression's arguments are all literals, we can evaluate\n                // it immediately and replace it with a literal value in the\n                // parsed/compiled result. Expressions that expect an image should\n                // not be resolved here so we can later get the available images.\n                if (!(parsed instanceof Literal) && (parsed.type.kind !== 'resolvedImage') && this._isConstant(parsed)) {\n                    const ec = new EvaluationContext();\n                    try {\n                        parsed = new Literal(parsed.type, parsed.evaluate(ec));\n                    }\n                    catch (e) {\n                        this.error(e.message);\n                        return null;\n                    }\n                }\n                return parsed;\n            }\n            return this.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n        }\n        else if (typeof expr === 'undefined') {\n            return this.error('\\'undefined\\' value invalid. Use null instead.');\n        }\n        else if (typeof expr === 'object') {\n            return this.error('Bare objects invalid. Use [\"literal\", {...}] instead.');\n        }\n        else {\n            return this.error(`Expected an array, but found ${typeof expr} instead.`);\n        }\n    }\n    /**\n     * Returns a copy of this context suitable for parsing the subexpression at\n     * index `index`, optionally appending to 'let' binding map.\n     *\n     * Note that `errors` property, intended for collecting errors while\n     * parsing, is copied by reference rather than cloned.\n     * @private\n     */\n    concat(index, expectedType, bindings) {\n        const path = typeof index === 'number' ? this.path.concat(index) : this.path;\n        const scope = bindings ? this.scope.concat(bindings) : this.scope;\n        return new ParsingContext(this.registry, this._isConstant, path, expectedType || null, scope, this.errors);\n    }\n    /**\n     * Push a parsing (or type checking) error into the `this.errors`\n     * @param error The message\n     * @param keys Optionally specify the source of the error at a child\n     * of the current expression at `this.key`.\n     * @private\n     */\n    error(error, ...keys) {\n        const key = `${this.key}${keys.map(k => `[${k}]`).join('')}`;\n        this.errors.push(new ExpressionParsingError(key, error));\n    }\n    /**\n     * Returns null if `t` is a subtype of `expected`; otherwise returns an\n     * error message and also pushes it to `this.errors`.\n     * @param expected The expected type\n     * @param t The actual type\n     * @returns null if `t` is a subtype of `expected`; otherwise returns an error message\n     */\n    checkSubtype(expected, t) {\n        const error = checkSubtype(expected, t);\n        if (error)\n            this.error(error);\n        return error;\n    }\n}\n\nclass Let {\n    constructor(bindings, result) {\n        this.type = result.type;\n        this.bindings = [].concat(bindings);\n        this.result = result;\n    }\n    evaluate(ctx) {\n        return this.result.evaluate(ctx);\n    }\n    eachChild(fn) {\n        for (const binding of this.bindings) {\n            fn(binding[1]);\n        }\n        fn(this.result);\n    }\n    static parse(args, context) {\n        if (args.length < 4)\n            return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`);\n        const bindings = [];\n        for (let i = 1; i < args.length - 1; i += 2) {\n            const name = args[i];\n            if (typeof name !== 'string') {\n                return context.error(`Expected string, but found ${typeof name} instead.`, i);\n            }\n            if (/[^a-zA-Z0-9_]/.test(name)) {\n                return context.error('Variable names must contain only alphanumeric characters or \\'_\\'.', i);\n            }\n            const value = context.parse(args[i + 1], i + 1);\n            if (!value)\n                return null;\n            bindings.push([name, value]);\n        }\n        const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n        if (!result)\n            return null;\n        return new Let(bindings, result);\n    }\n    outputDefined() {\n        return this.result.outputDefined();\n    }\n}\n\nclass Var {\n    constructor(name, boundExpression) {\n        this.type = boundExpression.type;\n        this.name = name;\n        this.boundExpression = boundExpression;\n    }\n    static parse(args, context) {\n        if (args.length !== 2 || typeof args[1] !== 'string')\n            return context.error('\\'var\\' expression requires exactly one string literal argument.');\n        const name = args[1];\n        if (!context.scope.has(name)) {\n            return context.error(`Unknown variable \"${name}\". Make sure \"${name}\" has been bound in an enclosing \"let\" expression before using it.`, 1);\n        }\n        return new Var(name, context.scope.get(name));\n    }\n    evaluate(ctx) {\n        return this.boundExpression.evaluate(ctx);\n    }\n    eachChild() { }\n    outputDefined() {\n        return false;\n    }\n}\n\nclass At {\n    constructor(type, index, input) {\n        this.type = type;\n        this.index = index;\n        this.input = input;\n    }\n    static parse(args, context) {\n        if (args.length !== 3)\n            return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n        const index = context.parse(args[1], 1, NumberType);\n        const input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n        if (!index || !input)\n            return null;\n        const t = input.type;\n        return new At(t.itemType, index, input);\n    }\n    evaluate(ctx) {\n        const index = this.index.evaluate(ctx);\n        const array = this.input.evaluate(ctx);\n        if (index < 0) {\n            throw new RuntimeError(`Array index out of bounds: ${index} < 0.`);\n        }\n        if (index >= array.length) {\n            throw new RuntimeError(`Array index out of bounds: ${index} > ${array.length - 1}.`);\n        }\n        if (index !== Math.floor(index)) {\n            throw new RuntimeError(`Array index must be an integer, but found ${index} instead.`);\n        }\n        return array[index];\n    }\n    eachChild(fn) {\n        fn(this.index);\n        fn(this.input);\n    }\n    outputDefined() {\n        return false;\n    }\n}\n\nclass In {\n    constructor(needle, haystack) {\n        this.type = BooleanType;\n        this.needle = needle;\n        this.haystack = haystack;\n    }\n    static parse(args, context) {\n        if (args.length !== 3) {\n            return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n        }\n        const needle = context.parse(args[1], 1, ValueType);\n        const haystack = context.parse(args[2], 2, ValueType);\n        if (!needle || !haystack)\n            return null;\n        if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n            return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(needle.type)} instead`);\n        }\n        return new In(needle, haystack);\n    }\n    evaluate(ctx) {\n        const needle = this.needle.evaluate(ctx);\n        const haystack = this.haystack.evaluate(ctx);\n        if (!haystack)\n            return false;\n        if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n            throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(typeOf(needle))} instead.`);\n        }\n        if (!isValidNativeType(haystack, ['string', 'array'])) {\n            throw new RuntimeError(`Expected second argument to be of type array or string, but found ${typeToString(typeOf(haystack))} instead.`);\n        }\n        return haystack.indexOf(needle) >= 0;\n    }\n    eachChild(fn) {\n        fn(this.needle);\n        fn(this.haystack);\n    }\n    outputDefined() {\n        return true;\n    }\n}\n\nclass IndexOf {\n    constructor(needle, haystack, fromIndex) {\n        this.type = NumberType;\n        this.needle = needle;\n        this.haystack = haystack;\n        this.fromIndex = fromIndex;\n    }\n    static parse(args, context) {\n        if (args.length <= 2 || args.length >= 5) {\n            return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n        }\n        const needle = context.parse(args[1], 1, ValueType);\n        const haystack = context.parse(args[2], 2, ValueType);\n        if (!needle || !haystack)\n            return null;\n        if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n            return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(needle.type)} instead`);\n        }\n        if (args.length === 4) {\n            const fromIndex = context.parse(args[3], 3, NumberType);\n            if (!fromIndex)\n                return null;\n            return new IndexOf(needle, haystack, fromIndex);\n        }\n        else {\n            return new IndexOf(needle, haystack);\n        }\n    }\n    evaluate(ctx) {\n        const needle = this.needle.evaluate(ctx);\n        const haystack = this.haystack.evaluate(ctx);\n        if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n            throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(typeOf(needle))} instead.`);\n        }\n        let fromIndex;\n        if (this.fromIndex) {\n            fromIndex = this.fromIndex.evaluate(ctx);\n        }\n        if (isValidNativeType(haystack, ['string'])) {\n            const rawIndex = haystack.indexOf(needle, fromIndex);\n            if (rawIndex === -1) {\n                return -1;\n            }\n            else {\n                // The index may be affected by surrogate pairs, so get the length of the preceding substring.\n                return [...haystack.slice(0, rawIndex)].length;\n            }\n        }\n        else if (isValidNativeType(haystack, ['array'])) {\n            return haystack.indexOf(needle, fromIndex);\n        }\n        else {\n            throw new RuntimeError(`Expected second argument to be of type array or string, but found ${typeToString(typeOf(haystack))} instead.`);\n        }\n    }\n    eachChild(fn) {\n        fn(this.needle);\n        fn(this.haystack);\n        if (this.fromIndex) {\n            fn(this.fromIndex);\n        }\n    }\n    outputDefined() {\n        return false;\n    }\n}\n\nclass Match {\n    constructor(inputType, outputType, input, cases, outputs, otherwise) {\n        this.inputType = inputType;\n        this.type = outputType;\n        this.input = input;\n        this.cases = cases;\n        this.outputs = outputs;\n        this.otherwise = otherwise;\n    }\n    static parse(args, context) {\n        if (args.length < 5)\n            return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n        if (args.length % 2 !== 1)\n            return context.error('Expected an even number of arguments.');\n        let inputType;\n        let outputType;\n        if (context.expectedType && context.expectedType.kind !== 'value') {\n            outputType = context.expectedType;\n        }\n        const cases = {};\n        const outputs = [];\n        for (let i = 2; i < args.length - 1; i += 2) {\n            let labels = args[i];\n            const value = args[i + 1];\n            if (!Array.isArray(labels)) {\n                labels = [labels];\n            }\n            const labelContext = context.concat(i);\n            if (labels.length === 0) {\n                return labelContext.error('Expected at least one branch label.');\n            }\n            for (const label of labels) {\n                if (typeof label !== 'number' && typeof label !== 'string') {\n                    return labelContext.error('Branch labels must be numbers or strings.');\n                }\n                else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n                    return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);\n                }\n                else if (typeof label === 'number' && Math.floor(label) !== label) {\n                    return labelContext.error('Numeric branch labels must be integer values.');\n                }\n                else if (!inputType) {\n                    inputType = typeOf(label);\n                }\n                else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n                    return null;\n                }\n                if (typeof cases[String(label)] !== 'undefined') {\n                    return labelContext.error('Branch labels must be unique.');\n                }\n                cases[String(label)] = outputs.length;\n            }\n            const result = context.parse(value, i, outputType);\n            if (!result)\n                return null;\n            outputType = outputType || result.type;\n            outputs.push(result);\n        }\n        const input = context.parse(args[1], 1, ValueType);\n        if (!input)\n            return null;\n        const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n        if (!otherwise)\n            return null;\n        if (input.type.kind !== 'value' && context.concat(1).checkSubtype(inputType, input.type)) {\n            return null;\n        }\n        return new Match(inputType, outputType, input, cases, outputs, otherwise);\n    }\n    evaluate(ctx) {\n        const input = this.input.evaluate(ctx);\n        const output = (typeOf(input) === this.inputType && this.outputs[this.cases[input]]) || this.otherwise;\n        return output.evaluate(ctx);\n    }\n    eachChild(fn) {\n        fn(this.input);\n        this.outputs.forEach(fn);\n        fn(this.otherwise);\n    }\n    outputDefined() {\n        return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined();\n    }\n}\n\nclass Case {\n    constructor(type, branches, otherwise) {\n        this.type = type;\n        this.branches = branches;\n        this.otherwise = otherwise;\n    }\n    static parse(args, context) {\n        if (args.length < 4)\n            return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`);\n        if (args.length % 2 !== 0)\n            return context.error('Expected an odd number of arguments.');\n        let outputType;\n        if (context.expectedType && context.expectedType.kind !== 'value') {\n            outputType = context.expectedType;\n        }\n        const branches = [];\n        for (let i = 1; i < args.length - 1; i += 2) {\n            const test = context.parse(args[i], i, BooleanType);\n            if (!test)\n                return null;\n            const result = context.parse(args[i + 1], i + 1, outputType);\n            if (!result)\n                return null;\n            branches.push([test, result]);\n            outputType = outputType || result.type;\n        }\n        const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n        if (!otherwise)\n            return null;\n        if (!outputType)\n            throw new Error('Can\\'t infer output type');\n        return new Case(outputType, branches, otherwise);\n    }\n    evaluate(ctx) {\n        for (const [test, expression] of this.branches) {\n            if (test.evaluate(ctx)) {\n                return expression.evaluate(ctx);\n            }\n        }\n        return this.otherwise.evaluate(ctx);\n    }\n    eachChild(fn) {\n        for (const [test, expression] of this.branches) {\n            fn(test);\n            fn(expression);\n        }\n        fn(this.otherwise);\n    }\n    outputDefined() {\n        return this.branches.every(([_, out]) => out.outputDefined()) && this.otherwise.outputDefined();\n    }\n}\n\nclass Slice {\n    constructor(type, input, beginIndex, endIndex) {\n        this.type = type;\n        this.input = input;\n        this.beginIndex = beginIndex;\n        this.endIndex = endIndex;\n    }\n    static parse(args, context) {\n        if (args.length <= 2 || args.length >= 5) {\n            return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n        }\n        const input = context.parse(args[1], 1, ValueType);\n        const beginIndex = context.parse(args[2], 2, NumberType);\n        if (!input || !beginIndex)\n            return null;\n        if (!isValidType(input.type, [array(ValueType), StringType, ValueType])) {\n            return context.error(`Expected first argument to be of type array or string, but found ${typeToString(input.type)} instead`);\n        }\n        if (args.length === 4) {\n            const endIndex = context.parse(args[3], 3, NumberType);\n            if (!endIndex)\n                return null;\n            return new Slice(input.type, input, beginIndex, endIndex);\n        }\n        else {\n            return new Slice(input.type, input, beginIndex);\n        }\n    }\n    evaluate(ctx) {\n        const input = this.input.evaluate(ctx);\n        const beginIndex = this.beginIndex.evaluate(ctx);\n        let endIndex;\n        if (this.endIndex) {\n            endIndex = this.endIndex.evaluate(ctx);\n        }\n        if (isValidNativeType(input, ['string'])) {\n            // Indices may be affected by surrogate pairs.\n            return [...input].slice(beginIndex, endIndex).join('');\n        }\n        else if (isValidNativeType(input, ['array'])) {\n            return input.slice(beginIndex, endIndex);\n        }\n        else {\n            throw new RuntimeError(`Expected first argument to be of type array or string, but found ${typeToString(typeOf(input))} instead.`);\n        }\n    }\n    eachChild(fn) {\n        fn(this.input);\n        fn(this.beginIndex);\n        if (this.endIndex) {\n            fn(this.endIndex);\n        }\n    }\n    outputDefined() {\n        return false;\n    }\n}\n\n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nfunction findStopLessThanOrEqualTo(stops, input) {\n    const lastIndex = stops.length - 1;\n    let lowerIndex = 0;\n    let upperIndex = lastIndex;\n    let currentIndex = 0;\n    let currentValue, nextValue;\n    while (lowerIndex <= upperIndex) {\n        currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n        currentValue = stops[currentIndex];\n        nextValue = stops[currentIndex + 1];\n        if (currentValue <= input) {\n            if (currentIndex === lastIndex || input < nextValue) { // Search complete\n                return currentIndex;\n            }\n            lowerIndex = currentIndex + 1;\n        }\n        else if (currentValue > input) {\n            upperIndex = currentIndex - 1;\n        }\n        else {\n            throw new RuntimeError('Input is not a number.');\n        }\n    }\n    return 0;\n}\n\nclass Step {\n    constructor(type, input, stops) {\n        this.type = type;\n        this.input = input;\n        this.labels = [];\n        this.outputs = [];\n        for (const [label, expression] of stops) {\n            this.labels.push(label);\n            this.outputs.push(expression);\n        }\n    }\n    static parse(args, context) {\n        if (args.length - 1 < 4) {\n            return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n        }\n        if ((args.length - 1) % 2 !== 0) {\n            return context.error('Expected an even number of arguments.');\n        }\n        const input = context.parse(args[1], 1, NumberType);\n        if (!input)\n            return null;\n        const stops = [];\n        let outputType = null;\n        if (context.expectedType && context.expectedType.kind !== 'value') {\n            outputType = context.expectedType;\n        }\n        for (let i = 1; i < args.length; i += 2) {\n            const label = i === 1 ? -Infinity : args[i];\n            const value = args[i + 1];\n            const labelKey = i;\n            const valueKey = i + 1;\n            if (typeof label !== 'number') {\n                return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n            }\n            if (stops.length && stops[stops.length - 1][0] >= label) {\n                return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n            }\n            const parsed = context.parse(value, valueKey, outputType);\n            if (!parsed)\n                return null;\n            outputType = outputType || parsed.type;\n            stops.push([label, parsed]);\n        }\n        return new Step(outputType, input, stops);\n    }\n    evaluate(ctx) {\n        const labels = this.labels;\n        const outputs = this.outputs;\n        if (labels.length === 1) {\n            return outputs[0].evaluate(ctx);\n        }\n        const value = this.input.evaluate(ctx);\n        if (value <= labels[0]) {\n            return outputs[0].evaluate(ctx);\n        }\n        const stopCount = labels.length;\n        if (value >= labels[stopCount - 1]) {\n            return outputs[stopCount - 1].evaluate(ctx);\n        }\n        const index = findStopLessThanOrEqualTo(labels, value);\n        return outputs[index].evaluate(ctx);\n    }\n    eachChild(fn) {\n        fn(this.input);\n        for (const expression of this.outputs) {\n            fn(expression);\n        }\n    }\n    outputDefined() {\n        return this.outputs.every(out => out.outputDefined());\n    }\n}\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar unitbezier;\nvar hasRequiredUnitbezier;\n\nfunction requireUnitbezier () {\n\tif (hasRequiredUnitbezier) return unitbezier;\n\thasRequiredUnitbezier = 1;\n\n\tunitbezier = UnitBezier;\n\n\tfunction UnitBezier(p1x, p1y, p2x, p2y) {\n\t    // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n\t    this.cx = 3.0 * p1x;\n\t    this.bx = 3.0 * (p2x - p1x) - this.cx;\n\t    this.ax = 1.0 - this.cx - this.bx;\n\n\t    this.cy = 3.0 * p1y;\n\t    this.by = 3.0 * (p2y - p1y) - this.cy;\n\t    this.ay = 1.0 - this.cy - this.by;\n\n\t    this.p1x = p1x;\n\t    this.p1y = p1y;\n\t    this.p2x = p2x;\n\t    this.p2y = p2y;\n\t}\n\n\tUnitBezier.prototype = {\n\t    sampleCurveX: function (t) {\n\t        // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n\t        return ((this.ax * t + this.bx) * t + this.cx) * t;\n\t    },\n\n\t    sampleCurveY: function (t) {\n\t        return ((this.ay * t + this.by) * t + this.cy) * t;\n\t    },\n\n\t    sampleCurveDerivativeX: function (t) {\n\t        return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n\t    },\n\n\t    solveCurveX: function (x, epsilon) {\n\t        if (epsilon === undefined) epsilon = 1e-6;\n\n\t        if (x < 0.0) return 0.0;\n\t        if (x > 1.0) return 1.0;\n\n\t        var t = x;\n\n\t        // First try a few iterations of Newton's method - normally very fast.\n\t        for (var i = 0; i < 8; i++) {\n\t            var x2 = this.sampleCurveX(t) - x;\n\t            if (Math.abs(x2) < epsilon) return t;\n\n\t            var d2 = this.sampleCurveDerivativeX(t);\n\t            if (Math.abs(d2) < 1e-6) break;\n\n\t            t = t - x2 / d2;\n\t        }\n\n\t        // Fall back to the bisection method for reliability.\n\t        var t0 = 0.0;\n\t        var t1 = 1.0;\n\t        t = x;\n\n\t        for (i = 0; i < 20; i++) {\n\t            x2 = this.sampleCurveX(t);\n\t            if (Math.abs(x2 - x) < epsilon) break;\n\n\t            if (x > x2) {\n\t                t0 = t;\n\t            } else {\n\t                t1 = t;\n\t            }\n\n\t            t = (t1 - t0) * 0.5 + t0;\n\t        }\n\n\t        return t;\n\t    },\n\n\t    solve: function (x, epsilon) {\n\t        return this.sampleCurveY(this.solveCurveX(x, epsilon));\n\t    }\n\t};\n\treturn unitbezier;\n}\n\nvar unitbezierExports = requireUnitbezier();\nvar UnitBezier = /*@__PURE__*/getDefaultExportFromCjs(unitbezierExports);\n\nclass Interpolate {\n    constructor(type, operator, interpolation, input, stops) {\n        this.type = type;\n        this.operator = operator;\n        this.interpolation = interpolation;\n        this.input = input;\n        this.labels = [];\n        this.outputs = [];\n        for (const [label, expression] of stops) {\n            this.labels.push(label);\n            this.outputs.push(expression);\n        }\n    }\n    static interpolationFactor(interpolation, input, lower, upper) {\n        let t = 0;\n        if (interpolation.name === 'exponential') {\n            t = exponentialInterpolation(input, interpolation.base, lower, upper);\n        }\n        else if (interpolation.name === 'linear') {\n            t = exponentialInterpolation(input, 1, lower, upper);\n        }\n        else if (interpolation.name === 'cubic-bezier') {\n            const c = interpolation.controlPoints;\n            const ub = new UnitBezier(c[0], c[1], c[2], c[3]);\n            t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n        }\n        return t;\n    }\n    static parse(args, context) {\n        let [operator, interpolation, input, ...rest] = args;\n        if (!Array.isArray(interpolation) || interpolation.length === 0) {\n            return context.error('Expected an interpolation type expression.', 1);\n        }\n        if (interpolation[0] === 'linear') {\n            interpolation = { name: 'linear' };\n        }\n        else if (interpolation[0] === 'exponential') {\n            const base = interpolation[1];\n            if (typeof base !== 'number')\n                return context.error('Exponential interpolation requires a numeric base.', 1, 1);\n            interpolation = {\n                name: 'exponential',\n                base\n            };\n        }\n        else if (interpolation[0] === 'cubic-bezier') {\n            const controlPoints = interpolation.slice(1);\n            if (controlPoints.length !== 4 ||\n                controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)) {\n                return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n            }\n            interpolation = {\n                name: 'cubic-bezier',\n                controlPoints: controlPoints\n            };\n        }\n        else {\n            return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0);\n        }\n        if (args.length - 1 < 4) {\n            return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n        }\n        if ((args.length - 1) % 2 !== 0) {\n            return context.error('Expected an even number of arguments.');\n        }\n        input = context.parse(input, 2, NumberType);\n        if (!input)\n            return null;\n        const stops = [];\n        let outputType = null;\n        if ((operator === 'interpolate-hcl' || operator === 'interpolate-lab') && context.expectedType != ColorArrayType) {\n            outputType = ColorType;\n        }\n        else if (context.expectedType && context.expectedType.kind !== 'value') {\n            outputType = context.expectedType;\n        }\n        for (let i = 0; i < rest.length; i += 2) {\n            const label = rest[i];\n            const value = rest[i + 1];\n            const labelKey = i + 3;\n            const valueKey = i + 4;\n            if (typeof label !== 'number') {\n                return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n            }\n            if (stops.length && stops[stops.length - 1][0] >= label) {\n                return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n            }\n            const parsed = context.parse(value, valueKey, outputType);\n            if (!parsed)\n                return null;\n            outputType = outputType || parsed.type;\n            stops.push([label, parsed]);\n        }\n        if (!verifyType(outputType, NumberType) &&\n            !verifyType(outputType, ProjectionDefinitionType) &&\n            !verifyType(outputType, ColorType) &&\n            !verifyType(outputType, PaddingType) &&\n            !verifyType(outputType, NumberArrayType) &&\n            !verifyType(outputType, ColorArrayType) &&\n            !verifyType(outputType, VariableAnchorOffsetCollectionType) &&\n            !verifyType(outputType, array(NumberType))) {\n            return context.error(`Type ${typeToString(outputType)} is not interpolatable.`);\n        }\n        return new Interpolate(outputType, operator, interpolation, input, stops);\n    }\n    evaluate(ctx) {\n        const labels = this.labels;\n        const outputs = this.outputs;\n        if (labels.length === 1) {\n            return outputs[0].evaluate(ctx);\n        }\n        const value = this.input.evaluate(ctx);\n        if (value <= labels[0]) {\n            return outputs[0].evaluate(ctx);\n        }\n        const stopCount = labels.length;\n        if (value >= labels[stopCount - 1]) {\n            return outputs[stopCount - 1].evaluate(ctx);\n        }\n        const index = findStopLessThanOrEqualTo(labels, value);\n        const lower = labels[index];\n        const upper = labels[index + 1];\n        const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n        const outputLower = outputs[index].evaluate(ctx);\n        const outputUpper = outputs[index + 1].evaluate(ctx);\n        switch (this.operator) {\n            case 'interpolate':\n                switch (this.type.kind) {\n                    case 'number':\n                        return interpolateNumber(outputLower, outputUpper, t);\n                    case 'color':\n                        return Color.interpolate(outputLower, outputUpper, t);\n                    case 'padding':\n                        return Padding.interpolate(outputLower, outputUpper, t);\n                    case 'colorArray':\n                        return ColorArray.interpolate(outputLower, outputUpper, t);\n                    case 'numberArray':\n                        return NumberArray.interpolate(outputLower, outputUpper, t);\n                    case 'variableAnchorOffsetCollection':\n                        return VariableAnchorOffsetCollection.interpolate(outputLower, outputUpper, t);\n                    case 'array':\n                        return interpolateArray(outputLower, outputUpper, t);\n                    case 'projectionDefinition':\n                        return ProjectionDefinition.interpolate(outputLower, outputUpper, t);\n                }\n            case 'interpolate-hcl':\n                switch (this.type.kind) {\n                    case 'color':\n                        return Color.interpolate(outputLower, outputUpper, t, 'hcl');\n                    case 'colorArray':\n                        return ColorArray.interpolate(outputLower, outputUpper, t, 'hcl');\n                }\n            case 'interpolate-lab':\n                switch (this.type.kind) {\n                    case 'color':\n                        return Color.interpolate(outputLower, outputUpper, t, 'lab');\n                    case 'colorArray':\n                        return ColorArray.interpolate(outputLower, outputUpper, t, 'lab');\n                }\n        }\n    }\n    eachChild(fn) {\n        fn(this.input);\n        for (const expression of this.outputs) {\n            fn(expression);\n        }\n    }\n    outputDefined() {\n        return this.outputs.every(out => out.outputDefined());\n    }\n}\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n * How it works: Two consecutive stop values define a (scaled and shifted) exponential function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n *                     = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`.  In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n*/\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n    const difference = upperValue - lowerValue;\n    const progress = input - lowerValue;\n    if (difference === 0) {\n        return 0;\n    }\n    else if (base === 1) {\n        return progress / difference;\n    }\n    else {\n        return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n    }\n}\nconst interpolateFactory = {\n    color: Color.interpolate,\n    number: interpolateNumber,\n    padding: Padding.interpolate,\n    numberArray: NumberArray.interpolate,\n    colorArray: ColorArray.interpolate,\n    variableAnchorOffsetCollection: VariableAnchorOffsetCollection.interpolate,\n    array: interpolateArray\n};\n\nclass Coalesce {\n    constructor(type, args) {\n        this.type = type;\n        this.args = args;\n    }\n    static parse(args, context) {\n        if (args.length < 2) {\n            return context.error('Expected at least one argument.');\n        }\n        let outputType = null;\n        const expectedType = context.expectedType;\n        if (expectedType && expectedType.kind !== 'value') {\n            outputType = expectedType;\n        }\n        const parsedArgs = [];\n        for (const arg of args.slice(1)) {\n            const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, { typeAnnotation: 'omit' });\n            if (!parsed)\n                return null;\n            outputType = outputType || parsed.type;\n            parsedArgs.push(parsed);\n        }\n        if (!outputType)\n            throw new Error('No output type');\n        // Above, we parse arguments without inferred type annotation so that\n        // they don't produce a runtime error for `null` input, which would\n        // preempt the desired null-coalescing behavior.\n        // Thus, if any of our arguments would have needed an annotation, we\n        // need to wrap the enclosing coalesce expression with it instead.\n        const needsAnnotation = expectedType &&\n            parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n        return needsAnnotation ?\n            new Coalesce(ValueType, parsedArgs) :\n            new Coalesce(outputType, parsedArgs);\n    }\n    evaluate(ctx) {\n        let result = null;\n        let argCount = 0;\n        let requestedImageName;\n        for (const arg of this.args) {\n            argCount++;\n            result = arg.evaluate(ctx);\n            // we need to keep track of the first requested image in a coalesce statement\n            // if coalesce can't find a valid image, we return the first image name so styleimagemissing can fire\n            if (result && result instanceof ResolvedImage && !result.available) {\n                if (!requestedImageName) {\n                    requestedImageName = result.name;\n                }\n                result = null;\n                if (argCount === this.args.length) {\n                    result = requestedImageName;\n                }\n            }\n            if (result !== null)\n                break;\n        }\n        return result;\n    }\n    eachChild(fn) {\n        this.args.forEach(fn);\n    }\n    outputDefined() {\n        return this.args.every(arg => arg.outputDefined());\n    }\n}\n\nfunction isComparableType(op, type) {\n    if (op === '==' || op === '!=') {\n        // equality operator\n        return type.kind === 'boolean' ||\n            type.kind === 'string' ||\n            type.kind === 'number' ||\n            type.kind === 'null' ||\n            type.kind === 'value';\n    }\n    else {\n        // ordering operator\n        return type.kind === 'string' ||\n            type.kind === 'number' ||\n            type.kind === 'value';\n    }\n}\nfunction eq(ctx, a, b) { return a === b; }\nfunction neq(ctx, a, b) { return a !== b; }\nfunction lt(ctx, a, b) { return a < b; }\nfunction gt(ctx, a, b) { return a > b; }\nfunction lteq(ctx, a, b) { return a <= b; }\nfunction gteq(ctx, a, b) { return a >= b; }\nfunction eqCollate(ctx, a, b, c) { return c.compare(a, b) === 0; }\nfunction neqCollate(ctx, a, b, c) { return !eqCollate(ctx, a, b, c); }\nfunction ltCollate(ctx, a, b, c) { return c.compare(a, b) < 0; }\nfunction gtCollate(ctx, a, b, c) { return c.compare(a, b) > 0; }\nfunction lteqCollate(ctx, a, b, c) { return c.compare(a, b) <= 0; }\nfunction gteqCollate(ctx, a, b, c) { return c.compare(a, b) >= 0; }\n/**\n * Special form for comparison operators, implementing the signatures:\n * - (T, T, ?Collator) => boolean\n * - (T, value, ?Collator) => boolean\n * - (value, T, ?Collator) => boolean\n *\n * For inequalities, T must be either value, string, or number. For ==/!=, it\n * can also be boolean or null.\n *\n * Equality semantics are equivalent to Javascript's strict equality (===/!==)\n * -- i.e., when the arguments' types don't match, == evaluates to false, != to\n * true.\n *\n * When types don't match in an ordering comparison, a runtime error is thrown.\n *\n * @private\n */\nfunction makeComparison(op, compareBasic, compareWithCollator) {\n    const isOrderComparison = op !== '==' && op !== '!=';\n    return class Comparison {\n        constructor(lhs, rhs, collator) {\n            this.type = BooleanType;\n            this.lhs = lhs;\n            this.rhs = rhs;\n            this.collator = collator;\n            this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n        }\n        static parse(args, context) {\n            if (args.length !== 3 && args.length !== 4)\n                return context.error('Expected two or three arguments.');\n            const op = args[0];\n            let lhs = context.parse(args[1], 1, ValueType);\n            if (!lhs)\n                return null;\n            if (!isComparableType(op, lhs.type)) {\n                return context.concat(1).error(`\"${op}\" comparisons are not supported for type '${typeToString(lhs.type)}'.`);\n            }\n            let rhs = context.parse(args[2], 2, ValueType);\n            if (!rhs)\n                return null;\n            if (!isComparableType(op, rhs.type)) {\n                return context.concat(2).error(`\"${op}\" comparisons are not supported for type '${typeToString(rhs.type)}'.`);\n            }\n            if (lhs.type.kind !== rhs.type.kind &&\n                lhs.type.kind !== 'value' &&\n                rhs.type.kind !== 'value') {\n                return context.error(`Cannot compare types '${typeToString(lhs.type)}' and '${typeToString(rhs.type)}'.`);\n            }\n            if (isOrderComparison) {\n                // typing rules specific to less/greater than operators\n                if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n                    // (value, T)\n                    lhs = new Assertion(rhs.type, [lhs]);\n                }\n                else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n                    // (T, value)\n                    rhs = new Assertion(lhs.type, [rhs]);\n                }\n            }\n            let collator = null;\n            if (args.length === 4) {\n                if (lhs.type.kind !== 'string' &&\n                    rhs.type.kind !== 'string' &&\n                    lhs.type.kind !== 'value' &&\n                    rhs.type.kind !== 'value') {\n                    return context.error('Cannot use collator to compare non-string types.');\n                }\n                collator = context.parse(args[3], 3, CollatorType);\n                if (!collator)\n                    return null;\n            }\n            return new Comparison(lhs, rhs, collator);\n        }\n        evaluate(ctx) {\n            const lhs = this.lhs.evaluate(ctx);\n            const rhs = this.rhs.evaluate(ctx);\n            if (isOrderComparison && this.hasUntypedArgument) {\n                const lt = typeOf(lhs);\n                const rt = typeOf(rhs);\n                // check that type is string or number, and equal\n                if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n                    throw new RuntimeError(`Expected arguments for \"${op}\" to be (string, string) or (number, number), but found (${lt.kind}, ${rt.kind}) instead.`);\n                }\n            }\n            if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n                const lt = typeOf(lhs);\n                const rt = typeOf(rhs);\n                if (lt.kind !== 'string' || rt.kind !== 'string') {\n                    return compareBasic(ctx, lhs, rhs);\n                }\n            }\n            return this.collator ?\n                compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) :\n                compareBasic(ctx, lhs, rhs);\n        }\n        eachChild(fn) {\n            fn(this.lhs);\n            fn(this.rhs);\n            if (this.collator) {\n                fn(this.collator);\n            }\n        }\n        outputDefined() {\n            return true;\n        }\n    };\n}\nconst Equals = makeComparison('==', eq, eqCollate);\nconst NotEquals = makeComparison('!=', neq, neqCollate);\nconst LessThan = makeComparison('<', lt, ltCollate);\nconst GreaterThan = makeComparison('>', gt, gtCollate);\nconst LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\nconst GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n\nclass CollatorExpression {\n    constructor(caseSensitive, diacriticSensitive, locale) {\n        this.type = CollatorType;\n        this.locale = locale;\n        this.caseSensitive = caseSensitive;\n        this.diacriticSensitive = diacriticSensitive;\n    }\n    static parse(args, context) {\n        if (args.length !== 2)\n            return context.error('Expected one argument.');\n        const options = args[1];\n        if (typeof options !== 'object' || Array.isArray(options))\n            return context.error('Collator options argument must be an object.');\n        const caseSensitive = context.parse(options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n        if (!caseSensitive)\n            return null;\n        const diacriticSensitive = context.parse(options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n        if (!diacriticSensitive)\n            return null;\n        let locale = null;\n        if (options['locale']) {\n            locale = context.parse(options['locale'], 1, StringType);\n            if (!locale)\n                return null;\n        }\n        return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n    }\n    evaluate(ctx) {\n        return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n    }\n    eachChild(fn) {\n        fn(this.caseSensitive);\n        fn(this.diacriticSensitive);\n        if (this.locale) {\n            fn(this.locale);\n        }\n    }\n    outputDefined() {\n        // Technically the set of possible outputs is the combinatoric set of Collators produced\n        // by all possible outputs of locale/caseSensitive/diacriticSensitive\n        // But for the primary use of Collators in comparison operators, we ignore the Collator's\n        // possible outputs anyway, so we can get away with leaving this false for now.\n        return false;\n    }\n}\n\nclass NumberFormat {\n    constructor(number, locale, currency, minFractionDigits, maxFractionDigits) {\n        this.type = StringType;\n        this.number = number;\n        this.locale = locale;\n        this.currency = currency;\n        this.minFractionDigits = minFractionDigits;\n        this.maxFractionDigits = maxFractionDigits;\n    }\n    static parse(args, context) {\n        if (args.length !== 3)\n            return context.error('Expected two arguments.');\n        const number = context.parse(args[1], 1, NumberType);\n        if (!number)\n            return null;\n        const options = args[2];\n        if (typeof options !== 'object' || Array.isArray(options))\n            return context.error('NumberFormat options argument must be an object.');\n        let locale = null;\n        if (options['locale']) {\n            locale = context.parse(options['locale'], 1, StringType);\n            if (!locale)\n                return null;\n        }\n        let currency = null;\n        if (options['currency']) {\n            currency = context.parse(options['currency'], 1, StringType);\n            if (!currency)\n                return null;\n        }\n        let minFractionDigits = null;\n        if (options['min-fraction-digits']) {\n            minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n            if (!minFractionDigits)\n                return null;\n        }\n        let maxFractionDigits = null;\n        if (options['max-fraction-digits']) {\n            maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n            if (!maxFractionDigits)\n                return null;\n        }\n        return new NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits);\n    }\n    evaluate(ctx) {\n        return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [], {\n            style: this.currency ? 'currency' : 'decimal',\n            currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n            minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n            maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined,\n        }).format(this.number.evaluate(ctx));\n    }\n    eachChild(fn) {\n        fn(this.number);\n        if (this.locale) {\n            fn(this.locale);\n        }\n        if (this.currency) {\n            fn(this.currency);\n        }\n        if (this.minFractionDigits) {\n            fn(this.minFractionDigits);\n        }\n        if (this.maxFractionDigits) {\n            fn(this.maxFractionDigits);\n        }\n    }\n    outputDefined() {\n        return false;\n    }\n}\n\nclass FormatExpression {\n    constructor(sections) {\n        this.type = FormattedType;\n        this.sections = sections;\n    }\n    static parse(args, context) {\n        if (args.length < 2) {\n            return context.error('Expected at least one argument.');\n        }\n        const firstArg = args[1];\n        if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n            return context.error('First argument must be an image or text section.');\n        }\n        const sections = [];\n        let nextTokenMayBeObject = false;\n        for (let i = 1; i <= args.length - 1; ++i) {\n            const arg = args[i];\n            if (nextTokenMayBeObject && typeof arg === 'object' && !Array.isArray(arg)) {\n                nextTokenMayBeObject = false;\n                let scale = null;\n                if (arg['font-scale']) {\n                    scale = context.parse(arg['font-scale'], 1, NumberType);\n                    if (!scale)\n                        return null;\n                }\n                let font = null;\n                if (arg['text-font']) {\n                    font = context.parse(arg['text-font'], 1, array(StringType));\n                    if (!font)\n                        return null;\n                }\n                let textColor = null;\n                if (arg['text-color']) {\n                    textColor = context.parse(arg['text-color'], 1, ColorType);\n                    if (!textColor)\n                        return null;\n                }\n                let verticalAlign = null;\n                if (arg['vertical-align']) {\n                    if (typeof arg['vertical-align'] === 'string' && !VERTICAL_ALIGN_OPTIONS.includes(arg['vertical-align'])) {\n                        return context.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${arg['vertical-align']}' instead.`);\n                    }\n                    verticalAlign = context.parse(arg['vertical-align'], 1, StringType);\n                    if (!verticalAlign)\n                        return null;\n                }\n                const lastExpression = sections[sections.length - 1];\n                lastExpression.scale = scale;\n                lastExpression.font = font;\n                lastExpression.textColor = textColor;\n                lastExpression.verticalAlign = verticalAlign;\n            }\n            else {\n                const content = context.parse(args[i], 1, ValueType);\n                if (!content)\n                    return null;\n                const kind = content.type.kind;\n                if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage')\n                    return context.error('Formatted text type must be \\'string\\', \\'value\\', \\'image\\' or \\'null\\'.');\n                nextTokenMayBeObject = true;\n                sections.push({ content, scale: null, font: null, textColor: null, verticalAlign: null });\n            }\n        }\n        return new FormatExpression(sections);\n    }\n    evaluate(ctx) {\n        const evaluateSection = section => {\n            const evaluatedContent = section.content.evaluate(ctx);\n            if (typeOf(evaluatedContent) === ResolvedImageType) {\n                return new FormattedSection('', evaluatedContent, null, null, null, section.verticalAlign ? section.verticalAlign.evaluate(ctx) : null);\n            }\n            return new FormattedSection(valueToString(evaluatedContent), null, section.scale ? section.scale.evaluate(ctx) : null, section.font ? section.font.evaluate(ctx).join(',') : null, section.textColor ? section.textColor.evaluate(ctx) : null, section.verticalAlign ? section.verticalAlign.evaluate(ctx) : null);\n        };\n        return new Formatted(this.sections.map(evaluateSection));\n    }\n    eachChild(fn) {\n        for (const section of this.sections) {\n            fn(section.content);\n            if (section.scale) {\n                fn(section.scale);\n            }\n            if (section.font) {\n                fn(section.font);\n            }\n            if (section.textColor) {\n                fn(section.textColor);\n            }\n            if (section.verticalAlign) {\n                fn(section.verticalAlign);\n            }\n        }\n    }\n    outputDefined() {\n        // Technically the combinatoric set of all children\n        // Usually, this.text will be undefined anyway\n        return false;\n    }\n}\n\nclass ImageExpression {\n    constructor(input) {\n        this.type = ResolvedImageType;\n        this.input = input;\n    }\n    static parse(args, context) {\n        if (args.length !== 2) {\n            return context.error('Expected two arguments.');\n        }\n        const name = context.parse(args[1], 1, StringType);\n        if (!name)\n            return context.error('No image name provided.');\n        return new ImageExpression(name);\n    }\n    evaluate(ctx) {\n        const evaluatedImageName = this.input.evaluate(ctx);\n        const value = ResolvedImage.fromString(evaluatedImageName);\n        if (value && ctx.availableImages)\n            value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n        return value;\n    }\n    eachChild(fn) {\n        fn(this.input);\n    }\n    outputDefined() {\n        // The output of image is determined by the list of available images in the evaluation context\n        return false;\n    }\n}\n\nclass Length {\n    constructor(input) {\n        this.type = NumberType;\n        this.input = input;\n    }\n    static parse(args, context) {\n        if (args.length !== 2)\n            return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);\n        const input = context.parse(args[1], 1);\n        if (!input)\n            return null;\n        if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n            return context.error(`Expected argument of type string or array, but found ${typeToString(input.type)} instead.`);\n        return new Length(input);\n    }\n    evaluate(ctx) {\n        const input = this.input.evaluate(ctx);\n        if (typeof input === 'string') {\n            // The length may be affected by surrogate pairs.\n            return [...input].length;\n        }\n        else if (Array.isArray(input)) {\n            return input.length;\n        }\n        else {\n            throw new RuntimeError(`Expected value to be of type string or array, but found ${typeToString(typeOf(input))} instead.`);\n        }\n    }\n    eachChild(fn) {\n        fn(this.input);\n    }\n    outputDefined() {\n        return false;\n    }\n}\n\nconst EXTENT = 8192;\nfunction getTileCoordinates(p, canonical) {\n    const x = mercatorXfromLng(p[0]);\n    const y = mercatorYfromLat(p[1]);\n    const tilesAtZoom = Math.pow(2, canonical.z);\n    return [Math.round(x * tilesAtZoom * EXTENT), Math.round(y * tilesAtZoom * EXTENT)];\n}\nfunction getLngLatFromTileCoord(coord, canonical) {\n    const tilesAtZoom = Math.pow(2, canonical.z);\n    const x = (coord[0] / EXTENT + canonical.x) / tilesAtZoom;\n    const y = (coord[1] / EXTENT + canonical.y) / tilesAtZoom;\n    return [lngFromMercatorXfromLng(x), latFromMercatorY(y)];\n}\nfunction mercatorXfromLng(lng) {\n    return (180 + lng) / 360;\n}\nfunction lngFromMercatorXfromLng(mercatorX) {\n    return mercatorX * 360 - 180;\n}\nfunction mercatorYfromLat(lat) {\n    return (180 - (180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)))) / 360;\n}\nfunction latFromMercatorY(mercatorY) {\n    return 360 / Math.PI * Math.atan(Math.exp((180 - mercatorY * 360) * Math.PI / 180)) - 90;\n}\nfunction updateBBox(bbox, coord) {\n    bbox[0] = Math.min(bbox[0], coord[0]);\n    bbox[1] = Math.min(bbox[1], coord[1]);\n    bbox[2] = Math.max(bbox[2], coord[0]);\n    bbox[3] = Math.max(bbox[3], coord[1]);\n}\nfunction boxWithinBox(bbox1, bbox2) {\n    if (bbox1[0] <= bbox2[0])\n        return false;\n    if (bbox1[2] >= bbox2[2])\n        return false;\n    if (bbox1[1] <= bbox2[1])\n        return false;\n    if (bbox1[3] >= bbox2[3])\n        return false;\n    return true;\n}\nfunction rayIntersect(p, p1, p2) {\n    return ((p1[1] > p[1]) !== (p2[1] > p[1])) && (p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0]);\n}\nfunction pointOnBoundary(p, p1, p2) {\n    const x1 = p[0] - p1[0];\n    const y1 = p[1] - p1[1];\n    const x2 = p[0] - p2[0];\n    const y2 = p[1] - p2[1];\n    return (x1 * y2 - x2 * y1 === 0) && (x1 * x2 <= 0) && (y1 * y2 <= 0);\n}\n// a, b are end points for line segment1, c and d are end points for line segment2\nfunction segmentIntersectSegment(a, b, c, d) {\n    // check if two segments are parallel or not\n    // precondition is end point a, b is inside polygon, if line a->b is\n    // parallel to polygon edge c->d, then a->b won't intersect with c->d\n    const vectorP = [b[0] - a[0], b[1] - a[1]];\n    const vectorQ = [d[0] - c[0], d[1] - c[1]];\n    if (perp(vectorQ, vectorP) === 0)\n        return false;\n    // If lines are intersecting with each other, the relative location should be:\n    // a and b lie in different sides of segment c->d\n    // c and d lie in different sides of segment a->b\n    if (twoSided(a, b, c, d) && twoSided(c, d, a, b))\n        return true;\n    return false;\n}\nfunction lineIntersectPolygon(p1, p2, polygon) {\n    for (const ring of polygon) {\n        // loop through every edge of the ring\n        for (let j = 0; j < ring.length - 1; ++j) {\n            if (segmentIntersectSegment(p1, p2, ring[j], ring[j + 1])) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\n// ray casting algorithm for detecting if point is in polygon\nfunction pointWithinPolygon(point, rings, trueIfOnBoundary = false) {\n    let inside = false;\n    for (const ring of rings) {\n        for (let j = 0; j < ring.length - 1; j++) {\n            if (pointOnBoundary(point, ring[j], ring[j + 1]))\n                return trueIfOnBoundary;\n            if (rayIntersect(point, ring[j], ring[j + 1]))\n                inside = !inside;\n        }\n    }\n    return inside;\n}\nfunction pointWithinPolygons(point, polygons) {\n    for (const polygon of polygons) {\n        if (pointWithinPolygon(point, polygon))\n            return true;\n    }\n    return false;\n}\nfunction lineStringWithinPolygon(line, polygon) {\n    // First, check if geometry points of line segments are all inside polygon\n    for (const point of line) {\n        if (!pointWithinPolygon(point, polygon)) {\n            return false;\n        }\n    }\n    // Second, check if there is line segment intersecting polygon edge\n    for (let i = 0; i < line.length - 1; ++i) {\n        if (lineIntersectPolygon(line[i], line[i + 1], polygon)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction lineStringWithinPolygons(line, polygons) {\n    for (const polygon of polygons) {\n        if (lineStringWithinPolygon(line, polygon))\n            return true;\n    }\n    return false;\n}\nfunction perp(v1, v2) {\n    return (v1[0] * v2[1] - v1[1] * v2[0]);\n}\n// check if p1 and p2 are in different sides of line segment q1->q2\nfunction twoSided(p1, p2, q1, q2) {\n    // q1->p1 (x1, y1), q1->p2 (x2, y2), q1->q2 (x3, y3)\n    const x1 = p1[0] - q1[0];\n    const y1 = p1[1] - q1[1];\n    const x2 = p2[0] - q1[0];\n    const y2 = p2[1] - q1[1];\n    const x3 = q2[0] - q1[0];\n    const y3 = q2[1] - q1[1];\n    const det1 = (x1 * y3 - x3 * y1);\n    const det2 = (x2 * y3 - x3 * y2);\n    if ((det1 > 0 && det2 < 0) || (det1 < 0 && det2 > 0))\n        return true;\n    return false;\n}\n\nfunction getTilePolygon(coordinates, bbox, canonical) {\n    const polygon = [];\n    for (let i = 0; i < coordinates.length; i++) {\n        const ring = [];\n        for (let j = 0; j < coordinates[i].length; j++) {\n            const coord = getTileCoordinates(coordinates[i][j], canonical);\n            updateBBox(bbox, coord);\n            ring.push(coord);\n        }\n        polygon.push(ring);\n    }\n    return polygon;\n}\nfunction getTilePolygons(coordinates, bbox, canonical) {\n    const polygons = [];\n    for (let i = 0; i < coordinates.length; i++) {\n        const polygon = getTilePolygon(coordinates[i], bbox, canonical);\n        polygons.push(polygon);\n    }\n    return polygons;\n}\nfunction updatePoint(p, bbox, polyBBox, worldSize) {\n    if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n        const halfWorldSize = worldSize * 0.5;\n        let shift = (p[0] - polyBBox[0] > halfWorldSize) ? -worldSize : (polyBBox[0] - p[0] > halfWorldSize) ? worldSize : 0;\n        if (shift === 0) {\n            shift = (p[0] - polyBBox[2] > halfWorldSize) ? -worldSize : (polyBBox[2] - p[0] > halfWorldSize) ? worldSize : 0;\n        }\n        p[0] += shift;\n    }\n    updateBBox(bbox, p);\n}\nfunction resetBBox(bbox) {\n    bbox[0] = bbox[1] = Infinity;\n    bbox[2] = bbox[3] = -Infinity;\n}\nfunction getTilePoints(geometry, pointBBox, polyBBox, canonical) {\n    const worldSize = Math.pow(2, canonical.z) * EXTENT;\n    const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n    const tilePoints = [];\n    for (const points of geometry) {\n        for (const point of points) {\n            const p = [point.x + shifts[0], point.y + shifts[1]];\n            updatePoint(p, pointBBox, polyBBox, worldSize);\n            tilePoints.push(p);\n        }\n    }\n    return tilePoints;\n}\nfunction getTileLines(geometry, lineBBox, polyBBox, canonical) {\n    const worldSize = Math.pow(2, canonical.z) * EXTENT;\n    const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n    const tileLines = [];\n    for (const line of geometry) {\n        const tileLine = [];\n        for (const point of line) {\n            const p = [point.x + shifts[0], point.y + shifts[1]];\n            updateBBox(lineBBox, p);\n            tileLine.push(p);\n        }\n        tileLines.push(tileLine);\n    }\n    if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n        resetBBox(lineBBox);\n        for (const line of tileLines) {\n            for (const p of line) {\n                updatePoint(p, lineBBox, polyBBox, worldSize);\n            }\n        }\n    }\n    return tileLines;\n}\nfunction pointsWithinPolygons(ctx, polygonGeometry) {\n    const pointBBox = [Infinity, Infinity, -Infinity, -Infinity];\n    const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n    const canonical = ctx.canonicalID();\n    if (polygonGeometry.type === 'Polygon') {\n        const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n        const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n        if (!boxWithinBox(pointBBox, polyBBox))\n            return false;\n        for (const point of tilePoints) {\n            if (!pointWithinPolygon(point, tilePolygon))\n                return false;\n        }\n    }\n    if (polygonGeometry.type === 'MultiPolygon') {\n        const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n        const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n        if (!boxWithinBox(pointBBox, polyBBox))\n            return false;\n        for (const point of tilePoints) {\n            if (!pointWithinPolygons(point, tilePolygons))\n                return false;\n        }\n    }\n    return true;\n}\nfunction linesWithinPolygons(ctx, polygonGeometry) {\n    const lineBBox = [Infinity, Infinity, -Infinity, -Infinity];\n    const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n    const canonical = ctx.canonicalID();\n    if (polygonGeometry.type === 'Polygon') {\n        const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n        const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n        if (!boxWithinBox(lineBBox, polyBBox))\n            return false;\n        for (const line of tileLines) {\n            if (!lineStringWithinPolygon(line, tilePolygon))\n                return false;\n        }\n    }\n    if (polygonGeometry.type === 'MultiPolygon') {\n        const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n        const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n        if (!boxWithinBox(lineBBox, polyBBox))\n            return false;\n        for (const line of tileLines) {\n            if (!lineStringWithinPolygons(line, tilePolygons))\n                return false;\n        }\n    }\n    return true;\n}\nclass Within {\n    constructor(geojson, geometries) {\n        this.type = BooleanType;\n        this.geojson = geojson;\n        this.geometries = geometries;\n    }\n    static parse(args, context) {\n        if (args.length !== 2)\n            return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n        if (isValue(args[1])) {\n            const geojson = args[1];\n            if (geojson.type === 'FeatureCollection') {\n                const polygonsCoords = [];\n                for (const polygon of geojson.features) {\n                    const { type, coordinates } = polygon.geometry;\n                    if (type === 'Polygon') {\n                        polygonsCoords.push(coordinates);\n                    }\n                    if (type === 'MultiPolygon') {\n                        polygonsCoords.push(...coordinates);\n                    }\n                }\n                if (polygonsCoords.length) {\n                    const multipolygonWrapper = {\n                        type: 'MultiPolygon',\n                        coordinates: polygonsCoords\n                    };\n                    return new Within(geojson, multipolygonWrapper);\n                }\n            }\n            else if (geojson.type === 'Feature') {\n                const type = geojson.geometry.type;\n                if (type === 'Polygon' || type === 'MultiPolygon') {\n                    return new Within(geojson, geojson.geometry);\n                }\n            }\n            else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n                return new Within(geojson, geojson);\n            }\n        }\n        return context.error('\\'within\\' expression requires valid geojson object that contains polygon geometry type.');\n    }\n    evaluate(ctx) {\n        if (ctx.geometry() != null && ctx.canonicalID() != null) {\n            if (ctx.geometryType() === 'Point') {\n                return pointsWithinPolygons(ctx, this.geometries);\n            }\n            else if (ctx.geometryType() === 'LineString') {\n                return linesWithinPolygons(ctx, this.geometries);\n            }\n        }\n        return false;\n    }\n    eachChild() { }\n    outputDefined() {\n        return true;\n    }\n}\n\nclass TinyQueue {\n    constructor(data = [], compare = (a, b) => (a < b ? -1 : a > b ? 1 : 0)) {\n        this.data = data;\n        this.length = this.data.length;\n        this.compare = compare;\n\n        if (this.length > 0) {\n            for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n        }\n    }\n\n    push(item) {\n        this.data.push(item);\n        this._up(this.length++);\n    }\n\n    pop() {\n        if (this.length === 0) return undefined;\n\n        const top = this.data[0];\n        const bottom = this.data.pop();\n\n        if (--this.length > 0) {\n            this.data[0] = bottom;\n            this._down(0);\n        }\n\n        return top;\n    }\n\n    peek() {\n        return this.data[0];\n    }\n\n    _up(pos) {\n        const {data, compare} = this;\n        const item = data[pos];\n\n        while (pos > 0) {\n            const parent = (pos - 1) >> 1;\n            const current = data[parent];\n            if (compare(item, current) >= 0) break;\n            data[pos] = current;\n            pos = parent;\n        }\n\n        data[pos] = item;\n    }\n\n    _down(pos) {\n        const {data, compare} = this;\n        const halfLength = this.length >> 1;\n        const item = data[pos];\n\n        while (pos < halfLength) {\n            let bestChild = (pos << 1) + 1; // initially it is the left child\n            const right = bestChild + 1;\n\n            if (right < this.length && compare(data[right], data[bestChild]) < 0) {\n                bestChild = right;\n            }\n            if (compare(data[bestChild], item) >= 0) break;\n\n            data[pos] = data[bestChild];\n            pos = bestChild;\n        }\n\n        data[pos] = item;\n    }\n}\n\n/**\n * Rearranges items so that all items in the [left, k] are the smallest.\n * The k-th element will have the (k - left + 1)-th smallest value in [left, right].\n *\n * @template T\n * @param {T[]} arr the array to partially sort (in place)\n * @param {number} k middle index for partial sorting (as defined above)\n * @param {number} [left=0] left index of the range to sort\n * @param {number} [right=arr.length-1] right index\n * @param {(a: T, b: T) => number} [compare = (a, b) => a - b] compare function\n */\nfunction quickselect(arr, k, left = 0, right = arr.length - 1, compare = defaultCompare) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            const n = right - left + 1;\n            const m = k - left + 1;\n            const z = Math.log(n);\n            const s = 0.5 * Math.exp(2 * z / 3);\n            const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            quickselect(arr, k, newLeft, newRight, compare);\n        }\n\n        const t = arr[k];\n        let i = left;\n        /** @type {number} */\n        let j = right;\n\n        swap(arr, left, k);\n        if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n        while (i < j) {\n            swap(arr, i, j);\n            i++;\n            j--;\n            while (compare(arr[i], t) < 0) i++;\n            while (compare(arr[j], t) > 0) j--;\n        }\n\n        if (compare(arr[left], t) === 0) swap(arr, left, j);\n        else {\n            j++;\n            swap(arr, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\n/**\n * @template T\n * @param {T[]} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\n/**\n * @template T\n * @param {T} a\n * @param {T} b\n * @returns {number}\n */\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * Classifies an array of rings into polygons with outer rings and holes\n * @param rings - the rings to classify\n * @param maxRings - the maximum number of rings to include in a polygon, use 0 to include all rings\n * @returns an array of polygons with internal rings as holes\n */\nfunction classifyRings(rings, maxRings) {\n    const len = rings.length;\n    if (len <= 1)\n        return [rings];\n    const polygons = [];\n    let polygon;\n    let ccw;\n    for (const ring of rings) {\n        const area = calculateSignedArea(ring);\n        if (area === 0)\n            continue;\n        ring.area = Math.abs(area);\n        if (ccw === undefined)\n            ccw = area < 0;\n        if (ccw === area < 0) {\n            if (polygon)\n                polygons.push(polygon);\n            polygon = [ring];\n        }\n        else {\n            polygon.push(ring);\n        }\n    }\n    if (polygon)\n        polygons.push(polygon);\n    // Earcut performance degrades with the # of rings in a polygon. For this\n    // reason, we limit strip out all but the `maxRings` largest rings.\n    if (maxRings > 1) {\n        for (let j = 0; j < polygons.length; j++) {\n            if (polygons[j].length <= maxRings)\n                continue;\n            quickselect(polygons[j], maxRings, 1, polygons[j].length - 1, compareAreas);\n            polygons[j] = polygons[j].slice(0, maxRings);\n        }\n    }\n    return polygons;\n}\nfunction compareAreas(a, b) {\n    return b.area - a.area;\n}\n/**\n * Returns the signed area for the polygon ring.  Positive areas are exterior rings and\n * have a clockwise winding.  Negative areas are interior rings and have a counter clockwise\n * ordering.\n *\n * @param ring - Exterior or interior ring\n * @returns Signed area\n */\nfunction calculateSignedArea(ring) {\n    let sum = 0;\n    for (let i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n        p1 = ring[i];\n        p2 = ring[j];\n        sum += (p2.x - p1.x) * (p1.y + p2.y);\n    }\n    return sum;\n}\n\n// This is taken from https://github.com/mapbox/cheap-ruler/ in order to take only the relevant parts\n// Values that define WGS84 ellipsoid model of the Earth\nconst RE = 6378.137; // equatorial radius\nconst FE = 1 / 298.257223563; // flattening\nconst E2 = FE * (2 - FE);\nconst RAD = Math.PI / 180;\nclass CheapRuler {\n    constructor(lat) {\n        // Curvature formulas from https://en.wikipedia.org/wiki/Earth_radius#Meridional\n        const m = RAD * RE * 1000;\n        const coslat = Math.cos(lat * RAD);\n        const w2 = 1 / (1 - E2 * (1 - coslat * coslat));\n        const w = Math.sqrt(w2);\n        // multipliers for converting longitude and latitude degrees into distance\n        this.kx = m * w * coslat; // based on normal radius of curvature\n        this.ky = m * w * w2 * (1 - E2); // based on meridional radius of curvature\n    }\n    /**\n     * Given two points of the form [longitude, latitude], returns the distance.\n     *\n     * @param a - point [longitude, latitude]\n     * @param b - point [longitude, latitude]\n     * @returns distance\n     * @example\n     * const distance = ruler.distance([30.5, 50.5], [30.51, 50.49]);\n     * //=distance\n     */\n    distance(a, b) {\n        const dx = this.wrap(a[0] - b[0]) * this.kx;\n        const dy = (a[1] - b[1]) * this.ky;\n        return Math.sqrt(dx * dx + dy * dy);\n    }\n    /**\n     * Returns an object of the form {point, index, t}, where point is closest point on the line\n     * from the given point, index is the start index of the segment with the closest point,\n     * and t is a parameter from 0 to 1 that indicates where the closest point is on that segment.\n     *\n     * @param line - an array of points that form the line\n     * @param p - point [longitude, latitude]\n     * @returns the nearest point, its index in the array and the proportion along the line\n     * @example\n     * const point = ruler.pointOnLine(line, [-67.04, 50.5]).point;\n     * //=point\n     */\n    pointOnLine(line, p) {\n        let minDist = Infinity;\n        let minX, minY, minI, minT;\n        for (let i = 0; i < line.length - 1; i++) {\n            let x = line[i][0];\n            let y = line[i][1];\n            let dx = this.wrap(line[i + 1][0] - x) * this.kx;\n            let dy = (line[i + 1][1] - y) * this.ky;\n            let t = 0;\n            if (dx !== 0 || dy !== 0) {\n                t = (this.wrap(p[0] - x) * this.kx * dx + (p[1] - y) * this.ky * dy) / (dx * dx + dy * dy);\n                if (t > 1) {\n                    x = line[i + 1][0];\n                    y = line[i + 1][1];\n                }\n                else if (t > 0) {\n                    x += (dx / this.kx) * t;\n                    y += (dy / this.ky) * t;\n                }\n            }\n            dx = this.wrap(p[0] - x) * this.kx;\n            dy = (p[1] - y) * this.ky;\n            const sqDist = dx * dx + dy * dy;\n            if (sqDist < minDist) {\n                minDist = sqDist;\n                minX = x;\n                minY = y;\n                minI = i;\n                minT = t;\n            }\n        }\n        return {\n            point: [minX, minY],\n            index: minI,\n            t: Math.max(0, Math.min(1, minT))\n        };\n    }\n    wrap(deg) {\n        while (deg < -180)\n            deg += 360;\n        while (deg > 180)\n            deg -= 360;\n        return deg;\n    }\n}\n\nconst MinPointsSize = 100;\nconst MinLinePointsSize = 50;\nfunction compareDistPair(a, b) {\n    return b[0] - a[0];\n}\nfunction getRangeSize(range) {\n    return range[1] - range[0] + 1;\n}\nfunction isRangeSafe(range, threshold) {\n    return range[1] >= range[0] && range[1] < threshold;\n}\nfunction splitRange(range, isLine) {\n    if (range[0] > range[1]) {\n        return [null, null];\n    }\n    const size = getRangeSize(range);\n    if (isLine) {\n        if (size === 2) {\n            return [range, null];\n        }\n        const size1 = Math.floor(size / 2);\n        return [[range[0], range[0] + size1],\n            [range[0] + size1, range[1]]];\n    }\n    if (size === 1) {\n        return [range, null];\n    }\n    const size1 = Math.floor(size / 2) - 1;\n    return [[range[0], range[0] + size1],\n        [range[0] + size1 + 1, range[1]]];\n}\nfunction getBBox(coords, range) {\n    if (!isRangeSafe(range, coords.length)) {\n        return [Infinity, Infinity, -Infinity, -Infinity];\n    }\n    const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n    for (let i = range[0]; i <= range[1]; ++i) {\n        updateBBox(bbox, coords[i]);\n    }\n    return bbox;\n}\nfunction getPolygonBBox(polygon) {\n    const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n    for (const ring of polygon) {\n        for (const coord of ring) {\n            updateBBox(bbox, coord);\n        }\n    }\n    return bbox;\n}\nfunction isValidBBox(bbox) {\n    return bbox[0] !== -Infinity && bbox[1] !== -Infinity && bbox[2] !== Infinity && bbox[3] !== Infinity;\n}\n// Calculate the distance between two bounding boxes.\n// Calculate the delta in x and y direction, and use two fake points {0.0, 0.0}\n// and {dx, dy} to calculate the distance. Distance will be 0.0 if bounding box are overlapping.\nfunction bboxToBBoxDistance(bbox1, bbox2, ruler) {\n    if (!isValidBBox(bbox1) || !isValidBBox(bbox2)) {\n        return NaN;\n    }\n    let dx = 0.0;\n    let dy = 0.0;\n    // bbox1 in left side\n    if (bbox1[2] < bbox2[0]) {\n        dx = bbox2[0] - bbox1[2];\n    }\n    // bbox1 in right side\n    if (bbox1[0] > bbox2[2]) {\n        dx = bbox1[0] - bbox2[2];\n    }\n    // bbox1 in above side\n    if (bbox1[1] > bbox2[3]) {\n        dy = bbox1[1] - bbox2[3];\n    }\n    // bbox1 in down side\n    if (bbox1[3] < bbox2[1]) {\n        dy = bbox2[1] - bbox1[3];\n    }\n    return ruler.distance([0.0, 0.0], [dx, dy]);\n}\nfunction pointToLineDistance(point, line, ruler) {\n    const nearestPoint = ruler.pointOnLine(line, point);\n    return ruler.distance(point, nearestPoint.point);\n}\nfunction segmentToSegmentDistance(p1, p2, q1, q2, ruler) {\n    const dist1 = Math.min(pointToLineDistance(p1, [q1, q2], ruler), pointToLineDistance(p2, [q1, q2], ruler));\n    const dist2 = Math.min(pointToLineDistance(q1, [p1, p2], ruler), pointToLineDistance(q2, [p1, p2], ruler));\n    return Math.min(dist1, dist2);\n}\nfunction lineToLineDistance(line1, range1, line2, range2, ruler) {\n    const rangeSafe = isRangeSafe(range1, line1.length) && isRangeSafe(range2, line2.length);\n    if (!rangeSafe) {\n        return Infinity;\n    }\n    let dist = Infinity;\n    for (let i = range1[0]; i < range1[1]; ++i) {\n        const p1 = line1[i];\n        const p2 = line1[i + 1];\n        for (let j = range2[0]; j < range2[1]; ++j) {\n            const q1 = line2[j];\n            const q2 = line2[j + 1];\n            if (segmentIntersectSegment(p1, p2, q1, q2)) {\n                return 0.0;\n            }\n            dist = Math.min(dist, segmentToSegmentDistance(p1, p2, q1, q2, ruler));\n        }\n    }\n    return dist;\n}\nfunction pointsToPointsDistance(points1, range1, points2, range2, ruler) {\n    const rangeSafe = isRangeSafe(range1, points1.length) && isRangeSafe(range2, points2.length);\n    if (!rangeSafe) {\n        return NaN;\n    }\n    let dist = Infinity;\n    for (let i = range1[0]; i <= range1[1]; ++i) {\n        for (let j = range2[0]; j <= range2[1]; ++j) {\n            dist = Math.min(dist, ruler.distance(points1[i], points2[j]));\n            if (dist === 0.0) {\n                return dist;\n            }\n        }\n    }\n    return dist;\n}\nfunction pointToPolygonDistance(point, polygon, ruler) {\n    if (pointWithinPolygon(point, polygon, true)) {\n        return 0.0;\n    }\n    let dist = Infinity;\n    for (const ring of polygon) {\n        const front = ring[0];\n        const back = ring[ring.length - 1];\n        if (front !== back) {\n            dist = Math.min(dist, pointToLineDistance(point, [back, front], ruler));\n            if (dist === 0.0) {\n                return dist;\n            }\n        }\n        const nearestPoint = ruler.pointOnLine(ring, point);\n        dist = Math.min(dist, ruler.distance(point, nearestPoint.point));\n        if (dist === 0.0) {\n            return dist;\n        }\n    }\n    return dist;\n}\nfunction lineToPolygonDistance(line, range, polygon, ruler) {\n    if (!isRangeSafe(range, line.length)) {\n        return NaN;\n    }\n    for (let i = range[0]; i <= range[1]; ++i) {\n        if (pointWithinPolygon(line[i], polygon, true)) {\n            return 0.0;\n        }\n    }\n    let dist = Infinity;\n    for (let i = range[0]; i < range[1]; ++i) {\n        const p1 = line[i];\n        const p2 = line[i + 1];\n        for (const ring of polygon) {\n            for (let j = 0, len = ring.length, k = len - 1; j < len; k = j++) {\n                const q1 = ring[k];\n                const q2 = ring[j];\n                if (segmentIntersectSegment(p1, p2, q1, q2)) {\n                    return 0.0;\n                }\n                dist = Math.min(dist, segmentToSegmentDistance(p1, p2, q1, q2, ruler));\n            }\n        }\n    }\n    return dist;\n}\nfunction polygonIntersect(poly1, poly2) {\n    for (const ring of poly1) {\n        for (const point of ring) {\n            if (pointWithinPolygon(point, poly2, true)) {\n                return true;\n            }\n        }\n    }\n    return false;\n}\nfunction polygonToPolygonDistance(polygon1, polygon2, ruler, currentMiniDist = Infinity) {\n    const bbox1 = getPolygonBBox(polygon1);\n    const bbox2 = getPolygonBBox(polygon2);\n    if (currentMiniDist !== Infinity && bboxToBBoxDistance(bbox1, bbox2, ruler) >= currentMiniDist) {\n        return currentMiniDist;\n    }\n    if (boxWithinBox(bbox1, bbox2)) {\n        if (polygonIntersect(polygon1, polygon2)) {\n            return 0.0;\n        }\n    }\n    else if (polygonIntersect(polygon2, polygon1)) {\n        return 0.0;\n    }\n    let dist = Infinity;\n    for (const ring1 of polygon1) {\n        for (let i = 0, len1 = ring1.length, l = len1 - 1; i < len1; l = i++) {\n            const p1 = ring1[l];\n            const p2 = ring1[i];\n            for (const ring2 of polygon2) {\n                for (let j = 0, len2 = ring2.length, k = len2 - 1; j < len2; k = j++) {\n                    const q1 = ring2[k];\n                    const q2 = ring2[j];\n                    if (segmentIntersectSegment(p1, p2, q1, q2)) {\n                        return 0.0;\n                    }\n                    dist = Math.min(dist, segmentToSegmentDistance(p1, p2, q1, q2, ruler));\n                }\n            }\n        }\n    }\n    return dist;\n}\nfunction updateQueue(distQueue, miniDist, ruler, points, polyBBox, rangeA) {\n    if (!rangeA) {\n        return;\n    }\n    const tempDist = bboxToBBoxDistance(getBBox(points, rangeA), polyBBox, ruler);\n    // Insert new pair to the queue if the bbox distance is less than\n    // miniDist, The pair with biggest distance will be at the top\n    if (tempDist < miniDist) {\n        distQueue.push([tempDist, rangeA, [0, 0]]);\n    }\n}\nfunction updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, range1, range2) {\n    if (!range1 || !range2) {\n        return;\n    }\n    const tempDist = bboxToBBoxDistance(getBBox(pointSet1, range1), getBBox(pointSet2, range2), ruler);\n    // Insert new pair to the queue if the bbox distance is less than\n    // miniDist, The pair with biggest distance will be at the top\n    if (tempDist < miniDist) {\n        distQueue.push([tempDist, range1, range2]);\n    }\n}\n// Divide and conquer, the time complexity is O(n*lgn), faster than Brute force\n// O(n*n) Most of the time, use index for in-place processing.\nfunction pointsToPolygonDistance(points, isLine, polygon, ruler, currentMiniDist = Infinity) {\n    let miniDist = Math.min(ruler.distance(points[0], polygon[0][0]), currentMiniDist);\n    if (miniDist === 0.0) {\n        return miniDist;\n    }\n    const distQueue = new TinyQueue([[0, [0, points.length - 1], [0, 0]]], compareDistPair);\n    const polyBBox = getPolygonBBox(polygon);\n    while (distQueue.length > 0) {\n        const distPair = distQueue.pop();\n        if (distPair[0] >= miniDist) {\n            continue;\n        }\n        const range = distPair[1];\n        // In case the set size are relatively small, we could use brute-force directly\n        const threshold = isLine ? MinLinePointsSize : MinPointsSize;\n        if (getRangeSize(range) <= threshold) {\n            if (!isRangeSafe(range, points.length)) {\n                return NaN;\n            }\n            if (isLine) {\n                const tempDist = lineToPolygonDistance(points, range, polygon, ruler);\n                if (isNaN(tempDist) || tempDist === 0.0) {\n                    return tempDist;\n                }\n                miniDist = Math.min(miniDist, tempDist);\n            }\n            else {\n                for (let i = range[0]; i <= range[1]; ++i) {\n                    const tempDist = pointToPolygonDistance(points[i], polygon, ruler);\n                    miniDist = Math.min(miniDist, tempDist);\n                    if (miniDist === 0.0) {\n                        return 0.0;\n                    }\n                }\n            }\n        }\n        else {\n            const newRangesA = splitRange(range, isLine);\n            updateQueue(distQueue, miniDist, ruler, points, polyBBox, newRangesA[0]);\n            updateQueue(distQueue, miniDist, ruler, points, polyBBox, newRangesA[1]);\n        }\n    }\n    return miniDist;\n}\nfunction pointSetToPointSetDistance(pointSet1, isLine1, pointSet2, isLine2, ruler, currentMiniDist = Infinity) {\n    let miniDist = Math.min(currentMiniDist, ruler.distance(pointSet1[0], pointSet2[0]));\n    if (miniDist === 0.0) {\n        return miniDist;\n    }\n    const distQueue = new TinyQueue([[0, [0, pointSet1.length - 1], [0, pointSet2.length - 1]]], compareDistPair);\n    while (distQueue.length > 0) {\n        const distPair = distQueue.pop();\n        if (distPair[0] >= miniDist) {\n            continue;\n        }\n        const rangeA = distPair[1];\n        const rangeB = distPair[2];\n        const threshold1 = isLine1 ? MinLinePointsSize : MinPointsSize;\n        const threshold2 = isLine2 ? MinLinePointsSize : MinPointsSize;\n        // In case the set size are relatively small, we could use brute-force directly\n        if (getRangeSize(rangeA) <= threshold1 && getRangeSize(rangeB) <= threshold2) {\n            if (!isRangeSafe(rangeA, pointSet1.length) && isRangeSafe(rangeB, pointSet2.length)) {\n                return NaN;\n            }\n            let tempDist;\n            if (isLine1 && isLine2) {\n                tempDist = lineToLineDistance(pointSet1, rangeA, pointSet2, rangeB, ruler);\n                miniDist = Math.min(miniDist, tempDist);\n            }\n            else if (isLine1 && !isLine2) {\n                const sublibe = pointSet1.slice(rangeA[0], rangeA[1] + 1);\n                for (let i = rangeB[0]; i <= rangeB[1]; ++i) {\n                    tempDist = pointToLineDistance(pointSet2[i], sublibe, ruler);\n                    miniDist = Math.min(miniDist, tempDist);\n                    if (miniDist === 0.0) {\n                        return miniDist;\n                    }\n                }\n            }\n            else if (!isLine1 && isLine2) {\n                const sublibe = pointSet2.slice(rangeB[0], rangeB[1] + 1);\n                for (let i = rangeA[0]; i <= rangeA[1]; ++i) {\n                    tempDist = pointToLineDistance(pointSet1[i], sublibe, ruler);\n                    miniDist = Math.min(miniDist, tempDist);\n                    if (miniDist === 0.0) {\n                        return miniDist;\n                    }\n                }\n            }\n            else {\n                tempDist = pointsToPointsDistance(pointSet1, rangeA, pointSet2, rangeB, ruler);\n                miniDist = Math.min(miniDist, tempDist);\n            }\n        }\n        else {\n            const newRangesA = splitRange(rangeA, isLine1);\n            const newRangesB = splitRange(rangeB, isLine2);\n            updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[0], newRangesB[0]);\n            updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[0], newRangesB[1]);\n            updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[1], newRangesB[0]);\n            updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[1], newRangesB[1]);\n        }\n    }\n    return miniDist;\n}\nfunction pointToGeometryDistance(ctx, geometries) {\n    const tilePoints = ctx.geometry();\n    const pointPosition = tilePoints.flat().map(p => getLngLatFromTileCoord([p.x, p.y], ctx.canonical));\n    if (tilePoints.length === 0) {\n        return NaN;\n    }\n    const ruler = new CheapRuler(pointPosition[0][1]);\n    let dist = Infinity;\n    for (const geometry of geometries) {\n        switch (geometry.type) {\n            case 'Point':\n                dist = Math.min(dist, pointSetToPointSetDistance(pointPosition, false, [geometry.coordinates], false, ruler, dist));\n                break;\n            case 'LineString':\n                dist = Math.min(dist, pointSetToPointSetDistance(pointPosition, false, geometry.coordinates, true, ruler, dist));\n                break;\n            case 'Polygon':\n                dist = Math.min(dist, pointsToPolygonDistance(pointPosition, false, geometry.coordinates, ruler, dist));\n                break;\n        }\n        if (dist === 0.0) {\n            return dist;\n        }\n    }\n    return dist;\n}\nfunction lineStringToGeometryDistance(ctx, geometries) {\n    const tileLine = ctx.geometry();\n    const linePositions = tileLine.flat().map(p => getLngLatFromTileCoord([p.x, p.y], ctx.canonical));\n    if (tileLine.length === 0) {\n        return NaN;\n    }\n    const ruler = new CheapRuler(linePositions[0][1]);\n    let dist = Infinity;\n    for (const geometry of geometries) {\n        switch (geometry.type) {\n            case 'Point':\n                dist = Math.min(dist, pointSetToPointSetDistance(linePositions, true, [geometry.coordinates], false, ruler, dist));\n                break;\n            case 'LineString':\n                dist = Math.min(dist, pointSetToPointSetDistance(linePositions, true, geometry.coordinates, true, ruler, dist));\n                break;\n            case 'Polygon':\n                dist = Math.min(dist, pointsToPolygonDistance(linePositions, true, geometry.coordinates, ruler, dist));\n                break;\n        }\n        if (dist === 0.0) {\n            return dist;\n        }\n    }\n    return dist;\n}\nfunction polygonToGeometryDistance(ctx, geometries) {\n    const tilePolygon = ctx.geometry();\n    if (tilePolygon.length === 0 || tilePolygon[0].length === 0) {\n        return NaN;\n    }\n    const polygons = classifyRings(tilePolygon, 0).map(polygon => {\n        return polygon.map(ring => {\n            return ring.map(p => getLngLatFromTileCoord([p.x, p.y], ctx.canonical));\n        });\n    });\n    const ruler = new CheapRuler(polygons[0][0][0][1]);\n    let dist = Infinity;\n    for (const geometry of geometries) {\n        for (const polygon of polygons) {\n            switch (geometry.type) {\n                case 'Point':\n                    dist = Math.min(dist, pointsToPolygonDistance([geometry.coordinates], false, polygon, ruler, dist));\n                    break;\n                case 'LineString':\n                    dist = Math.min(dist, pointsToPolygonDistance(geometry.coordinates, true, polygon, ruler, dist));\n                    break;\n                case 'Polygon':\n                    dist = Math.min(dist, polygonToPolygonDistance(polygon, geometry.coordinates, ruler, dist));\n                    break;\n            }\n            if (dist === 0.0) {\n                return dist;\n            }\n        }\n    }\n    return dist;\n}\nfunction toSimpleGeometry(geometry) {\n    if (geometry.type === 'MultiPolygon') {\n        return geometry.coordinates.map(polygon => {\n            return {\n                type: 'Polygon',\n                coordinates: polygon\n            };\n        });\n    }\n    if (geometry.type === 'MultiLineString') {\n        return geometry.coordinates.map(lineString => {\n            return {\n                type: 'LineString',\n                coordinates: lineString\n            };\n        });\n    }\n    if (geometry.type === 'MultiPoint') {\n        return geometry.coordinates.map(point => {\n            return {\n                type: 'Point',\n                coordinates: point\n            };\n        });\n    }\n    return [geometry];\n}\nclass Distance {\n    constructor(geojson, geometries) {\n        this.type = NumberType;\n        this.geojson = geojson;\n        this.geometries = geometries;\n    }\n    static parse(args, context) {\n        if (args.length !== 2)\n            return context.error(`'distance' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n        if (isValue(args[1])) {\n            const geojson = args[1];\n            if (geojson.type === 'FeatureCollection') {\n                return new Distance(geojson, geojson.features.map(feature => toSimpleGeometry(feature.geometry)).flat());\n            }\n            else if (geojson.type === 'Feature') {\n                return new Distance(geojson, toSimpleGeometry(geojson.geometry));\n            }\n            else if ('type' in geojson && 'coordinates' in geojson) {\n                return new Distance(geojson, toSimpleGeometry(geojson));\n            }\n        }\n        return context.error('\\'distance\\' expression requires valid geojson object that contains polygon geometry type.');\n    }\n    evaluate(ctx) {\n        if (ctx.geometry() != null && ctx.canonicalID() != null) {\n            if (ctx.geometryType() === 'Point') {\n                return pointToGeometryDistance(ctx, this.geometries);\n            }\n            else if (ctx.geometryType() === 'LineString') {\n                return lineStringToGeometryDistance(ctx, this.geometries);\n            }\n            else if (ctx.geometryType() === 'Polygon') {\n                return polygonToGeometryDistance(ctx, this.geometries);\n            }\n        }\n        return NaN;\n    }\n    eachChild() { }\n    outputDefined() {\n        return true;\n    }\n}\n\nclass GlobalState {\n    constructor(key) {\n        this.type = ValueType;\n        this.key = key;\n    }\n    static parse(args, context) {\n        if (args.length !== 2) {\n            return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);\n        }\n        const key = args[1];\n        if (key === undefined || key === null) {\n            return context.error('Global state property must be defined.');\n        }\n        if (typeof key !== 'string') {\n            return context.error(`Global state property must be string, but found ${typeof args[1]} instead.`);\n        }\n        return new GlobalState(key);\n    }\n    evaluate(ctx) {\n        var _a;\n        const globalState = (_a = ctx.globals) === null || _a === void 0 ? void 0 : _a.globalState;\n        if (!globalState || Object.keys(globalState).length === 0)\n            return null;\n        return getOwn(globalState, this.key);\n    }\n    eachChild() { }\n    outputDefined() {\n        return false;\n    }\n}\n\nconst expressions$1 = {\n    // special forms\n    '==': Equals,\n    '!=': NotEquals,\n    '>': GreaterThan,\n    '<': LessThan,\n    '>=': GreaterThanOrEqual,\n    '<=': LessThanOrEqual,\n    'array': Assertion,\n    'at': At,\n    'boolean': Assertion,\n    'case': Case,\n    'coalesce': Coalesce,\n    'collator': CollatorExpression,\n    'format': FormatExpression,\n    'image': ImageExpression,\n    'in': In,\n    'index-of': IndexOf,\n    'interpolate': Interpolate,\n    'interpolate-hcl': Interpolate,\n    'interpolate-lab': Interpolate,\n    'length': Length,\n    'let': Let,\n    'literal': Literal,\n    'match': Match,\n    'number': Assertion,\n    'number-format': NumberFormat,\n    'object': Assertion,\n    'slice': Slice,\n    'step': Step,\n    'string': Assertion,\n    'to-boolean': Coercion,\n    'to-color': Coercion,\n    'to-number': Coercion,\n    'to-string': Coercion,\n    'var': Var,\n    'within': Within,\n    'distance': Distance,\n    'global-state': GlobalState\n};\n\nclass CompoundExpression {\n    constructor(name, type, evaluate, args) {\n        this.name = name;\n        this.type = type;\n        this._evaluate = evaluate;\n        this.args = args;\n    }\n    evaluate(ctx) {\n        return this._evaluate(ctx, this.args);\n    }\n    eachChild(fn) {\n        this.args.forEach(fn);\n    }\n    outputDefined() {\n        return false;\n    }\n    static parse(args, context) {\n        const op = args[0];\n        const definition = CompoundExpression.definitions[op];\n        if (!definition) {\n            return context.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n        }\n        // Now check argument types against each signature\n        const type = Array.isArray(definition) ?\n            definition[0] : definition.type;\n        const availableOverloads = Array.isArray(definition) ?\n            [[definition[1], definition[2]]] :\n            definition.overloads;\n        const overloads = availableOverloads.filter(([signature]) => (!Array.isArray(signature) || // varags\n            signature.length === args.length - 1 // correct param count\n        ));\n        let signatureContext = null;\n        for (const [params, evaluate] of overloads) {\n            // Use a fresh context for each attempted signature so that, if\n            // we eventually succeed, we haven't polluted `context.errors`.\n            signatureContext = new ParsingContext(context.registry, isExpressionConstant, context.path, null, context.scope);\n            // First parse all the args, potentially coercing to the\n            // types expected by this overload.\n            const parsedArgs = [];\n            let argParseFailed = false;\n            for (let i = 1; i < args.length; i++) {\n                const arg = args[i];\n                const expectedType = Array.isArray(params) ?\n                    params[i - 1] :\n                    params.type;\n                const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n                if (!parsed) {\n                    argParseFailed = true;\n                    break;\n                }\n                parsedArgs.push(parsed);\n            }\n            if (argParseFailed) {\n                // Couldn't coerce args of this overload to expected type, move\n                // on to next one.\n                continue;\n            }\n            if (Array.isArray(params)) {\n                if (params.length !== parsedArgs.length) {\n                    signatureContext.error(`Expected ${params.length} arguments, but found ${parsedArgs.length} instead.`);\n                    continue;\n                }\n            }\n            for (let i = 0; i < parsedArgs.length; i++) {\n                const expected = Array.isArray(params) ? params[i] : params.type;\n                const arg = parsedArgs[i];\n                signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n            }\n            if (signatureContext.errors.length === 0) {\n                return new CompoundExpression(op, type, evaluate, parsedArgs);\n            }\n        }\n        if (overloads.length === 1) {\n            context.errors.push(...signatureContext.errors);\n        }\n        else {\n            const expected = overloads.length ? overloads : availableOverloads;\n            const signatures = expected\n                .map(([params]) => stringifySignature(params))\n                .join(' | ');\n            const actualTypes = [];\n            // For error message, re-parse arguments without trying to\n            // apply any coercions\n            for (let i = 1; i < args.length; i++) {\n                const parsed = context.parse(args[i], 1 + actualTypes.length);\n                if (!parsed)\n                    return null;\n                actualTypes.push(typeToString(parsed.type));\n            }\n            context.error(`Expected arguments of type ${signatures}, but found (${actualTypes.join(', ')}) instead.`);\n        }\n        return null;\n    }\n    static register(registry, definitions) {\n        CompoundExpression.definitions = definitions;\n        for (const name in definitions) {\n            registry[name] = CompoundExpression;\n        }\n    }\n}\nfunction rgba(ctx, [r, g, b, a]) {\n    r = r.evaluate(ctx);\n    g = g.evaluate(ctx);\n    b = b.evaluate(ctx);\n    const alpha = a ? a.evaluate(ctx) : 1;\n    const error = validateRGBA(r, g, b, alpha);\n    if (error)\n        throw new RuntimeError(error);\n    return new Color(r / 255, g / 255, b / 255, alpha, false);\n}\nfunction has(key, obj) {\n    return key in obj;\n}\nfunction get(key, obj) {\n    const v = obj[key];\n    return typeof v === 'undefined' ? null : v;\n}\nfunction binarySearch(v, a, i, j) {\n    while (i <= j) {\n        const m = (i + j) >> 1;\n        if (a[m] === v)\n            return true;\n        if (a[m] > v)\n            j = m - 1;\n        else\n            i = m + 1;\n    }\n    return false;\n}\nfunction varargs(type) {\n    return { type };\n}\nCompoundExpression.register(expressions$1, {\n    'error': [\n        ErrorType,\n        [StringType],\n        (ctx, [v]) => { throw new RuntimeError(v.evaluate(ctx)); }\n    ],\n    'typeof': [\n        StringType,\n        [ValueType],\n        (ctx, [v]) => typeToString(typeOf(v.evaluate(ctx)))\n    ],\n    'to-rgba': [\n        array(NumberType, 4),\n        [ColorType],\n        (ctx, [v]) => {\n            const [r, g, b, a] = v.evaluate(ctx).rgb;\n            return [r * 255, g * 255, b * 255, a];\n        },\n    ],\n    'rgb': [\n        ColorType,\n        [NumberType, NumberType, NumberType],\n        rgba\n    ],\n    'rgba': [\n        ColorType,\n        [NumberType, NumberType, NumberType, NumberType],\n        rgba\n    ],\n    'has': {\n        type: BooleanType,\n        overloads: [\n            [\n                [StringType],\n                (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())\n            ], [\n                [StringType, ObjectType],\n                (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n            ]\n        ]\n    },\n    'get': {\n        type: ValueType,\n        overloads: [\n            [\n                [StringType],\n                (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())\n            ], [\n                [StringType, ObjectType],\n                (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n            ]\n        ]\n    },\n    'feature-state': [\n        ValueType,\n        [StringType],\n        (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})\n    ],\n    'properties': [\n        ObjectType,\n        [],\n        (ctx) => ctx.properties()\n    ],\n    'geometry-type': [\n        StringType,\n        [],\n        (ctx) => ctx.geometryType()\n    ],\n    'id': [\n        ValueType,\n        [],\n        (ctx) => ctx.id()\n    ],\n    'zoom': [\n        NumberType,\n        [],\n        (ctx) => ctx.globals.zoom\n    ],\n    'heatmap-density': [\n        NumberType,\n        [],\n        (ctx) => ctx.globals.heatmapDensity || 0\n    ],\n    'elevation': [\n        NumberType,\n        [],\n        (ctx) => ctx.globals.elevation || 0\n    ],\n    'line-progress': [\n        NumberType,\n        [],\n        (ctx) => ctx.globals.lineProgress || 0\n    ],\n    'accumulated': [\n        ValueType,\n        [],\n        (ctx) => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated\n    ],\n    '+': [\n        NumberType,\n        varargs(NumberType),\n        (ctx, args) => {\n            let result = 0;\n            for (const arg of args) {\n                result += arg.evaluate(ctx);\n            }\n            return result;\n        }\n    ],\n    '*': [\n        NumberType,\n        varargs(NumberType),\n        (ctx, args) => {\n            let result = 1;\n            for (const arg of args) {\n                result *= arg.evaluate(ctx);\n            }\n            return result;\n        }\n    ],\n    '-': {\n        type: NumberType,\n        overloads: [\n            [\n                [NumberType, NumberType],\n                (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n            ], [\n                [NumberType],\n                (ctx, [a]) => -a.evaluate(ctx)\n            ]\n        ]\n    },\n    '/': [\n        NumberType,\n        [NumberType, NumberType],\n        (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n    ],\n    '%': [\n        NumberType,\n        [NumberType, NumberType],\n        (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n    ],\n    'ln2': [\n        NumberType,\n        [],\n        () => Math.LN2\n    ],\n    'pi': [\n        NumberType,\n        [],\n        () => Math.PI\n    ],\n    'e': [\n        NumberType,\n        [],\n        () => Math.E\n    ],\n    '^': [\n        NumberType,\n        [NumberType, NumberType],\n        (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n    ],\n    'sqrt': [\n        NumberType,\n        [NumberType],\n        (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n    ],\n    'log10': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n    ],\n    'ln': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.log(n.evaluate(ctx))\n    ],\n    'log2': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2\n    ],\n    'sin': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.sin(n.evaluate(ctx))\n    ],\n    'cos': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.cos(n.evaluate(ctx))\n    ],\n    'tan': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.tan(n.evaluate(ctx))\n    ],\n    'asin': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.asin(n.evaluate(ctx))\n    ],\n    'acos': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.acos(n.evaluate(ctx))\n    ],\n    'atan': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.atan(n.evaluate(ctx))\n    ],\n    'min': [\n        NumberType,\n        varargs(NumberType),\n        (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))\n    ],\n    'max': [\n        NumberType,\n        varargs(NumberType),\n        (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))\n    ],\n    'abs': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.abs(n.evaluate(ctx))\n    ],\n    'round': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => {\n            const v = n.evaluate(ctx);\n            // Javascript's Math.round() rounds towards +Infinity for halfway\n            // values, even when they're negative. It's more common to round\n            // away from 0 (e.g., this is what python and C++ do)\n            return v < 0 ? -Math.round(-v) : Math.round(v);\n        }\n    ],\n    'floor': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.floor(n.evaluate(ctx))\n    ],\n    'ceil': [\n        NumberType,\n        [NumberType],\n        (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n    ],\n    'filter-==': [\n        BooleanType,\n        [StringType, ValueType],\n        (ctx, [k, v]) => ctx.properties()[k.value] === v.value\n    ],\n    'filter-id-==': [\n        BooleanType,\n        [ValueType],\n        (ctx, [v]) => ctx.id() === v.value\n    ],\n    'filter-type-==': [\n        BooleanType,\n        [StringType],\n        (ctx, [v]) => ctx.geometryType() === v.value\n    ],\n    'filter-<': [\n        BooleanType,\n        [StringType, ValueType],\n        (ctx, [k, v]) => {\n            const a = ctx.properties()[k.value];\n            const b = v.value;\n            return typeof a === typeof b && a < b;\n        }\n    ],\n    'filter-id-<': [\n        BooleanType,\n        [ValueType],\n        (ctx, [v]) => {\n            const a = ctx.id();\n            const b = v.value;\n            return typeof a === typeof b && a < b;\n        }\n    ],\n    'filter->': [\n        BooleanType,\n        [StringType, ValueType],\n        (ctx, [k, v]) => {\n            const a = ctx.properties()[k.value];\n            const b = v.value;\n            return typeof a === typeof b && a > b;\n        }\n    ],\n    'filter-id->': [\n        BooleanType,\n        [ValueType],\n        (ctx, [v]) => {\n            const a = ctx.id();\n            const b = v.value;\n            return typeof a === typeof b && a > b;\n        }\n    ],\n    'filter-<=': [\n        BooleanType,\n        [StringType, ValueType],\n        (ctx, [k, v]) => {\n            const a = ctx.properties()[k.value];\n            const b = v.value;\n            return typeof a === typeof b && a <= b;\n        }\n    ],\n    'filter-id-<=': [\n        BooleanType,\n        [ValueType],\n        (ctx, [v]) => {\n            const a = ctx.id();\n            const b = v.value;\n            return typeof a === typeof b && a <= b;\n        }\n    ],\n    'filter->=': [\n        BooleanType,\n        [StringType, ValueType],\n        (ctx, [k, v]) => {\n            const a = ctx.properties()[k.value];\n            const b = v.value;\n            return typeof a === typeof b && a >= b;\n        }\n    ],\n    'filter-id->=': [\n        BooleanType,\n        [ValueType],\n        (ctx, [v]) => {\n            const a = ctx.id();\n            const b = v.value;\n            return typeof a === typeof b && a >= b;\n        }\n    ],\n    'filter-has': [\n        BooleanType,\n        [ValueType],\n        (ctx, [k]) => k.value in ctx.properties()\n    ],\n    'filter-has-id': [\n        BooleanType,\n        [],\n        (ctx) => (ctx.id() !== null && ctx.id() !== undefined)\n    ],\n    'filter-type-in': [\n        BooleanType,\n        [array(StringType)],\n        (ctx, [v]) => v.value.indexOf(ctx.geometryType()) >= 0\n    ],\n    'filter-id-in': [\n        BooleanType,\n        [array(ValueType)],\n        (ctx, [v]) => v.value.indexOf(ctx.id()) >= 0\n    ],\n    'filter-in-small': [\n        BooleanType,\n        [StringType, array(ValueType)],\n        // assumes v is an array literal\n        (ctx, [k, v]) => v.value.indexOf(ctx.properties()[k.value]) >= 0\n    ],\n    'filter-in-large': [\n        BooleanType,\n        [StringType, array(ValueType)],\n        // assumes v is a array literal with values sorted in ascending order and of a single type\n        (ctx, [k, v]) => binarySearch(ctx.properties()[k.value], v.value, 0, v.value.length - 1)\n    ],\n    'all': {\n        type: BooleanType,\n        overloads: [\n            [\n                [BooleanType, BooleanType],\n                (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n            ],\n            [\n                varargs(BooleanType),\n                (ctx, args) => {\n                    for (const arg of args) {\n                        if (!arg.evaluate(ctx))\n                            return false;\n                    }\n                    return true;\n                }\n            ]\n        ]\n    },\n    'any': {\n        type: BooleanType,\n        overloads: [\n            [\n                [BooleanType, BooleanType],\n                (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n            ],\n            [\n                varargs(BooleanType),\n                (ctx, args) => {\n                    for (const arg of args) {\n                        if (arg.evaluate(ctx))\n                            return true;\n                    }\n                    return false;\n                }\n            ]\n        ]\n    },\n    '!': [\n        BooleanType,\n        [BooleanType],\n        (ctx, [b]) => !b.evaluate(ctx)\n    ],\n    'is-supported-script': [\n        BooleanType,\n        [StringType],\n        // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant\n        (ctx, [s]) => {\n            const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n            if (isSupportedScript) {\n                return isSupportedScript(s.evaluate(ctx));\n            }\n            return true;\n        }\n    ],\n    'upcase': [\n        StringType,\n        [StringType],\n        (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n    ],\n    'downcase': [\n        StringType,\n        [StringType],\n        (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n    ],\n    'concat': [\n        StringType,\n        varargs(ValueType),\n        (ctx, args) => args.map(arg => valueToString(arg.evaluate(ctx))).join('')\n    ],\n    'resolved-locale': [\n        StringType,\n        [CollatorType],\n        (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n    ]\n});\nfunction stringifySignature(signature) {\n    if (Array.isArray(signature)) {\n        return `(${signature.map(typeToString).join(', ')})`;\n    }\n    else {\n        return `(${typeToString(signature.type)}...)`;\n    }\n}\nfunction isExpressionConstant(expression) {\n    if (expression instanceof Var) {\n        return isExpressionConstant(expression.boundExpression);\n    }\n    else if (expression instanceof CompoundExpression && expression.name === 'error') {\n        return false;\n    }\n    else if (expression instanceof CollatorExpression) {\n        // Although the results of a Collator expression with fixed arguments\n        // generally shouldn't change between executions, we can't serialize them\n        // as constant expressions because results change based on environment.\n        return false;\n    }\n    else if (expression instanceof Within) {\n        return false;\n    }\n    else if (expression instanceof Distance) {\n        return false;\n    }\n    else if (expression instanceof GlobalState) {\n        return false;\n    }\n    const isTypeAnnotation = expression instanceof Coercion ||\n        expression instanceof Assertion;\n    let childrenConstant = true;\n    expression.eachChild(child => {\n        // We can _almost_ assume that if `expressions` children are constant,\n        // they would already have been evaluated to Literal values when they\n        // were parsed.  Type annotations are the exception, because they might\n        // have been inferred and added after a child was parsed.\n        // So we recurse into isConstant() for the children of type annotations,\n        // but otherwise simply check whether they are Literals.\n        if (isTypeAnnotation) {\n            childrenConstant = childrenConstant && isExpressionConstant(child);\n        }\n        else {\n            childrenConstant = childrenConstant && child instanceof Literal;\n        }\n    });\n    if (!childrenConstant) {\n        return false;\n    }\n    return isFeatureConstant(expression) &&\n        isGlobalPropertyConstant(expression, ['zoom', 'heatmap-density', 'elevation', 'line-progress', 'accumulated', 'is-supported-script']);\n}\nfunction isFeatureConstant(e) {\n    if (e instanceof CompoundExpression) {\n        if (e.name === 'get' && e.args.length === 1) {\n            return false;\n        }\n        else if (e.name === 'feature-state') {\n            return false;\n        }\n        else if (e.name === 'has' && e.args.length === 1) {\n            return false;\n        }\n        else if (e.name === 'properties' ||\n            e.name === 'geometry-type' ||\n            e.name === 'id') {\n            return false;\n        }\n        else if (/^filter-/.test(e.name)) {\n            return false;\n        }\n    }\n    if (e instanceof Within) {\n        return false;\n    }\n    if (e instanceof Distance) {\n        return false;\n    }\n    let result = true;\n    e.eachChild(arg => {\n        if (result && !isFeatureConstant(arg)) {\n            result = false;\n        }\n    });\n    return result;\n}\nfunction isStateConstant(e) {\n    if (e instanceof CompoundExpression) {\n        if (e.name === 'feature-state') {\n            return false;\n        }\n    }\n    let result = true;\n    e.eachChild(arg => {\n        if (result && !isStateConstant(arg)) {\n            result = false;\n        }\n    });\n    return result;\n}\nfunction isGlobalPropertyConstant(e, properties) {\n    if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) {\n        return false;\n    }\n    let result = true;\n    e.eachChild((arg) => {\n        if (result && !isGlobalPropertyConstant(arg, properties)) {\n            result = false;\n        }\n    });\n    return result;\n}\n\nfunction success(value) {\n    return { result: 'success', value };\n}\nfunction error(value) {\n    return { result: 'error', value };\n}\n\nfunction supportsPropertyExpression(spec) {\n    return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven';\n}\nfunction supportsZoomExpression(spec) {\n    return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\nfunction supportsInterpolation(spec) {\n    return !!spec.expression && spec.expression.interpolated;\n}\n\nfunction getType(val) {\n    if (val instanceof Number) {\n        return 'number';\n    }\n    else if (val instanceof String) {\n        return 'string';\n    }\n    else if (val instanceof Boolean) {\n        return 'boolean';\n    }\n    else if (Array.isArray(val)) {\n        return 'array';\n    }\n    else if (val === null) {\n        return 'null';\n    }\n    else {\n        return typeof val;\n    }\n}\n\nfunction isFunction$1(value) {\n    return typeof value === 'object' && value !== null && !Array.isArray(value) && typeOf(value) === ObjectType;\n}\nfunction identityFunction(x) {\n    return x;\n}\nfunction getParseFunction(propertySpec) {\n    switch (propertySpec.type) {\n        case 'color':\n            return Color.parse;\n        case 'padding':\n            return Padding.parse;\n        case 'numberArray':\n            return NumberArray.parse;\n        case 'colorArray':\n            return ColorArray.parse;\n        default:\n            return null;\n    }\n}\nfunction getInnerFunction(type) {\n    switch (type) {\n        case 'exponential':\n            return evaluateExponentialFunction;\n        case 'interval':\n            return evaluateIntervalFunction;\n        case 'categorical':\n            return evaluateCategoricalFunction;\n        case 'identity':\n            return evaluateIdentityFunction;\n        default:\n            throw new Error(`Unknown function type \"${type}\"`);\n    }\n}\nfunction createFunction(parameters, propertySpec) {\n    const zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n    const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n    const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n    const type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n    const parseFn = getParseFunction(propertySpec);\n    if (parseFn) {\n        parameters = extendBy({}, parameters);\n        if (parameters.stops) {\n            parameters.stops = parameters.stops.map((stop) => {\n                return [stop[0], parseFn(stop[1])];\n            });\n        }\n        if (parameters.default) {\n            parameters.default = parseFn(parameters.default);\n        }\n        else {\n            parameters.default = parseFn(propertySpec.default);\n        }\n    }\n    if (parameters.colorSpace && !isSupportedInterpolationColorSpace(parameters.colorSpace)) {\n        throw new Error(`Unknown color space: \"${parameters.colorSpace}\"`);\n    }\n    const innerFun = getInnerFunction(type);\n    let hashedStops;\n    let categoricalKeyType;\n    if (type === 'categorical') {\n        // For categorical functions, generate an Object as a hashmap of the stops for fast searching\n        hashedStops = Object.create(null);\n        for (const stop of parameters.stops) {\n            hashedStops[stop[0]] = stop[1];\n        }\n        // Infer key type based on first stop key-- used to encforce strict type checking later\n        categoricalKeyType = typeof parameters.stops[0][0];\n    }\n    if (zoomAndFeatureDependent) {\n        const featureFunctions = {};\n        const zoomStops = [];\n        for (let s = 0; s < parameters.stops.length; s++) {\n            const stop = parameters.stops[s];\n            const zoom = stop[0].zoom;\n            if (featureFunctions[zoom] === undefined) {\n                featureFunctions[zoom] = {\n                    zoom,\n                    type: parameters.type,\n                    property: parameters.property,\n                    default: parameters.default,\n                    stops: []\n                };\n                zoomStops.push(zoom);\n            }\n            featureFunctions[zoom].stops.push([stop[0].value, stop[1]]);\n        }\n        const featureFunctionStops = [];\n        for (const z of zoomStops) {\n            featureFunctionStops.push([featureFunctions[z].zoom, createFunction(featureFunctions[z], propertySpec)]);\n        }\n        const interpolationType = { name: 'linear' };\n        return {\n            kind: 'composite',\n            interpolationType,\n            interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n            zoomStops: featureFunctionStops.map(s => s[0]),\n            evaluate({ zoom }, properties) {\n                return evaluateExponentialFunction({\n                    stops: featureFunctionStops,\n                    base: parameters.base\n                }, propertySpec, zoom).evaluate(zoom, properties);\n            }\n        };\n    }\n    else if (zoomDependent) {\n        const interpolationType = type === 'exponential' ?\n            { name: 'exponential', base: parameters.base !== undefined ? parameters.base : 1 } : null;\n        return {\n            kind: 'camera',\n            interpolationType,\n            interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n            zoomStops: parameters.stops.map(s => s[0]),\n            evaluate: ({ zoom }) => innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType)\n        };\n    }\n    else {\n        return {\n            kind: 'source',\n            evaluate(_, feature) {\n                const value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n                if (value === undefined) {\n                    return coalesce$1(parameters.default, propertySpec.default);\n                }\n                return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n            }\n        };\n    }\n}\nfunction coalesce$1(a, b, c) {\n    if (a !== undefined)\n        return a;\n    if (b !== undefined)\n        return b;\n    if (c !== undefined)\n        return c;\n}\nfunction evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n    const evaluated = typeof input === keyType ? hashedStops[input] : undefined; // Enforce strict typing on input\n    return coalesce$1(evaluated, parameters.default, propertySpec.default);\n}\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n    // Edge cases\n    if (getType(input) !== 'number')\n        return coalesce$1(parameters.default, propertySpec.default);\n    const n = parameters.stops.length;\n    if (n === 1)\n        return parameters.stops[0][1];\n    if (input <= parameters.stops[0][0])\n        return parameters.stops[0][1];\n    if (input >= parameters.stops[n - 1][0])\n        return parameters.stops[n - 1][1];\n    const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n    return parameters.stops[index][1];\n}\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n    const base = parameters.base !== undefined ? parameters.base : 1;\n    // Edge cases\n    if (getType(input) !== 'number')\n        return coalesce$1(parameters.default, propertySpec.default);\n    const n = parameters.stops.length;\n    if (n === 1)\n        return parameters.stops[0][1];\n    if (input <= parameters.stops[0][0])\n        return parameters.stops[0][1];\n    if (input >= parameters.stops[n - 1][0])\n        return parameters.stops[n - 1][1];\n    const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n    const t = interpolationFactor(input, base, parameters.stops[index][0], parameters.stops[index + 1][0]);\n    const outputLower = parameters.stops[index][1];\n    const outputUpper = parameters.stops[index + 1][1];\n    const interp = interpolateFactory[propertySpec.type] || identityFunction;\n    if (typeof outputLower.evaluate === 'function') {\n        return {\n            evaluate(...args) {\n                const evaluatedLower = outputLower.evaluate.apply(undefined, args);\n                const evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n                // Special case for fill-outline-color, which has no spec default.\n                if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n                    return undefined;\n                }\n                return interp(evaluatedLower, evaluatedUpper, t, parameters.colorSpace);\n            }\n        };\n    }\n    return interp(outputLower, outputUpper, t, parameters.colorSpace);\n}\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n    switch (propertySpec.type) {\n        case 'color':\n            input = Color.parse(input);\n            break;\n        case 'formatted':\n            input = Formatted.fromString(input.toString());\n            break;\n        case 'resolvedImage':\n            input = ResolvedImage.fromString(input.toString());\n            break;\n        case 'padding':\n            input = Padding.parse(input);\n            break;\n        case 'colorArray':\n            input = ColorArray.parse(input);\n            break;\n        case 'numberArray':\n            input = NumberArray.parse(input);\n            break;\n        default:\n            if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n                input = undefined;\n            }\n    }\n    return coalesce$1(input, parameters.default, propertySpec.default);\n}\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n *\n * How it works:\n * Two consecutive stop values define a (scaled and shifted) exponential\n * function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n *                     = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`.  In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n */\nfunction interpolationFactor(input, base, lowerValue, upperValue) {\n    const difference = upperValue - lowerValue;\n    const progress = input - lowerValue;\n    if (difference === 0) {\n        return 0;\n    }\n    else if (base === 1) {\n        return progress / difference;\n    }\n    else {\n        return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n    }\n}\n\nclass StyleExpression {\n    constructor(expression, propertySpec) {\n        this.expression = expression;\n        this._warningHistory = {};\n        this._evaluator = new EvaluationContext();\n        this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n        this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n    }\n    evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n        this._evaluator.globals = globals;\n        this._evaluator.feature = feature;\n        this._evaluator.featureState = featureState;\n        this._evaluator.canonical = canonical;\n        this._evaluator.availableImages = availableImages || null;\n        this._evaluator.formattedSection = formattedSection;\n        return this.expression.evaluate(this._evaluator);\n    }\n    evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n        this._evaluator.globals = globals;\n        this._evaluator.feature = feature || null;\n        this._evaluator.featureState = featureState || null;\n        this._evaluator.canonical = canonical;\n        this._evaluator.availableImages = availableImages || null;\n        this._evaluator.formattedSection = formattedSection || null;\n        try {\n            const val = this.expression.evaluate(this._evaluator);\n            if (val === null || val === undefined || (typeof val === 'number' && val !== val)) {\n                return this._defaultValue;\n            }\n            if (this._enumValues && !(val in this._enumValues)) {\n                throw new RuntimeError(`Expected value to be one of ${Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ')}, but found ${JSON.stringify(val)} instead.`);\n            }\n            return val;\n        }\n        catch (e) {\n            if (!this._warningHistory[e.message]) {\n                this._warningHistory[e.message] = true;\n                if (typeof console !== 'undefined') {\n                    console.warn(e.message);\n                }\n            }\n            return this._defaultValue;\n        }\n    }\n}\nfunction isExpression(expression) {\n    return Array.isArray(expression) && expression.length > 0 &&\n        typeof expression[0] === 'string' && expression[0] in expressions$1;\n}\n/**\n * Parse and typecheck the given style spec JSON expression.  If\n * options.defaultValue is provided, then the resulting StyleExpression's\n * `evaluate()` method will handle errors by logging a warning (once per\n * message) and returning the default value.  Otherwise, it will throw\n * evaluation errors.\n *\n * @private\n */\nfunction createExpression(expression, propertySpec) {\n    const parser = new ParsingContext(expressions$1, isExpressionConstant, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n    // For string-valued properties, coerce to string at the top level rather than asserting.\n    const parsed = parser.parse(expression, undefined, undefined, undefined, propertySpec && propertySpec.type === 'string' ? { typeAnnotation: 'coerce' } : undefined);\n    if (!parsed) {\n        return error(parser.errors);\n    }\n    return success(new StyleExpression(parsed, propertySpec));\n}\nclass ZoomConstantExpression {\n    constructor(kind, expression) {\n        this.kind = kind;\n        this._styleExpression = expression;\n        this.isStateDependent = kind !== 'constant' && !isStateConstant(expression.expression);\n        this.globalStateRefs = findGlobalStateRefs(expression.expression);\n    }\n    evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n        return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n    }\n    evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n        return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n    }\n}\nclass ZoomDependentExpression {\n    constructor(kind, expression, zoomStops, interpolationType) {\n        this.kind = kind;\n        this.zoomStops = zoomStops;\n        this._styleExpression = expression;\n        this.isStateDependent = kind !== 'camera' && !isStateConstant(expression.expression);\n        this.globalStateRefs = findGlobalStateRefs(expression.expression);\n        this.interpolationType = interpolationType;\n    }\n    evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n        return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n    }\n    evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n        return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n    }\n    interpolationFactor(input, lower, upper) {\n        if (this.interpolationType) {\n            return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n        }\n        else {\n            return 0;\n        }\n    }\n}\nfunction isZoomExpression(expression) {\n    return expression._styleExpression !== undefined;\n}\nfunction createPropertyExpression(expressionInput, propertySpec) {\n    const expression = createExpression(expressionInput, propertySpec);\n    if (expression.result === 'error') {\n        return expression;\n    }\n    const parsed = expression.value.expression;\n    const isFeatureConstantResult = isFeatureConstant(parsed);\n    if (!isFeatureConstantResult && !supportsPropertyExpression(propertySpec)) {\n        return error([new ExpressionParsingError('', 'data expressions not supported')]);\n    }\n    const isZoomConstant = isGlobalPropertyConstant(parsed, ['zoom']);\n    if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n        return error([new ExpressionParsingError('', 'zoom expressions not supported')]);\n    }\n    const zoomCurve = findZoomCurve(parsed);\n    if (!zoomCurve && !isZoomConstant) {\n        return error([new ExpressionParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n    }\n    else if (zoomCurve instanceof ExpressionParsingError) {\n        return error([zoomCurve]);\n    }\n    else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n        return error([new ExpressionParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n    }\n    if (!zoomCurve) {\n        return success(isFeatureConstantResult ?\n            new ZoomConstantExpression('constant', expression.value) :\n            new ZoomConstantExpression('source', expression.value));\n    }\n    const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n    return success(isFeatureConstantResult ?\n        new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType) :\n        new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType));\n}\n// serialization wrapper for old-style stop functions normalized to the\n// expression interface\nclass StylePropertyFunction {\n    constructor(parameters, specification) {\n        this._parameters = parameters;\n        this._specification = specification;\n        extendBy(this, createFunction(this._parameters, this._specification));\n    }\n    static deserialize(serialized) {\n        return new StylePropertyFunction(serialized._parameters, serialized._specification);\n    }\n    static serialize(input) {\n        return {\n            _parameters: input._parameters,\n            _specification: input._specification\n        };\n    }\n}\nfunction normalizePropertyExpression(value, specification) {\n    if (isFunction$1(value)) {\n        return new StylePropertyFunction(value, specification);\n    }\n    else if (isExpression(value)) {\n        const expression = createPropertyExpression(value, specification);\n        if (expression.result === 'error') {\n            // this should have been caught in validation\n            throw new Error(expression.value.map(err => `${err.key}: ${err.message}`).join(', '));\n        }\n        return expression.value;\n    }\n    else {\n        let constant = value;\n        if (specification.type === 'color' && typeof value === 'string') {\n            constant = Color.parse(value);\n        }\n        else if (specification.type === 'padding' && (typeof value === 'number' || Array.isArray(value))) {\n            constant = Padding.parse(value);\n        }\n        else if (specification.type === 'numberArray' && (typeof value === 'number' || Array.isArray(value))) {\n            constant = NumberArray.parse(value);\n        }\n        else if (specification.type === 'colorArray' && (typeof value === 'string' || Array.isArray(value))) {\n            constant = ColorArray.parse(value);\n        }\n        else if (specification.type === 'variableAnchorOffsetCollection' && Array.isArray(value)) {\n            constant = VariableAnchorOffsetCollection.parse(value);\n        }\n        else if (specification.type === 'projectionDefinition' && typeof value === 'string') {\n            constant = ProjectionDefinition.parse(value);\n        }\n        return {\n            globalStateRefs: new Set(),\n            kind: 'constant',\n            evaluate: () => constant\n        };\n    }\n}\n// Zoom-dependent expressions may only use [\"zoom\"] as the input to a top-level \"step\" or \"interpolate\"\n// expression (collectively referred to as a \"curve\"). The curve may be wrapped in one or more \"let\" or\n// \"coalesce\" expressions.\nfunction findZoomCurve(expression) {\n    let result = null;\n    if (expression instanceof Let) {\n        result = findZoomCurve(expression.result);\n    }\n    else if (expression instanceof Coalesce) {\n        for (const arg of expression.args) {\n            result = findZoomCurve(arg);\n            if (result) {\n                break;\n            }\n        }\n    }\n    else if ((expression instanceof Step || expression instanceof Interpolate) &&\n        expression.input instanceof CompoundExpression &&\n        expression.input.name === 'zoom') {\n        result = expression;\n    }\n    if (result instanceof ExpressionParsingError) {\n        return result;\n    }\n    expression.eachChild((child) => {\n        const childResult = findZoomCurve(child);\n        if (childResult instanceof ExpressionParsingError) {\n            result = childResult;\n        }\n        else if (!result && childResult) {\n            result = new ExpressionParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n        }\n        else if (result && childResult && result !== childResult) {\n            result = new ExpressionParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n        }\n    });\n    return result;\n}\nfunction findGlobalStateRefs(expression, results = new Set()) {\n    if (expression instanceof GlobalState) {\n        results.add(expression.key);\n    }\n    expression.eachChild(childExpression => {\n        findGlobalStateRefs(childExpression, results);\n    });\n    return results;\n}\nfunction getExpectedType(spec) {\n    const types = {\n        color: ColorType,\n        string: StringType,\n        number: NumberType,\n        enum: StringType,\n        boolean: BooleanType,\n        formatted: FormattedType,\n        padding: PaddingType,\n        numberArray: NumberArrayType,\n        colorArray: ColorArrayType,\n        projectionDefinition: ProjectionDefinitionType,\n        resolvedImage: ResolvedImageType,\n        variableAnchorOffsetCollection: VariableAnchorOffsetCollectionType\n    };\n    if (spec.type === 'array') {\n        return array(types[spec.value] || ValueType, spec.length);\n    }\n    return types[spec.type];\n}\nfunction getDefaultValue(spec) {\n    if (spec.type === 'color' && isFunction$1(spec.default)) {\n        // Special case for heatmap-color: it uses the 'default:' to define a\n        // default color ramp, but createExpression expects a simple value to fall\n        // back to in case of runtime errors\n        return new Color(0, 0, 0, 0);\n    }\n    switch (spec.type) {\n        case 'color':\n            return Color.parse(spec.default) || null;\n        case 'padding':\n            return Padding.parse(spec.default) || null;\n        case 'numberArray':\n            return NumberArray.parse(spec.default) || null;\n        case 'colorArray':\n            return ColorArray.parse(spec.default) || null;\n        case 'variableAnchorOffsetCollection':\n            return VariableAnchorOffsetCollection.parse(spec.default) || null;\n        case 'projectionDefinition':\n            return ProjectionDefinition.parse(spec.default) || null;\n        default:\n            return (spec.default === undefined ? null : spec.default);\n    }\n}\n\nfunction isExpressionFilter(filter) {\n    if (filter === true || filter === false) {\n        return true;\n    }\n    if (!Array.isArray(filter) || filter.length === 0) {\n        return false;\n    }\n    switch (filter[0]) {\n        case 'has':\n            return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n        case 'in':\n            return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n        case '!in':\n        case '!has':\n        case 'none':\n            return false;\n        case '==':\n        case '!=':\n        case '>':\n        case '>=':\n        case '<':\n        case '<=':\n            return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n        case 'any':\n        case 'all':\n            for (const f of filter.slice(1)) {\n                if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n                    return false;\n                }\n            }\n            return true;\n        default:\n            return true;\n    }\n}\nconst filterSpec = {\n    'type': 'boolean',\n    'default': false,\n    'transition': false,\n    'property-type': 'data-driven',\n    'expression': {\n        'interpolated': false,\n        'parameters': ['zoom', 'feature']\n    }\n};\n/**\n * Given a filter expressed as nested arrays, return a new function\n * that evaluates whether a given feature (with a .properties or .tags property)\n * passes its test.\n *\n * @private\n * @param {Array} filter MapLibre filter\n * @returns {Function} filter-evaluating function\n */\nfunction featureFilter(filter) {\n    if (filter === null || filter === undefined) {\n        return { filter: () => true, needGeometry: false, getGlobalStateRefs: () => new Set() };\n    }\n    if (!isExpressionFilter(filter)) {\n        filter = convertFilter$1(filter);\n    }\n    const compiled = createExpression(filter, filterSpec);\n    if (compiled.result === 'error') {\n        throw new Error(compiled.value.map(err => `${err.key}: ${err.message}`).join(', '));\n    }\n    else {\n        const needGeometry = geometryNeeded(filter);\n        return {\n            filter: (globalProperties, feature, canonical) => compiled.value.evaluate(globalProperties, feature, {}, canonical),\n            needGeometry,\n            getGlobalStateRefs: () => findGlobalStateRefs(compiled.value.expression)\n        };\n    }\n}\n// Comparison function to sort numbers and strings\nfunction compare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\nfunction geometryNeeded(filter) {\n    if (!Array.isArray(filter))\n        return false;\n    if (filter[0] === 'within' || filter[0] === 'distance')\n        return true;\n    for (let index = 1; index < filter.length; index++) {\n        if (geometryNeeded(filter[index]))\n            return true;\n    }\n    return false;\n}\nfunction convertFilter$1(filter) {\n    if (!filter)\n        return true;\n    const op = filter[0];\n    if (filter.length <= 1)\n        return (op !== 'any');\n    const converted = op === '==' ? convertComparisonOp$1(filter[1], filter[2], '==') :\n        op === '!=' ? convertNegation(convertComparisonOp$1(filter[1], filter[2], '==')) :\n            op === '<' ||\n                op === '>' ||\n                op === '<=' ||\n                op === '>=' ? convertComparisonOp$1(filter[1], filter[2], op) :\n                op === 'any' ? convertDisjunctionOp(filter.slice(1)) :\n                    op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter$1)) :\n                        op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter$1).map(convertNegation)) :\n                            op === 'in' ? convertInOp$1(filter[1], filter.slice(2)) :\n                                op === '!in' ? convertNegation(convertInOp$1(filter[1], filter.slice(2))) :\n                                    op === 'has' ? convertHasOp$1(filter[1]) :\n                                        op === '!has' ? convertNegation(convertHasOp$1(filter[1])) :\n                                            true;\n    return converted;\n}\nfunction convertComparisonOp$1(property, value, op) {\n    switch (property) {\n        case '$type':\n            return [`filter-type-${op}`, value];\n        case '$id':\n            return [`filter-id-${op}`, value];\n        default:\n            return [`filter-${op}`, property, value];\n    }\n}\nfunction convertDisjunctionOp(filters) {\n    return ['any'].concat(filters.map(convertFilter$1));\n}\nfunction convertInOp$1(property, values) {\n    if (values.length === 0) {\n        return false;\n    }\n    switch (property) {\n        case '$type':\n            return ['filter-type-in', ['literal', values]];\n        case '$id':\n            return ['filter-id-in', ['literal', values]];\n        default:\n            if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) {\n                return ['filter-in-large', property, ['literal', values.sort(compare)]];\n            }\n            else {\n                return ['filter-in-small', property, ['literal', values]];\n            }\n    }\n}\nfunction convertHasOp$1(property) {\n    switch (property) {\n        case '$type':\n            return true;\n        case '$id':\n            return ['filter-has-id'];\n        default:\n            return ['filter-has', property];\n    }\n}\nfunction convertNegation(filter) {\n    return ['!', filter];\n}\n\n/*\n * Convert the given filter to an expression, storing the expected types for\n * any feature properties referenced in expectedTypes.\n *\n * These expected types are needed in order to construct preflight type checks\n * needed for handling 'any' filters. A preflight type check is necessary in\n * order to mimic legacy filters' semantics around expected type mismatches.\n * For example, consider the legacy filter:\n *\n *     [\"any\", [\"all\", [\">\", \"y\", 0], [\">\", \"y\", 0]], [\">\", \"x\", 0]]\n *\n * Naively, we might convert this to the expression:\n *\n *     [\"any\", [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]], [\">\", [\"get\", \"x\"], 0]]\n *\n * But if we tried to evaluate this against, say `{x: 1, y: null, z: 0}`, the\n * [\">\", [\"get\", \"y\"], 0] would cause an evaluation error, leading to the\n * entire filter returning false. Legacy filter semantics, though, ask for\n * [\">\", \"y\", 0] to simply return `false` when `y` is of the wrong type,\n * allowing the subsequent terms of the outer \"any\" expression to be evaluated\n * (resulting, in this case, in a `true` value, because x > 0).\n *\n * We account for this by inserting a preflight type-checking expression before\n * each \"any\" term, allowing us to avoid evaluating the actual converted filter\n * if any type mismatches would cause it to produce an evaluation error:\n *\n *     [\"any\",\n *       [\"case\",\n *         [\"all\", [\"==\", [\"typeof\", [\"get\", \"y\"]], \"number\"], [\"==\", [\"typeof\", [\"get\", \"z\"], \"number]],\n *         [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]],\n *         false\n *       ],\n *       [\"case\",\n *         [\"==\", [\"typeof\", [\"get\", \"x\"], \"number\"]],\n *         [\">\", [\"get\", \"x\"], 0],\n *         false\n *       ]\n *     ]\n *\n * An alternative, possibly more direct approach would be to use type checks\n * in the conversion of each comparison operator, so that the converted version\n * of each individual ==, >=, etc. would mimic the legacy filter semantics. The\n * downside of this approach is that it can lead to many more type checks than\n * would otherwise be necessary: outside the context of an \"any\" expression,\n * bailing out due to a runtime type error (expression semantics) and returning\n * false (legacy filter semantics) are equivalent: they cause the filter to\n * produce a `false` result.\n */\nfunction convertFilter(filter, expectedTypes = {}) {\n    if (isExpressionFilter(filter))\n        return filter;\n    if (!filter)\n        return true;\n    const legacyFilter = filter;\n    const legacyOp = legacyFilter[0];\n    if (filter.length <= 1)\n        return (legacyOp !== 'any');\n    switch (legacyOp) {\n        case '==':\n        case '!=':\n        case '<':\n        case '>':\n        case '<=':\n        case '>=': {\n            const [, property, value] = filter;\n            return convertComparisonOp(property, value, legacyOp, expectedTypes);\n        }\n        case 'any': {\n            const [, ...conditions] = legacyFilter;\n            const children = conditions.map((f) => {\n                const types = {};\n                const child = convertFilter(f, types);\n                const typechecks = runtimeTypeChecks(types);\n                return typechecks === true ? child : ['case', typechecks, child, false];\n            });\n            return ['any', ...children];\n        }\n        case 'all': {\n            const [, ...conditions] = legacyFilter;\n            const children = conditions.map(f => convertFilter(f, expectedTypes));\n            return children.length > 1 ? ['all', ...children] : children[0];\n        }\n        case 'none': {\n            const [, ...conditions] = legacyFilter;\n            return ['!', convertFilter(['any', ...conditions], {})];\n        }\n        case 'in': {\n            const [, property, ...values] = legacyFilter;\n            return convertInOp(property, values);\n        }\n        case '!in': {\n            const [, property, ...values] = legacyFilter;\n            return convertInOp(property, values, true);\n        }\n        case 'has':\n            return convertHasOp(legacyFilter[1]);\n        case '!has':\n            return ['!', convertHasOp(legacyFilter[1])];\n        default:\n            return true;\n    }\n}\n// Given a set of feature properties and an expected type for each one,\n// construct an boolean expression that tests whether each property has the\n// right type.\n// E.g.: for {name: 'string', population: 'number'}, return\n// [ 'all',\n//   ['==', ['typeof', ['get', 'name'], 'string']],\n//   ['==', ['typeof', ['get', 'population'], 'number]]\n// ]\nfunction runtimeTypeChecks(expectedTypes) {\n    const conditions = [];\n    for (const property in expectedTypes) {\n        const get = property === '$id' ? ['id'] : ['get', property];\n        conditions.push(['==', ['typeof', get], expectedTypes[property]]);\n    }\n    if (conditions.length === 0)\n        return true;\n    if (conditions.length === 1)\n        return conditions[0];\n    return ['all', ...conditions];\n}\nfunction convertComparisonOp(property, value, op, expectedTypes) {\n    let get;\n    if (property === '$type') {\n        return [op, ['geometry-type'], value];\n    }\n    else if (property === '$id') {\n        get = ['id'];\n    }\n    else {\n        get = ['get', property];\n    }\n    if (expectedTypes && value !== null) {\n        const type = typeof value;\n        expectedTypes[property] = type;\n    }\n    if (op === '==' && property !== '$id' && value === null) {\n        return [\n            'all',\n            ['has', property], // missing property != null for legacy filters\n            ['==', get, null]\n        ];\n    }\n    else if (op === '!=' && property !== '$id' && value === null) {\n        return [\n            'any',\n            ['!', ['has', property]], // missing property != null for legacy filters\n            ['!=', get, null]\n        ];\n    }\n    return [op, get, value];\n}\nfunction convertInOp(property, values, negate = false) {\n    if (values.length === 0)\n        return negate;\n    let get;\n    if (property === '$type') {\n        get = ['geometry-type'];\n    }\n    else if (property === '$id') {\n        get = ['id'];\n    }\n    else {\n        get = ['get', property];\n    }\n    // Determine if the list of values to be searched is homogenously typed.\n    // If so (and if the type is string or number), then we can use a\n    // [match, input, [...values], true, false] construction rather than a\n    // bunch of `==` tests.\n    let uniformTypes = true;\n    const type = typeof values[0];\n    for (const value of values) {\n        if (typeof value !== type) {\n            uniformTypes = false;\n            break;\n        }\n    }\n    if (uniformTypes && (type === 'string' || type === 'number')) {\n        // Match expressions must have unique values.\n        const uniqueValues = values.sort().filter((v, i) => i === 0 || values[i - 1] !== v);\n        return ['match', get, uniqueValues, !negate, negate];\n    }\n    if (negate) {\n        return ['all', ...values.map(v => ['!=', get, v])];\n    }\n    else {\n        return ['any', ...values.map(v => ['==', get, v])];\n    }\n}\nfunction convertHasOp(property) {\n    if (property === '$type') {\n        return true;\n    }\n    else if (property === '$id') {\n        return ['!=', ['id'], null];\n    }\n    else {\n        return ['has', property];\n    }\n}\n\nfunction convertLiteral(value) {\n    return typeof value === 'object' ? ['literal', value] : value;\n}\nfunction convertFunction(parameters, propertySpec) {\n    let stops = parameters.stops;\n    if (!stops) {\n        // identity function\n        return convertIdentityFunction(parameters, propertySpec);\n    }\n    const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n    const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n    const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n    stops = stops.map((stop) => {\n        if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') {\n            return [stop[0], convertTokenString(stop[1])];\n        }\n        return [stop[0], convertLiteral(stop[1])];\n    });\n    if (zoomAndFeatureDependent) {\n        return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n    }\n    else if (zoomDependent) {\n        return convertZoomFunction(parameters, propertySpec, stops);\n    }\n    else {\n        return convertPropertyFunction(parameters, propertySpec, stops);\n    }\n}\nfunction convertIdentityFunction(parameters, propertySpec) {\n    const get = ['get', parameters.property];\n    if (parameters.default === undefined) {\n        // By default, expressions for string-valued properties get coerced. To preserve\n        // legacy function semantics, insert an explicit assertion instead.\n        return propertySpec.type === 'string' ? ['string', get] : get;\n    }\n    else if (propertySpec.type === 'enum') {\n        return [\n            'match',\n            get,\n            Object.keys(propertySpec.values),\n            get,\n            parameters.default\n        ];\n    }\n    else {\n        const expression = [propertySpec.type === 'color' ? 'to-color' : propertySpec.type, get, convertLiteral(parameters.default)];\n        if (propertySpec.type === 'array') {\n            expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n        }\n        return expression;\n    }\n}\nfunction getInterpolateOperator(parameters) {\n    switch (parameters.colorSpace) {\n        case 'hcl': return 'interpolate-hcl';\n        case 'lab': return 'interpolate-lab';\n        default: return 'interpolate';\n    }\n}\nfunction convertZoomAndPropertyFunction(parameters, propertySpec, stops) {\n    const featureFunctionParameters = {};\n    const featureFunctionStops = {};\n    const zoomStops = [];\n    for (let s = 0; s < stops.length; s++) {\n        const stop = stops[s];\n        const zoom = stop[0].zoom;\n        if (featureFunctionParameters[zoom] === undefined) {\n            featureFunctionParameters[zoom] = {\n                zoom,\n                type: parameters.type,\n                property: parameters.property,\n                default: parameters.default,\n            };\n            featureFunctionStops[zoom] = [];\n            zoomStops.push(zoom);\n        }\n        featureFunctionStops[zoom].push([stop[0].value, stop[1]]);\n    }\n    // the interpolation type for the zoom dimension of a zoom-and-property\n    // function is determined directly from the style property specification\n    // for which it's being used: linear for interpolatable properties, step\n    // otherwise.\n    const functionType = getFunctionType({}, propertySpec);\n    if (functionType === 'exponential') {\n        const expression = [getInterpolateOperator(parameters), ['linear'], ['zoom']];\n        for (const z of zoomStops) {\n            const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n            appendStopPair(expression, z, output, false);\n        }\n        return expression;\n    }\n    else {\n        const expression = ['step', ['zoom']];\n        for (const z of zoomStops) {\n            const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n            appendStopPair(expression, z, output, true);\n        }\n        fixupDegenerateStepCurve(expression);\n        return expression;\n    }\n}\nfunction coalesce(a, b) {\n    if (a !== undefined)\n        return a;\n    if (b !== undefined)\n        return b;\n}\nfunction getFallback(parameters, propertySpec) {\n    const defaultValue = convertLiteral(coalesce(parameters.default, propertySpec.default));\n    /*\n     * Some fields with type: resolvedImage have an undefined default.\n     * Because undefined is an invalid value for resolvedImage, set fallback to\n     * an empty string instead of undefined to ensure output\n     * passes validation.\n     */\n    if (defaultValue === undefined && propertySpec.type === 'resolvedImage') {\n        return '';\n    }\n    return defaultValue;\n}\nfunction convertPropertyFunction(parameters, propertySpec, stops) {\n    const type = getFunctionType(parameters, propertySpec);\n    const get = ['get', parameters.property];\n    if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n        const expression = ['case'];\n        for (const stop of stops) {\n            expression.push(['==', get, stop[0]], stop[1]);\n        }\n        expression.push(getFallback(parameters, propertySpec));\n        return expression;\n    }\n    else if (type === 'categorical') {\n        const expression = ['match', get];\n        for (const stop of stops) {\n            appendStopPair(expression, stop[0], stop[1], false);\n        }\n        expression.push(getFallback(parameters, propertySpec));\n        return expression;\n    }\n    else if (type === 'interval') {\n        const expression = ['step', ['number', get]];\n        for (const stop of stops) {\n            appendStopPair(expression, stop[0], stop[1], true);\n        }\n        fixupDegenerateStepCurve(expression);\n        return parameters.default === undefined ? expression : [\n            'case',\n            ['==', ['typeof', get], 'number'],\n            expression,\n            convertLiteral(parameters.default)\n        ];\n    }\n    else if (type === 'exponential') {\n        const base = parameters.base !== undefined ? parameters.base : 1;\n        const expression = [\n            getInterpolateOperator(parameters),\n            base === 1 ? ['linear'] : ['exponential', base],\n            ['number', get]\n        ];\n        for (const stop of stops) {\n            appendStopPair(expression, stop[0], stop[1], false);\n        }\n        return parameters.default === undefined ? expression : [\n            'case',\n            ['==', ['typeof', get], 'number'],\n            expression,\n            convertLiteral(parameters.default)\n        ];\n    }\n    else {\n        throw new Error(`Unknown property function type ${type}`);\n    }\n}\nfunction convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) {\n    const type = getFunctionType(parameters, propertySpec);\n    let expression;\n    let isStep = false;\n    if (type === 'interval') {\n        expression = ['step', input];\n        isStep = true;\n    }\n    else if (type === 'exponential') {\n        const base = parameters.base !== undefined ? parameters.base : 1;\n        expression = [getInterpolateOperator(parameters), base === 1 ? ['linear'] : ['exponential', base], input];\n    }\n    else {\n        throw new Error(`Unknown zoom function type \"${type}\"`);\n    }\n    for (const stop of stops) {\n        appendStopPair(expression, stop[0], stop[1], isStep);\n    }\n    fixupDegenerateStepCurve(expression);\n    return expression;\n}\nfunction fixupDegenerateStepCurve(expression) {\n    // degenerate step curve (i.e. a constant function): add a noop stop\n    if (expression[0] === 'step' && expression.length === 3) {\n        expression.push(0);\n        expression.push(expression[3]);\n    }\n}\nfunction appendStopPair(curve, input, output, isStep) {\n    // Skip duplicate stop values. They were not validated for functions, but they are for expressions.\n    // https://github.com/mapbox/mapbox-gl-js/issues/4107\n    if (curve.length > 3 && input === curve[curve.length - 2]) {\n        return;\n    }\n    // step curves don't get the first input value, as it is redundant.\n    if (!(isStep && curve.length === 2)) {\n        curve.push(input);\n    }\n    curve.push(output);\n}\nfunction getFunctionType(parameters, propertySpec) {\n    if (parameters.type) {\n        return parameters.type;\n    }\n    else {\n        return propertySpec.expression.interpolated ? 'exponential' : 'interval';\n    }\n}\n// \"String with {name} token\" => [\"concat\", \"String with \", [\"get\", \"name\"], \" token\"]\nfunction convertTokenString(s) {\n    const result = ['concat'];\n    const re = /{([^{}]+)}/g;\n    let pos = 0;\n    for (let match = re.exec(s); match !== null; match = re.exec(s)) {\n        const literal = s.slice(pos, re.lastIndex - match[0].length);\n        pos = re.lastIndex;\n        if (literal.length > 0)\n            result.push(literal);\n        result.push(['get', match[1]]);\n    }\n    if (result.length === 1) {\n        return s;\n    }\n    if (pos < s.length) {\n        result.push(s.slice(pos));\n    }\n    else if (result.length === 2) {\n        return ['to-string', result[1]];\n    }\n    return result;\n}\n\nfunction getPropertyReference(propertyName) {\n    for (let i = 0; i < v8Spec.layout.length; i++) {\n        for (const key in v8Spec[v8Spec.layout[i]]) {\n            if (key === propertyName)\n                return v8Spec[v8Spec.layout[i]][key];\n        }\n    }\n    for (let i = 0; i < v8Spec.paint.length; i++) {\n        for (const key in v8Spec[v8Spec.paint[i]]) {\n            if (key === propertyName)\n                return v8Spec[v8Spec.paint[i]][key];\n        }\n    }\n    return null;\n}\nfunction eachSource(style, callback) {\n    for (const k in style.sources) {\n        callback(style.sources[k]);\n    }\n}\nfunction eachLayer(style, callback) {\n    for (const layer of style.layers) {\n        callback(layer);\n    }\n}\nfunction eachProperty(style, options, callback) {\n    function inner(layer, propertyType) {\n        const properties = layer[propertyType];\n        if (!properties)\n            return;\n        Object.keys(properties).forEach((key) => {\n            callback({\n                path: [layer.id, propertyType, key],\n                key,\n                value: properties[key],\n                reference: getPropertyReference(key),\n                set(x) {\n                    properties[key] = x;\n                }\n            });\n        });\n    }\n    eachLayer(style, (layer) => {\n        if (options.paint) {\n            inner(layer, 'paint');\n        }\n        if (options.layout) {\n            inner(layer, 'layout');\n        }\n    });\n}\n\nfunction stringify$1(obj) {\n    const type = typeof obj;\n    if (type === 'number' || type === 'boolean' || type === 'string' || obj === undefined || obj === null)\n        return JSON.stringify(obj);\n    if (Array.isArray(obj)) {\n        let str = '[';\n        for (const val of obj) {\n            str += `${stringify$1(val)},`;\n        }\n        return `${str}]`;\n    }\n    const keys = Object.keys(obj).sort();\n    let str = '{';\n    for (let i = 0; i < keys.length; i++) {\n        str += `${JSON.stringify(keys[i])}:${stringify$1(obj[keys[i]])},`;\n    }\n    return `${str}}`;\n}\nfunction getKey(layer) {\n    let key = '';\n    for (const k of refProperties) {\n        key += `/${stringify$1(layer[k])}`;\n    }\n    return key;\n}\n/**\n * Given an array of layers, return an array of arrays of layers where all\n * layers in each group have identical layout-affecting properties. These\n * are the properties that were formerly used by explicit `ref` mechanism\n * for layers: 'type', 'source', 'source-layer', 'minzoom', 'maxzoom',\n * 'filter', and 'layout'.\n *\n * The input is not modified. The output layers are references to the\n * input layers.\n *\n * @private\n * @param {Array<Layer>} layers\n * @param {Object} [cachedKeys] - an object to keep already calculated keys.\n * @returns {Array<Array<Layer>>}\n */\nfunction groupByLayout(layers, cachedKeys) {\n    const groups = {};\n    for (let i = 0; i < layers.length; i++) {\n        const k = (cachedKeys && cachedKeys[layers[i].id]) || getKey(layers[i]);\n        // update the cache if there is one\n        if (cachedKeys)\n            cachedKeys[layers[i].id] = k;\n        let group = groups[k];\n        if (!group) {\n            group = groups[k] = [];\n        }\n        group.push(layers[i]);\n    }\n    const result = [];\n    for (const k in groups) {\n        result.push(groups[k]);\n    }\n    return result;\n}\n\nfunction emptyStyle() {\n    const style = {};\n    const version = v8Spec['$version'];\n    for (const styleKey in v8Spec['$root']) {\n        const specification = v8Spec['$root'][styleKey];\n        if (specification.required) {\n            let value = null;\n            if (styleKey === 'version') {\n                value = version;\n            }\n            else {\n                if (specification.type === 'array') {\n                    value = [];\n                }\n                else {\n                    value = {};\n                }\n            }\n            if (value != null) {\n                style[styleKey] = value;\n            }\n        }\n    }\n    return style;\n}\n\nfunction validateConstants(options) {\n    const key = options.key;\n    const constants = options.value;\n    if (constants) {\n        return [new ValidationError(key, constants, 'constants have been deprecated as of v8')];\n    }\n    else {\n        return [];\n    }\n}\n\n// Turn jsonlint-lines-primitives objects into primitive objects\nfunction unbundle(value) {\n    if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n        return value.valueOf();\n    }\n    else {\n        return value;\n    }\n}\nfunction deepUnbundle(value) {\n    if (Array.isArray(value)) {\n        return value.map(deepUnbundle);\n    }\n    else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n        const unbundledValue = {};\n        for (const key in value) {\n            unbundledValue[key] = deepUnbundle(value[key]);\n        }\n        return unbundledValue;\n    }\n    return unbundle(value);\n}\n\nfunction validateObject(options) {\n    const key = options.key;\n    const object = options.value;\n    const elementSpecs = options.valueSpec || {};\n    const elementValidators = options.objectElementValidators || {};\n    const style = options.style;\n    const styleSpec = options.styleSpec;\n    const validateSpec = options.validateSpec;\n    let errors = [];\n    const type = getType(object);\n    if (type !== 'object') {\n        return [new ValidationError(key, object, `object expected, ${type} found`)];\n    }\n    for (const objectKey in object) {\n        const elementSpecKey = objectKey.split('.')[0]; // treat 'paint.*' as 'paint'\n        // objectKey comes from the user controlled style input, so elementSpecKey may be e.g. \"__proto__\"\n        const elementSpec = getOwn(elementSpecs, elementSpecKey) || elementSpecs['*'];\n        let validateElement;\n        if (getOwn(elementValidators, elementSpecKey)) {\n            validateElement = elementValidators[elementSpecKey];\n        }\n        else if (getOwn(elementSpecs, elementSpecKey)) {\n            validateElement = validateSpec;\n        }\n        else if (elementValidators['*']) {\n            validateElement = elementValidators['*'];\n        }\n        else if (elementSpecs['*']) {\n            validateElement = validateSpec;\n        }\n        else {\n            errors.push(new ValidationError(key, object[objectKey], `unknown property \"${objectKey}\"`));\n            continue;\n        }\n        errors = errors.concat(validateElement({\n            key: (key ? `${key}.` : key) + objectKey,\n            value: object[objectKey],\n            valueSpec: elementSpec,\n            style,\n            styleSpec,\n            object,\n            objectKey,\n            validateSpec,\n        }, object));\n    }\n    for (const elementSpecKey in elementSpecs) {\n        // Don't check `required` when there's a custom validator for that property.\n        if (elementValidators[elementSpecKey]) {\n            continue;\n        }\n        if (elementSpecs[elementSpecKey].required && elementSpecs[elementSpecKey]['default'] === undefined && object[elementSpecKey] === undefined) {\n            errors.push(new ValidationError(key, object, `missing required property \"${elementSpecKey}\"`));\n        }\n    }\n    return errors;\n}\n\nfunction validateArray(options) {\n    const array = options.value;\n    const arraySpec = options.valueSpec;\n    const validateSpec = options.validateSpec;\n    const style = options.style;\n    const styleSpec = options.styleSpec;\n    const key = options.key;\n    const validateArrayElement = options.arrayElementValidator || validateSpec;\n    if (getType(array) !== 'array') {\n        return [new ValidationError(key, array, `array expected, ${getType(array)} found`)];\n    }\n    if (arraySpec.length && array.length !== arraySpec.length) {\n        return [new ValidationError(key, array, `array length ${arraySpec.length} expected, length ${array.length} found`)];\n    }\n    if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n        return [new ValidationError(key, array, `array length at least ${arraySpec['min-length']} expected, length ${array.length} found`)];\n    }\n    let arrayElementSpec = {\n        'type': arraySpec.value,\n        'values': arraySpec.values\n    };\n    if (styleSpec.$version < 7) {\n        arrayElementSpec['function'] = arraySpec.function;\n    }\n    if (getType(arraySpec.value) === 'object') {\n        arrayElementSpec = arraySpec.value;\n    }\n    let errors = [];\n    for (let i = 0; i < array.length; i++) {\n        errors = errors.concat(validateArrayElement({\n            array,\n            arrayIndex: i,\n            value: array[i],\n            valueSpec: arrayElementSpec,\n            validateSpec: options.validateSpec,\n            style,\n            styleSpec,\n            key: `${key}[${i}]`\n        }));\n    }\n    return errors;\n}\n\nfunction validateNumber(options) {\n    const key = options.key;\n    const value = options.value;\n    const valueSpec = options.valueSpec;\n    let type = getType(value);\n    if (type === 'number' && value !== value) {\n        type = 'NaN';\n    }\n    if (type !== 'number') {\n        return [new ValidationError(key, value, `number expected, ${type} found`)];\n    }\n    if ('minimum' in valueSpec && value < valueSpec.minimum) {\n        return [new ValidationError(key, value, `${value} is less than the minimum value ${valueSpec.minimum}`)];\n    }\n    if ('maximum' in valueSpec && value > valueSpec.maximum) {\n        return [new ValidationError(key, value, `${value} is greater than the maximum value ${valueSpec.maximum}`)];\n    }\n    return [];\n}\n\nfunction validateFunction(options) {\n    const functionValueSpec = options.valueSpec;\n    const functionType = unbundle(options.value.type);\n    let stopKeyType;\n    let stopDomainValues = {};\n    let previousStopDomainValue;\n    let previousStopDomainZoom;\n    const isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n    const isPropertyFunction = !isZoomFunction;\n    const isZoomAndPropertyFunction = getType(options.value.stops) === 'array' &&\n        getType(options.value.stops[0]) === 'array' &&\n        getType(options.value.stops[0][0]) === 'object';\n    const errors = validateObject({\n        key: options.key,\n        value: options.value,\n        valueSpec: options.styleSpec.function,\n        validateSpec: options.validateSpec,\n        style: options.style,\n        styleSpec: options.styleSpec,\n        objectElementValidators: {\n            stops: validateFunctionStops,\n            default: validateFunctionDefault\n        }\n    });\n    if (functionType === 'identity' && isZoomFunction) {\n        errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n    }\n    if (functionType !== 'identity' && !options.value.stops) {\n        errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n    }\n    if (functionType === 'exponential' && options.valueSpec.expression && !supportsInterpolation(options.valueSpec)) {\n        errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n    }\n    if (options.styleSpec.$version >= 8) {\n        if (isPropertyFunction && !supportsPropertyExpression(options.valueSpec)) {\n            errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n        }\n        else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n            errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n        }\n    }\n    if ((functionType === 'categorical' || isZoomAndPropertyFunction) && options.value.property === undefined) {\n        errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n    }\n    return errors;\n    function validateFunctionStops(options) {\n        if (functionType === 'identity') {\n            return [new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')];\n        }\n        let errors = [];\n        const value = options.value;\n        errors = errors.concat(validateArray({\n            key: options.key,\n            value,\n            valueSpec: options.valueSpec,\n            validateSpec: options.validateSpec,\n            style: options.style,\n            styleSpec: options.styleSpec,\n            arrayElementValidator: validateFunctionStop\n        }));\n        if (getType(value) === 'array' && value.length === 0) {\n            errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n        }\n        return errors;\n    }\n    function validateFunctionStop(options) {\n        let errors = [];\n        const value = options.value;\n        const key = options.key;\n        if (getType(value) !== 'array') {\n            return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n        }\n        if (value.length !== 2) {\n            return [new ValidationError(key, value, `array length 2 expected, length ${value.length} found`)];\n        }\n        if (isZoomAndPropertyFunction) {\n            if (getType(value[0]) !== 'object') {\n                return [new ValidationError(key, value, `object expected, ${getType(value[0])} found`)];\n            }\n            if (value[0].zoom === undefined) {\n                return [new ValidationError(key, value, 'object stop key must have zoom')];\n            }\n            if (value[0].value === undefined) {\n                return [new ValidationError(key, value, 'object stop key must have value')];\n            }\n            if (previousStopDomainZoom && previousStopDomainZoom > unbundle(value[0].zoom)) {\n                return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n            }\n            if (unbundle(value[0].zoom) !== previousStopDomainZoom) {\n                previousStopDomainZoom = unbundle(value[0].zoom);\n                previousStopDomainValue = undefined;\n                stopDomainValues = {};\n            }\n            errors = errors.concat(validateObject({\n                key: `${key}[0]`,\n                value: value[0],\n                valueSpec: { zoom: {} },\n                validateSpec: options.validateSpec,\n                style: options.style,\n                styleSpec: options.styleSpec,\n                objectElementValidators: { zoom: validateNumber, value: validateStopDomainValue }\n            }));\n        }\n        else {\n            errors = errors.concat(validateStopDomainValue({\n                key: `${key}[0]`,\n                value: value[0],\n                validateSpec: options.validateSpec,\n                style: options.style,\n                styleSpec: options.styleSpec\n            }, value));\n        }\n        if (isExpression(deepUnbundle(value[1]))) {\n            return errors.concat([new ValidationError(`${key}[1]`, value[1], 'expressions are not allowed in function stops.')]);\n        }\n        return errors.concat(options.validateSpec({\n            key: `${key}[1]`,\n            value: value[1],\n            valueSpec: functionValueSpec,\n            validateSpec: options.validateSpec,\n            style: options.style,\n            styleSpec: options.styleSpec\n        }));\n    }\n    function validateStopDomainValue(options, stop) {\n        const type = getType(options.value);\n        const value = unbundle(options.value);\n        const reportValue = options.value !== null ? options.value : stop;\n        if (!stopKeyType) {\n            stopKeyType = type;\n        }\n        else if (type !== stopKeyType) {\n            return [new ValidationError(options.key, reportValue, `${type} stop domain type must match previous stop domain type ${stopKeyType}`)];\n        }\n        if (type !== 'number' && type !== 'string' && type !== 'boolean') {\n            return [new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')];\n        }\n        if (type !== 'number' && functionType !== 'categorical') {\n            let message = `number expected, ${type} found`;\n            if (supportsPropertyExpression(functionValueSpec) && functionType === undefined) {\n                message += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n            }\n            return [new ValidationError(options.key, reportValue, message)];\n        }\n        if (functionType === 'categorical' && type === 'number' && (!isFinite(value) || Math.floor(value) !== value)) {\n            return [new ValidationError(options.key, reportValue, `integer expected, found ${value}`)];\n        }\n        if (functionType !== 'categorical' && type === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n            return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n        }\n        else {\n            previousStopDomainValue = value;\n        }\n        if (functionType === 'categorical' && value in stopDomainValues) {\n            return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n        }\n        else {\n            stopDomainValues[value] = true;\n        }\n        return [];\n    }\n    function validateFunctionDefault(options) {\n        return options.validateSpec({\n            key: options.key,\n            value: options.value,\n            valueSpec: functionValueSpec,\n            validateSpec: options.validateSpec,\n            style: options.style,\n            styleSpec: options.styleSpec\n        });\n    }\n}\n\nfunction validateExpression(options) {\n    const expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec);\n    if (expression.result === 'error') {\n        return expression.value.map((error) => {\n            return new ValidationError(`${options.key}${error.key}`, options.value, error.message);\n        });\n    }\n    const expressionObj = expression.value.expression || expression.value._styleExpression.expression;\n    if (options.expressionContext === 'property' && (options.propertyKey === 'text-font') &&\n        !expressionObj.outputDefined()) {\n        return [new ValidationError(options.key, options.value, `Invalid data expression for \"${options.propertyKey}\". Output values must be contained as literals within the expression.`)];\n    }\n    if (options.expressionContext === 'property' && options.propertyType === 'layout' &&\n        (!isStateConstant(expressionObj))) {\n        return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n    }\n    if (options.expressionContext === 'filter' && !isStateConstant(expressionObj)) {\n        return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with filters.')];\n    }\n    if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n        if (!isGlobalPropertyConstant(expressionObj, ['zoom', 'feature-state'])) {\n            return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n        }\n        if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n            return [new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')];\n        }\n    }\n    return [];\n}\n\nfunction validateBoolean(options) {\n    const value = options.value;\n    const key = options.key;\n    const type = getType(value);\n    if (type !== 'boolean') {\n        return [new ValidationError(key, value, `boolean expected, ${type} found`)];\n    }\n    return [];\n}\n\nfunction validateColor(options) {\n    const key = options.key;\n    const value = options.value;\n    const type = getType(value);\n    if (type !== 'string') {\n        return [new ValidationError(key, value, `color expected, ${type} found`)];\n    }\n    if (!Color.parse(String(value))) { // cast String object to string primitive\n        return [new ValidationError(key, value, `color expected, \"${value}\" found`)];\n    }\n    return [];\n}\n\nfunction validateEnum(options) {\n    const key = options.key;\n    const value = options.value;\n    const valueSpec = options.valueSpec;\n    const errors = [];\n    if (Array.isArray(valueSpec.values)) { // <=v7\n        if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n            errors.push(new ValidationError(key, value, `expected one of [${valueSpec.values.join(', ')}], ${JSON.stringify(value)} found`));\n        }\n    }\n    else { // >=v8\n        if (Object.keys(valueSpec.values).indexOf(unbundle(value)) === -1) {\n            errors.push(new ValidationError(key, value, `expected one of [${Object.keys(valueSpec.values).join(', ')}], ${JSON.stringify(value)} found`));\n        }\n    }\n    return errors;\n}\n\nfunction validateFilter(options) {\n    if (isExpressionFilter(deepUnbundle(options.value))) {\n        return validateExpression(extendBy({}, options, {\n            expressionContext: 'filter',\n            valueSpec: { value: 'boolean' }\n        }));\n    }\n    else {\n        return validateNonExpressionFilter(options);\n    }\n}\nfunction validateNonExpressionFilter(options) {\n    const value = options.value;\n    const key = options.key;\n    if (getType(value) !== 'array') {\n        return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n    }\n    const styleSpec = options.styleSpec;\n    let type;\n    let errors = [];\n    if (value.length < 1) {\n        return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n    }\n    errors = errors.concat(validateEnum({\n        key: `${key}[0]`,\n        value: value[0],\n        valueSpec: styleSpec.filter_operator,\n        style: options.style,\n        styleSpec: options.styleSpec\n    }));\n    switch (unbundle(value[0])) {\n        case '<':\n        case '<=':\n        case '>':\n        case '>=':\n            if (value.length >= 2 && unbundle(value[1]) === '$type') {\n                errors.push(new ValidationError(key, value, `\"$type\" cannot be use with operator \"${value[0]}\"`));\n            }\n        /* falls through */\n        case '==':\n        case '!=':\n            if (value.length !== 3) {\n                errors.push(new ValidationError(key, value, `filter array for operator \"${value[0]}\" must have 3 elements`));\n            }\n        /* falls through */\n        case 'in':\n        case '!in':\n            if (value.length >= 2) {\n                type = getType(value[1]);\n                if (type !== 'string') {\n                    errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n                }\n            }\n            for (let i = 2; i < value.length; i++) {\n                type = getType(value[i]);\n                if (unbundle(value[1]) === '$type') {\n                    errors = errors.concat(validateEnum({\n                        key: `${key}[${i}]`,\n                        value: value[i],\n                        valueSpec: styleSpec.geometry_type,\n                        style: options.style,\n                        styleSpec: options.styleSpec\n                    }));\n                }\n                else if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n                    errors.push(new ValidationError(`${key}[${i}]`, value[i], `string, number, or boolean expected, ${type} found`));\n                }\n            }\n            break;\n        case 'any':\n        case 'all':\n        case 'none':\n            for (let i = 1; i < value.length; i++) {\n                errors = errors.concat(validateNonExpressionFilter({\n                    key: `${key}[${i}]`,\n                    value: value[i],\n                    style: options.style,\n                    styleSpec: options.styleSpec\n                }));\n            }\n            break;\n        case 'has':\n        case '!has':\n            type = getType(value[1]);\n            if (value.length !== 2) {\n                errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n            }\n            else if (type !== 'string') {\n                errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n            }\n            break;\n    }\n    return errors;\n}\n\nfunction validateProperty(options, propertyType) {\n    const key = options.key;\n    const validateSpec = options.validateSpec;\n    const style = options.style;\n    const styleSpec = options.styleSpec;\n    const value = options.value;\n    const propertyKey = options.objectKey;\n    const layerSpec = styleSpec[`${propertyType}_${options.layerType}`];\n    if (!layerSpec)\n        return [];\n    const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n    if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n        return validateSpec({\n            key,\n            value,\n            valueSpec: styleSpec.transition,\n            style,\n            styleSpec\n        });\n    }\n    const valueSpec = options.valueSpec || layerSpec[propertyKey];\n    if (!valueSpec) {\n        return [new ValidationError(key, value, `unknown property \"${propertyKey}\"`)];\n    }\n    let tokenMatch;\n    if (getType(value) === 'string' && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n        return [new ValidationError(key, value, `\"${propertyKey}\" does not support interpolation syntax\\n` +\n                `Use an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(tokenMatch[1])} }\\`.`)];\n    }\n    const errors = [];\n    if (options.layerType === 'symbol') {\n        if (propertyKey === 'text-field' && style && !style.glyphs) {\n            errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n        }\n        if (propertyKey === 'text-font' && isFunction$1(deepUnbundle(value)) && unbundle(value.type) === 'identity') {\n            errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n        }\n    }\n    return errors.concat(validateSpec({\n        key: options.key,\n        value,\n        valueSpec,\n        style,\n        styleSpec,\n        expressionContext: 'property',\n        propertyType,\n        propertyKey\n    }));\n}\n\nfunction validatePaintProperty(options) {\n    return validateProperty(options, 'paint');\n}\n\nfunction validateLayoutProperty(options) {\n    return validateProperty(options, 'layout');\n}\n\nfunction validateLayer(options) {\n    let errors = [];\n    const layer = options.value;\n    const key = options.key;\n    const style = options.style;\n    const styleSpec = options.styleSpec;\n    if (getType(layer) !== 'object') {\n        return [new ValidationError(key, layer, `object expected, ${getType(layer)} found`)];\n    }\n    if (!layer.type && !layer.ref) {\n        errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n    }\n    let type = unbundle(layer.type);\n    const ref = unbundle(layer.ref);\n    if (layer.id) {\n        const layerId = unbundle(layer.id);\n        for (let i = 0; i < options.arrayIndex; i++) {\n            const otherLayer = style.layers[i];\n            if (unbundle(otherLayer.id) === layerId) {\n                errors.push(new ValidationError(key, layer.id, `duplicate layer id \"${layer.id}\", previously used at line ${otherLayer.id.__line__}`));\n            }\n        }\n    }\n    if ('ref' in layer) {\n        ['type', 'source', 'source-layer', 'filter', 'layout'].forEach((p) => {\n            if (p in layer) {\n                errors.push(new ValidationError(key, layer[p], `\"${p}\" is prohibited for ref layers`));\n            }\n        });\n        let parent;\n        style.layers.forEach((layer) => {\n            if (unbundle(layer.id) === ref)\n                parent = layer;\n        });\n        if (!parent) {\n            errors.push(new ValidationError(key, layer.ref, `ref layer \"${ref}\" not found`));\n        }\n        else if (parent.ref) {\n            errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n        }\n        else {\n            type = unbundle(parent.type);\n        }\n    }\n    else if (type !== 'background') {\n        if (!layer.source) {\n            errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n        }\n        else {\n            const source = style.sources && style.sources[layer.source];\n            const sourceType = source && unbundle(source.type);\n            if (!source) {\n                errors.push(new ValidationError(key, layer.source, `source \"${layer.source}\" not found`));\n            }\n            else if (sourceType === 'vector' && type === 'raster') {\n                errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster source`));\n            }\n            else if (sourceType !== 'raster-dem' && type === 'hillshade') {\n                errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster-dem source`));\n            }\n            else if (sourceType !== 'raster-dem' && type === 'color-relief') {\n                errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster-dem source`));\n            }\n            else if (sourceType === 'raster' && type !== 'raster') {\n                errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a vector source`));\n            }\n            else if (sourceType === 'vector' && !layer['source-layer']) {\n                errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" must specify a \"source-layer\"`));\n            }\n            else if (sourceType === 'raster-dem' && (type !== 'hillshade' && type !== 'color-relief')) {\n                errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\' or \\'color-relief\\'.'));\n            }\n            else if (type === 'line' && layer.paint && layer.paint['line-gradient'] &&\n                (sourceType !== 'geojson' || !source.lineMetrics)) {\n                errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`));\n            }\n        }\n    }\n    errors = errors.concat(validateObject({\n        key,\n        value: layer,\n        valueSpec: styleSpec.layer,\n        style: options.style,\n        styleSpec: options.styleSpec,\n        validateSpec: options.validateSpec,\n        objectElementValidators: {\n            '*'() {\n                return [];\n            },\n            // We don't want to enforce the spec's `\"requires\": true` for backward compatibility with refs;\n            // the actual requirement is validated above. See https://github.com/mapbox/mapbox-gl-js/issues/5772.\n            type() {\n                return options.validateSpec({\n                    key: `${key}.type`,\n                    value: layer.type,\n                    valueSpec: styleSpec.layer.type,\n                    style: options.style,\n                    styleSpec: options.styleSpec,\n                    validateSpec: options.validateSpec,\n                    object: layer,\n                    objectKey: 'type'\n                });\n            },\n            filter: validateFilter,\n            layout(options) {\n                return validateObject({\n                    layer,\n                    key: options.key,\n                    value: options.value,\n                    style: options.style,\n                    styleSpec: options.styleSpec,\n                    validateSpec: options.validateSpec,\n                    objectElementValidators: {\n                        '*'(options) {\n                            return validateLayoutProperty(extendBy({ layerType: type }, options));\n                        }\n                    }\n                });\n            },\n            paint(options) {\n                return validateObject({\n                    layer,\n                    key: options.key,\n                    value: options.value,\n                    style: options.style,\n                    styleSpec: options.styleSpec,\n                    validateSpec: options.validateSpec,\n                    objectElementValidators: {\n                        '*'(options) {\n                            return validatePaintProperty(extendBy({ layerType: type }, options));\n                        }\n                    }\n                });\n            }\n        }\n    }));\n    return errors;\n}\n\nfunction validateString(options) {\n    const value = options.value;\n    const key = options.key;\n    const type = getType(value);\n    if (type !== 'string') {\n        return [new ValidationError(key, value, `string expected, ${type} found`)];\n    }\n    return [];\n}\n\nfunction validateRasterDEMSource(options) {\n    var _a;\n    const sourceName = (_a = options.sourceName) !== null && _a !== void 0 ? _a : '';\n    const rasterDEM = options.value;\n    const styleSpec = options.styleSpec;\n    const rasterDEMSpec = styleSpec.source_raster_dem;\n    const style = options.style;\n    let errors = [];\n    const rootType = getType(rasterDEM);\n    if (rasterDEM === undefined) {\n        return errors;\n    }\n    else if (rootType !== 'object') {\n        errors.push(new ValidationError('source_raster_dem', rasterDEM, `object expected, ${rootType} found`));\n        return errors;\n    }\n    const encoding = unbundle(rasterDEM.encoding);\n    const isCustomEncoding = encoding === 'custom';\n    const customEncodingKeys = ['redFactor', 'greenFactor', 'blueFactor', 'baseShift'];\n    const encodingName = options.value.encoding ? `\"${options.value.encoding}\"` : 'Default';\n    for (const key in rasterDEM) {\n        if (!isCustomEncoding && customEncodingKeys.includes(key)) {\n            errors.push(new ValidationError(key, rasterDEM[key], `In \"${sourceName}\": \"${key}\" is only valid when \"encoding\" is set to \"custom\". ${encodingName} encoding found`));\n        }\n        else if (rasterDEMSpec[key]) {\n            errors = errors.concat(options.validateSpec({\n                key,\n                value: rasterDEM[key],\n                valueSpec: rasterDEMSpec[key],\n                validateSpec: options.validateSpec,\n                style,\n                styleSpec\n            }));\n        }\n        else {\n            errors.push(new ValidationError(key, rasterDEM[key], `unknown property \"${key}\"`));\n        }\n    }\n    return errors;\n}\n\nconst objectElementValidators = {\n    promoteId: validatePromoteId\n};\nfunction validateSource(options) {\n    const value = options.value;\n    const key = options.key;\n    const styleSpec = options.styleSpec;\n    const style = options.style;\n    const validateSpec = options.validateSpec;\n    if (!value.type) {\n        return [new ValidationError(key, value, '\"type\" is required')];\n    }\n    const type = unbundle(value.type);\n    let errors;\n    switch (type) {\n        case 'vector':\n        case 'raster':\n            errors = validateObject({\n                key,\n                value,\n                valueSpec: styleSpec[`source_${type.replace('-', '_')}`],\n                style: options.style,\n                styleSpec,\n                objectElementValidators,\n                validateSpec,\n            });\n            return errors;\n        case 'raster-dem':\n            errors = validateRasterDEMSource({\n                sourceName: key,\n                value,\n                style: options.style,\n                styleSpec,\n                validateSpec,\n            });\n            return errors;\n        case 'geojson':\n            errors = validateObject({\n                key,\n                value,\n                valueSpec: styleSpec.source_geojson,\n                style,\n                styleSpec,\n                validateSpec,\n                objectElementValidators\n            });\n            if (value.cluster) {\n                for (const prop in value.clusterProperties) {\n                    const [operator, mapExpr] = value.clusterProperties[prop];\n                    const reduceExpr = typeof operator === 'string' ? [operator, ['accumulated'], ['get', prop]] : operator;\n                    errors.push(...validateExpression({\n                        key: `${key}.${prop}.map`,\n                        value: mapExpr,\n                        expressionContext: 'cluster-map'\n                    }));\n                    errors.push(...validateExpression({\n                        key: `${key}.${prop}.reduce`,\n                        value: reduceExpr,\n                        expressionContext: 'cluster-reduce'\n                    }));\n                }\n            }\n            return errors;\n        case 'video':\n            return validateObject({\n                key,\n                value,\n                valueSpec: styleSpec.source_video,\n                style,\n                validateSpec,\n                styleSpec\n            });\n        case 'image':\n            return validateObject({\n                key,\n                value,\n                valueSpec: styleSpec.source_image,\n                style,\n                validateSpec,\n                styleSpec\n            });\n        case 'canvas':\n            return [new ValidationError(key, null, 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', 'source.canvas')];\n        default:\n            return validateEnum({\n                key: `${key}.type`,\n                value: value.type,\n                valueSpec: { values: ['vector', 'raster', 'raster-dem', 'geojson', 'video', 'image'] }});\n    }\n}\nfunction validatePromoteId({ key, value }) {\n    if (getType(value) === 'string') {\n        return validateString({ key, value });\n    }\n    else {\n        const errors = [];\n        for (const prop in value) {\n            errors.push(...validateString({ key: `${key}.${prop}`, value: value[prop] }));\n        }\n        return errors;\n    }\n}\n\nfunction validateLight(options) {\n    const light = options.value;\n    const styleSpec = options.styleSpec;\n    const lightSpec = styleSpec.light;\n    const style = options.style;\n    let errors = [];\n    const rootType = getType(light);\n    if (light === undefined) {\n        return errors;\n    }\n    else if (rootType !== 'object') {\n        errors = errors.concat([new ValidationError('light', light, `object expected, ${rootType} found`)]);\n        return errors;\n    }\n    for (const key in light) {\n        const transitionMatch = key.match(/^(.*)-transition$/);\n        if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n            errors = errors.concat(options.validateSpec({\n                key,\n                value: light[key],\n                valueSpec: styleSpec.transition,\n                validateSpec: options.validateSpec,\n                style,\n                styleSpec\n            }));\n        }\n        else if (lightSpec[key]) {\n            errors = errors.concat(options.validateSpec({\n                key,\n                value: light[key],\n                valueSpec: lightSpec[key],\n                validateSpec: options.validateSpec,\n                style,\n                styleSpec\n            }));\n        }\n        else {\n            errors = errors.concat([new ValidationError(key, light[key], `unknown property \"${key}\"`)]);\n        }\n    }\n    return errors;\n}\n\nfunction validateSky(options) {\n    const sky = options.value;\n    const styleSpec = options.styleSpec;\n    const skySpec = styleSpec.sky;\n    const style = options.style;\n    const rootType = getType(sky);\n    if (sky === undefined) {\n        return [];\n    }\n    else if (rootType !== 'object') {\n        return [new ValidationError('sky', sky, `object expected, ${rootType} found`)];\n    }\n    let errors = [];\n    for (const key in sky) {\n        if (skySpec[key]) {\n            errors = errors.concat(options.validateSpec({\n                key,\n                value: sky[key],\n                valueSpec: skySpec[key],\n                style,\n                styleSpec\n            }));\n        }\n        else {\n            errors = errors.concat([new ValidationError(key, sky[key], `unknown property \"${key}\"`)]);\n        }\n    }\n    return errors;\n}\n\nfunction validateTerrain(options) {\n    const terrain = options.value;\n    const styleSpec = options.styleSpec;\n    const terrainSpec = styleSpec.terrain;\n    const style = options.style;\n    let errors = [];\n    const rootType = getType(terrain);\n    if (terrain === undefined) {\n        return errors;\n    }\n    else if (rootType !== 'object') {\n        errors = errors.concat([new ValidationError('terrain', terrain, `object expected, ${rootType} found`)]);\n        return errors;\n    }\n    for (const key in terrain) {\n        if (terrainSpec[key]) {\n            errors = errors.concat(options.validateSpec({\n                key,\n                value: terrain[key],\n                valueSpec: terrainSpec[key],\n                validateSpec: options.validateSpec,\n                style,\n                styleSpec\n            }));\n        }\n        else {\n            errors = errors.concat([new ValidationError(key, terrain[key], `unknown property \"${key}\"`)]);\n        }\n    }\n    return errors;\n}\n\nfunction validateFormatted(options) {\n    if (validateString(options).length === 0) {\n        return [];\n    }\n    return validateExpression(options);\n}\n\nfunction validateImage(options) {\n    if (validateString(options).length === 0) {\n        return [];\n    }\n    return validateExpression(options);\n}\n\nfunction validatePadding(options) {\n    const key = options.key;\n    const value = options.value;\n    const type = getType(value);\n    if (type === 'array') {\n        if (value.length < 1 || value.length > 4) {\n            return [new ValidationError(key, value, `padding requires 1 to 4 values; ${value.length} values found`)];\n        }\n        const arrayElementSpec = {\n            type: 'number'\n        };\n        let errors = [];\n        for (let i = 0; i < value.length; i++) {\n            errors = errors.concat(options.validateSpec({\n                key: `${key}[${i}]`,\n                value: value[i],\n                validateSpec: options.validateSpec,\n                valueSpec: arrayElementSpec\n            }));\n        }\n        return errors;\n    }\n    else {\n        return validateNumber({\n            key,\n            value,\n            valueSpec: {}\n        });\n    }\n}\n\nfunction validateNumberArray(options) {\n    const key = options.key;\n    const value = options.value;\n    const type = getType(value);\n    if (type === 'array') {\n        const arrayElementSpec = {\n            type: 'number'\n        };\n        if (value.length < 1) {\n            return [new ValidationError(key, value, 'array length at least 1 expected, length 0 found')];\n        }\n        let errors = [];\n        for (let i = 0; i < value.length; i++) {\n            errors = errors.concat(options.validateSpec({\n                key: `${key}[${i}]`,\n                value: value[i],\n                validateSpec: options.validateSpec,\n                valueSpec: arrayElementSpec\n            }));\n        }\n        return errors;\n    }\n    else {\n        return validateNumber({\n            key,\n            value,\n            valueSpec: {}\n        });\n    }\n}\n\nfunction validateColorArray(options) {\n    const key = options.key;\n    const value = options.value;\n    const type = getType(value);\n    if (type === 'array') {\n        if (value.length < 1) {\n            return [new ValidationError(key, value, 'array length at least 1 expected, length 0 found')];\n        }\n        let errors = [];\n        for (let i = 0; i < value.length; i++) {\n            errors = errors.concat(validateColor({\n                key: `${key}[${i}]`,\n                value: value[i]}));\n        }\n        return errors;\n    }\n    else {\n        return validateColor({\n            key,\n            value});\n    }\n}\n\nfunction validateVariableAnchorOffsetCollection(options) {\n    const key = options.key;\n    const value = options.value;\n    const type = getType(value);\n    const styleSpec = options.styleSpec;\n    if (type !== 'array' || value.length < 1 || value.length % 2 !== 0) {\n        return [new ValidationError(key, value, 'variableAnchorOffsetCollection requires a non-empty array of even length')];\n    }\n    let errors = [];\n    for (let i = 0; i < value.length; i += 2) {\n        // Elements in even positions should be values from text-anchor enum\n        errors = errors.concat(validateEnum({\n            key: `${key}[${i}]`,\n            value: value[i],\n            valueSpec: styleSpec['layout_symbol']['text-anchor']\n        }));\n        // Elements in odd positions should be points (2-element numeric arrays)\n        errors = errors.concat(validateArray({\n            key: `${key}[${i + 1}]`,\n            value: value[i + 1],\n            valueSpec: {\n                length: 2,\n                value: 'number'\n            },\n            validateSpec: options.validateSpec,\n            style: options.style,\n            styleSpec\n        }));\n    }\n    return errors;\n}\n\nfunction validateSprite(options) {\n    let errors = [];\n    const sprite = options.value;\n    const key = options.key;\n    if (!Array.isArray(sprite)) {\n        return validateString({\n            key,\n            value: sprite\n        });\n    }\n    else {\n        const allSpriteIds = [];\n        const allSpriteURLs = [];\n        for (const i in sprite) {\n            if (sprite[i].id && allSpriteIds.includes(sprite[i].id))\n                errors.push(new ValidationError(key, sprite, `all the sprites' ids must be unique, but ${sprite[i].id} is duplicated`));\n            allSpriteIds.push(sprite[i].id);\n            if (sprite[i].url && allSpriteURLs.includes(sprite[i].url))\n                errors.push(new ValidationError(key, sprite, `all the sprites' URLs must be unique, but ${sprite[i].url} is duplicated`));\n            allSpriteURLs.push(sprite[i].url);\n            const pairSpec = {\n                id: {\n                    type: 'string',\n                    required: true,\n                },\n                url: {\n                    type: 'string',\n                    required: true,\n                }\n            };\n            errors = errors.concat(validateObject({\n                key: `${key}[${i}]`,\n                value: sprite[i],\n                valueSpec: pairSpec,\n                validateSpec: options.validateSpec,\n            }));\n        }\n        return errors;\n    }\n}\n\nfunction validateProjection(options) {\n    const projection = options.value;\n    const styleSpec = options.styleSpec;\n    const projectionSpec = styleSpec.projection;\n    const style = options.style;\n    const rootType = getType(projection);\n    if (projection === undefined) {\n        return [];\n    }\n    else if (rootType !== 'object') {\n        return [new ValidationError('projection', projection, `object expected, ${rootType} found`)];\n    }\n    let errors = [];\n    for (const key in projection) {\n        if (projectionSpec[key]) {\n            errors = errors.concat(options.validateSpec({\n                key,\n                value: projection[key],\n                valueSpec: projectionSpec[key],\n                style,\n                styleSpec\n            }));\n        }\n        else {\n            errors = errors.concat([new ValidationError(key, projection[key], `unknown property \"${key}\"`)]);\n        }\n    }\n    return errors;\n}\n\nfunction validateProjectionDefinition(options) {\n    const key = options.key;\n    let value = options.value;\n    value = value instanceof String ? value.valueOf() : value;\n    const type = getType(value);\n    if (type === 'array' && !isProjectionDefinitionValue(value) && !isPropertyValueSpecification(value)) {\n        return [new ValidationError(key, value, `projection expected, invalid array ${JSON.stringify(value)} found`)];\n    }\n    else if (!['array', 'string'].includes(type)) {\n        return [new ValidationError(key, value, `projection expected, invalid type \"${type}\" found`)];\n    }\n    return [];\n}\nfunction isPropertyValueSpecification(value) {\n    if (['interpolate', 'step', 'literal'].includes(value[0])) {\n        return true;\n    }\n    return false;\n}\nfunction isProjectionDefinitionValue(value) {\n    return Array.isArray(value) &&\n        value.length === 3 &&\n        typeof value[0] === 'string' &&\n        typeof value[1] === 'string' &&\n        typeof value[2] === 'number';\n}\n\nfunction isObjectLiteral(anything) {\n    return Boolean(anything) && anything.constructor === Object;\n}\n\nfunction validateState(options) {\n    if (!isObjectLiteral(options.value)) {\n        return [\n            new ValidationError(options.key, options.value, `object expected, ${getType(options.value)} found`),\n        ];\n    }\n    return [];\n}\n\nconst VALIDATORS = {\n    '*'() {\n        return [];\n    },\n    'array': validateArray,\n    'boolean': validateBoolean,\n    'number': validateNumber,\n    'color': validateColor,\n    'constants': validateConstants,\n    'enum': validateEnum,\n    'filter': validateFilter,\n    'function': validateFunction,\n    'layer': validateLayer,\n    'object': validateObject,\n    'source': validateSource,\n    'light': validateLight,\n    'sky': validateSky,\n    'terrain': validateTerrain,\n    'projection': validateProjection,\n    'projectionDefinition': validateProjectionDefinition,\n    'string': validateString,\n    'formatted': validateFormatted,\n    'resolvedImage': validateImage,\n    'padding': validatePadding,\n    'numberArray': validateNumberArray,\n    'colorArray': validateColorArray,\n    'variableAnchorOffsetCollection': validateVariableAnchorOffsetCollection,\n    'sprite': validateSprite,\n    'state': validateState\n};\n/**\n * Main recursive validation function used internally.\n * You should use `validateStyleMin` in the browser or `validateStyle` in node env.\n * @param options - the options object\n * @param options.key - string representing location of validation in style tree. Used only\n * for more informative error reporting.\n * @param options.value - current value from style being evaluated. May be anything from a\n * high level object that needs to be descended into deeper or a simple\n * scalar value.\n * @param options.valueSpec - current spec being evaluated. Tracks value.\n * @param options.styleSpec - current full spec being evaluated.\n * @param options.validateSpec - the validate function itself\n * @param options.style - the style object\n * @param options.objectElementValidators - optional object of functions that will be called\n * @returns an array of errors, or an empty array if no errors are found.\n */\nfunction validate(options) {\n    const value = options.value;\n    const valueSpec = options.valueSpec;\n    const styleSpec = options.styleSpec;\n    options.validateSpec = validate;\n    if (valueSpec.expression && isFunction$1(unbundle(value))) {\n        return validateFunction(options);\n    }\n    else if (valueSpec.expression && isExpression(deepUnbundle(value))) {\n        return validateExpression(options);\n    }\n    else if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n        return VALIDATORS[valueSpec.type](options);\n    }\n    else {\n        const valid = validateObject(extendBy({}, options, {\n            valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec\n        }));\n        return valid;\n    }\n}\n\nfunction validateGlyphsUrl(options) {\n    const value = options.value;\n    const key = options.key;\n    const errors = validateString(options);\n    if (errors.length)\n        return errors;\n    if (value.indexOf('{fontstack}') === -1) {\n        errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n    }\n    if (value.indexOf('{range}') === -1) {\n        errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n    }\n    return errors;\n}\n\n/**\n * Validate a MapLibre style against the style specification.\n * Use this when running in the browser.\n *\n * @param style - The style to be validated.\n * @param styleSpec - The style specification to validate against.\n * If omitted, the latest style spec is used.\n * @returns an array of errors, or an empty array if no errors are found.\n * @example\n *   const validate = require('@maplibre/maplibre-gl-style-spec/').validateStyleMin;\n *   const errors = validate(style);\n */\nfunction validateStyleMin(style, styleSpec = v8Spec) {\n    let errors = [];\n    errors = errors.concat(validate({\n        key: '',\n        value: style,\n        valueSpec: styleSpec.$root,\n        styleSpec,\n        style,\n        validateSpec: validate,\n        objectElementValidators: {\n            glyphs: validateGlyphsUrl,\n            '*'() {\n                return [];\n            }\n        }\n    }));\n    if (style['constants']) {\n        errors = errors.concat(validateConstants({\n            key: 'constants',\n            value: style['constants']}));\n    }\n    return sortErrors(errors);\n}\nvalidateStyleMin.source = wrapCleanErrors(injectValidateSpec(validateSource));\nvalidateStyleMin.sprite = wrapCleanErrors(injectValidateSpec(validateSprite));\nvalidateStyleMin.glyphs = wrapCleanErrors(injectValidateSpec(validateGlyphsUrl));\nvalidateStyleMin.light = wrapCleanErrors(injectValidateSpec(validateLight));\nvalidateStyleMin.sky = wrapCleanErrors(injectValidateSpec(validateSky));\nvalidateStyleMin.terrain = wrapCleanErrors(injectValidateSpec(validateTerrain));\nvalidateStyleMin.state = wrapCleanErrors(injectValidateSpec(validateState));\nvalidateStyleMin.layer = wrapCleanErrors(injectValidateSpec(validateLayer));\nvalidateStyleMin.filter = wrapCleanErrors(injectValidateSpec(validateFilter));\nvalidateStyleMin.paintProperty = wrapCleanErrors(injectValidateSpec(validatePaintProperty));\nvalidateStyleMin.layoutProperty = wrapCleanErrors(injectValidateSpec(validateLayoutProperty));\nfunction injectValidateSpec(validator) {\n    return function (options) {\n        return validator({\n            ...options,\n            validateSpec: validate,\n        });\n    };\n}\nfunction sortErrors(errors) {\n    return [].concat(errors).sort((a, b) => {\n        return a.line - b.line;\n    });\n}\nfunction wrapCleanErrors(inner) {\n    return function (...args) {\n        return sortErrors(inner.apply(this, args));\n    };\n}\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nconst stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nfunction stringify(passedObj, options = {}) {\n  const indent = JSON.stringify(\n    [1],\n    undefined,\n    options.indent === undefined ? 2 : options.indent\n  ).slice(2, -3);\n\n  const maxLength =\n    indent === \"\"\n      ? Infinity\n      : options.maxLength === undefined\n      ? 80\n      : options.maxLength;\n\n  let { replacer } = options;\n\n  return (function _stringify(obj, currentIndent, reserved) {\n    if (obj && typeof obj.toJSON === \"function\") {\n      obj = obj.toJSON();\n    }\n\n    const string = JSON.stringify(obj, replacer);\n\n    if (string === undefined) {\n      return string;\n    }\n\n    const length = maxLength - currentIndent.length - reserved;\n\n    if (string.length <= length) {\n      const prettified = string.replace(\n        stringOrChar,\n        (match, stringLiteral) => {\n          return stringLiteral || `${match} `;\n        }\n      );\n      if (prettified.length <= length) {\n        return prettified;\n      }\n    }\n\n    if (replacer != null) {\n      obj = JSON.parse(string);\n      replacer = undefined;\n    }\n\n    if (typeof obj === \"object\" && obj !== null) {\n      const nextIndent = currentIndent + indent;\n      const items = [];\n      let index = 0;\n      let start;\n      let end;\n\n      if (Array.isArray(obj)) {\n        start = \"[\";\n        end = \"]\";\n        const { length } = obj;\n        for (; index < length; index++) {\n          items.push(\n            _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n              \"null\"\n          );\n        }\n      } else {\n        start = \"{\";\n        end = \"}\";\n        const keys = Object.keys(obj);\n        const { length } = keys;\n        for (; index < length; index++) {\n          const key = keys[index];\n          const keyPart = `${JSON.stringify(key)}: `;\n          const value = _stringify(\n            obj[key],\n            nextIndent,\n            keyPart.length + (index === length - 1 ? 0 : 1)\n          );\n          if (value !== undefined) {\n            items.push(keyPart + value);\n          }\n        }\n      }\n\n      if (items.length > 0) {\n        return [start, indent + items.join(`,\\n${nextIndent}`), end].join(\n          `\\n${currentIndent}`\n        );\n      }\n    }\n\n    return string;\n  })(passedObj, \"\", 0);\n}\n\nfunction sortKeysBy(obj, reference) {\n    const result = {};\n    for (const key in reference) {\n        if (obj[key] !== undefined) {\n            result[key] = obj[key];\n        }\n    }\n    for (const key in obj) {\n        if (result[key] === undefined) {\n            result[key] = obj[key];\n        }\n    }\n    return result;\n}\n/**\n * Format a MapLibre Style.  Returns a stringified style with its keys\n * sorted in the same order as the reference style.\n *\n * The optional `space` argument is passed to\n * [`JSON.stringify`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * to generate formatted output.\n *\n * If `space` is unspecified, a default of `2` spaces will be used.\n *\n * @private\n * @param {Object} style a MapLibre Style\n * @param {number} [space] space argument to pass to `JSON.stringify`\n * @returns {string} stringified formatted JSON\n * @example\n * var fs = require('fs');\n * var format = require('maplibre-gl-style-spec').format;\n * var style = fs.readFileSync('./source.json', 'utf8');\n * fs.writeFileSync('./dest.json', format(style));\n * fs.writeFileSync('./dest.min.json', format(style, 0));\n */\nfunction format(style, space = 2) {\n    style = sortKeysBy(style, v8Spec.$root);\n    if (style.layers) {\n        style.layers = style.layers.map((layer) => sortKeysBy(layer, v8Spec.layer));\n    }\n    return stringify(style, { indent: space });\n}\n\nfunction eachLayout(layer, callback) {\n    for (const k in layer) {\n        if (k.indexOf('layout') === 0) {\n            callback(layer[k], k);\n        }\n    }\n}\nfunction eachPaint(layer, callback) {\n    for (const k in layer) {\n        if (k.indexOf('paint') === 0) {\n            callback(layer[k], k);\n        }\n    }\n}\nfunction resolveConstant(style, value) {\n    if (typeof value === 'string' && value[0] === '@') {\n        return resolveConstant(style, style.constants[value]);\n    }\n    else {\n        return value;\n    }\n}\nfunction isFunction(value) {\n    return Array.isArray(value.stops);\n}\nfunction renameProperty(obj, from, to) {\n    obj[to] = obj[from];\n    delete obj[from];\n}\nfunction migrateV8(style) {\n    style.version = 8;\n    // Rename properties, reverse coordinates in source and layers\n    eachSource(style, (source) => {\n        if (source.type === 'video' && source['url'] !== undefined) {\n            renameProperty(source, 'url', 'urls');\n        }\n        if (source.type === 'video') {\n            source.coordinates.forEach((coord) => {\n                return coord.reverse();\n            });\n        }\n    });\n    eachLayer(style, (layer) => {\n        eachLayout(layer, (layout) => {\n            if (layout['symbol-min-distance'] !== undefined) {\n                renameProperty(layout, 'symbol-min-distance', 'symbol-spacing');\n            }\n        });\n        eachPaint(layer, (paint) => {\n            if (paint['background-image'] !== undefined) {\n                renameProperty(paint, 'background-image', 'background-pattern');\n            }\n            if (paint['line-image'] !== undefined) {\n                renameProperty(paint, 'line-image', 'line-pattern');\n            }\n            if (paint['fill-image'] !== undefined) {\n                renameProperty(paint, 'fill-image', 'fill-pattern');\n            }\n        });\n    });\n    // Inline Constants\n    eachProperty(style, { paint: true, layout: true }, (property) => {\n        const value = resolveConstant(style, property.value);\n        if (isFunction(value)) {\n            value.stops.forEach((stop) => {\n                stop[1] = resolveConstant(style, stop[1]);\n            });\n        }\n        property.set(value);\n    });\n    delete style['constants'];\n    eachLayer(style, (layer) => {\n        // get rid of text-max-size, icon-max-size\n        // turn text-size, icon-size into layout properties\n        // https://github.com/mapbox/mapbox-gl-style-spec/issues/255\n        eachLayout(layer, (layout) => {\n            delete layout['text-max-size'];\n            delete layout['icon-max-size'];\n        });\n        eachPaint(layer, (paint) => {\n            if (paint['text-size']) {\n                if (!layer.layout)\n                    layer.layout = {};\n                layer.layout['text-size'] = paint['text-size'];\n                delete paint['text-size'];\n            }\n            if (paint['icon-size']) {\n                if (!layer.layout)\n                    layer.layout = {};\n                layer.layout['icon-size'] = paint['icon-size'];\n                delete paint['icon-size'];\n            }\n        });\n    });\n    function migrateFontStack(font) {\n        function splitAndTrim(string) {\n            return string.split(',').map((s) => {\n                return s.trim();\n            });\n        }\n        if (Array.isArray(font)) {\n            // Assume it's a previously migrated font-array.\n            return font;\n        }\n        else if (typeof font === 'string') {\n            return splitAndTrim(font);\n        }\n        else if (typeof font === 'object') {\n            font.stops.forEach((stop) => {\n                stop[1] = splitAndTrim(stop[1]);\n            });\n            return font;\n        }\n        else {\n            throw new Error('unexpected font value');\n        }\n    }\n    eachLayer(style, (layer) => {\n        eachLayout(layer, (layout) => {\n            if (layout['text-font']) {\n                layout['text-font'] = migrateFontStack(layout['text-font']);\n            }\n        });\n    });\n    // Reverse order of symbol layers. This is an imperfect migration.\n    //\n    // The order of a symbol layer in the layers list affects two things:\n    // - how it is drawn relative to other layers (like oneway arrows below bridges)\n    // - the placement priority compared to other layers\n    //\n    // It's impossible to reverse the placement priority without breaking the draw order\n    // in some cases. This migration only reverses the order of symbol layers that\n    // are above all other types of layers.\n    //\n    // Symbol layers that are at the top of the map preserve their priority.\n    // Symbol layers that are below another type (line, fill) of layer preserve their draw order.\n    let firstSymbolLayer = 0;\n    for (let i = style.layers.length - 1; i >= 0; i--) {\n        const layer = style.layers[i];\n        if (layer.type !== 'symbol') {\n            firstSymbolLayer = i + 1;\n            break;\n        }\n    }\n    const symbolLayers = style.layers.splice(firstSymbolLayer);\n    symbolLayers.reverse();\n    style.layers = style.layers.concat(symbolLayers);\n    return style;\n}\n\n/**\n * Migrate the given style object in place to use expressions. Specifically,\n * this will convert (a) \"stop\" functions, and (b) legacy filters to their\n * expression equivalents.\n * @param style The style object to migrate.\n * @returns The migrated style object.\n */\nfunction expressions(style) {\n    const converted = [];\n    eachLayer(style, (layer) => {\n        if (layer.filter) {\n            layer.filter = convertFilter(layer.filter);\n        }\n    });\n    eachProperty(style, { paint: true, layout: true }, ({ path, value, reference, set }) => {\n        if (isExpression(value))\n            return;\n        if (typeof value === 'object' && !Array.isArray(value)) {\n            set(convertFunction(value, reference));\n            converted.push(path.join('.'));\n        }\n        else if (reference.tokens && typeof value === 'string') {\n            set(convertTokenString(value));\n        }\n    });\n    return style;\n}\n\n/**\n * Migrate color style values to supported format.\n *\n * @param colorToMigrate Color value to migrate, could be a string or an expression.\n * @returns Color style value in supported format.\n */\nfunction migrateColors(colorToMigrate) {\n    return JSON.parse(migrateHslColors(JSON.stringify(colorToMigrate)));\n}\n/**\n * Created to migrate from colors supported by the former CSS color parsing\n * library `csscolorparser` but not compliant with the CSS Color specification,\n * like `hsl(900, 0.15, 90%)`.\n *\n * @param colorToMigrate Serialized color style value.\n * @returns A serialized color style value in which all non-standard hsl color values\n * have been converted to a format that complies with the CSS Color specification.\n *\n * @example\n * migrateHslColors('\"hsl(900, 0.15, 90%)\"'); // returns '\"hsl(900, 15%, 90%)\"'\n * migrateHslColors('\"hsla(900, .15, .9)\"'); // returns '\"hsl(900, 15%, 90%)\"'\n * migrateHslColors('\"hsl(900, 15%, 90%)\"'); // returns '\"hsl(900, 15%, 90%)\"' - no changes\n */\nfunction migrateHslColors(colorToMigrate) {\n    return colorToMigrate.replace(/\"hsla?\\((.+?)\\)\"/gi, (match, hslArgs) => {\n        const argsMatch = hslArgs.match(/^(.+?)\\s*,\\s*(.+?)\\s*,\\s*(.+?)(?:\\s*,\\s*(.+))?$/i);\n        if (argsMatch) {\n            let [h, s, l, a] = argsMatch.slice(1);\n            [s, l] = [s, l].map(v => v.endsWith('%') ? v : `${parseFloat(v) * 100}%`);\n            return `\"hsl${typeof a === 'string' ? 'a' : ''}(${[h, s, l, a].filter(Boolean).join(',')})\"`;\n        }\n        return match;\n    });\n}\n\n/**\n * Migrate a Mapbox/MapLibre GL Style to the latest version.\n *\n * @param style - a MapLibre Style\n * @returns a migrated style\n * @example\n * const fs = require('fs');\n * const migrate = require('@maplibre/maplibre-gl-style-spec').migrate;\n * const style = fs.readFileSync('./style.json', 'utf8');\n * fs.writeFileSync('./style.json', JSON.stringify(migrate(style)));\n */\nfunction migrate(style) {\n    let migrated = false;\n    if (style.version === 7) {\n        style = migrateV8(style);\n        migrated = true;\n    }\n    if (style.version === 8) {\n        migrated = !!expressions(style);\n        migrated = true;\n    }\n    eachProperty(style, { paint: true, layout: true }, ({ value, reference, set }) => {\n        if (reference.type === 'color') {\n            set(migrateColors(value));\n        }\n    });\n    if (!migrated) {\n        throw new Error(`Cannot migrate from ${style.version}`);\n    }\n    return style;\n}\n\nconst v8 = v8Spec;\nconst expression = {\n    StyleExpression,\n    StylePropertyFunction,\n    ZoomConstantExpression,\n    ZoomDependentExpression,\n    createExpression,\n    createPropertyExpression,\n    isExpression,\n    isExpressionFilter,\n    isZoomExpression,\n    normalizePropertyExpression,\n};\nconst styleFunction = {\n    convertFunction,\n    createFunction,\n    isFunction: isFunction$1\n};\nconst visit = { eachLayer, eachProperty, eachSource };\n\nexport { Color, ColorArray, ColorType, CompoundExpression, EvaluationContext, FormatExpression, Formatted, FormattedSection, FormattedType, Interpolate, Literal, NullType, NumberArray, Padding, ParsingError, ProjectionDefinition, ProjectionDefinitionType, ResolvedImage, Step, StyleExpression, StylePropertyFunction, ValidationError, VariableAnchorOffsetCollection, ZoomConstantExpression, ZoomDependentExpression, classifyRings, convertFilter, convertFunction, createExpression, createFunction, createPropertyExpression, derefLayers, diff, emptyStyle, expression, expressions$1 as expressions, featureFilter, format, styleFunction as function, groupByLayout, interpolateFactory as interpolates, isExpression, isFunction$1 as isFunction, isZoomExpression, v8Spec as latest, migrate, normalizePropertyExpression, supportsPropertyExpression, typeToString as toString, typeOf, v8, validate, validateStyleMin, visit };\n//# sourceMappingURL=index.mjs.map\n","var fontWeights = {\n  thin: 100,\n  hairline: 100,\n  'ultra-light': 200,\n  'extra-light': 200,\n  light: 300,\n  book: 300,\n  regular: 400,\n  normal: 400,\n  plain: 400,\n  roman: 400,\n  standard: 400,\n  medium: 500,\n  'semi-bold': 600,\n  'demi-bold': 600,\n  bold: 700,\n  'extra-bold': 800,\n  'ultra-bold': 800,\n  heavy: 900,\n  black: 900,\n  'heavy-black': 900,\n  fat: 900,\n  poster: 900,\n  'ultra-black': 950,\n  'extra-black': 950\n};\nvar sp = ' ';\nvar italicRE = /(italic|oblique)$/i;\n\nvar fontCache = {};\n\n/**\n * @param {string|Array<string>} fonts Mapbox GL Style fontstack or single font, e.g. `['Open Sans Regular', 'Arial Unicode MS Regular']` or `'Open Sans Regular'`.\n * @param {number} size Font size in pixels.\n * @param {string|number} [lineHeight] Line height as css line-height.\n * @returns {string} CSS font definition, e.g. `'normal 400 16px/1.2 \"Open Sans\"'`.\n */\nexport default function(fonts, size, lineHeight) {\n  var cssData = fontCache[fonts];\n  if (!cssData) {\n    if (!Array.isArray(fonts)) {\n      fonts = [fonts];\n    }\n    var weight = 400;\n    var style = 'normal';\n    var fontFamilies = [];\n    var haveWeight, haveStyle;\n    for (var i = 0, ii = fonts.length; i < ii; ++i) {\n      var font = fonts[i];\n      var parts = font.split(' ');\n      var maybeWeight = parts[parts.length - 1].toLowerCase();\n      if (maybeWeight == 'normal' || maybeWeight == 'italic' || maybeWeight == 'oblique') {\n        style = haveStyle ? style : maybeWeight;\n        haveStyle = true;\n        parts.pop();\n        maybeWeight = parts[parts.length - 1].toLowerCase();\n      } else if (italicRE.test(maybeWeight)) {\n        maybeWeight = maybeWeight.replace(italicRE, '');\n        style = haveStyle ? style : parts[parts.length - 1].replace(maybeWeight, '');\n        haveStyle = true;\n      }\n      for (var w in fontWeights) {\n        var previousPart = parts.length > 1 ? parts[parts.length - 2].toLowerCase() : '';\n        if (maybeWeight == w || maybeWeight == w.replace('-', '') || previousPart + '-' + maybeWeight == w) {\n          weight = haveWeight ? weight : fontWeights[w];\n          parts.pop();\n          if (previousPart && w.startsWith(previousPart)) {\n            parts.pop();\n          }\n          break;\n        }\n      }\n      if (!haveWeight && typeof maybeWeight == 'number') {\n        weight = maybeWeight;\n        haveWeight = true;\n      }\n      var fontFamily = parts.join(sp)\n        .replace('Klokantech Noto Sans', 'Noto Sans')\n        .replace('DIN Pro', 'Barlow')\n        .replace('Arial Unicode MS', 'Arial');\n      if (fontFamily.indexOf(sp) !== -1) {\n        fontFamily = '\"' + fontFamily + '\"';\n      }\n      fontFamilies.push(fontFamily);\n    }\n    // CSS font property: font-style font-weight font-size/line-height font-family\n    cssData = fontCache[fonts] = [style, weight, fontFamilies];\n  }\n  return cssData[0] + sp + cssData[1] + sp + size + 'px' + (lineHeight ? '/' + lineHeight : '') + sp + cssData[2];\n}\n","/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/Map~Map} for which events trigger a map event.\n */\nclass MapEvent extends Event {\n  /**\n   * @param {string} type Event type.\n   * @param {import(\"./Map.js\").default} map Map.\n   * @param {?import(\"./Map.js\").FrameState} [frameState] Frame state.\n   */\n  constructor(type, map, frameState) {\n    super(type);\n\n    /**\n     * The map where the event occurred.\n     * @type {import(\"./Map.js\").default}\n     * @api\n     */\n    this.map = map;\n\n    /**\n     * The frame state at the time of the event.\n     * @type {?import(\"./Map.js\").FrameState}\n     * @api\n     */\n    this.frameState = frameState !== undefined ? frameState : null;\n  }\n}\n\nexport default MapEvent;\n","/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/Map~Map} for which events trigger a map browser event.\n * @template {PointerEvent|KeyboardEvent|WheelEvent} [EVENT=PointerEvent|KeyboardEvent|WheelEvent]\n */\nclass MapBrowserEvent extends MapEvent {\n  /**\n   * @param {string} type Event type.\n   * @param {import(\"./Map.js\").default} map Map.\n   * @param {EVENT} originalEvent Original event.\n   * @param {boolean} [dragging] Is the map currently being dragged?\n   * @param {import(\"./Map.js\").FrameState} [frameState] Frame state.\n   * @param {Array<PointerEvent>} [activePointers] Active pointers.\n   */\n  constructor(type, map, originalEvent, dragging, frameState, activePointers) {\n    super(type, map, frameState);\n\n    /**\n     * The original browser event.\n     * @const\n     * @type {EVENT}\n     * @api\n     */\n    this.originalEvent = originalEvent;\n\n    /**\n     * The map pixel relative to the viewport corresponding to the original browser event.\n     * @type {?import(\"./pixel.js\").Pixel}\n     * @private\n     */\n    this.pixel_ = null;\n\n    /**\n     * The coordinate in the user projection corresponding to the original browser event.\n     * @type {?import(\"./coordinate.js\").Coordinate}\n     * @private\n     */\n    this.coordinate_ = null;\n\n    /**\n     * Indicates if the map is currently being dragged. Only set for\n     * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n     *\n     * @type {boolean}\n     * @api\n     */\n    this.dragging = dragging !== undefined ? dragging : false;\n\n    /**\n     * @type {Array<PointerEvent>|undefined}\n     */\n    this.activePointers = activePointers;\n  }\n\n  /**\n   * The map pixel relative to the viewport corresponding to the original event.\n   * @type {import(\"./pixel.js\").Pixel}\n   * @api\n   */\n  get pixel() {\n    if (!this.pixel_) {\n      this.pixel_ = this.map.getEventPixel(this.originalEvent);\n    }\n    return this.pixel_;\n  }\n  set pixel(pixel) {\n    this.pixel_ = pixel;\n  }\n\n  /**\n   * The coordinate corresponding to the original browser event.  This will be in the user\n   * projection if one is set.  Otherwise it will be in the view projection.\n   * @type {import(\"./coordinate.js\").Coordinate}\n   * @api\n   */\n  get coordinate() {\n    if (!this.coordinate_) {\n      this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n    }\n    return this.coordinate_;\n  }\n  set coordinate(coordinate) {\n    this.coordinate_ = coordinate;\n  }\n\n  /**\n   * Prevents the default browser action.\n   * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n   * @api\n   * @override\n   */\n  preventDefault() {\n    super.preventDefault();\n    if ('preventDefault' in this.originalEvent) {\n      /** @type {UIEvent} */ (this.originalEvent).preventDefault();\n    }\n  }\n\n  /**\n   * Prevents further propagation of the current event.\n   * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n   * @api\n   * @override\n   */\n  stopPropagation() {\n    super.stopPropagation();\n    if ('stopPropagation' in this.originalEvent) {\n      /** @type {UIEvent} */ (this.originalEvent).stopPropagation();\n    }\n  }\n}\n\nexport default MapBrowserEvent;\n","/**\n * @module ol/pointer/EventType\n */\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n  POINTERMOVE: 'pointermove',\n  POINTERDOWN: 'pointerdown',\n  POINTERUP: 'pointerup',\n  POINTEROVER: 'pointerover',\n  POINTEROUT: 'pointerout',\n  POINTERENTER: 'pointerenter',\n  POINTERLEAVE: 'pointerleave',\n  POINTERCANCEL: 'pointercancel',\n};\n","/**\n * @module ol/MapBrowserEventHandler\n */\n\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport EventType from './events/EventType.js';\nimport Target from './events/Target.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {PASSIVE_EVENT_LISTENERS} from './has.js';\nimport PointerEventType from './pointer/EventType.js';\n\nclass MapBrowserEventHandler extends Target {\n  /**\n   * @param {import(\"./Map.js\").default} map The map with the viewport to listen to events on.\n   * @param {number} [moveTolerance] The minimal distance the pointer must travel to trigger a move.\n   */\n  constructor(map, moveTolerance) {\n    super(map);\n\n    /**\n     * This is the element that we will listen to the real events on.\n     * @type {import(\"./Map.js\").default}\n     * @private\n     */\n    this.map_ = map;\n\n    /**\n     * @type {ReturnType<typeof setTimeout>}\n     * @private\n     */\n    this.clickTimeoutId_;\n\n    /**\n     * Emulate dblclick and singleclick. Will be true when only one pointer is active.\n     * @type {boolean}\n     */\n    this.emulateClicks_ = false;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.dragging_ = false;\n\n    /**\n     * @type {!Array<import(\"./events.js\").EventsKey>}\n     * @private\n     */\n    this.dragListenerKeys_ = [];\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.moveTolerance_ = moveTolerance === undefined ? 1 : moveTolerance;\n\n    /**\n     * The most recent \"down\" type event (or null if none have occurred).\n     * Set on pointerdown.\n     * @type {PointerEvent|null}\n     * @private\n     */\n    this.down_ = null;\n\n    const element = this.map_.getViewport();\n\n    /**\n     * @type {Array<PointerEvent>}\n     * @private\n     */\n    this.activePointers_ = [];\n\n    /**\n     * @type {!Object<number, Event>}\n     * @private\n     */\n    this.trackedTouches_ = {};\n\n    /**\n     * @private\n     */\n    this.element_ = element;\n\n    /**\n     * @type {?import(\"./events.js\").EventsKey}\n     * @private\n     */\n    this.pointerdownListenerKey_ = listen(\n      element,\n      PointerEventType.POINTERDOWN,\n      this.handlePointerDown_,\n      this,\n    );\n\n    /**\n     * @type {PointerEvent}\n     * @private\n     */\n    this.originalPointerMoveEvent_;\n\n    /**\n     * @type {?import(\"./events.js\").EventsKey}\n     * @private\n     */\n    this.relayedListenerKey_ = listen(\n      element,\n      PointerEventType.POINTERMOVE,\n      this.relayMoveEvent_,\n      this,\n    );\n\n    /**\n     * @private\n     */\n    this.boundHandleTouchMove_ = this.handleTouchMove_.bind(this);\n\n    this.element_.addEventListener(\n      EventType.TOUCHMOVE,\n      this.boundHandleTouchMove_,\n      PASSIVE_EVENT_LISTENERS ? {passive: false} : false,\n    );\n  }\n\n  /**\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @private\n   */\n  emulateClick_(pointerEvent) {\n    let newEvent = new MapBrowserEvent(\n      MapBrowserEventType.CLICK,\n      this.map_,\n      pointerEvent,\n    );\n    this.dispatchEvent(newEvent);\n    if (this.clickTimeoutId_ !== undefined) {\n      // double-click\n      clearTimeout(this.clickTimeoutId_);\n      this.clickTimeoutId_ = undefined;\n      newEvent = new MapBrowserEvent(\n        MapBrowserEventType.DBLCLICK,\n        this.map_,\n        pointerEvent,\n      );\n      this.dispatchEvent(newEvent);\n    } else {\n      // click\n      this.clickTimeoutId_ = setTimeout(() => {\n        this.clickTimeoutId_ = undefined;\n        const newEvent = new MapBrowserEvent(\n          MapBrowserEventType.SINGLECLICK,\n          this.map_,\n          pointerEvent,\n        );\n        this.dispatchEvent(newEvent);\n      }, 250);\n    }\n  }\n\n  /**\n   * Keeps track on how many pointers are currently active.\n   *\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @private\n   */\n  updateActivePointers_(pointerEvent) {\n    const event = pointerEvent;\n    const id = event.pointerId;\n\n    if (\n      event.type == MapBrowserEventType.POINTERUP ||\n      event.type == MapBrowserEventType.POINTERCANCEL\n    ) {\n      delete this.trackedTouches_[id];\n      for (const pointerId in this.trackedTouches_) {\n        if (this.trackedTouches_[pointerId].target !== event.target) {\n          // Some platforms assign a new pointerId when the target changes.\n          // If this happens, delete one tracked pointer. If there is more\n          // than one tracked pointer for the old target, it will be cleared\n          // by subsequent POINTERUP events from other pointers.\n          delete this.trackedTouches_[pointerId];\n          break;\n        }\n      }\n    } else if (\n      event.type == MapBrowserEventType.POINTERDOWN ||\n      event.type == MapBrowserEventType.POINTERMOVE\n    ) {\n      this.trackedTouches_[id] = event;\n    }\n    this.activePointers_ = Object.values(this.trackedTouches_);\n  }\n\n  /**\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @private\n   */\n  handlePointerUp_(pointerEvent) {\n    this.updateActivePointers_(pointerEvent);\n    const newEvent = new MapBrowserEvent(\n      MapBrowserEventType.POINTERUP,\n      this.map_,\n      pointerEvent,\n      undefined,\n      undefined,\n      this.activePointers_,\n    );\n    this.dispatchEvent(newEvent);\n\n    // We emulate click events on left mouse button click, touch contact, and pen\n    // contact. isMouseActionButton returns true in these cases (evt.button is set\n    // to 0).\n    // See http://www.w3.org/TR/pointerevents/#button-states\n    // We only fire click, singleclick, and doubleclick if nobody has called\n    // event.preventDefault().\n    if (\n      this.emulateClicks_ &&\n      !newEvent.defaultPrevented &&\n      !this.dragging_ &&\n      this.isMouseActionButton_(pointerEvent)\n    ) {\n      this.emulateClick_(this.down_);\n    }\n\n    if (this.activePointers_.length === 0) {\n      this.dragListenerKeys_.forEach(unlistenByKey);\n      this.dragListenerKeys_.length = 0;\n      this.dragging_ = false;\n      this.down_ = null;\n    }\n  }\n\n  /**\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @return {boolean} If the left mouse button was pressed.\n   * @private\n   */\n  isMouseActionButton_(pointerEvent) {\n    return pointerEvent.button === 0;\n  }\n\n  /**\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @private\n   */\n  handlePointerDown_(pointerEvent) {\n    this.emulateClicks_ = this.activePointers_.length === 0;\n    this.updateActivePointers_(pointerEvent);\n    const newEvent = new MapBrowserEvent(\n      MapBrowserEventType.POINTERDOWN,\n      this.map_,\n      pointerEvent,\n      undefined,\n      undefined,\n      this.activePointers_,\n    );\n    this.dispatchEvent(newEvent);\n\n    this.down_ = new PointerEvent(pointerEvent.type, pointerEvent);\n    Object.defineProperty(this.down_, 'target', {\n      writable: false,\n      value: pointerEvent.target,\n    });\n\n    if (this.dragListenerKeys_.length === 0) {\n      const doc = this.map_.getOwnerDocument();\n      this.dragListenerKeys_.push(\n        listen(\n          doc,\n          MapBrowserEventType.POINTERMOVE,\n          this.handlePointerMove_,\n          this,\n        ),\n        listen(doc, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this),\n        /* Note that the listener for `pointercancel is set up on\n         * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n         * the `pointerup` and `pointermove` listeners.\n         *\n         * The reason for this is the following: `TouchSource.vacuumTouches_()`\n         * issues `pointercancel` events, when there was no `touchend` for a\n         * `touchstart`. Now, let's say a first `touchstart` is registered on\n         * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n         * But `documentPointerEventHandler_` doesn't know about the first\n         * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n         * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n         * only registered there.\n         */\n        listen(\n          this.element_,\n          MapBrowserEventType.POINTERCANCEL,\n          this.handlePointerUp_,\n          this,\n        ),\n      );\n      if (this.element_.getRootNode && this.element_.getRootNode() !== doc) {\n        this.dragListenerKeys_.push(\n          listen(\n            this.element_.getRootNode(),\n            MapBrowserEventType.POINTERUP,\n            this.handlePointerUp_,\n            this,\n          ),\n        );\n      }\n    }\n  }\n\n  /**\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @private\n   */\n  handlePointerMove_(pointerEvent) {\n    // Between pointerdown and pointerup, pointermove events are triggered.\n    // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n    // moved a significant distance.\n    if (this.isMoving_(pointerEvent)) {\n      this.updateActivePointers_(pointerEvent);\n      this.dragging_ = true;\n      const newEvent = new MapBrowserEvent(\n        MapBrowserEventType.POINTERDRAG,\n        this.map_,\n        pointerEvent,\n        this.dragging_,\n        undefined,\n        this.activePointers_,\n      );\n      this.dispatchEvent(newEvent);\n    }\n  }\n\n  /**\n   * Wrap and relay a pointermove event.\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @private\n   */\n  relayMoveEvent_(pointerEvent) {\n    this.originalPointerMoveEvent_ = pointerEvent;\n    const dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n    this.dispatchEvent(\n      new MapBrowserEvent(\n        MapBrowserEventType.POINTERMOVE,\n        this.map_,\n        pointerEvent,\n        dragging,\n      ),\n    );\n  }\n\n  /**\n   * Flexible handling of a `touch-action: none` css equivalent: because calling\n   * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n   * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n   * when an interaction (currently `DragPan` handles the event.\n   * @param {TouchEvent} event Event.\n   * @private\n   */\n  handleTouchMove_(event) {\n    // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n    // may not be initialized yet when we get here on a platform without native pointer events,\n    // when elm-pep is used as pointer events polyfill.\n    const originalEvent = this.originalPointerMoveEvent_;\n    if (\n      (!originalEvent || originalEvent.defaultPrevented) &&\n      (typeof event.cancelable !== 'boolean' || event.cancelable === true)\n    ) {\n      event.preventDefault();\n    }\n  }\n\n  /**\n   * @param {PointerEvent} pointerEvent Pointer\n   * event.\n   * @return {boolean} Is moving.\n   * @private\n   */\n  isMoving_(pointerEvent) {\n    return (\n      this.dragging_ ||\n      Math.abs(pointerEvent.clientX - this.down_.clientX) >\n        this.moveTolerance_ ||\n      Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_\n    );\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    if (this.relayedListenerKey_) {\n      unlistenByKey(this.relayedListenerKey_);\n      this.relayedListenerKey_ = null;\n    }\n    this.element_.removeEventListener(\n      EventType.TOUCHMOVE,\n      this.boundHandleTouchMove_,\n    );\n\n    if (this.pointerdownListenerKey_) {\n      unlistenByKey(this.pointerdownListenerKey_);\n      this.pointerdownListenerKey_ = null;\n    }\n\n    this.dragListenerKeys_.forEach(unlistenByKey);\n    this.dragListenerKeys_.length = 0;\n\n    this.element_ = null;\n    super.disposeInternal();\n  }\n}\n\nexport default MapBrowserEventHandler;\n","/**\n * @module ol/MapEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  /**\n   * Triggered after a map frame is rendered.\n   * @event module:ol/MapEvent~MapEvent#postrender\n   * @api\n   */\n  POSTRENDER: 'postrender',\n\n  /**\n   * Triggered when the map starts moving.\n   * @event module:ol/MapEvent~MapEvent#movestart\n   * @api\n   */\n  MOVESTART: 'movestart',\n\n  /**\n   * Triggered after the map is moved.\n   * @event module:ol/MapEvent~MapEvent#moveend\n   * @api\n   */\n  MOVEEND: 'moveend',\n\n  /**\n   * Triggered when loading of additional map data (tiles, images, features) starts.\n   * @event module:ol/MapEvent~MapEvent#loadstart\n   * @api\n   */\n  LOADSTART: 'loadstart',\n\n  /**\n   * Triggered when loading of additional map data has completed.\n   * @event module:ol/MapEvent~MapEvent#loadend\n   * @api\n   */\n  LOADEND: 'loadend',\n};\n\n/***\n * @typedef {'postrender'|'movestart'|'moveend'|'loadstart'|'loadend'} Types\n */\n","/**\n * @module ol/MapProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  LAYERGROUP: 'layergroup',\n  SIZE: 'size',\n  TARGET: 'target',\n  VIEW: 'view',\n};\n","/**\n * @module ol/TileState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n  IDLE: 0,\n  LOADING: 1,\n  LOADED: 2,\n  /**\n   * Indicates that tile loading failed\n   * @type {number}\n   */\n  ERROR: 3,\n  EMPTY: 4,\n};\n","/**\n * @module ol/structs/PriorityQueue\n */\nimport {assert} from '../asserts.js';\nimport {clear} from '../obj.js';\n\n/**\n * @type {number}\n */\nexport const DROP = Infinity;\n\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See https://github.com/google/closure-library/blob/master/closure/goog/structs/heap.js\n * and https://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nclass PriorityQueue {\n  /**\n   * @param {function(T): number} priorityFunction Priority function.\n   * @param {function(T): string} keyFunction Key function.\n   */\n  constructor(priorityFunction, keyFunction) {\n    /**\n     * @type {function(T): number}\n     * @private\n     */\n    this.priorityFunction_ = priorityFunction;\n\n    /**\n     * @type {function(T): string}\n     * @private\n     */\n    this.keyFunction_ = keyFunction;\n\n    /**\n     * @type {Array<T>}\n     * @private\n     */\n    this.elements_ = [];\n\n    /**\n     * @type {Array<number>}\n     * @private\n     */\n    this.priorities_ = [];\n\n    /**\n     * @type {!Object<string, boolean>}\n     * @private\n     */\n    this.queuedElements_ = {};\n  }\n\n  /**\n   * FIXME empty description for jsdoc\n   */\n  clear() {\n    this.elements_.length = 0;\n    this.priorities_.length = 0;\n    clear(this.queuedElements_);\n  }\n\n  /**\n   * Remove and return the highest-priority element. O(log N).\n   * @return {T} Element.\n   */\n  dequeue() {\n    const elements = this.elements_;\n    const priorities = this.priorities_;\n    const element = elements[0];\n    if (elements.length == 1) {\n      elements.length = 0;\n      priorities.length = 0;\n    } else {\n      elements[0] = /** @type {T} */ (elements.pop());\n      priorities[0] = /** @type {number} */ (priorities.pop());\n      this.siftUp_(0);\n    }\n    const elementKey = this.keyFunction_(element);\n    delete this.queuedElements_[elementKey];\n    return element;\n  }\n\n  /**\n   * Enqueue an element. O(log N).\n   * @param {T} element Element.\n   * @return {boolean} The element was added to the queue.\n   */\n  enqueue(element) {\n    assert(\n      !(this.keyFunction_(element) in this.queuedElements_),\n      'Tried to enqueue an `element` that was already added to the queue',\n    );\n    const priority = this.priorityFunction_(element);\n    if (priority != DROP) {\n      this.elements_.push(element);\n      this.priorities_.push(priority);\n      this.queuedElements_[this.keyFunction_(element)] = true;\n      this.siftDown_(0, this.elements_.length - 1);\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * @return {number} Count.\n   */\n  getCount() {\n    return this.elements_.length;\n  }\n\n  /**\n   * Gets the index of the left child of the node at the given index.\n   * @param {number} index The index of the node to get the left child for.\n   * @return {number} The index of the left child.\n   * @private\n   */\n  getLeftChildIndex_(index) {\n    return index * 2 + 1;\n  }\n\n  /**\n   * Gets the index of the right child of the node at the given index.\n   * @param {number} index The index of the node to get the right child for.\n   * @return {number} The index of the right child.\n   * @private\n   */\n  getRightChildIndex_(index) {\n    return index * 2 + 2;\n  }\n\n  /**\n   * Gets the index of the parent of the node at the given index.\n   * @param {number} index The index of the node to get the parent for.\n   * @return {number} The index of the parent.\n   * @private\n   */\n  getParentIndex_(index) {\n    return (index - 1) >> 1;\n  }\n\n  /**\n   * Make this a heap. O(N).\n   * @private\n   */\n  heapify_() {\n    let i;\n    for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n      this.siftUp_(i);\n    }\n  }\n\n  /**\n   * @return {boolean} Is empty.\n   */\n  isEmpty() {\n    return this.elements_.length === 0;\n  }\n\n  /**\n   * @param {string} key Key.\n   * @return {boolean} Is key queued.\n   */\n  isKeyQueued(key) {\n    return key in this.queuedElements_;\n  }\n\n  /**\n   * @param {T} element Element.\n   * @return {boolean} Is queued.\n   */\n  isQueued(element) {\n    return this.isKeyQueued(this.keyFunction_(element));\n  }\n\n  /**\n   * @param {number} index The index of the node to move down.\n   * @private\n   */\n  siftUp_(index) {\n    const elements = this.elements_;\n    const priorities = this.priorities_;\n    const count = elements.length;\n    const element = elements[index];\n    const priority = priorities[index];\n    const startIndex = index;\n\n    while (index < count >> 1) {\n      const lIndex = this.getLeftChildIndex_(index);\n      const rIndex = this.getRightChildIndex_(index);\n\n      const smallerChildIndex =\n        rIndex < count && priorities[rIndex] < priorities[lIndex]\n          ? rIndex\n          : lIndex;\n\n      elements[index] = elements[smallerChildIndex];\n      priorities[index] = priorities[smallerChildIndex];\n      index = smallerChildIndex;\n    }\n\n    elements[index] = element;\n    priorities[index] = priority;\n    this.siftDown_(startIndex, index);\n  }\n\n  /**\n   * @param {number} startIndex The index of the root.\n   * @param {number} index The index of the node to move up.\n   * @private\n   */\n  siftDown_(startIndex, index) {\n    const elements = this.elements_;\n    const priorities = this.priorities_;\n    const element = elements[index];\n    const priority = priorities[index];\n\n    while (index > startIndex) {\n      const parentIndex = this.getParentIndex_(index);\n      if (priorities[parentIndex] > priority) {\n        elements[index] = elements[parentIndex];\n        priorities[index] = priorities[parentIndex];\n        index = parentIndex;\n      } else {\n        break;\n      }\n    }\n    elements[index] = element;\n    priorities[index] = priority;\n  }\n\n  /**\n   * FIXME empty description for jsdoc\n   */\n  reprioritize() {\n    const priorityFunction = this.priorityFunction_;\n    const elements = this.elements_;\n    const priorities = this.priorities_;\n    let index = 0;\n    const n = elements.length;\n    let element, i, priority;\n    for (i = 0; i < n; ++i) {\n      element = elements[i];\n      priority = priorityFunction(element);\n      if (priority == DROP) {\n        delete this.queuedElements_[this.keyFunction_(element)];\n      } else {\n        priorities[index] = priority;\n        elements[index++] = element;\n      }\n    }\n    elements.length = index;\n    priorities.length = index;\n    this.heapify_();\n  }\n}\n\nexport default PriorityQueue;\n","/**\n * @module ol/TileQueue\n */\nimport TileState from './TileState.js';\nimport EventType from './events/EventType.js';\nimport PriorityQueue, {DROP} from './structs/PriorityQueue.js';\n\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import('./tilecoord.js').TileCoord, number): number} PriorityFunction\n */\n\n/**\n * @typedef {[import('./Tile.js').default, string, import('./tilecoord.js').TileCoord, number]} TileQueueElement\n */\n\n/**\n * @extends PriorityQueue<TileQueueElement>}\n */\nclass TileQueue extends PriorityQueue {\n  /**\n   * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n   * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n   */\n  constructor(tilePriorityFunction, tileChangeCallback) {\n    super(\n      (element) => tilePriorityFunction.apply(null, element),\n      (element) => element[0].getKey(),\n    );\n\n    /** @private */\n    this.boundHandleTileChange_ = this.handleTileChange.bind(this);\n\n    /**\n     * @private\n     * @type {function(): ?}\n     */\n    this.tileChangeCallback_ = tileChangeCallback;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.tilesLoading_ = 0;\n\n    /**\n     * @private\n     * @type {!Object<string,boolean>}\n     */\n    this.tilesLoadingKeys_ = {};\n  }\n\n  /**\n   * @param {TileQueueElement} element Element.\n   * @return {boolean} The element was added to the queue.\n   * @override\n   */\n  enqueue(element) {\n    const added = super.enqueue(element);\n    if (added) {\n      const tile = element[0];\n      tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n    }\n    return added;\n  }\n\n  /**\n   * @return {number} Number of tiles loading.\n   */\n  getTilesLoading() {\n    return this.tilesLoading_;\n  }\n\n  /**\n   * @param {import(\"./events/Event.js\").default} event Event.\n   * @protected\n   */\n  handleTileChange(event) {\n    const tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n    const state = tile.getState();\n    if (\n      state === TileState.LOADED ||\n      state === TileState.ERROR ||\n      state === TileState.EMPTY\n    ) {\n      if (state !== TileState.ERROR) {\n        tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n      }\n      const tileKey = tile.getKey();\n      if (tileKey in this.tilesLoadingKeys_) {\n        delete this.tilesLoadingKeys_[tileKey];\n        --this.tilesLoading_;\n      }\n      this.tileChangeCallback_();\n    }\n  }\n\n  /**\n   * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n   * @param {number} maxNewLoads Maximum number of new tiles to load.\n   */\n  loadMoreTiles(maxTotalLoading, maxNewLoads) {\n    let newLoads = 0;\n    while (\n      this.tilesLoading_ < maxTotalLoading &&\n      newLoads < maxNewLoads &&\n      this.getCount() > 0\n    ) {\n      const tile = this.dequeue()[0];\n      const tileKey = tile.getKey();\n      const state = tile.getState();\n      if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n        this.tilesLoadingKeys_[tileKey] = true;\n        ++this.tilesLoading_;\n        ++newLoads;\n        tile.load();\n      }\n    }\n  }\n}\n\nexport default TileQueue;\n\n/**\n * @param {import('./Map.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(\n  frameState,\n  tile,\n  tileSourceKey,\n  tileCenter,\n  tileResolution,\n) {\n  // Filter out tiles at higher zoom levels than the current zoom level, or that\n  // are outside the visible extent.\n  if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n    return DROP;\n  }\n  if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n    return DROP;\n  }\n  // Prioritize the highest zoom level tiles closest to the focus.\n  // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n  // Within a zoom level, tiles are prioritized by the distance in pixels between\n  // the center of the tile and the center of the viewport.  The factor of 65536\n  // means that the prioritization should behave as desired for tiles up to\n  // 65536 * Math.log(2) = 45426 pixels from the focus.\n  const center = frameState.viewState.center;\n  const deltaX = tileCenter[0] - center[0];\n  const deltaY = tileCenter[1] - center[1];\n  return (\n    65536 * Math.log(tileResolution) +\n    Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution\n  );\n}\n","/**\n * @module ol/control/Control\n */\nimport MapEventType from '../MapEventType.js';\nimport BaseObject from '../Object.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {VOID} from '../functions.js';\n\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * const myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nclass Control extends BaseObject {\n  /**\n   * @param {Options} options Control options.\n   */\n  constructor(options) {\n    super();\n\n    const element = options.element;\n    if (element && !options.target && !element.style.pointerEvents) {\n      element.style.pointerEvents = 'auto';\n    }\n\n    /**\n     * @protected\n     * @type {HTMLElement}\n     */\n    this.element = element ? element : null;\n\n    /**\n     * @private\n     * @type {HTMLElement}\n     */\n    this.target_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../Map.js\").default|null}\n     */\n    this.map_ = null;\n\n    /**\n     * @protected\n     * @type {!Array<import(\"../events.js\").EventsKey>}\n     */\n    this.listenerKeys = [];\n\n    if (options.render) {\n      this.render = options.render;\n    }\n\n    if (options.target) {\n      this.setTarget(options.target);\n    }\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.element?.remove();\n    super.disposeInternal();\n  }\n\n  /**\n   * Get the map associated with this control.\n   * @return {import(\"../Map.js\").default|null} Map.\n   * @api\n   */\n  getMap() {\n    return this.map_;\n  }\n\n  /**\n   * Remove the control from its current map and attach it to the new map.\n   * Pass `null` to just remove the control from the current map.\n   * Subclasses may set up event handlers to get notified about changes to\n   * the map here.\n   * @param {import(\"../Map.js\").default|null} map Map.\n   * @api\n   */\n  setMap(map) {\n    if (this.map_) {\n      this.element?.remove();\n    }\n    for (let i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n      unlistenByKey(this.listenerKeys[i]);\n    }\n    this.listenerKeys.length = 0;\n    this.map_ = map;\n    if (map) {\n      const target = this.target_ ?? map.getOverlayContainerStopEvent();\n      if (this.element) {\n        target.appendChild(this.element);\n      }\n      if (this.render !== VOID) {\n        this.listenerKeys.push(\n          listen(map, MapEventType.POSTRENDER, this.render, this),\n        );\n      }\n      map.render();\n    }\n  }\n\n  /**\n   * Renders the control.\n   * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n   * @api\n   */\n  render(mapEvent) {}\n\n  /**\n   * This function is used to set a target element for the control. It has no\n   * effect if it is called after the control has been added to the map (i.e.\n   * after `setMap` is called on the control). If no `target` is set in the\n   * options passed to the control constructor and if `setTarget` is not called\n   * then the control is added to the map's overlay container.\n   * @param {HTMLElement|string} target Target.\n   * @api\n   */\n  setTarget(target) {\n    this.target_ =\n      typeof target === 'string' ? document.getElementById(target) : target;\n  }\n}\n\nexport default Control;\n","/**\n * @module ol/control/Attribution\n */\nimport {equals} from '../array.js';\nimport {CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {removeChildren, replaceNode} from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport {toPromise} from '../functions.js';\nimport Control from './Control.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string|HTMLElement} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [expandClassName=className + '-expand'] CSS class name for the\n * collapsed attributions button.\n * @property {string|HTMLElement} [collapseLabel='›'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [collapseClassName=className + '-collapse'] CSS class name for the\n * expanded attributions button.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {string|Array<string>|undefined} [attributions] Optional attribution(s) that will always be\n * displayed regardless of the layers rendered.\n * **Caution:** Attributions are rendered dynamically using `innerHTML`, which can lead to potential\n * [**XSS (Cross-Site Scripting)**](https://en.wikipedia.org/wiki/Cross-site_scripting) vulnerabilities.\n * Use this feature only for trusted content\n * or ensure that the content is properly sanitized before inserting it.\n */\n\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nclass Attribution extends Control {\n  /**\n   * @param {Options} [options] Attribution options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super({\n      element: document.createElement('div'),\n      render: options.render,\n      target: options.target,\n    });\n\n    /**\n     * @private\n     * @type {HTMLElement}\n     */\n    this.ulElement_ = document.createElement('ul');\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.collapsed_ =\n      options.collapsed !== undefined ? options.collapsed : true;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.userCollapsed_ = this.collapsed_;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.overrideCollapsible_ = options.collapsible !== undefined;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.collapsible_ =\n      options.collapsible !== undefined ? options.collapsible : true;\n\n    if (!this.collapsible_) {\n      this.collapsed_ = false;\n    }\n\n    /**\n     * @private\n     * @type {string | Array<string> | undefined}\n     */\n    this.attributions_ = options.attributions;\n\n    const className =\n      options.className !== undefined ? options.className : 'ol-attribution';\n\n    const tipLabel =\n      options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n\n    const expandClassName =\n      options.expandClassName !== undefined\n        ? options.expandClassName\n        : className + '-expand';\n\n    const collapseLabel =\n      options.collapseLabel !== undefined ? options.collapseLabel : '\\u203A';\n\n    const collapseClassName =\n      options.collapseClassName !== undefined\n        ? options.collapseClassName\n        : className + '-collapse';\n\n    if (typeof collapseLabel === 'string') {\n      /**\n       * @private\n       * @type {HTMLElement}\n       */\n      this.collapseLabel_ = document.createElement('span');\n      this.collapseLabel_.textContent = collapseLabel;\n      this.collapseLabel_.className = collapseClassName;\n    } else {\n      this.collapseLabel_ = collapseLabel;\n    }\n\n    const label = options.label !== undefined ? options.label : 'i';\n\n    if (typeof label === 'string') {\n      /**\n       * @private\n       * @type {HTMLElement}\n       */\n      this.label_ = document.createElement('span');\n      this.label_.textContent = label;\n      this.label_.className = expandClassName;\n    } else {\n      this.label_ = label;\n    }\n\n    const activeLabel =\n      this.collapsible_ && !this.collapsed_ ? this.collapseLabel_ : this.label_;\n\n    /**\n     * @private\n     * @type {HTMLElement}\n     */\n    this.toggleButton_ = document.createElement('button');\n    this.toggleButton_.setAttribute('type', 'button');\n    this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n    this.toggleButton_.title = tipLabel;\n    this.toggleButton_.appendChild(activeLabel);\n\n    this.toggleButton_.addEventListener(\n      EventType.CLICK,\n      this.handleClick_.bind(this),\n      false,\n    );\n\n    const cssClasses =\n      className +\n      ' ' +\n      CLASS_UNSELECTABLE +\n      ' ' +\n      CLASS_CONTROL +\n      (this.collapsed_ && this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n      (this.collapsible_ ? '' : ' ol-uncollapsible');\n    const element = this.element;\n    element.className = cssClasses;\n    element.appendChild(this.toggleButton_);\n    element.appendChild(this.ulElement_);\n\n    /**\n     * A list of currently rendered resolutions.\n     * @type {Array<string>}\n     * @private\n     */\n    this.renderedAttributions_ = [];\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderedVisible_ = true;\n  }\n\n  /**\n   * Collect a list of visible attributions and set the collapsible state.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @return {Array<string>} Attributions.\n   * @private\n   */\n  collectSourceAttributions_(frameState) {\n    const layers = this.getMap().getAllLayers();\n    const visibleAttributions = new Set(\n      layers.flatMap((layer) => layer.getAttributions(frameState)),\n    );\n    if (this.attributions_ !== undefined) {\n      Array.isArray(this.attributions_)\n        ? this.attributions_.forEach((item) => visibleAttributions.add(item))\n        : visibleAttributions.add(this.attributions_);\n    }\n\n    if (!this.overrideCollapsible_) {\n      const collapsible = !layers.some(\n        (layer) => layer.getSource()?.getAttributionsCollapsible() === false,\n      );\n      this.setCollapsible(collapsible);\n    }\n    return Array.from(visibleAttributions);\n  }\n\n  /**\n   * @private\n   * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n   */\n  async updateElement_(frameState) {\n    if (!frameState) {\n      if (this.renderedVisible_) {\n        this.element.style.display = 'none';\n        this.renderedVisible_ = false;\n      }\n      return;\n    }\n\n    const attributions = await Promise.all(\n      this.collectSourceAttributions_(frameState).map((attribution) =>\n        toPromise(() => attribution),\n      ),\n    );\n\n    const visible = attributions.length > 0;\n    if (this.renderedVisible_ != visible) {\n      this.element.style.display = visible ? '' : 'none';\n      this.renderedVisible_ = visible;\n    }\n\n    if (equals(attributions, this.renderedAttributions_)) {\n      return;\n    }\n\n    removeChildren(this.ulElement_);\n\n    // append the attributions\n    for (let i = 0, ii = attributions.length; i < ii; ++i) {\n      const element = document.createElement('li');\n      element.innerHTML = attributions[i];\n      this.ulElement_.appendChild(element);\n    }\n\n    this.renderedAttributions_ = attributions;\n  }\n\n  /**\n   * @param {MouseEvent} event The event to handle\n   * @private\n   */\n  handleClick_(event) {\n    event.preventDefault();\n    this.handleToggle_();\n    this.userCollapsed_ = this.collapsed_;\n  }\n\n  /**\n   * @private\n   */\n  handleToggle_() {\n    this.element.classList.toggle(CLASS_COLLAPSED);\n    if (this.collapsed_) {\n      replaceNode(this.collapseLabel_, this.label_);\n    } else {\n      replaceNode(this.label_, this.collapseLabel_);\n    }\n    this.collapsed_ = !this.collapsed_;\n    this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n  }\n\n  /**\n   * Return `true` if the attribution is collapsible, `false` otherwise.\n   * @return {boolean} True if the widget is collapsible.\n   * @api\n   */\n  getCollapsible() {\n    return this.collapsible_;\n  }\n\n  /**\n   * Set whether the attribution should be collapsible.\n   * @param {boolean} collapsible True if the widget is collapsible.\n   * @api\n   */\n  setCollapsible(collapsible) {\n    if (this.collapsible_ === collapsible) {\n      return;\n    }\n    this.collapsible_ = collapsible;\n    this.element.classList.toggle('ol-uncollapsible');\n    if (this.userCollapsed_) {\n      this.handleToggle_();\n    }\n  }\n\n  /**\n   * Collapse or expand the attribution according to the passed parameter. Will\n   * not do anything if the attribution isn't collapsible or if the current\n   * collapsed state is already the one requested.\n   * @param {boolean} collapsed True if the widget is collapsed.\n   * @api\n   */\n  setCollapsed(collapsed) {\n    this.userCollapsed_ = collapsed;\n    if (!this.collapsible_ || this.collapsed_ === collapsed) {\n      return;\n    }\n    this.handleToggle_();\n  }\n\n  /**\n   * Return `true` when the attribution is currently collapsed or `false`\n   * otherwise.\n   * @return {boolean} True if the widget is collapsed.\n   * @api\n   */\n  getCollapsed() {\n    return this.collapsed_;\n  }\n\n  /**\n   * Update the attribution element.\n   * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n   * @override\n   */\n  render(mapEvent) {\n    this.updateElement_(mapEvent.frameState);\n  }\n}\n\nexport default Attribution;\n","/**\n * @module ol/control/Rotate\n */\nimport {CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\nimport EventType from '../events/EventType.js';\nimport Control from './Control.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {string} [compassClassName='ol-compass'] CSS class name for the compass.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nclass Rotate extends Control {\n  /**\n   * @param {Options} [options] Rotate options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super({\n      element: document.createElement('div'),\n      render: options.render,\n      target: options.target,\n    });\n\n    const className =\n      options.className !== undefined ? options.className : 'ol-rotate';\n\n    const label = options.label !== undefined ? options.label : '\\u21E7';\n\n    const compassClassName =\n      options.compassClassName !== undefined\n        ? options.compassClassName\n        : 'ol-compass';\n\n    /**\n     * @type {HTMLElement}\n     * @private\n     */\n    this.label_ = null;\n\n    if (typeof label === 'string') {\n      this.label_ = document.createElement('span');\n      this.label_.className = compassClassName;\n      this.label_.textContent = label;\n    } else {\n      this.label_ = label;\n      this.label_.classList.add(compassClassName);\n    }\n\n    const tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n\n    const button = document.createElement('button');\n    button.className = className + '-reset';\n    button.setAttribute('type', 'button');\n    button.title = tipLabel;\n    button.appendChild(this.label_);\n\n    button.addEventListener(\n      EventType.CLICK,\n      this.handleClick_.bind(this),\n      false,\n    );\n\n    const cssClasses =\n      className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n    const element = this.element;\n    element.className = cssClasses;\n    element.appendChild(button);\n\n    /**\n     * @private\n     */\n    this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.rotation_ = undefined;\n\n    if (this.autoHide_) {\n      this.element.classList.add(CLASS_HIDDEN);\n    }\n  }\n\n  /**\n   * @param {MouseEvent} event The event to handle\n   * @private\n   */\n  handleClick_(event) {\n    event.preventDefault();\n    if (this.callResetNorth_ !== undefined) {\n      this.callResetNorth_();\n    } else {\n      this.resetNorth_();\n    }\n  }\n\n  /**\n   * @private\n   */\n  resetNorth_() {\n    const map = this.getMap();\n    const view = map.getView();\n    if (!view) {\n      // the map does not have a view, so we can't act\n      // upon it\n      return;\n    }\n    const rotation = view.getRotation();\n    if (rotation !== undefined) {\n      if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n        view.animate({\n          rotation: 0,\n          duration: this.duration_,\n          easing: easeOut,\n        });\n      } else {\n        view.setRotation(0);\n      }\n    }\n  }\n\n  /**\n   * Update the rotate control element.\n   * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n   * @override\n   */\n  render(mapEvent) {\n    const frameState = mapEvent.frameState;\n    if (!frameState) {\n      return;\n    }\n    const rotation = frameState.viewState.rotation;\n    if (rotation != this.rotation_) {\n      const transform = 'rotate(' + rotation + 'rad)';\n      if (this.autoHide_) {\n        const contains = this.element.classList.contains(CLASS_HIDDEN);\n        if (!contains && rotation === 0) {\n          this.element.classList.add(CLASS_HIDDEN);\n        } else if (contains && rotation !== 0) {\n          this.element.classList.remove(CLASS_HIDDEN);\n        }\n      }\n      this.label_.style.transform = transform;\n    }\n    this.rotation_ = rotation;\n  }\n}\n\nexport default Rotate;\n","/**\n * @module ol/control/Zoom\n */\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\nimport EventType from '../events/EventType.js';\nimport Control from './Control.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string} [zoomInClassName=className + '-in'] CSS class name for the zoom-in button.\n * @property {string} [zoomOutClassName=className + '-out'] CSS class name for the zoom-out button.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='–'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nclass Zoom extends Control {\n  /**\n   * @param {Options} [options] Zoom options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super({\n      element: document.createElement('div'),\n      target: options.target,\n    });\n\n    const className =\n      options.className !== undefined ? options.className : 'ol-zoom';\n\n    const delta = options.delta !== undefined ? options.delta : 1;\n\n    const zoomInClassName =\n      options.zoomInClassName !== undefined\n        ? options.zoomInClassName\n        : className + '-in';\n\n    const zoomOutClassName =\n      options.zoomOutClassName !== undefined\n        ? options.zoomOutClassName\n        : className + '-out';\n\n    const zoomInLabel =\n      options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n    const zoomOutLabel =\n      options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2013';\n\n    const zoomInTipLabel =\n      options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n    const zoomOutTipLabel =\n      options.zoomOutTipLabel !== undefined\n        ? options.zoomOutTipLabel\n        : 'Zoom out';\n\n    const inElement = document.createElement('button');\n    inElement.className = zoomInClassName;\n    inElement.setAttribute('type', 'button');\n    inElement.title = zoomInTipLabel;\n    inElement.appendChild(\n      typeof zoomInLabel === 'string'\n        ? document.createTextNode(zoomInLabel)\n        : zoomInLabel,\n    );\n\n    inElement.addEventListener(\n      EventType.CLICK,\n      this.handleClick_.bind(this, delta),\n      false,\n    );\n\n    const outElement = document.createElement('button');\n    outElement.className = zoomOutClassName;\n    outElement.setAttribute('type', 'button');\n    outElement.title = zoomOutTipLabel;\n    outElement.appendChild(\n      typeof zoomOutLabel === 'string'\n        ? document.createTextNode(zoomOutLabel)\n        : zoomOutLabel,\n    );\n\n    outElement.addEventListener(\n      EventType.CLICK,\n      this.handleClick_.bind(this, -delta),\n      false,\n    );\n\n    const cssClasses =\n      className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n    const element = this.element;\n    element.className = cssClasses;\n    element.appendChild(inElement);\n    element.appendChild(outElement);\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 250;\n  }\n\n  /**\n   * @param {number} delta Zoom delta.\n   * @param {MouseEvent} event The event to handle\n   * @private\n   */\n  handleClick_(delta, event) {\n    event.preventDefault();\n    this.zoomByDelta_(delta);\n  }\n\n  /**\n   * @param {number} delta Zoom delta.\n   * @private\n   */\n  zoomByDelta_(delta) {\n    const map = this.getMap();\n    const view = map.getView();\n    if (!view) {\n      // the map does not have a view, so we can't act\n      // upon it\n      return;\n    }\n    const currentZoom = view.getZoom();\n    if (currentZoom !== undefined) {\n      const newZoom = view.getConstrainedZoom(currentZoom + delta);\n      if (this.duration_ > 0) {\n        if (view.getAnimating()) {\n          view.cancelAnimations();\n        }\n        view.animate({\n          zoom: newZoom,\n          duration: this.duration_,\n          easing: easeOut,\n        });\n      } else {\n        view.setZoom(newZoom);\n      }\n    }\n  }\n}\n\nexport default Zoom;\n","/**\n * @module ol/control/defaults\n */\nimport Collection from '../Collection.js';\nimport Attribution from './Attribution.js';\nimport Rotate from './Rotate.js';\nimport Zoom from './Zoom.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n */\n\n/**\n * Set of controls included in maps by default. Unless configured otherwise,\n * this returns a collection containing an instance of each of the following\n * controls:\n * {@link module:ol/control/Zoom~Zoom}\n * {@link module:ol/control/Rotate~Rotate}\n * {@link module:ol/control/Attribution~Attribution}\n *\n * @param {DefaultsOptions} [options] Options for the default controls.\n * @return {Collection<import(\"./Control.js\").default>} A collection of controls\n * to be used with the {@link module:ol/Map~Map} constructor's `controls` option.\n * @api\n */\nexport function defaults(options) {\n  options = options ? options : {};\n\n  /** @type {Collection<import(\"./Control.js\").default>} */\n  const controls = new Collection();\n\n  const zoomControl = options.zoom !== undefined ? options.zoom : true;\n  if (zoomControl) {\n    controls.push(new Zoom(options.zoomOptions));\n  }\n\n  const rotateControl = options.rotate !== undefined ? options.rotate : true;\n  if (rotateControl) {\n    controls.push(new Rotate(options.rotateOptions));\n  }\n\n  const attributionControl =\n    options.attribution !== undefined ? options.attribution : true;\n  if (attributionControl) {\n    controls.push(new Attribution(options.attributionOptions));\n  }\n\n  return controls;\n}\n","/**\n * @module ol/Kinetic\n */\n\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nclass Kinetic {\n  /**\n   * @param {number} decay Rate of decay (must be negative).\n   * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n   * @param {number} delay Delay to consider to calculate the kinetic\n   *     initial values (milliseconds).\n   */\n  constructor(decay, minVelocity, delay) {\n    /**\n     * @private\n     * @type {number}\n     */\n    this.decay_ = decay;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.minVelocity_ = minVelocity;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.delay_ = delay;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.points_ = [];\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.angle_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.initialVelocity_ = 0;\n  }\n\n  /**\n   * FIXME empty description for jsdoc\n   */\n  begin() {\n    this.points_.length = 0;\n    this.angle_ = 0;\n    this.initialVelocity_ = 0;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   */\n  update(x, y) {\n    this.points_.push(x, y, Date.now());\n  }\n\n  /**\n   * @return {boolean} Whether we should do kinetic animation.\n   */\n  end() {\n    if (this.points_.length < 6) {\n      // at least 2 points are required (i.e. there must be at least 6 elements\n      // in the array)\n      return false;\n    }\n    const delay = Date.now() - this.delay_;\n    const lastIndex = this.points_.length - 3;\n    if (this.points_[lastIndex + 2] < delay) {\n      // the last tracked point is too old, which means that the user stopped\n      // panning before releasing the map\n      return false;\n    }\n\n    // get the first point which still falls into the delay time\n    let firstIndex = lastIndex - 3;\n    while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n      firstIndex -= 3;\n    }\n\n    const duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n    // we don't want a duration of 0 (divide by zero)\n    // we also make sure the user panned for a duration of at least one frame\n    // (1/60s) to compute sane displacement values\n    if (duration < 1000 / 60) {\n      return false;\n    }\n\n    const dx = this.points_[lastIndex] - this.points_[firstIndex];\n    const dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n    this.angle_ = Math.atan2(dy, dx);\n    this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n    return this.initialVelocity_ > this.minVelocity_;\n  }\n\n  /**\n   * @return {number} Total distance travelled (pixels).\n   */\n  getDistance() {\n    return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n  }\n\n  /**\n   * @return {number} Angle of the kinetic panning animation (radians).\n   */\n  getAngle() {\n    return this.angle_;\n  }\n}\n\nexport default Kinetic;\n","/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nclass DoubleClickZoom extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    options = options ? options : {};\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.delta_ = options.delta ? options.delta : 1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 250;\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} (if it was a\n   * doubleclick) and eventually zooms the map.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    let stopEvent = false;\n    if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n      const browserEvent = /** @type {MouseEvent} */ (\n        mapBrowserEvent.originalEvent\n      );\n      const map = mapBrowserEvent.map;\n      const anchor = mapBrowserEvent.coordinate;\n      const delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n      const view = map.getView();\n      zoomByDelta(view, delta, anchor, this.duration_);\n      browserEvent.preventDefault();\n      stopEvent = true;\n    }\n    return !stopEvent;\n  }\n}\n\nexport default DoubleClickZoom;\n","/**\n * @module ol/interaction/Pointer\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport Interaction from './Interaction.js';\n\n/**\n * @typedef {Object} Options\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleDownEvent]\n * Function handling \"down\" events. If the function returns `true` then a drag\n * sequence is started.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleDragEvent]\n * Function handling \"drag\" events. This function is called on \"move\" events\n * during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleEvent]\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. The function may return `false` to prevent the\n * propagation of the event to other interactions in the map's interactions\n * chain.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleMoveEvent]\n * Function handling \"move\" events. This function is called on \"move\" events.\n * This functions is also called during a drag sequence, so during a drag\n * sequence both the `handleDragEvent` function and this function are called.\n * If `handleDownEvent` is defined and it returns true this function will not\n * be called during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleUpEvent]\n *  Function handling \"up\" events. If the function returns `false` then the\n * current drag sequence is stopped.\n * @property {function(boolean):boolean} [stopDown]\n * Should the down event be propagated to other interactions, or should be\n * stopped?\n */\n\n/**\n * @classdesc\n * Base class that calls user-defined functions on `down`, `move` and `up`\n * events. This class also manages \"drag sequences\".\n *\n * When the `handleDownEvent` user function returns `true` a drag sequence is\n * started. During a drag sequence the `handleDragEvent` user function is\n * called on `move` events. The drag sequence ends when the `handleUpEvent`\n * user function is called and returns `false`.\n * @api\n */\nclass PointerInteraction extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super(\n      /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options),\n    );\n\n    if (options.handleDownEvent) {\n      this.handleDownEvent = options.handleDownEvent;\n    }\n\n    if (options.handleDragEvent) {\n      this.handleDragEvent = options.handleDragEvent;\n    }\n\n    if (options.handleMoveEvent) {\n      this.handleMoveEvent = options.handleMoveEvent;\n    }\n\n    if (options.handleUpEvent) {\n      this.handleUpEvent = options.handleUpEvent;\n    }\n\n    if (options.stopDown) {\n      this.stopDown = options.stopDown;\n    }\n\n    /**\n     * @type {boolean}\n     * @protected\n     */\n    this.handlingDownUpSequence = false;\n\n    /**\n     * @type {Array<PointerEvent>}\n     * @protected\n     */\n    this.targetPointers = [];\n  }\n\n  /**\n   * Returns the current number of pointers involved in the interaction,\n   * e.g. `2` when two fingers are used.\n   * @return {number} The number of pointers.\n   * @api\n   */\n  getPointerCount() {\n    return this.targetPointers.length;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @protected\n   */\n  handleDownEvent(mapBrowserEvent) {\n    return false;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @protected\n   */\n  handleDragEvent(mapBrowserEvent) {}\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may call into\n   * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. are\n   * detected.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @api\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    if (!mapBrowserEvent.originalEvent) {\n      return true;\n    }\n\n    let stopEvent = false;\n    this.updateTrackedPointers_(mapBrowserEvent);\n    if (this.handlingDownUpSequence) {\n      if (mapBrowserEvent.type == MapBrowserEventType.POINTERDRAG) {\n        this.handleDragEvent(mapBrowserEvent);\n        // prevent page scrolling during dragging\n        mapBrowserEvent.originalEvent.preventDefault();\n      } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n        const handledUp = this.handleUpEvent(mapBrowserEvent);\n        this.handlingDownUpSequence =\n          handledUp && this.targetPointers.length > 0;\n      }\n    } else {\n      if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n        const handled = this.handleDownEvent(mapBrowserEvent);\n        this.handlingDownUpSequence = handled;\n        stopEvent = this.stopDown(handled);\n      } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE) {\n        this.handleMoveEvent(mapBrowserEvent);\n      }\n    }\n    return !stopEvent;\n  }\n\n  /**\n   * Handle pointer move events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @protected\n   */\n  handleMoveEvent(mapBrowserEvent) {}\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @protected\n   */\n  handleUpEvent(mapBrowserEvent) {\n    return false;\n  }\n\n  /**\n   * This function is used to determine if \"down\" events should be propagated\n   * to other interactions or should be stopped.\n   * @param {boolean} handled Was the event handled by the interaction?\n   * @return {boolean} Should the `down` event be stopped?\n   */\n  stopDown(handled) {\n    return handled;\n  }\n\n  /**\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @private\n   */\n  updateTrackedPointers_(mapBrowserEvent) {\n    if (mapBrowserEvent.activePointers) {\n      this.targetPointers = mapBrowserEvent.activePointers;\n    }\n  }\n}\n\n/**\n * @param {Array<PointerEvent>} pointerEvents List of events.\n * @return {{clientX: number, clientY: number}} Centroid pixel.\n */\nexport function centroid(pointerEvents) {\n  const length = pointerEvents.length;\n  let clientX = 0;\n  let clientY = 0;\n  for (let i = 0; i < length; i++) {\n    clientX += pointerEvents[i].clientX;\n    clientY += pointerEvents[i].clientY;\n  }\n  return {clientX: clientX / length, clientY: clientY / length};\n}\n\nexport default PointerInteraction;\n","/**\n * @module ol/interaction/DragPan\n */\nimport {\n  rotate as rotateCoordinate,\n  scale as scaleCoordinate,\n} from '../coordinate.js';\nimport {easeOut} from '../easing.js';\nimport {\n  all,\n  focusWithTabindex,\n  noModifierKeys,\n  primaryAction,\n} from '../events/condition.js';\nimport {FALSE} from '../functions.js';\nimport PointerInteraction, {\n  centroid as centroidFromPointers,\n} from './Pointer.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.noModifierKeys} and {@link module:ol/events/condition.primaryAction}.\n * @property {boolean} [onFocusOnly=false] When the map's target has a `tabindex` attribute set,\n * the interaction will only handle events when the map has the focus.\n * @property {import(\"../Kinetic.js\").default} [kinetic] Kinetic inertia to apply to the pan.\n */\n\n/**\n * @classdesc\n * Allows the user to pan the map by dragging the map.\n * @api\n */\nclass DragPan extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super({\n      stopDown: FALSE,\n    });\n\n    options = options ? options : {};\n\n    /**\n     * @private\n     * @type {import(\"../Kinetic.js\").default|undefined}\n     */\n    this.kinetic_ = options.kinetic;\n\n    /**\n     * @type {import(\"../pixel.js\").Pixel}\n     */\n    this.lastCentroid = null;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.lastPointersCount_;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.panning_ = false;\n\n    const condition = options.condition\n      ? options.condition\n      : all(noModifierKeys, primaryAction);\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.onFocusOnly\n      ? all(focusWithTabindex, condition)\n      : condition;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.noKinetic_ = false;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @override\n   */\n  handleDragEvent(mapBrowserEvent) {\n    const map = mapBrowserEvent.map;\n    if (!this.panning_) {\n      this.panning_ = true;\n      map.getView().beginInteraction();\n    }\n    const targetPointers = this.targetPointers;\n    const centroid = map.getEventPixel(centroidFromPointers(targetPointers));\n    if (targetPointers.length == this.lastPointersCount_) {\n      if (this.kinetic_) {\n        this.kinetic_.update(centroid[0], centroid[1]);\n      }\n      if (this.lastCentroid) {\n        const delta = [\n          this.lastCentroid[0] - centroid[0],\n          centroid[1] - this.lastCentroid[1],\n        ];\n        const map = mapBrowserEvent.map;\n        const view = map.getView();\n        scaleCoordinate(delta, view.getResolution());\n        rotateCoordinate(delta, view.getRotation());\n        view.adjustCenterInternal(delta);\n      }\n    } else if (this.kinetic_) {\n      // reset so we don't overestimate the kinetic energy after\n      // after one finger down, tiny drag, second finger down\n      this.kinetic_.begin();\n    }\n    this.lastCentroid = centroid;\n    this.lastPointersCount_ = targetPointers.length;\n    mapBrowserEvent.originalEvent.preventDefault();\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(mapBrowserEvent) {\n    const map = mapBrowserEvent.map;\n    const view = map.getView();\n    if (this.targetPointers.length === 0) {\n      if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) {\n        const distance = this.kinetic_.getDistance();\n        const angle = this.kinetic_.getAngle();\n        const center = view.getCenterInternal();\n        const centerpx = map.getPixelFromCoordinateInternal(center);\n        const dest = map.getCoordinateFromPixelInternal([\n          centerpx[0] - distance * Math.cos(angle),\n          centerpx[1] - distance * Math.sin(angle),\n        ]);\n        view.animateInternal({\n          center: view.getConstrainedCenter(dest),\n          duration: 500,\n          easing: easeOut,\n        });\n      }\n      if (this.panning_) {\n        this.panning_ = false;\n        view.endInteraction();\n      }\n      return false;\n    }\n    if (this.kinetic_) {\n      // reset so we don't overestimate the kinetic energy after\n      // after one finger up, tiny drag, second finger up\n      this.kinetic_.begin();\n    }\n    this.lastCentroid = null;\n    return true;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(mapBrowserEvent) {\n    if (this.targetPointers.length > 0 && this.condition_(mapBrowserEvent)) {\n      const map = mapBrowserEvent.map;\n      const view = map.getView();\n      this.lastCentroid = null;\n      // stop any current animation\n      if (view.getAnimating()) {\n        view.cancelAnimations();\n      }\n      if (this.kinetic_) {\n        this.kinetic_.begin();\n      }\n      // No kinetic as soon as more than one pointer on the screen is\n      // detected. This is to prevent nasty pans after pinch.\n      this.noKinetic_ = this.targetPointers.length > 1;\n      return true;\n    }\n    return false;\n  }\n}\n\nexport default DragPan;\n","/**\n * @module ol/interaction/DragRotate\n */\nimport {\n  altShiftKeysOnly,\n  mouseActionButton,\n  mouseOnly,\n} from '../events/condition.js';\nimport {FALSE} from '../functions.js';\nimport {disable} from '../rotationconstraint.js';\nimport PointerInteraction from './Pointer.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes a\n * {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.altShiftKeysOnly}.\n * @property {number} [duration=250] Animation duration in milliseconds.\n */\n\n/**\n * @classdesc\n * Allows the user to rotate the map by clicking and dragging on the map,\n * normally combined with a {@link module:ol/events/condition} that limits\n * it to when the alt and shift keys are held down.\n *\n * This interaction is only supported for mouse devices.\n * @api\n */\nclass DragRotate extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super({\n      stopDown: FALSE,\n    });\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition ? options.condition : altShiftKeysOnly;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.lastAngle_ = undefined;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 250;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @override\n   */\n  handleDragEvent(mapBrowserEvent) {\n    if (!mouseOnly(mapBrowserEvent)) {\n      return;\n    }\n\n    const map = mapBrowserEvent.map;\n    const view = map.getView();\n    if (view.getConstraints().rotation === disable) {\n      return;\n    }\n    const size = map.getSize();\n    const offset = mapBrowserEvent.pixel;\n    const theta = Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2);\n    if (this.lastAngle_ !== undefined) {\n      const delta = theta - this.lastAngle_;\n      view.adjustRotationInternal(-delta);\n    }\n    this.lastAngle_ = theta;\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(mapBrowserEvent) {\n    if (!mouseOnly(mapBrowserEvent)) {\n      return true;\n    }\n\n    const map = mapBrowserEvent.map;\n    const view = map.getView();\n    view.endInteraction(this.duration_);\n    return false;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(mapBrowserEvent) {\n    if (!mouseOnly(mapBrowserEvent)) {\n      return false;\n    }\n\n    if (\n      mouseActionButton(mapBrowserEvent) &&\n      this.condition_(mapBrowserEvent)\n    ) {\n      const map = mapBrowserEvent.map;\n      map.getView().beginInteraction();\n      this.lastAngle_ = undefined;\n      return true;\n    }\n    return false;\n  }\n}\n\nexport default DragRotate;\n","/**\n * @module ol/render/Box\n */\n\nimport Disposable from '../Disposable.js';\nimport Polygon from '../geom/Polygon.js';\n\nclass RenderBox extends Disposable {\n  /**\n   * @param {string} className CSS class name.\n   */\n  constructor(className) {\n    super();\n\n    /**\n     * @type {import(\"../geom/Polygon.js\").default}\n     * @private\n     */\n    this.geometry_ = null;\n\n    /**\n     * @type {HTMLDivElement}\n     * @private\n     */\n    this.element_ = document.createElement('div');\n    this.element_.style.position = 'absolute';\n    this.element_.style.pointerEvents = 'auto';\n    this.element_.className = 'ol-box ' + className;\n\n    /**\n     * @private\n     * @type {import(\"../Map.js\").default|null}\n     */\n    this.map_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../pixel.js\").Pixel}\n     */\n    this.startPixel_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../pixel.js\").Pixel}\n     */\n    this.endPixel_ = null;\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.setMap(null);\n  }\n\n  /**\n   * @private\n   */\n  render_() {\n    const startPixel = this.startPixel_;\n    const endPixel = this.endPixel_;\n    const px = 'px';\n    const style = this.element_.style;\n    style.left = Math.min(startPixel[0], endPixel[0]) + px;\n    style.top = Math.min(startPixel[1], endPixel[1]) + px;\n    style.width = Math.abs(endPixel[0] - startPixel[0]) + px;\n    style.height = Math.abs(endPixel[1] - startPixel[1]) + px;\n  }\n\n  /**\n   * @param {import(\"../Map.js\").default|null} map Map.\n   */\n  setMap(map) {\n    if (this.map_) {\n      this.map_.getOverlayContainer().removeChild(this.element_);\n      const style = this.element_.style;\n      style.left = 'inherit';\n      style.top = 'inherit';\n      style.width = 'inherit';\n      style.height = 'inherit';\n    }\n    this.map_ = map;\n    if (this.map_) {\n      this.map_.getOverlayContainer().appendChild(this.element_);\n    }\n  }\n\n  /**\n   * @param {import(\"../pixel.js\").Pixel} startPixel Start pixel.\n   * @param {import(\"../pixel.js\").Pixel} endPixel End pixel.\n   */\n  setPixels(startPixel, endPixel) {\n    this.startPixel_ = startPixel;\n    this.endPixel_ = endPixel;\n    this.createOrUpdateGeometry();\n    this.render_();\n  }\n\n  /**\n   * Creates or updates the cached geometry.\n   */\n  createOrUpdateGeometry() {\n    if (!this.map_) {\n      return;\n    }\n\n    const startPixel = this.startPixel_;\n    const endPixel = this.endPixel_;\n    const pixels = [\n      startPixel,\n      [startPixel[0], endPixel[1]],\n      endPixel,\n      [endPixel[0], startPixel[1]],\n    ];\n    const coordinates = pixels.map(\n      this.map_.getCoordinateFromPixelInternal,\n      this.map_,\n    );\n    // close the polygon\n    coordinates[4] = coordinates[0].slice();\n    if (!this.geometry_) {\n      this.geometry_ = new Polygon([coordinates]);\n    } else {\n      this.geometry_.setCoordinates([coordinates]);\n    }\n  }\n\n  /**\n   * @return {import(\"../geom/Polygon.js\").default} Geometry.\n   */\n  getGeometry() {\n    return this.geometry_;\n  }\n}\n\nexport default RenderBox;\n","/**\n * @module ol/interaction/DragBox\n */\n// FIXME draw drag box\nimport Event from '../events/Event.js';\nimport {mouseActionButton} from '../events/condition.js';\nimport RenderBox from '../render/Box.js';\nimport PointerInteraction from './Pointer.js';\n\n/**\n * A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s and returns a `{boolean}`. If the condition is met,\n * true should be returned.\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default, import(\"../pixel.js\").Pixel, import(\"../pixel.js\").Pixel):boolean} EndCondition\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragbox'] CSS class name for styling the box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link ol/events/condition~mouseActionButton}.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the default\n * `boxEndCondition` function.\n * @property {EndCondition} [boxEndCondition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s to indicate whether a `boxend` event should be fired.\n * Default is `true` if the area of the box is bigger than the `minArea` option.\n * @property {function(this:DragBox, import(\"../MapBrowserEvent.js\").default):void} [onBoxEnd] Code to execute just\n * before `boxend` is fired.\n */\n\n/**\n * @enum {string}\n */\nconst DragBoxEventType = {\n  /**\n   * Triggered upon drag box start.\n   * @event DragBoxEvent#boxstart\n   * @api\n   */\n  BOXSTART: 'boxstart',\n\n  /**\n   * Triggered on drag when box is active.\n   * @event DragBoxEvent#boxdrag\n   * @api\n   */\n  BOXDRAG: 'boxdrag',\n\n  /**\n   * Triggered upon drag box end.\n   * @event DragBoxEvent#boxend\n   * @api\n   */\n  BOXEND: 'boxend',\n\n  /**\n   * Triggered upon drag box canceled.\n   * @event DragBoxEvent#boxcancel\n   * @api\n   */\n  BOXCANCEL: 'boxcancel',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/DragBox~DragBox} instances are instances of\n * this type.\n */\nexport class DragBoxEvent extends Event {\n  /**\n   * @param {string} type The event type.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate The event coordinate.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Originating event.\n   */\n  constructor(type, coordinate, mapBrowserEvent) {\n    super(type);\n\n    /**\n     * The coordinate of the drag event.\n     * @const\n     * @type {import(\"../coordinate.js\").Coordinate}\n     * @api\n     */\n    this.coordinate = coordinate;\n\n    /**\n     * @const\n     * @type {import(\"../MapBrowserEvent.js\").default}\n     * @api\n     */\n    this.mapBrowserEvent = mapBrowserEvent;\n  }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types|\n *     'change:active', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<'boxcancel'|'boxdrag'|'boxend'|'boxstart', DragBoxEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     'change:active'|'boxcancel'|'boxdrag'|'boxend', Return>} DragBoxOnSignature\n */\n\n/**\n * @classdesc\n * Allows the user to draw a vector box by clicking and dragging on the map,\n * normally combined with a {@link module:ol/events/condition} that limits\n * it to when the shift or other key is held down. This is used, for example,\n * for zooming to a specific area of the map\n * (see {@link module:ol/interaction/DragZoom~DragZoom} and\n * {@link module:ol/interaction/DragRotateAndZoom~DragRotateAndZoom}).\n *\n * @fires DragBoxEvent\n * @api\n */\nclass DragBox extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    /***\n     * @type {DragBoxOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {DragBoxOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {DragBoxOnSignature<void>}\n     */\n    this.un;\n\n    options = options ?? {};\n\n    /**\n     * @type {import(\"../render/Box.js\").default}\n     * @private\n     */\n    this.box_ = new RenderBox(options.className || 'ol-dragbox');\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.minArea_ = options.minArea ?? 64;\n\n    if (options.onBoxEnd) {\n      this.onBoxEnd = options.onBoxEnd;\n    }\n\n    /**\n     * @type {import(\"../pixel.js\").Pixel}\n     * @private\n     */\n    this.startPixel_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition ?? mouseActionButton;\n\n    /**\n     * @private\n     * @type {EndCondition}\n     */\n    this.boxEndCondition_ =\n      options.boxEndCondition ?? this.defaultBoxEndCondition;\n  }\n\n  /**\n   * The default condition for determining whether the boxend event\n   * should fire.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent The originating MapBrowserEvent\n   *     leading to the box end.\n   * @param {import(\"../pixel.js\").Pixel} startPixel The starting pixel of the box.\n   * @param {import(\"../pixel.js\").Pixel} endPixel The end pixel of the box.\n   * @return {boolean} Whether or not the boxend condition should be fired.\n   */\n  defaultBoxEndCondition(mapBrowserEvent, startPixel, endPixel) {\n    const width = endPixel[0] - startPixel[0];\n    const height = endPixel[1] - startPixel[1];\n    return width * width + height * height >= this.minArea_;\n  }\n\n  /**\n   * Returns geometry of last drawn box.\n   * @return {import(\"../geom/Polygon.js\").default} Geometry.\n   * @api\n   */\n  getGeometry() {\n    return this.box_.getGeometry();\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @override\n   */\n  handleDragEvent(mapBrowserEvent) {\n    if (!this.startPixel_) {\n      return;\n    }\n\n    this.box_.setPixels(this.startPixel_, mapBrowserEvent.pixel);\n\n    this.dispatchEvent(\n      new DragBoxEvent(\n        DragBoxEventType.BOXDRAG,\n        mapBrowserEvent.coordinate,\n        mapBrowserEvent,\n      ),\n    );\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(mapBrowserEvent) {\n    if (!this.startPixel_) {\n      return false;\n    }\n\n    const completeBox = this.boxEndCondition_(\n      mapBrowserEvent,\n      this.startPixel_,\n      mapBrowserEvent.pixel,\n    );\n    if (completeBox) {\n      this.onBoxEnd(mapBrowserEvent);\n    }\n    this.dispatchEvent(\n      new DragBoxEvent(\n        completeBox ? DragBoxEventType.BOXEND : DragBoxEventType.BOXCANCEL,\n        mapBrowserEvent.coordinate,\n        mapBrowserEvent,\n      ),\n    );\n\n    this.box_.setMap(null);\n    this.startPixel_ = null;\n\n    return false;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(mapBrowserEvent) {\n    if (this.condition_(mapBrowserEvent)) {\n      this.startPixel_ = mapBrowserEvent.pixel;\n      this.box_.setMap(mapBrowserEvent.map);\n      this.box_.setPixels(this.startPixel_, this.startPixel_);\n      this.dispatchEvent(\n        new DragBoxEvent(\n          DragBoxEventType.BOXSTART,\n          mapBrowserEvent.coordinate,\n          mapBrowserEvent,\n        ),\n      );\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Function to execute just before `onboxend` is fired\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   */\n  onBoxEnd(event) {}\n\n  /**\n   * Activate or deactivate the interaction.\n   * @param {boolean} active Active.\n   * @observable\n   * @api\n   * @override\n   */\n  setActive(active) {\n    if (!active) {\n      this.box_.setMap(null);\n      if (this.startPixel_) {\n        this.dispatchEvent(\n          new DragBoxEvent(DragBoxEventType.BOXCANCEL, this.startPixel_, null),\n        );\n        this.startPixel_ = null;\n      }\n    }\n\n    super.setActive(active);\n  }\n\n  /**\n   * @param {import(\"../Map.js\").default|null} map Map.\n   * @override\n   */\n  setMap(map) {\n    const oldMap = this.getMap();\n\n    if (oldMap) {\n      this.box_.setMap(null);\n\n      if (this.startPixel_) {\n        this.dispatchEvent(\n          new DragBoxEvent(DragBoxEventType.BOXCANCEL, this.startPixel_, null),\n        );\n        this.startPixel_ = null;\n      }\n    }\n\n    super.setMap(map);\n  }\n}\n\nexport default DragBox;\n","/**\n * @module ol/interaction/DragZoom\n */\nimport {easeOut} from '../easing.js';\nimport {shiftKeyOnly} from '../events/condition.js';\nimport DragBox from './DragBox.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragzoom'] CSS class name for styling the\n * box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.shiftKeyOnly}.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {boolean} [out=false] Use interaction for zooming out.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the parent default\n * `boxEndCondition` function.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by clicking and dragging on the map,\n * normally combined with a {@link module:ol/events/condition} that limits\n * it to when a key, shift by default, is held down.\n *\n * To change the style of the box, use CSS and the `.ol-dragzoom` selector, or\n * your custom one configured with `className`.\n * @api\n */\nclass DragZoom extends DragBox {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const condition = options.condition ? options.condition : shiftKeyOnly;\n\n    super({\n      condition: condition,\n      className: options.className || 'ol-dragzoom',\n      minArea: options.minArea,\n    });\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 200;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.out_ = options.out !== undefined ? options.out : false;\n  }\n\n  /**\n   * Function to execute just before `onboxend` is fired\n   * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n   * @override\n   */\n  onBoxEnd(event) {\n    const map = this.getMap();\n    const view = /** @type {!import(\"../View.js\").default} */ (map.getView());\n    let geometry = this.getGeometry();\n\n    if (this.out_) {\n      const rotatedExtent = view.rotatedExtentForGeometry(geometry);\n      const resolution = view.getResolutionForExtentInternal(rotatedExtent);\n      const factor = view.getResolution() / resolution;\n      geometry = geometry.clone();\n      geometry.scale(factor * factor);\n    }\n\n    view.fitInternal(geometry, {\n      duration: this.duration_,\n      easing: easeOut,\n    });\n  }\n}\n\nexport default DragZoom;\n","/**\n * @module ol/events/Key\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n  LEFT: 'ArrowLeft',\n  UP: 'ArrowUp',\n  RIGHT: 'ArrowRight',\n  DOWN: 'ArrowDown',\n};\n","/**\n * @module ol/interaction/KeyboardPan\n */\nimport {rotate as rotateCoordinate} from '../coordinate.js';\nimport EventType from '../events/EventType.js';\nimport Key from '../events/Key.js';\nimport {noModifierKeys, targetNotEditable} from '../events/condition.js';\nimport Interaction, {pan} from './Interaction.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.noModifierKeys} and\n * {@link module:ol/events/condition.targetNotEditable}.\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {number} [pixelDelta=128] The amount of pixels to pan on each key\n * press.\n */\n\n/**\n * @classdesc\n * Allows the user to pan the map using keyboard arrows.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}.\n * @api\n */\nclass KeyboardPan extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    options = options || {};\n\n    /**\n     * @private\n     * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Browser event.\n     * @return {boolean} Combined condition result.\n     */\n    this.defaultCondition_ = function (mapBrowserEvent) {\n      return (\n        noModifierKeys(mapBrowserEvent) && targetNotEditable(mapBrowserEvent)\n      );\n    };\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ =\n      options.condition !== undefined\n        ? options.condition\n        : this.defaultCondition_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 100;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelDelta_ =\n      options.pixelDelta !== undefined ? options.pixelDelta : 128;\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} if it was a\n   * `KeyEvent`, and decides the direction to pan to (if an arrow key was\n   * pressed).\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    let stopEvent = false;\n    if (mapBrowserEvent.type == EventType.KEYDOWN) {\n      const keyEvent = /** @type {KeyboardEvent} */ (\n        mapBrowserEvent.originalEvent\n      );\n      const key = keyEvent.key;\n      if (\n        this.condition_(mapBrowserEvent) &&\n        (key == Key.DOWN ||\n          key == Key.LEFT ||\n          key == Key.RIGHT ||\n          key == Key.UP)\n      ) {\n        const map = mapBrowserEvent.map;\n        const view = map.getView();\n        const mapUnitsDelta = view.getResolution() * this.pixelDelta_;\n        let deltaX = 0,\n          deltaY = 0;\n        if (key == Key.DOWN) {\n          deltaY = -mapUnitsDelta;\n        } else if (key == Key.LEFT) {\n          deltaX = -mapUnitsDelta;\n        } else if (key == Key.RIGHT) {\n          deltaX = mapUnitsDelta;\n        } else {\n          deltaY = mapUnitsDelta;\n        }\n        const delta = [deltaX, deltaY];\n        rotateCoordinate(delta, view.getRotation());\n        pan(view, delta, this.duration_);\n        keyEvent.preventDefault();\n        stopEvent = true;\n      }\n    }\n    return !stopEvent;\n  }\n}\n\nexport default KeyboardPan;\n","/**\n * @module ol/interaction/KeyboardZoom\n */\nimport EventType from '../events/EventType.js';\nimport {platformModifierKey, targetNotEditable} from '../events/condition.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. The default condition is\n * that {@link module:ol/events/condition.targetNotEditable} is fulfilled and that\n * the platform modifier key isn't pressed\n * (!{@link module:ol/events/condition.platformModifierKey}).\n * @property {number} [delta=1] The zoom level delta on each key press.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map using keyboard + and -.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardPan~KeyboardPan}.\n * @api\n */\nclass KeyboardZoom extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    options = options ? options : {};\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.condition\n      ? options.condition\n      : function (mapBrowserEvent) {\n          return (\n            !platformModifierKey(mapBrowserEvent) &&\n            targetNotEditable(mapBrowserEvent)\n          );\n        };\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.delta_ = options.delta ? options.delta : 1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 100;\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} if it was a\n   * `KeyEvent`, and decides whether to zoom in or out (depending on whether the\n   * key pressed was '+' or '-').\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    let stopEvent = false;\n    if (\n      mapBrowserEvent.type == EventType.KEYDOWN ||\n      mapBrowserEvent.type == EventType.KEYPRESS\n    ) {\n      const keyEvent = /** @type {KeyboardEvent} */ (\n        mapBrowserEvent.originalEvent\n      );\n      const key = keyEvent.key;\n      if (this.condition_(mapBrowserEvent) && (key === '+' || key === '-')) {\n        const map = mapBrowserEvent.map;\n        const delta = key === '+' ? this.delta_ : -this.delta_;\n        const view = map.getView();\n        zoomByDelta(view, delta, undefined, this.duration_);\n        keyEvent.preventDefault();\n        stopEvent = true;\n      }\n    }\n    return !stopEvent;\n  }\n}\n\nexport default KeyboardZoom;\n","/**\n * @module ol/interaction/MouseWheelZoom\n */\nimport EventType from '../events/EventType.js';\nimport {all, always, focusWithTabindex} from '../events/condition.js';\nimport {clamp} from '../math.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\n\n/**\n * @typedef {'trackpad' | 'wheel'} Mode\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.always}.\n * @property {boolean} [onFocusOnly=false] When the map's target has a `tabindex` attribute set,\n * the interaction will only handle events when the map has the focus.\n * @property {number} [maxDelta=1] Maximum mouse wheel delta.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [timeout=80] Mouse wheel timeout duration in milliseconds.\n * @property {boolean} [useAnchor=true] Enable zooming using the mouse's\n * location as the anchor. When set to `false`, zooming in and out will zoom to\n * the center of the screen instead of zooming on the mouse's location.\n * @property {boolean} [constrainResolution=false] If true, the mouse wheel zoom\n * event will always animate to the closest zoom level after an interaction;\n * false means intermediary zoom levels are allowed.\n */\n\n/**\n * Mutliplier for the DOM_DELTA_LINE delta value.\n * @type {number}\n */\nconst DELTA_LINE_MULTIPLIER = 40;\n\n/**\n * Mutliplier for the DOM_DELTA_PAGE delta value.\n * @type {number}\n */\nconst DELTA_PAGE_MULTIPLIER = 300;\n\n/**\n * @classdesc\n * Allows the user to zoom the map by scrolling the mouse wheel.\n * @api\n */\nclass MouseWheelZoom extends Interaction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super(\n      /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options),\n    );\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.totalDelta_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.lastDelta_ = 0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDelta_ = options.maxDelta !== undefined ? options.maxDelta : 1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.timeout_ = options.timeout !== undefined ? options.timeout : 80;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.useAnchor_ =\n      options.useAnchor !== undefined ? options.useAnchor : true;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.constrainResolution_ =\n      options.constrainResolution !== undefined\n        ? options.constrainResolution\n        : false;\n\n    const condition = options.condition ? options.condition : always;\n\n    /**\n     * @private\n     * @type {import(\"../events/condition.js\").Condition}\n     */\n    this.condition_ = options.onFocusOnly\n      ? all(focusWithTabindex, condition)\n      : condition;\n\n    /**\n     * @private\n     * @type {?import(\"../pixel.js\").Pixel}\n     */\n    this.lastAnchor_ = null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.startTime_ = undefined;\n\n    /**\n     * @private\n     * @type {ReturnType<typeof setTimeout>}\n     */\n    this.timeoutId_;\n\n    /**\n     * @private\n     * @type {Mode|undefined}\n     */\n    this.mode_ = undefined;\n\n    /**\n     * Trackpad events separated by this delay will be considered separate\n     * interactions.\n     * @private\n     * @type {number}\n     */\n    this.trackpadEventGap_ = 400;\n\n    /**\n     * @private\n     * @type {ReturnType<typeof setTimeout>}\n     */\n    this.trackpadTimeoutId_;\n\n    /**\n     * The number of delta values per zoom level\n     * @private\n     * @type {number}\n     */\n    this.deltaPerZoom_ = 300;\n  }\n\n  /**\n   * @private\n   */\n  endInteraction_() {\n    this.trackpadTimeoutId_ = undefined;\n    const map = this.getMap();\n    if (!map) {\n      return;\n    }\n    const view = map.getView();\n    view.endInteraction(\n      undefined,\n      this.lastDelta_ ? (this.lastDelta_ > 0 ? 1 : -1) : 0,\n      this.lastAnchor_ ? map.getCoordinateFromPixel(this.lastAnchor_) : null,\n    );\n  }\n\n  /**\n   * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} (if it was a mousewheel-event) and eventually\n   * zooms the map.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n   * @return {boolean} `false` to stop event propagation.\n   * @override\n   */\n  handleEvent(mapBrowserEvent) {\n    if (!this.condition_(mapBrowserEvent)) {\n      return true;\n    }\n    const type = mapBrowserEvent.type;\n    if (type !== EventType.WHEEL) {\n      return true;\n    }\n\n    const map = mapBrowserEvent.map;\n    const wheelEvent = /** @type {WheelEvent} */ (\n      mapBrowserEvent.originalEvent\n    );\n    wheelEvent.preventDefault();\n\n    if (this.useAnchor_) {\n      this.lastAnchor_ = mapBrowserEvent.pixel;\n    }\n\n    // Delta normalisation inspired by\n    // https://github.com/mapbox/mapbox-gl-js/blob/001c7b9/js/ui/handler/scroll_zoom.js\n    let delta = wheelEvent.deltaY;\n\n    switch (wheelEvent.deltaMode) {\n      case WheelEvent.DOM_DELTA_LINE:\n        delta *= DELTA_LINE_MULTIPLIER;\n        break;\n      case WheelEvent.DOM_DELTA_PAGE:\n        delta *= DELTA_PAGE_MULTIPLIER;\n        break;\n      default:\n      // pass\n    }\n\n    if (delta === 0) {\n      return false;\n    }\n    this.lastDelta_ = delta;\n\n    const now = Date.now();\n\n    if (this.startTime_ === undefined) {\n      this.startTime_ = now;\n    }\n\n    if (!this.mode_ || now - this.startTime_ > this.trackpadEventGap_) {\n      this.mode_ = Math.abs(delta) < 4 ? 'trackpad' : 'wheel';\n    }\n\n    const view = map.getView();\n    if (\n      this.mode_ === 'trackpad' &&\n      !(view.getConstrainResolution() || this.constrainResolution_)\n    ) {\n      if (this.trackpadTimeoutId_) {\n        clearTimeout(this.trackpadTimeoutId_);\n      } else {\n        if (view.getAnimating()) {\n          view.cancelAnimations();\n        }\n        view.beginInteraction();\n      }\n      this.trackpadTimeoutId_ = setTimeout(\n        this.endInteraction_.bind(this),\n        this.timeout_,\n      );\n      view.adjustZoom(\n        -delta / this.deltaPerZoom_,\n        this.lastAnchor_ ? map.getCoordinateFromPixel(this.lastAnchor_) : null,\n      );\n      this.startTime_ = now;\n      return false;\n    }\n\n    this.totalDelta_ += delta;\n\n    const timeLeft = Math.max(this.timeout_ - (now - this.startTime_), 0);\n\n    clearTimeout(this.timeoutId_);\n    this.timeoutId_ = setTimeout(\n      this.handleWheelZoom_.bind(this, map),\n      timeLeft,\n    );\n\n    return false;\n  }\n\n  /**\n   * @private\n   * @param {import(\"../Map.js\").default} map Map.\n   */\n  handleWheelZoom_(map) {\n    const view = map.getView();\n    if (view.getAnimating()) {\n      view.cancelAnimations();\n    }\n    let delta =\n      -clamp(\n        this.totalDelta_,\n        -this.maxDelta_ * this.deltaPerZoom_,\n        this.maxDelta_ * this.deltaPerZoom_,\n      ) / this.deltaPerZoom_;\n    if (view.getConstrainResolution() || this.constrainResolution_) {\n      // view has a zoom constraint, zoom by 1\n      delta = delta ? (delta > 0 ? 1 : -1) : 0;\n    }\n    zoomByDelta(\n      view,\n      delta,\n      this.lastAnchor_ ? map.getCoordinateFromPixel(this.lastAnchor_) : null,\n      this.duration_,\n    );\n\n    this.mode_ = undefined;\n    this.totalDelta_ = 0;\n    this.lastAnchor_ = null;\n    this.startTime_ = undefined;\n    this.timeoutId_ = undefined;\n  }\n\n  /**\n   * Enable or disable using the mouse's location as an anchor when zooming\n   * @param {boolean} useAnchor true to zoom to the mouse's location, false\n   * to zoom to the center of the map\n   * @api\n   */\n  setMouseAnchor(useAnchor) {\n    this.useAnchor_ = useAnchor;\n    if (!useAnchor) {\n      this.lastAnchor_ = null;\n    }\n  }\n}\n\nexport default MouseWheelZoom;\n","/**\n * @module ol/interaction/PinchRotate\n */\nimport {FALSE} from '../functions.js';\nimport {disable} from '../rotationconstraint.js';\nimport PointerInteraction, {\n  centroid as centroidFromPointers,\n} from './Pointer.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] The duration of the animation in\n * milliseconds.\n * @property {number} [threshold=0.3] Minimal angle in radians to start a rotation.\n */\n\n/**\n * @classdesc\n * Allows the user to rotate the map by twisting with two fingers\n * on a touch screen.\n * @api\n */\nclass PinchRotate extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (\n      options\n    );\n\n    if (!pointerOptions.stopDown) {\n      pointerOptions.stopDown = FALSE;\n    }\n\n    super(pointerOptions);\n\n    /**\n     * @private\n     * @type {import(\"../coordinate.js\").Coordinate}\n     */\n    this.anchor_ = null;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.lastAngle_ = undefined;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.rotating_ = false;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.rotationDelta_ = 0.0;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.threshold_ = options.threshold !== undefined ? options.threshold : 0.3;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 250;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @override\n   */\n  handleDragEvent(mapBrowserEvent) {\n    let rotationDelta = 0.0;\n\n    const touch0 = this.targetPointers[0];\n    const touch1 = this.targetPointers[1];\n\n    // angle between touches\n    const angle = Math.atan2(\n      touch1.clientY - touch0.clientY,\n      touch1.clientX - touch0.clientX,\n    );\n\n    if (this.lastAngle_ !== undefined) {\n      const delta = angle - this.lastAngle_;\n      this.rotationDelta_ += delta;\n      if (!this.rotating_ && Math.abs(this.rotationDelta_) > this.threshold_) {\n        this.rotating_ = true;\n      }\n      rotationDelta = delta;\n    }\n    this.lastAngle_ = angle;\n\n    const map = mapBrowserEvent.map;\n    const view = map.getView();\n    if (view.getConstraints().rotation === disable) {\n      return;\n    }\n\n    // rotate anchor point.\n    // FIXME: should be the intersection point between the lines:\n    //     touch0,touch1 and previousTouch0,previousTouch1\n    this.anchor_ = map.getCoordinateFromPixelInternal(\n      map.getEventPixel(centroidFromPointers(this.targetPointers)),\n    );\n\n    // rotate\n    if (this.rotating_) {\n      map.render();\n      view.adjustRotationInternal(rotationDelta, this.anchor_);\n    }\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(mapBrowserEvent) {\n    if (this.targetPointers.length < 2) {\n      const map = mapBrowserEvent.map;\n      const view = map.getView();\n      view.endInteraction(this.duration_);\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(mapBrowserEvent) {\n    if (this.targetPointers.length >= 2) {\n      const map = mapBrowserEvent.map;\n      this.anchor_ = null;\n      this.lastAngle_ = undefined;\n      this.rotating_ = false;\n      this.rotationDelta_ = 0.0;\n      if (!this.handlingDownUpSequence) {\n        map.getView().beginInteraction();\n      }\n      return true;\n    }\n    return false;\n  }\n}\n\nexport default PinchRotate;\n","/**\n * @module ol/interaction/PinchZoom\n */\nimport {FALSE} from '../functions.js';\nimport PointerInteraction, {\n  centroid as centroidFromPointers,\n} from './Pointer.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=400] Animation duration in milliseconds.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by pinching with two fingers\n * on a touch screen.\n * @api\n */\nclass PinchZoom extends PointerInteraction {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (\n      options\n    );\n\n    if (!pointerOptions.stopDown) {\n      pointerOptions.stopDown = FALSE;\n    }\n\n    super(pointerOptions);\n\n    /**\n     * @private\n     * @type {import(\"../coordinate.js\").Coordinate}\n     */\n    this.anchor_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.duration_ = options.duration !== undefined ? options.duration : 400;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.lastDistance_ = undefined;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.lastScaleDelta_ = 1;\n  }\n\n  /**\n   * Handle pointer drag events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @override\n   */\n  handleDragEvent(mapBrowserEvent) {\n    let scaleDelta = 1.0;\n\n    const touch0 = this.targetPointers[0];\n    const touch1 = this.targetPointers[1];\n    const dx = touch0.clientX - touch1.clientX;\n    const dy = touch0.clientY - touch1.clientY;\n\n    // distance between touches\n    const distance = Math.sqrt(dx * dx + dy * dy);\n\n    if (this.lastDistance_ !== undefined) {\n      scaleDelta = this.lastDistance_ / distance;\n    }\n    this.lastDistance_ = distance;\n\n    const map = mapBrowserEvent.map;\n    const view = map.getView();\n\n    if (scaleDelta != 1.0) {\n      this.lastScaleDelta_ = scaleDelta;\n    }\n\n    // scale anchor point.\n    this.anchor_ = map.getCoordinateFromPixelInternal(\n      map.getEventPixel(centroidFromPointers(this.targetPointers)),\n    );\n\n    // scale, bypass the resolution constraint\n    map.render();\n    view.adjustResolutionInternal(scaleDelta, this.anchor_);\n  }\n\n  /**\n   * Handle pointer up events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleUpEvent(mapBrowserEvent) {\n    if (this.targetPointers.length < 2) {\n      const map = mapBrowserEvent.map;\n      const view = map.getView();\n      const direction = this.lastScaleDelta_ > 1 ? 1 : -1;\n      view.endInteraction(this.duration_, direction);\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Handle pointer down events.\n   * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n   * @return {boolean} If the event was consumed.\n   * @override\n   */\n  handleDownEvent(mapBrowserEvent) {\n    if (this.targetPointers.length >= 2) {\n      const map = mapBrowserEvent.map;\n      this.anchor_ = null;\n      this.lastDistance_ = undefined;\n      this.lastScaleDelta_ = 1;\n      if (!this.handlingDownUpSequence) {\n        map.getView().beginInteraction();\n      }\n      return true;\n    }\n    return false;\n  }\n}\n\nexport default PinchZoom;\n","/**\n * @module ol/interaction/defaults\n */\nimport Collection from '../Collection.js';\nimport Kinetic from '../Kinetic.js';\nimport DoubleClickZoom from './DoubleClickZoom.js';\nimport DragPan from './DragPan.js';\nimport DragRotate from './DragRotate.js';\nimport DragZoom from './DragZoom.js';\nimport KeyboardPan from './KeyboardPan.js';\nimport KeyboardZoom from './KeyboardZoom.js';\nimport MouseWheelZoom from './MouseWheelZoom.js';\nimport PinchRotate from './PinchRotate.js';\nimport PinchZoom from './PinchZoom.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [altShiftDragRotate=true] Whether Alt-Shift-drag rotate is\n * desired.\n * @property {boolean} [onFocusOnly=false] Interact only when the map has the\n * focus. This affects the `MouseWheelZoom` and `DragPan` interactions and is\n * useful when page scroll is desired for maps that do not have the browser's\n * focus.\n * @property {boolean} [doubleClickZoom=true] Whether double click zoom is\n * desired.\n * @property {boolean} [keyboard=true] Whether keyboard interaction is desired.\n * @property {boolean} [mouseWheelZoom=true] Whether mousewheel zoom is desired.\n * @property {boolean} [shiftDragZoom=true] Whether Shift-drag zoom is desired.\n * @property {boolean} [dragPan=true] Whether drag pan is desired.\n * @property {boolean} [pinchRotate=true] Whether pinch rotate is desired.\n * @property {boolean} [pinchZoom=true] Whether pinch zoom is desired.\n * @property {number} [zoomDelta] Zoom level delta when using keyboard or double click zoom.\n * @property {number} [zoomDuration] Duration of the zoom animation in\n * milliseconds.\n */\n\n/**\n * Set of interactions included in maps by default. Specific interactions can be\n * excluded by setting the appropriate option to false in the constructor\n * options, but the order of the interactions is fixed.  If you want to specify\n * a different order for interactions, you will need to create your own\n * {@link module:ol/interaction/Interaction~Interaction} instances and insert\n * them into a {@link module:ol/Collection~Collection} in the order you want\n * before creating your {@link module:ol/Map~Map} instance. Changing the order can\n * be of interest if the event propagation needs to be stopped at a point.\n * The default set of interactions, in sequence, is:\n * {@link module:ol/interaction/DragRotate~DragRotate}\n * {@link module:ol/interaction/DoubleClickZoom~DoubleClickZoom}\n * {@link module:ol/interaction/DragPan~DragPan}\n * {@link module:ol/interaction/PinchRotate~PinchRotate}\n * {@link module:ol/interaction/PinchZoom~PinchZoom}\n * {@link module:ol/interaction/KeyboardPan~KeyboardPan}\n * {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}\n * {@link module:ol/interaction/MouseWheelZoom~MouseWheelZoom}\n * {@link module:ol/interaction/DragZoom~DragZoom}\n *\n * @param {DefaultsOptions} [options] Defaults options.\n * @return {Collection<import(\"./Interaction.js\").default>}\n * A collection of interactions to be used with the {@link module:ol/Map~Map}\n * constructor's `interactions` option.\n * @api\n */\nexport function defaults(options) {\n  options = options ? options : {};\n\n  /** @type {Collection<import(\"./Interaction.js\").default>} */\n  const interactions = new Collection();\n\n  const kinetic = new Kinetic(-0.005, 0.05, 100);\n\n  const altShiftDragRotate =\n    options.altShiftDragRotate !== undefined\n      ? options.altShiftDragRotate\n      : true;\n  if (altShiftDragRotate) {\n    interactions.push(new DragRotate());\n  }\n\n  const doubleClickZoom =\n    options.doubleClickZoom !== undefined ? options.doubleClickZoom : true;\n  if (doubleClickZoom) {\n    interactions.push(\n      new DoubleClickZoom({\n        delta: options.zoomDelta,\n        duration: options.zoomDuration,\n      }),\n    );\n  }\n\n  const dragPan = options.dragPan !== undefined ? options.dragPan : true;\n  if (dragPan) {\n    interactions.push(\n      new DragPan({\n        onFocusOnly: options.onFocusOnly,\n        kinetic: kinetic,\n      }),\n    );\n  }\n\n  const pinchRotate =\n    options.pinchRotate !== undefined ? options.pinchRotate : true;\n  if (pinchRotate) {\n    interactions.push(new PinchRotate());\n  }\n\n  const pinchZoom = options.pinchZoom !== undefined ? options.pinchZoom : true;\n  if (pinchZoom) {\n    interactions.push(\n      new PinchZoom({\n        duration: options.zoomDuration,\n      }),\n    );\n  }\n\n  const keyboard = options.keyboard !== undefined ? options.keyboard : true;\n  if (keyboard) {\n    interactions.push(new KeyboardPan());\n    interactions.push(\n      new KeyboardZoom({\n        delta: options.zoomDelta,\n        duration: options.zoomDuration,\n      }),\n    );\n  }\n\n  const mouseWheelZoom =\n    options.mouseWheelZoom !== undefined ? options.mouseWheelZoom : true;\n  if (mouseWheelZoom) {\n    interactions.push(\n      new MouseWheelZoom({\n        onFocusOnly: options.onFocusOnly,\n        duration: options.zoomDuration,\n      }),\n    );\n  }\n\n  const shiftDragZoom =\n    options.shiftDragZoom !== undefined ? options.shiftDragZoom : true;\n  if (shiftDragZoom) {\n    interactions.push(\n      new DragZoom({\n        duration: options.zoomDuration,\n      }),\n    );\n  }\n\n  return interactions;\n}\n","/**\n * @module ol/layer/Group\n */\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport {assert} from '../asserts.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {getIntersection} from '../extent.js';\nimport {clear} from '../obj.js';\nimport {getUid} from '../util.js';\nimport BaseLayer from './Base.js';\n\n/**\n * @enum {string}\n */\nconst GroupEventType = {\n  /**\n   * Triggered when a layer is added\n   * @event GroupEvent#addlayer\n   * @api\n   */\n  ADDLAYER: 'addlayer',\n  /**\n   * Triggered when a layer is removed\n   * @event GroupEvent#removelayer\n   * @api\n   */\n  REMOVELAYER: 'removelayer',\n};\n\n/**\n * @classdesc\n * A layer group triggers 'addlayer' and 'removelayer' events when layers are added to or removed from\n * the group or one of its child groups.  When a layer group is added to or removed from another layer group,\n * a single event will be triggered (instead of one per layer in the group added or removed).\n */\nexport class GroupEvent extends Event {\n  /**\n   * @param {GroupEventType} type The event type.\n   * @param {BaseLayer} layer The layer.\n   */\n  constructor(type, layer) {\n    super(type);\n\n    /**\n     * The added or removed layer.\n     * @type {BaseLayer}\n     * @api\n     */\n    this.layer = layer;\n  }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./Base\").BaseLayerObjectEventTypes|\n *     'change:layers', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<'addlayer'|'removelayer', GroupEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"./Base\").BaseLayerObjectEventTypes|'addlayer'|'removelayer'|'change:layers', Return>} GroupOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering.  The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering.  At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Array<import(\"./Base.js\").default>|Collection<import(\"./Base.js\").default>} [layers] Child layers.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n  LAYERS: 'layers',\n};\n\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @fires GroupEvent\n * @api\n */\nclass LayerGroup extends BaseLayer {\n  /**\n   * @param {Options} [options] Layer options.\n   */\n  constructor(options) {\n    options = options || {};\n    const baseOptions = /** @type {Options} */ (Object.assign({}, options));\n    delete baseOptions.layers;\n\n    let layers = options.layers;\n\n    super(baseOptions);\n\n    /***\n     * @type {GroupOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {GroupOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {GroupOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {Array<import(\"../events.js\").EventsKey>}\n     */\n    this.layersListenerKeys_ = [];\n\n    /**\n     * @private\n     * @type {Object<string, Array<import(\"../events.js\").EventsKey>>}\n     */\n    this.listenerKeys_ = {};\n\n    this.addChangeListener(Property.LAYERS, this.handleLayersChanged_);\n\n    if (layers) {\n      if (Array.isArray(layers)) {\n        layers = new Collection(layers.slice(), {unique: true});\n      } else {\n        assert(\n          typeof (/** @type {?} */ (layers).getArray) === 'function',\n          'Expected `layers` to be an array or a `Collection`',\n        );\n      }\n    } else {\n      layers = new Collection(undefined, {unique: true});\n    }\n\n    this.setLayers(layers);\n  }\n\n  /**\n   * @private\n   */\n  handleLayerChange_() {\n    this.changed();\n  }\n\n  /**\n   * @private\n   */\n  handleLayersChanged_() {\n    this.layersListenerKeys_.forEach(unlistenByKey);\n    this.layersListenerKeys_.length = 0;\n\n    const layers = this.getLayers();\n    this.layersListenerKeys_.push(\n      listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this),\n      listen(\n        layers,\n        CollectionEventType.REMOVE,\n        this.handleLayersRemove_,\n        this,\n      ),\n    );\n\n    for (const id in this.listenerKeys_) {\n      this.listenerKeys_[id].forEach(unlistenByKey);\n    }\n    clear(this.listenerKeys_);\n\n    const layersArray = layers.getArray();\n    for (let i = 0, ii = layersArray.length; i < ii; i++) {\n      const layer = layersArray[i];\n      this.registerLayerListeners_(layer);\n      this.dispatchEvent(new GroupEvent(GroupEventType.ADDLAYER, layer));\n    }\n    this.changed();\n  }\n\n  /**\n   * @param {BaseLayer} layer The layer.\n   */\n  registerLayerListeners_(layer) {\n    const listenerKeys = [\n      listen(\n        layer,\n        ObjectEventType.PROPERTYCHANGE,\n        this.handleLayerChange_,\n        this,\n      ),\n      listen(layer, EventType.CHANGE, this.handleLayerChange_, this),\n    ];\n\n    if (layer instanceof LayerGroup) {\n      listenerKeys.push(\n        listen(layer, GroupEventType.ADDLAYER, this.handleLayerGroupAdd_, this),\n        listen(\n          layer,\n          GroupEventType.REMOVELAYER,\n          this.handleLayerGroupRemove_,\n          this,\n        ),\n      );\n    }\n\n    this.listenerKeys_[getUid(layer)] = listenerKeys;\n  }\n\n  /**\n   * @param {GroupEvent} event The layer group event.\n   */\n  handleLayerGroupAdd_(event) {\n    this.dispatchEvent(new GroupEvent(GroupEventType.ADDLAYER, event.layer));\n  }\n\n  /**\n   * @param {GroupEvent} event The layer group event.\n   */\n  handleLayerGroupRemove_(event) {\n    this.dispatchEvent(new GroupEvent(GroupEventType.REMOVELAYER, event.layer));\n  }\n\n  /**\n   * @param {import(\"../Collection.js\").CollectionEvent<import(\"./Base.js\").default>} collectionEvent CollectionEvent.\n   * @private\n   */\n  handleLayersAdd_(collectionEvent) {\n    const layer = collectionEvent.element;\n    this.registerLayerListeners_(layer);\n    this.dispatchEvent(new GroupEvent(GroupEventType.ADDLAYER, layer));\n    this.changed();\n  }\n\n  /**\n   * @param {import(\"../Collection.js\").CollectionEvent<import(\"./Base.js\").default>} collectionEvent CollectionEvent.\n   * @private\n   */\n  handleLayersRemove_(collectionEvent) {\n    const layer = collectionEvent.element;\n    const key = getUid(layer);\n    this.listenerKeys_[key].forEach(unlistenByKey);\n    delete this.listenerKeys_[key];\n    this.dispatchEvent(new GroupEvent(GroupEventType.REMOVELAYER, layer));\n    this.changed();\n  }\n\n  /**\n   * Returns the {@link module:ol/Collection~Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n   * in this group.\n   * @return {!Collection<import(\"./Base.js\").default>} Collection of\n   *   {@link module:ol/layer/Base~BaseLayer layers} that are part of this group.\n   * @observable\n   * @api\n   */\n  getLayers() {\n    return /** @type {!Collection<import(\"./Base.js\").default>} */ (\n      this.get(Property.LAYERS)\n    );\n  }\n\n  /**\n   * Set the {@link module:ol/Collection~Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n   * in this group.\n   * @param {!Collection<import(\"./Base.js\").default>} layers Collection of\n   *   {@link module:ol/layer/Base~BaseLayer layers} that are part of this group.\n   * @observable\n   * @api\n   */\n  setLayers(layers) {\n    const collection = this.getLayers();\n    if (collection) {\n      const currentLayers = collection.getArray();\n      for (let i = 0, ii = currentLayers.length; i < ii; ++i) {\n        this.dispatchEvent(\n          new GroupEvent(GroupEventType.REMOVELAYER, currentLayers[i]),\n        );\n      }\n    }\n\n    this.set(Property.LAYERS, layers);\n  }\n\n  /**\n   * @param {Array<import(\"./Layer.js\").default>} [array] Array of layers (to be modified in place).\n   * @return {Array<import(\"./Layer.js\").default>} Array of layers.\n   * @override\n   */\n  getLayersArray(array) {\n    array = array !== undefined ? array : [];\n    this.getLayers().forEach(function (layer) {\n      layer.getLayersArray(array);\n    });\n    return array;\n  }\n\n  /**\n   * Get the layer states list and use this groups z-index as the default\n   * for all layers in this and nested groups, if it is unset at this point.\n   * If dest is not provided and this group's z-index is undefined\n   * 0 is used a the default z-index.\n   * @param {Array<import(\"./Layer.js\").State>} [dest] Optional list\n   * of layer states (to be modified in place).\n   * @return {Array<import(\"./Layer.js\").State>} List of layer states.\n   * @override\n   */\n  getLayerStatesArray(dest) {\n    const states = dest !== undefined ? dest : [];\n    const pos = states.length;\n\n    this.getLayers().forEach(function (layer) {\n      layer.getLayerStatesArray(states);\n    });\n\n    const ownLayerState = this.getLayerState();\n    let defaultZIndex = ownLayerState.zIndex;\n    if (!dest && ownLayerState.zIndex === undefined) {\n      defaultZIndex = 0;\n    }\n    for (let i = pos, ii = states.length; i < ii; i++) {\n      const layerState = states[i];\n      layerState.opacity *= ownLayerState.opacity;\n      layerState.visible = layerState.visible && ownLayerState.visible;\n      layerState.maxResolution = Math.min(\n        layerState.maxResolution,\n        ownLayerState.maxResolution,\n      );\n      layerState.minResolution = Math.max(\n        layerState.minResolution,\n        ownLayerState.minResolution,\n      );\n      layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n      layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n      if (ownLayerState.extent !== undefined) {\n        if (layerState.extent !== undefined) {\n          layerState.extent = getIntersection(\n            layerState.extent,\n            ownLayerState.extent,\n          );\n        } else {\n          layerState.extent = ownLayerState.extent;\n        }\n      }\n      if (layerState.zIndex === undefined) {\n        layerState.zIndex = defaultZIndex;\n      }\n    }\n\n    return states;\n  }\n\n  /**\n   * @return {import(\"../source/Source.js\").State} Source state.\n   * @override\n   */\n  getSourceState() {\n    return 'ready';\n  }\n}\n\nexport default LayerGroup;\n","/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport {wrapX} from '../coordinate.js';\nimport {getWidth} from '../extent.js';\nimport {TRUE} from '../functions.js';\nimport {inView} from '../layer/Layer.js';\nimport {shared as iconImageCache} from '../style/IconImageCache.js';\nimport {compose as composeTransform, makeInverse} from '../transform.js';\nimport {abstract} from '../util.js';\n\n/**\n * @template T\n * @typedef HitMatch\n * @property {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @property {import(\"../layer/Layer.js\").default} layer Layer.\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @property {number} distanceSq Squared distance.\n * @property {import(\"./vector.js\").FeatureCallback<T>} callback Callback.\n */\n\n/**\n * @abstract\n */\nclass MapRenderer extends Disposable {\n  /**\n   * @param {import(\"../Map.js\").default} map Map.\n   */\n  constructor(map) {\n    super();\n\n    /**\n     * @private\n     * @type {import(\"../Map.js\").default}\n     */\n    this.map_ = map;\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../render/EventType.js\").default} type Event type.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   */\n  dispatchRenderEvent(type, frameState) {\n    abstract();\n  }\n\n  /**\n   * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n   * @protected\n   */\n  calculateMatrices2D(frameState) {\n    const viewState = frameState.viewState;\n    const coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n    const pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n\n    composeTransform(\n      coordinateToPixelTransform,\n      frameState.size[0] / 2,\n      frameState.size[1] / 2,\n      1 / viewState.resolution,\n      -1 / viewState.resolution,\n      -viewState.rotation,\n      -viewState.center[0],\n      -viewState.center[1],\n    );\n\n    makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n  }\n\n  /**\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {boolean} checkWrapped Check for wrapped geometries.\n   * @param {import(\"./vector.js\").FeatureCallback<T>} callback Feature callback.\n   * @param {S} thisArg Value to use as `this` when executing `callback`.\n   * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n   *     function, only layers which are visible and for which this function\n   *     returns `true` will be tested for features.  By default, all visible\n   *     layers will be tested.\n   * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n   * @return {T|undefined} Callback result.\n   * @template S,T,U\n   */\n  forEachFeatureAtCoordinate(\n    coordinate,\n    frameState,\n    hitTolerance,\n    checkWrapped,\n    callback,\n    thisArg,\n    layerFilter,\n    thisArg2,\n  ) {\n    let result;\n    const viewState = frameState.viewState;\n\n    /**\n     * @param {boolean} managed Managed layer.\n     * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n     * @param {import(\"../layer/Layer.js\").default} layer Layer.\n     * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n     * @return {T|undefined} Callback result.\n     */\n    function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {\n      return callback.call(thisArg, feature, managed ? layer : null, geometry);\n    }\n\n    const projection = viewState.projection;\n\n    const translatedCoordinate = wrapX(coordinate.slice(), projection);\n    const offsets = [[0, 0]];\n    if (projection.canWrapX() && checkWrapped) {\n      const projectionExtent = projection.getExtent();\n      const worldWidth = getWidth(projectionExtent);\n      offsets.push([-worldWidth, 0], [worldWidth, 0]);\n    }\n\n    const layerStates = frameState.layerStatesArray;\n    const numLayers = layerStates.length;\n\n    const matches = /** @type {Array<HitMatch<T>>} */ ([]);\n    const tmpCoord = [];\n    for (let i = 0; i < offsets.length; i++) {\n      for (let j = numLayers - 1; j >= 0; --j) {\n        const layerState = layerStates[j];\n        const layer = layerState.layer;\n        if (\n          layer.hasRenderer() &&\n          inView(layerState, viewState) &&\n          layerFilter.call(thisArg2, layer)\n        ) {\n          const layerRenderer = layer.getRenderer();\n          const source = layer.getSource();\n          if (layerRenderer && source) {\n            const coordinates = source.getWrapX()\n              ? translatedCoordinate\n              : coordinate;\n            const callback = forEachFeatureAtCoordinate.bind(\n              null,\n              layerState.managed,\n            );\n            tmpCoord[0] = coordinates[0] + offsets[i][0];\n            tmpCoord[1] = coordinates[1] + offsets[i][1];\n            result = layerRenderer.forEachFeatureAtCoordinate(\n              tmpCoord,\n              frameState,\n              hitTolerance,\n              callback,\n              matches,\n            );\n          }\n          if (result) {\n            return result;\n          }\n        }\n      }\n    }\n    if (matches.length === 0) {\n      return undefined;\n    }\n    const order = 1 / matches.length;\n    matches.forEach((m, i) => (m.distanceSq += i * order));\n    matches.sort((a, b) => a.distanceSq - b.distanceSq);\n    matches.some((m) => {\n      return (result = m.callback(m.feature, m.layer, m.geometry));\n    });\n    return result;\n  }\n\n  /**\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {boolean} checkWrapped Check for wrapped geometries.\n   * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n   *     function, only layers which are visible and for which this function\n   *     returns `true` will be tested for features.  By default, all visible\n   *     layers will be tested.\n   * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n   * @return {boolean} Is there a feature at the given coordinate?\n   * @template U\n   */\n  hasFeatureAtCoordinate(\n    coordinate,\n    frameState,\n    hitTolerance,\n    checkWrapped,\n    layerFilter,\n    thisArg,\n  ) {\n    const hasFeature = this.forEachFeatureAtCoordinate(\n      coordinate,\n      frameState,\n      hitTolerance,\n      checkWrapped,\n      TRUE,\n      this,\n      layerFilter,\n      thisArg,\n    );\n\n    return hasFeature !== undefined;\n  }\n\n  /**\n   * @return {import(\"../Map.js\").default} Map.\n   */\n  getMap() {\n    return this.map_;\n  }\n\n  /**\n   * Render.\n   * @abstract\n   * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n   */\n  renderFrame(frameState) {\n    abstract();\n  }\n\n  /**\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @protected\n   */\n  scheduleExpireIconCache(frameState) {\n    if (iconImageCache.canExpireCache()) {\n      frameState.postRenderFunctions.push(expireIconCache);\n    }\n  }\n}\n\n/**\n * @param {import(\"../Map.js\").default} map Map.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n  iconImageCache.expire();\n}\n\nexport default MapRenderer;\n","/**\n * @module ol/renderer/Composite\n */\nimport ObjectEventType from '../ObjectEventType.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {createMockDiv, isCanvas, replaceChildren} from '../dom.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {WORKER_OFFSCREEN_CANVAS} from '../has.js';\nimport BaseVectorLayer from '../layer/BaseVector.js';\nimport {inView} from '../layer/Layer.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport {checkedFonts} from '../render/canvas.js';\nimport {fromString} from '../transform.js';\nimport MapRenderer from './Map.js';\n\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nclass CompositeMapRenderer extends MapRenderer {\n  /**\n   * @param {import(\"../Map.js\").default} map Map.\n   */\n  constructor(map) {\n    super(map);\n\n    /**\n     * @private\n     * @type {import(\"../events.js\").EventsKey}\n     */\n    this.fontChangeListenerKey_ = listen(\n      checkedFonts,\n      ObjectEventType.PROPERTYCHANGE,\n      map.redrawText,\n      map,\n    );\n\n    /**\n     * @private\n     * @type {HTMLDivElement}\n     */\n    this.element_ = WORKER_OFFSCREEN_CANVAS\n      ? createMockDiv()\n      : document.createElement('div');\n    const style = this.element_.style;\n    style.position = 'absolute';\n    style.width = '100%';\n    style.height = '100%';\n    style.zIndex = '0';\n\n    this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n\n    const container = map.getViewport();\n    if (container) {\n      // maps in a worker do not have a viewport.\n      container.insertBefore(this.element_, container.firstChild || null);\n    }\n\n    /**\n     * @private\n     * @type {Array<HTMLElement>}\n     */\n    this.children_ = [];\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderedVisible_ = true;\n  }\n\n  /**\n   * @param {import(\"../render/EventType.js\").default} type Event type.\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @override\n   */\n  dispatchRenderEvent(type, frameState) {\n    const map = this.getMap();\n    if (map.hasListener(type)) {\n      const event = new RenderEvent(type, undefined, frameState);\n      map.dispatchEvent(event);\n    }\n  }\n\n  /**\n   * @override\n   */\n  disposeInternal() {\n    unlistenByKey(this.fontChangeListenerKey_);\n    this.element_.remove();\n    super.disposeInternal();\n  }\n\n  /**\n   * Render.\n   * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n   * @override\n   */\n  renderFrame(frameState) {\n    if (!frameState) {\n      if (this.renderedVisible_) {\n        this.element_.style.display = 'none';\n        this.renderedVisible_ = false;\n      }\n      return;\n    }\n\n    this.calculateMatrices2D(frameState);\n    this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n\n    const layerStatesArray = frameState.layerStatesArray.sort(\n      (a, b) => a.zIndex - b.zIndex,\n    );\n    const declutter = layerStatesArray.some(\n      (layerState) =>\n        layerState.layer instanceof BaseVectorLayer &&\n        layerState.layer.getDeclutter(),\n    );\n    if (declutter) {\n      // Some layers need decluttering, turn on deferred rendering hint\n      frameState.declutter = {};\n    }\n    const viewState = frameState.viewState;\n\n    this.children_.length = 0;\n\n    const renderedLayerStates = [];\n    let previousElement = null;\n    for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n      const layerState = layerStatesArray[i];\n      frameState.layerIndex = i;\n\n      const layer = layerState.layer;\n      const sourceState = layer.getSourceState();\n      if (\n        !inView(layerState, viewState) ||\n        (sourceState != 'ready' && sourceState != 'undefined')\n      ) {\n        layer.unrender();\n        continue;\n      }\n\n      const element = layer.render(frameState, previousElement);\n      if (!element) {\n        continue;\n      }\n      if (element !== previousElement) {\n        this.children_.push(element);\n        previousElement = element;\n      }\n\n      renderedLayerStates.push(layerState);\n    }\n\n    this.declutter(frameState, renderedLayerStates);\n\n    replaceChildren(this.element_, this.children_);\n\n    const map = this.getMap();\n    const mapCanvas = map.getTargetElement();\n    if (isCanvas(mapCanvas)) {\n      // Canvas composition when container is a canvas\n      const mapContext = mapCanvas.getContext('2d');\n      for (const container of this.children_) {\n        const canvas = container.firstElementChild || container;\n        const backgroundColor = container.style.backgroundColor;\n        if (backgroundColor && (!isCanvas(canvas) || canvas.width > 0)) {\n          mapContext.fillStyle = backgroundColor;\n          mapContext.fillRect(0, 0, mapCanvas.width, mapCanvas.height);\n        }\n        if (isCanvas(canvas) && canvas.width > 0) {\n          mapContext.save();\n          const opacity = container.style.opacity || canvas.style.opacity;\n          mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity);\n          const transform = canvas.style.transform;\n          if (transform) {\n            // Get the transform parameters from the style's transform matrix\n            mapContext.transform(\n              .../** @type {[number, number, number, number, number, number]} */ (\n                fromString(transform)\n              ),\n            );\n          } else {\n            const w = parseFloat(canvas.style.width) / canvas.width;\n            const h = parseFloat(canvas.style.height) / canvas.height;\n            mapContext.transform(w, 0, 0, h, 0, 0);\n          }\n          mapContext.drawImage(canvas, 0, 0);\n          mapContext.restore();\n        }\n      }\n    }\n\n    this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n\n    if (!this.renderedVisible_) {\n      this.element_.style.display = '';\n      this.renderedVisible_ = true;\n    }\n\n    this.scheduleExpireIconCache(frameState);\n  }\n\n  /**\n   * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n   * @param {Array<import('../layer/Layer.js').State>} layerStates Layers.\n   */\n  declutter(frameState, layerStates) {\n    if (!frameState.declutter) {\n      return;\n    }\n    for (let i = layerStates.length - 1; i >= 0; --i) {\n      const layerState = layerStates[i];\n      const layer = layerState.layer;\n      if (layer.getDeclutter()) {\n        layer.renderDeclutter(frameState, layerState);\n      }\n    }\n    layerStates.forEach((layerState) =>\n      layerState.layer.renderDeferred(frameState),\n    );\n  }\n}\n\nexport default CompositeMapRenderer;\n","/**\n * @module ol/Map\n */\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport BaseObject from './Object.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport TileQueue, {getTilePriority} from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport {equals} from './array.js';\nimport {assert} from './asserts.js';\nimport {warn} from './console.js';\nimport {defaults as defaultControls} from './control/defaults.js';\nimport {isCanvas} from './dom.js';\nimport EventType from './events/EventType.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {\n  clone,\n  createOrUpdateEmpty,\n  equals as equalsExtent,\n  getForViewAndSize,\n  isEmpty,\n} from './extent.js';\nimport {TRUE} from './functions.js';\nimport {\n  DEVICE_PIXEL_RATIO,\n  PASSIVE_EVENT_LISTENERS,\n  WORKER_OFFSCREEN_CANVAS,\n} from './has.js';\nimport {defaults as defaultInteractions} from './interaction/defaults.js';\nimport LayerGroup, {GroupEvent} from './layer/Group.js';\nimport Layer from './layer/Layer.js';\nimport PointerEventType from './pointer/EventType.js';\nimport {fromUserCoordinate, toUserCoordinate} from './proj.js';\nimport RenderEventType from './render/EventType.js';\nimport CompositeMapRenderer from './renderer/Composite.js';\nimport {hasArea} from './size.js';\nimport {\n  apply as applyTransform,\n  create as createTransform,\n} from './transform.js';\nimport {getUid} from './util.js';\n\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate Animate.\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform CoordinateToPixelTransform.\n * @property {Object<string, import(\"rbush\").default<import('./render/canvas/Executor.js').DeclutterEntry>>|null} declutter\n * Declutter trees by declutter group.\n * When null, no decluttering is needed because no layers have decluttering enabled.\n * @property {null|import(\"./extent.js\").Extent} extent Extent (in view projection coordinates).\n * @property {import(\"./extent.js\").Extent} [nextExtent] Next extent during an animation series.\n * @property {number} index Index.\n * @property {Array<import(\"./layer/Layer.js\").State>} layerStatesArray LayerStatesArray.\n * @property {number} layerIndex LayerIndex.\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform PixelToCoordinateTransform.\n * @property {Array<PostRenderFunction>} postRenderFunctions PostRenderFunctions.\n * @property {import(\"./size.js\").Size} size Size.\n * @property {TileQueue} tileQueue TileQueue.\n * @property {!Object<string, Object<string, boolean>>} usedTiles UsedTiles.\n * @property {Array<number>} viewHints ViewHints.\n * @property {!Object<string, Object<string, boolean>>} wantedTiles WantedTiles.\n * @property {string} mapId The id of the map.\n * @property {Object<string, boolean>} renderTargets Identifiers of previously rendered elements.\n */\n\n/**\n * @typedef {function(Map, FrameState): any} PostRenderFunction\n */\n\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default<import(\"./source/Source\").default>): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer~Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in css pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for wrapped geometries inside the range of\n *   +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection<import(\"./control/Control.js\").default>} [controls] Controls.\n * @property {Collection<import(\"./interaction/Interaction.js\").default>} [interactions] Interactions.\n * @property {HTMLElement|Document} keyboardEventTarget KeyboardEventTarget.\n * @property {Collection<import(\"./Overlay.js\").default>} overlays Overlays.\n * @property {Object<string, *>} values Values.\n */\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:layergroup'|'change:size'|'change:target'|'change:view'} MapObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n *    import(\"./Observable\").OnSignature<MapObjectEventTypes, import(\"./Object\").ObjectEvent, Return> &\n *    import(\"./Observable\").OnSignature<import(\"./MapBrowserEventType\").Types, import(\"./MapBrowserEvent\").default, Return> &\n *    import(\"./Observable\").OnSignature<import(\"./MapEventType\").Types, import(\"./MapEvent\").default, Return> &\n *    import(\"./Observable\").OnSignature<import(\"./render/EventType\").MapRenderEventTypes, import(\"./render/Event\").default, Return> &\n *    import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|MapObjectEventTypes|\n *      import(\"./MapBrowserEventType\").Types|import(\"./MapEventType\").Types|\n *      import(\"./render/EventType\").MapRenderEventTypes, Return>} MapEventHandler\n */\n\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection<import(\"./control/Control.js\").default>|Array<import(\"./control/Control.js\").default>} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control/defaults.defaults} is used. In a worker, no controls are added by default.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection<import(\"./interaction/Interaction.js\").default>|Array<import(\"./interaction/Interaction.js\").default>} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction/defaults.defaults} is used. In a worker, no interactions are added by default.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array<import(\"./layer/Base.js\").default>|Collection<import(\"./layer/Base.js\").default>|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection<import(\"./Overlay.js\").default>|Array<import(\"./Overlay.js\").default>} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string|HTMLCanvasElement|OffscreenCanvas} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered. If passed by element, the container can be in a secondary document.\n * For use in workers or when exporting a map, use an `OffscreenCanvas` or `HTMLCanvasElement` as target,\n * with a width and height in physical pixels, optionally multiplied by and a scale transform matching\n * the map's pixel ratio.\n * For accessibility (focus and keyboard events for map navigation), the `target` element must have a\n *  properly configured `tabindex` attribute. If the `target` element is inside a Shadow DOM, the\n *  `tabindex` atribute must be set on the custom element's host element.\n * **Note:** CSS `transform` support for the target element is limited to `scale`.\n * @property {View|Promise<import(\"./View.js\").ViewOptions>} [view] The map's view.  No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n */\nfunction removeLayerMapProperty(layer) {\n  if (layer instanceof Layer) {\n    layer.setMapInternal(null);\n    return;\n  }\n  if (layer instanceof LayerGroup) {\n    layer.getLayers().forEach(removeLayerMapProperty);\n  }\n}\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @param {Map} map Map.\n */\nfunction setLayerMapProperty(layer, map) {\n  if (layer instanceof Layer) {\n    layer.setMapInternal(map);\n    return;\n  }\n  if (layer instanceof LayerGroup) {\n    const layers = layer.getLayers().getArray();\n    for (let i = 0, ii = layers.length; i < ii; ++i) {\n      setLayerMapProperty(layers[i], map);\n    }\n  }\n}\n\n/**\n * @classdesc\n * The map is the core component of OpenLayers. For a map to render, a view,\n * one or more layers, and a target container are needed:\n *\n *     import Map from 'ol/Map.js';\n *     import View from 'ol/View.js';\n *     import TileLayer from 'ol/layer/Tile.js';\n *     import OSM from 'ol/source/OSM.js';\n *\n *     const map = new Map({\n *       view: new View({\n *         center: [0, 0],\n *         zoom: 1,\n *       }),\n *       layers: [\n *         new TileLayer({\n *           source: new OSM(),\n *         }),\n *       ],\n *       target: 'map',\n *     });\n *\n * The above snippet creates a map using a {@link module:ol/layer/Tile~TileLayer} to\n * display {@link module:ol/source/OSM~OSM} OSM data and render it to a DOM\n * element with the id `map`.\n *\n * The constructor places a viewport container (with CSS class name\n * `ol-viewport`) in the target element (see `getViewport()`), and then two\n * further elements within the viewport: one with CSS class name\n * `ol-overlaycontainer-stopevent` for controls and some overlays, and one with\n * CSS class name `ol-overlaycontainer` for other overlays (see the `stopEvent`\n * option of {@link module:ol/Overlay~Overlay} for the difference). The map\n * itself is placed in a further element within the viewport.\n *\n * Layers are stored as a {@link module:ol/Collection~Collection} in\n * layerGroups. A top-level group is provided by the library. This is what is\n * accessed by `getLayerGroup` and `setLayerGroup`. Layers entered in the\n * options are added to this group, and `addLayer` and `removeLayer` change the\n * layer collection in the group. `getLayers` is a convenience function for\n * `getLayerGroup().getLayers()`. Note that {@link module:ol/layer/Group~LayerGroup}\n * is a subclass of {@link module:ol/layer/Base~BaseLayer}, so layers entered in the\n * options or added with `addLayer` can be groups, which can contain further\n * groups, and so on.\n *\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nclass Map extends BaseObject {\n  /**\n   * @param {MapOptions} [options] Map options.\n   */\n  constructor(options) {\n    super();\n\n    options = options || {};\n\n    /***\n     * @type {MapEventHandler<import(\"./events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {MapEventHandler<import(\"./events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {MapEventHandler<void>}\n     */\n    this.un;\n\n    const optionsInternal = createOptionsInternal(options);\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderComplete_ = false;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.loaded_ = true;\n\n    /** @private */\n    this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this);\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.maxTilesLoading_ =\n      options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ =\n      options.pixelRatio !== undefined\n        ? options.pixelRatio\n        : DEVICE_PIXEL_RATIO;\n\n    /**\n     * @private\n     * @type {ReturnType<typeof setTimeout>}\n     */\n    this.postRenderTimeoutHandle_;\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.animationDelayKey_;\n\n    /**\n     * @private\n     */\n    this.animationDelay_ = this.animationDelay_.bind(this);\n\n    /**\n     * @private\n     * @type {import(\"./transform.js\").Transform}\n     */\n    this.coordinateToPixelTransform_ = createTransform();\n\n    /**\n     * @private\n     * @type {import(\"./transform.js\").Transform}\n     */\n    this.pixelToCoordinateTransform_ = createTransform();\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.frameIndex_ = 0;\n\n    /**\n     * @private\n     * @type {?FrameState}\n     */\n    this.frameState_ = null;\n\n    /**\n     * The extent at the previous 'moveend' event.\n     * @private\n     * @type {import(\"./extent.js\").Extent}\n     */\n    this.previousExtent_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"./events.js\").EventsKey}\n     */\n    this.viewPropertyListenerKey_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"./events.js\").EventsKey}\n     */\n    this.viewChangeListenerKey_ = null;\n\n    /**\n     * @private\n     * @type {?Array<import(\"./events.js\").EventsKey>}\n     */\n    this.layerGroupPropertyListenerKeys_ = null;\n\n    /**\n     * @private\n     * @type {!HTMLElement}\n     */\n    if (!WORKER_OFFSCREEN_CANVAS) {\n      this.viewport_ = document.createElement('div');\n      this.viewport_.className =\n        'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n      this.viewport_.style.position = 'relative';\n      this.viewport_.style.overflow = 'hidden';\n      this.viewport_.style.width = '100%';\n      this.viewport_.style.height = '100%';\n\n      /**\n       * @private\n       * @type {!HTMLElement}\n       */\n      this.overlayContainer_ = document.createElement('div');\n      this.overlayContainer_.style.position = 'absolute';\n      this.overlayContainer_.style.zIndex = '0';\n      this.overlayContainer_.style.width = '100%';\n      this.overlayContainer_.style.height = '100%';\n      this.overlayContainer_.style.pointerEvents = 'none';\n      this.overlayContainer_.className = 'ol-overlaycontainer';\n      this.viewport_.appendChild(this.overlayContainer_);\n\n      /**\n       * @private\n       * @type {!HTMLElement}\n       */\n      this.overlayContainerStopEvent_ = document.createElement('div');\n      this.overlayContainerStopEvent_.style.position = 'absolute';\n      this.overlayContainerStopEvent_.style.zIndex = '0';\n      this.overlayContainerStopEvent_.style.width = '100%';\n      this.overlayContainerStopEvent_.style.height = '100%';\n      this.overlayContainerStopEvent_.style.pointerEvents = 'none';\n      this.overlayContainerStopEvent_.className =\n        'ol-overlaycontainer-stopevent';\n      this.viewport_.appendChild(this.overlayContainerStopEvent_);\n    }\n\n    /**\n     * @private\n     * @type {MapBrowserEventHandler}\n     */\n    this.mapBrowserEventHandler_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.moveTolerance_ = options.moveTolerance;\n\n    /**\n     * @private\n     * @type {HTMLElement|Document}\n     */\n    this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n\n    /**\n     * @private\n     * @type {?Array<import(\"./events.js\").EventsKey>}\n     */\n    this.targetChangeHandlerKeys_ = null;\n\n    /**\n     * @private\n     * @type {HTMLElement|null}\n     */\n    this.targetElement_ = null;\n\n    if (!WORKER_OFFSCREEN_CANVAS) {\n      /**\n       * @private\n       * @type {ResizeObserver}\n       */\n      this.resizeObserver_ = new ResizeObserver(() => this.updateSize());\n    }\n\n    /**\n     * @type {Collection<import(\"./control/Control.js\").default>}\n     * @protected\n     */\n    this.controls =\n      optionsInternal.controls ||\n      (WORKER_OFFSCREEN_CANVAS ? new Collection() : defaultControls());\n\n    /**\n     * @type {Collection<import(\"./interaction/Interaction.js\").default>}\n     * @protected\n     */\n    this.interactions =\n      optionsInternal.interactions ||\n      (WORKER_OFFSCREEN_CANVAS\n        ? new Collection()\n        : defaultInteractions({\n            onFocusOnly: true,\n          }));\n\n    /**\n     * @type {Collection<import(\"./Overlay.js\").default>}\n     * @private\n     */\n    this.overlays_ = optionsInternal.overlays;\n\n    /**\n     * A lookup of overlays by id.\n     * @private\n     * @type {Object<string, import(\"./Overlay.js\").default>}\n     */\n    this.overlayIdIndex_ = {};\n\n    /**\n     * @type {import(\"./renderer/Map.js\").default|null}\n     * @private\n     */\n    this.renderer_ = null;\n\n    /**\n     * @private\n     * @type {!Array<PostRenderFunction>}\n     */\n    this.postRenderFunctions_ = [];\n\n    /**\n     * @private\n     * @type {TileQueue}\n     */\n    this.tileQueue_ = new TileQueue(\n      this.getTilePriority.bind(this),\n      this.handleTileChange_.bind(this),\n    );\n\n    this.addChangeListener(\n      MapProperty.LAYERGROUP,\n      this.handleLayerGroupChanged_,\n    );\n    this.addChangeListener(MapProperty.VIEW, this.handleViewChanged_);\n    this.addChangeListener(MapProperty.SIZE, this.handleSizeChanged_);\n    this.addChangeListener(MapProperty.TARGET, this.handleTargetChanged_);\n\n    // setProperties will trigger the rendering of the map if the map\n    // is \"defined\" already.\n    this.setProperties(optionsInternal.values);\n\n    const map = this;\n    if (options.view && !(options.view instanceof View)) {\n      options.view.then(function (viewOptions) {\n        map.setView(new View(viewOptions));\n      });\n    }\n\n    this.controls.addEventListener(\n      CollectionEventType.ADD,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./control/Control.js\").default>} event CollectionEvent\n       */\n      (event) => {\n        event.element.setMap(this);\n      },\n    );\n\n    this.controls.addEventListener(\n      CollectionEventType.REMOVE,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./control/Control.js\").default>} event CollectionEvent.\n       */\n      (event) => {\n        event.element.setMap(null);\n      },\n    );\n\n    this.interactions.addEventListener(\n      CollectionEventType.ADD,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./interaction/Interaction.js\").default>} event CollectionEvent.\n       */\n      (event) => {\n        event.element.setMap(this);\n      },\n    );\n\n    this.interactions.addEventListener(\n      CollectionEventType.REMOVE,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./interaction/Interaction.js\").default>} event CollectionEvent.\n       */\n      (event) => {\n        event.element.setMap(null);\n      },\n    );\n\n    this.overlays_.addEventListener(\n      CollectionEventType.ADD,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./Overlay.js\").default>} event CollectionEvent.\n       */\n      (event) => {\n        this.addOverlayInternal_(event.element);\n      },\n    );\n\n    this.overlays_.addEventListener(\n      CollectionEventType.REMOVE,\n      /**\n       * @param {import(\"./Collection.js\").CollectionEvent<import(\"./Overlay.js\").default>} event CollectionEvent.\n       */\n      (event) => {\n        const id = event.element.getId();\n        if (id !== undefined) {\n          delete this.overlayIdIndex_[id.toString()];\n        }\n        event.element.setMap(null);\n      },\n    );\n\n    this.controls.forEach(\n      /**\n       * @param {import(\"./control/Control.js\").default} control Control.\n       */\n      (control) => {\n        control.setMap(this);\n      },\n    );\n\n    this.interactions.forEach(\n      /**\n       * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n       */\n      (interaction) => {\n        interaction.setMap(this);\n      },\n    );\n\n    this.overlays_.forEach(this.addOverlayInternal_.bind(this));\n  }\n\n  /**\n   * Add the given control to the map.\n   * @param {import(\"./control/Control.js\").default} control Control.\n   * @api\n   */\n  addControl(control) {\n    this.getControls().push(control);\n  }\n\n  /**\n   * Add the given interaction to the map. If you want to add an interaction\n   * at another point of the collection use `getInteractions()` and the methods\n   * available on {@link module:ol/Collection~Collection}. This can be used to\n   * stop the event propagation from the handleEvent function. The interactions\n   * get to handle the events in the reverse order of this collection.\n   * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n   * @api\n   */\n  addInteraction(interaction) {\n    this.getInteractions().push(interaction);\n  }\n\n  /**\n   * Adds the given layer to the top of this map. If you want to add a layer\n   * elsewhere in the stack, use `getLayers()` and the methods available on\n   * {@link module:ol/Collection~Collection}.\n   * @param {import(\"./layer/Base.js\").default} layer Layer.\n   * @api\n   */\n  addLayer(layer) {\n    const layers = this.getLayerGroup().getLayers();\n    layers.push(layer);\n  }\n\n  /**\n   * @param {import(\"./layer/Group.js\").GroupEvent} event The layer add event.\n   * @private\n   */\n  handleLayerAdd_(event) {\n    setLayerMapProperty(event.layer, this);\n  }\n\n  /**\n   * Add the given overlay to the map.\n   * @param {import(\"./Overlay.js\").default} overlay Overlay.\n   * @api\n   */\n  addOverlay(overlay) {\n    this.getOverlays().push(overlay);\n  }\n\n  /**\n   * This deals with map's overlay collection changes.\n   * @param {import(\"./Overlay.js\").default} overlay Overlay.\n   * @private\n   */\n  addOverlayInternal_(overlay) {\n    const id = overlay.getId();\n    if (id !== undefined) {\n      this.overlayIdIndex_[id.toString()] = overlay;\n    }\n    overlay.setMap(this);\n  }\n\n  /**\n   *\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.controls.clear();\n    this.interactions.clear();\n    this.overlays_.clear();\n    this.resizeObserver_?.disconnect();\n    this.setTarget(null);\n    super.disposeInternal();\n  }\n\n  /**\n   * Detect features that intersect a pixel on the viewport, and execute a\n   * callback with each intersecting feature. Layers included in the detection can\n   * be configured through the `layerFilter` option in `options`.\n   * For polygons without a fill, only the stroke will be used for hit detection.\n   * Polygons must have a fill style applied to ensure that pixels inside a polygon are detected.\n   * The fill can be transparent.\n   * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n   * @param {function(import(\"./Feature.js\").FeatureLike, import(\"./layer/Layer.js\").default<import(\"./source/Source\").default>, import(\"./geom/SimpleGeometry.js\").default): T} callback Feature callback. The callback will be\n   *     called with two arguments. The first argument is one\n   *     {@link module:ol/Feature~Feature feature} or\n   *     {@link module:ol/render/Feature~RenderFeature render feature} at the pixel, the second is\n   *     the {@link module:ol/layer/Layer~Layer layer} of the feature and will be null for\n   *     unmanaged layers. To stop detection, callback functions can return a\n   *     truthy value.\n   * @param {AtPixelOptions} [options] Optional options.\n   * @return {T|undefined} Callback result, i.e. the return value of last\n   * callback execution, or the first truthy callback return value.\n   * @template T\n   * @api\n   */\n  forEachFeatureAtPixel(pixel, callback, options) {\n    if (!this.frameState_ || !this.renderer_) {\n      return;\n    }\n    const coordinate = this.getCoordinateFromPixelInternal(pixel);\n    options = options !== undefined ? options : {};\n    const hitTolerance =\n      options.hitTolerance !== undefined ? options.hitTolerance : 0;\n    const layerFilter =\n      options.layerFilter !== undefined ? options.layerFilter : TRUE;\n    const checkWrapped = options.checkWrapped !== false;\n    return this.renderer_.forEachFeatureAtCoordinate(\n      coordinate,\n      this.frameState_,\n      hitTolerance,\n      checkWrapped,\n      callback,\n      null,\n      layerFilter,\n      null,\n    );\n  }\n\n  /**\n   * Get all features that intersect a pixel on the viewport.\n   * For polygons without a fill, only the stroke will be used for hit detection.\n   * Polygons must have a fill style applied to ensure that pixels inside a polygon are detected.\n   * The fill can be transparent.\n   * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n   * @param {AtPixelOptions} [options] Optional options.\n   * @return {Array<import(\"./Feature.js\").FeatureLike>} The detected features or\n   * an empty array if none were found.\n   * @api\n   */\n  getFeaturesAtPixel(pixel, options) {\n    const features = [];\n    this.forEachFeatureAtPixel(\n      pixel,\n      function (feature) {\n        features.push(feature);\n      },\n      options,\n    );\n    return features;\n  }\n\n  /**\n   * Get all layers from all layer groups.\n   * @return {Array<import(\"./layer/Layer.js\").default>} Layers.\n   * @api\n   */\n  getAllLayers() {\n    const layers = [];\n    function addLayersFrom(layerGroup) {\n      layerGroup.forEach(function (layer) {\n        if (layer instanceof LayerGroup) {\n          addLayersFrom(layer.getLayers());\n        } else {\n          layers.push(layer);\n        }\n      });\n    }\n    addLayersFrom(this.getLayers());\n    return layers;\n  }\n\n  /**\n   * Detect if features intersect a pixel on the viewport. Layers included in the\n   * detection can be configured through the `layerFilter` option.\n   * For polygons without a fill, only the stroke will be used for hit detection.\n   * Polygons must have a fill style applied to ensure that pixels inside a polygon are detected.\n   * The fill can be transparent.\n   * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n   * @param {AtPixelOptions} [options] Optional options.\n   * @return {boolean} Is there a feature at the given pixel?\n   * @api\n   */\n  hasFeatureAtPixel(pixel, options) {\n    if (!this.frameState_ || !this.renderer_) {\n      return false;\n    }\n    const coordinate = this.getCoordinateFromPixelInternal(pixel);\n    options = options !== undefined ? options : {};\n    const layerFilter =\n      options.layerFilter !== undefined ? options.layerFilter : TRUE;\n    const hitTolerance =\n      options.hitTolerance !== undefined ? options.hitTolerance : 0;\n    const checkWrapped = options.checkWrapped !== false;\n    return this.renderer_.hasFeatureAtCoordinate(\n      coordinate,\n      this.frameState_,\n      hitTolerance,\n      checkWrapped,\n      layerFilter,\n      null,\n    );\n  }\n\n  /**\n   * Returns the coordinate in user projection for a browser event.\n   * @param {MouseEvent} event Event.\n   * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n   * @api\n   */\n  getEventCoordinate(event) {\n    return this.getCoordinateFromPixel(this.getEventPixel(event));\n  }\n\n  /**\n   * Returns the coordinate in view projection for a browser event.\n   * @param {MouseEvent} event Event.\n   * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n   */\n  getEventCoordinateInternal(event) {\n    return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n  }\n\n  /**\n   * Returns the map pixel position for a browser event relative to the viewport.\n   * @param {UIEvent|{clientX: number, clientY: number}} event Event.\n   * @return {import(\"./pixel.js\").Pixel} Pixel.\n   * @api\n   */\n  getEventPixel(event) {\n    const viewport = this.viewport_;\n    const viewportPosition = viewport.getBoundingClientRect();\n    const viewportSize = this.getSize();\n    const scaleX = viewportPosition.width / viewportSize[0];\n    const scaleY = viewportPosition.height / viewportSize[1];\n    const eventPosition =\n      //FIXME Are we really calling this with a TouchEvent anywhere?\n      'changedTouches' in event\n        ? /** @type {TouchEvent} */ (event).changedTouches[0]\n        : /** @type {MouseEvent} */ (event);\n\n    return [\n      (eventPosition.clientX - viewportPosition.left) / scaleX,\n      (eventPosition.clientY - viewportPosition.top) / scaleY,\n    ];\n  }\n\n  /**\n   * Get the target in which this map is rendered.\n   * Note that this returns what is entered as an option or in setTarget:\n   * if that was an element, it returns an element; if a string, it returns that.\n   * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n   *     map is rendered in.\n   * @observable\n   * @api\n   */\n  getTarget() {\n    return /** @type {HTMLElement|string|undefined} */ (\n      this.get(MapProperty.TARGET)\n    );\n  }\n\n  /**\n   * Get the DOM element into which this map is rendered. In contrast to\n   * `getTarget` this method always return an `Element`, or `null` if the\n   * map has no target.\n   * @return {HTMLElement} The element that the map is rendered in.\n   * @api\n   */\n  getTargetElement() {\n    return this.targetElement_;\n  }\n\n  /**\n   * Get the coordinate for a given pixel.  This returns a coordinate in the\n   * user projection.\n   * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n   * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n   * @api\n   */\n  getCoordinateFromPixel(pixel) {\n    return toUserCoordinate(\n      this.getCoordinateFromPixelInternal(pixel),\n      this.getView().getProjection(),\n    );\n  }\n\n  /**\n   * Get the coordinate for a given pixel.  This returns a coordinate in the\n   * map view projection.\n   * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n   * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n   */\n  getCoordinateFromPixelInternal(pixel) {\n    const frameState = this.frameState_;\n    if (!frameState) {\n      return null;\n    }\n    return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n  }\n\n  /**\n   * Get the map controls. Modifying this collection changes the controls\n   * associated with the map.\n   * @return {Collection<import(\"./control/Control.js\").default>} Controls.\n   * @api\n   */\n  getControls() {\n    return this.controls;\n  }\n\n  /**\n   * Get the map overlays. Modifying this collection changes the overlays\n   * associated with the map.\n   * @return {Collection<import(\"./Overlay.js\").default>} Overlays.\n   * @api\n   */\n  getOverlays() {\n    return this.overlays_;\n  }\n\n  /**\n   * Get an overlay by its identifier (the value returned by overlay.getId()).\n   * Note that the index treats string and numeric identifiers as the same. So\n   * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n   * @param {string|number} id Overlay identifier.\n   * @return {import(\"./Overlay.js\").default|null} Overlay.\n   * @api\n   */\n  getOverlayById(id) {\n    const overlay = this.overlayIdIndex_[id.toString()];\n    return overlay !== undefined ? overlay : null;\n  }\n\n  /**\n   * Get the map interactions. Modifying this collection changes the interactions\n   * associated with the map.\n   *\n   * Interactions are used for e.g. pan, zoom and rotate.\n   * @return {Collection<import(\"./interaction/Interaction.js\").default>} Interactions.\n   * @api\n   */\n  getInteractions() {\n    return this.interactions;\n  }\n\n  /**\n   * Get the layergroup associated with this map.\n   * @return {LayerGroup} A layer group containing the layers in this map.\n   * @observable\n   * @api\n   */\n  getLayerGroup() {\n    return /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n  }\n\n  /**\n   * Clear any existing layers and add layers to the map.\n   * @param {Array<import(\"./layer/Base.js\").default>|Collection<import(\"./layer/Base.js\").default>} layers The layers to be added to the map.\n   * @api\n   */\n  setLayers(layers) {\n    const group = this.getLayerGroup();\n    if (layers instanceof Collection) {\n      group.setLayers(layers);\n      return;\n    }\n\n    const collection = group.getLayers();\n    collection.clear();\n    collection.extend(layers);\n  }\n\n  /**\n   * Get the collection of layers associated with this map.\n   * @return {!Collection<import(\"./layer/Base.js\").default>} Layers.\n   * @api\n   */\n  getLayers() {\n    const layers = this.getLayerGroup().getLayers();\n    return layers;\n  }\n\n  /**\n   * @return {boolean} Layers have sources that are still loading.\n   */\n  getLoadingOrNotReady() {\n    const layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n    for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n      const state = layerStatesArray[i];\n      if (!state.visible) {\n        continue;\n      }\n      const renderer = state.layer.getRenderer();\n      if (renderer && !renderer.ready) {\n        return true;\n      }\n      const source = state.layer.getSource();\n      if (source && source.loading) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Get the pixel for a coordinate.  This takes a coordinate in the user\n   * projection and returns the corresponding pixel.\n   * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n   * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n   * @api\n   */\n  getPixelFromCoordinate(coordinate) {\n    const viewCoordinate = fromUserCoordinate(\n      coordinate,\n      this.getView().getProjection(),\n    );\n    return this.getPixelFromCoordinateInternal(viewCoordinate);\n  }\n\n  /**\n   * Get the pixel for a coordinate.  This takes a coordinate in the map view\n   * projection and returns the corresponding pixel.\n   * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n   * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n   */\n  getPixelFromCoordinateInternal(coordinate) {\n    const frameState = this.frameState_;\n    if (!frameState) {\n      return null;\n    }\n    return applyTransform(\n      frameState.coordinateToPixelTransform,\n      coordinate.slice(0, 2),\n    );\n  }\n\n  /**\n   * Get the pixel ratio of the rendered map.\n   * @return {number} Pixel ratio.\n   * @api\n   */\n  getPixelRatio() {\n    return this.pixelRatio_;\n  }\n\n  /**\n   * Set the pixel ratio of the rendered map.\n   * @param {number} pixelRatio Pixel ratio.\n   * @api\n   */\n  setPixelRatio(pixelRatio) {\n    if (this.pixelRatio_ === pixelRatio) {\n      return;\n    }\n    this.pixelRatio_ = pixelRatio;\n    this.render();\n  }\n\n  /**\n   * Get the map renderer.\n   * @return {import(\"./renderer/Map.js\").default|null} Renderer\n   */\n  getRenderer() {\n    return this.renderer_;\n  }\n\n  /**\n   * Get the size of this map.\n   * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n   * @observable\n   * @api\n   */\n  getSize() {\n    return /** @type {import(\"./size.js\").Size|undefined} */ (\n      this.get(MapProperty.SIZE)\n    );\n  }\n\n  /**\n   * Get the view associated with this map. A view manages properties such as\n   * center and resolution.\n   * @return {View} The view that controls this map.\n   * @observable\n   * @api\n   */\n  getView() {\n    return /** @type {View} */ (this.get(MapProperty.VIEW));\n  }\n\n  /**\n   * Get the element that serves as the map viewport.\n   * @return {HTMLElement} Viewport.\n   * @api\n   */\n  getViewport() {\n    return this.viewport_;\n  }\n\n  /**\n   * Get the element that serves as the container for overlays.  Elements added to\n   * this container will let mousedown and touchstart events through to the map,\n   * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n   * events.\n   * @return {!HTMLElement} The map's overlay container.\n   */\n  getOverlayContainer() {\n    return this.overlayContainer_;\n  }\n\n  /**\n   * Get the element that serves as a container for overlays that don't allow\n   * event propagation. Elements added to this container won't let mousedown and\n   * touchstart events through to the map, so clicks and gestures on an overlay\n   * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n   * @return {!HTMLElement} The map's overlay container that stops events.\n   */\n  getOverlayContainerStopEvent() {\n    return this.overlayContainerStopEvent_;\n  }\n\n  /**\n   * @return {!Document} The document where the map is displayed.\n   */\n  getOwnerDocument() {\n    const targetElement = this.getTargetElement();\n    return targetElement ? targetElement.ownerDocument : document;\n  }\n\n  /**\n   * @param {import(\"./Tile.js\").default} tile Tile.\n   * @param {string} tileSourceKey Tile source key.\n   * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n   * @param {number} tileResolution Tile resolution.\n   * @return {number} Tile priority.\n   */\n  getTilePriority(tile, tileSourceKey, tileCenter, tileResolution) {\n    return getTilePriority(\n      this.frameState_,\n      tile,\n      tileSourceKey,\n      tileCenter,\n      tileResolution,\n    );\n  }\n\n  /**\n   * @param {PointerEvent|KeyboardEvent|WheelEvent} browserEvent Browser event.\n   * @param {string} [type] Type.\n   */\n  handleBrowserEvent(browserEvent, type) {\n    type = type || browserEvent.type;\n    const mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n    this.handleMapBrowserEvent(mapBrowserEvent);\n  }\n\n  /**\n   * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n   */\n  handleMapBrowserEvent(mapBrowserEvent) {\n    if (!this.frameState_) {\n      // With no view defined, we cannot translate pixels into geographical\n      // coordinates so interactions cannot be used.\n      return;\n    }\n    const originalEvent = mapBrowserEvent.originalEvent;\n    const eventType = originalEvent.type;\n    if (\n      eventType === PointerEventType.POINTERDOWN ||\n      eventType === EventType.WHEEL ||\n      eventType === EventType.KEYDOWN\n    ) {\n      const doc = this.getOwnerDocument();\n      const rootNode = this.viewport_.getRootNode\n        ? this.viewport_.getRootNode()\n        : doc;\n      const target = /** @type {Node} */ (originalEvent.target);\n\n      const currentDoc =\n        rootNode instanceof ShadowRoot\n          ? rootNode.host === target\n            ? rootNode.host.ownerDocument\n            : rootNode\n          : rootNode === doc\n            ? doc.documentElement\n            : rootNode;\n      if (\n        // Abort if the target is a child of the container for elements whose events are not meant\n        // to be handled by map interactions.\n        this.overlayContainerStopEvent_.contains(target) ||\n        // Abort if the event target is a child of the container that is no longer in the page.\n        // It's possible for the target to no longer be in the page if it has been removed in an\n        // event listener, this might happen in a Control that recreates it's content based on\n        // user interaction either manually or via a render in something like https://reactjs.org/\n        !currentDoc.contains(target)\n      ) {\n        return;\n      }\n    }\n    mapBrowserEvent.frameState = this.frameState_;\n    if (this.dispatchEvent(mapBrowserEvent) !== false) {\n      const interactionsArray = this.getInteractions().getArray().slice();\n      for (let i = interactionsArray.length - 1; i >= 0; i--) {\n        const interaction = interactionsArray[i];\n        if (\n          interaction.getMap() !== this ||\n          !interaction.getActive() ||\n          !this.getTargetElement()\n        ) {\n          continue;\n        }\n        const cont = interaction.handleEvent(mapBrowserEvent);\n        if (!cont || mapBrowserEvent.propagationStopped) {\n          break;\n        }\n      }\n    }\n  }\n\n  /**\n   * @protected\n   */\n  handlePostRender() {\n    const frameState = this.frameState_;\n\n    // Manage the tile queue\n    // Image loads are expensive and a limited resource, so try to use them\n    // efficiently:\n    // * When the view is static we allow a large number of parallel tile loads\n    //   to complete the frame as quickly as possible.\n    // * When animating or interacting, image loads can cause janks, so we reduce\n    //   the maximum number of loads per frame and limit the number of parallel\n    //   tile loads to remain reactive to view changes and to reduce the chance of\n    //   loading tiles that will quickly disappear from view.\n    const tileQueue = this.tileQueue_;\n    if (!tileQueue.isEmpty()) {\n      let maxTotalLoading = this.maxTilesLoading_;\n      let maxNewLoads = maxTotalLoading;\n      if (frameState) {\n        const hints = frameState.viewHints;\n        if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n          const lowOnFrameBudget = Date.now() - frameState.time > 8;\n          maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n          maxNewLoads = lowOnFrameBudget ? 0 : 2;\n        }\n      }\n      if (tileQueue.getTilesLoading() < maxTotalLoading) {\n        tileQueue.reprioritize(); // FIXME only call if view has changed\n        tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n      }\n    }\n\n    if (frameState && this.renderer_ && !frameState.animate) {\n      if (this.renderComplete_) {\n        if (this.hasListener(RenderEventType.RENDERCOMPLETE)) {\n          this.renderer_.dispatchRenderEvent(\n            RenderEventType.RENDERCOMPLETE,\n            frameState,\n          );\n        }\n        if (this.loaded_ === false) {\n          this.loaded_ = true;\n          this.dispatchEvent(\n            new MapEvent(MapEventType.LOADEND, this, frameState),\n          );\n        }\n      } else if (this.loaded_ === true) {\n        this.loaded_ = false;\n        this.dispatchEvent(\n          new MapEvent(MapEventType.LOADSTART, this, frameState),\n        );\n      }\n    }\n\n    const postRenderFunctions = this.postRenderFunctions_;\n    if (frameState) {\n      for (let i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n        postRenderFunctions[i](this, frameState);\n      }\n    }\n    postRenderFunctions.length = 0;\n  }\n\n  /**\n   * @private\n   */\n  handleSizeChanged_() {\n    if (this.getView() && !this.getView().getAnimating()) {\n      this.getView().resolveConstraints(0);\n    }\n\n    this.render();\n  }\n\n  /**\n   * @private\n   */\n  handleTargetChanged_() {\n    if (this.mapBrowserEventHandler_) {\n      for (let i = 0, ii = this.targetChangeHandlerKeys_.length; i < ii; ++i) {\n        unlistenByKey(this.targetChangeHandlerKeys_[i]);\n      }\n      this.targetChangeHandlerKeys_ = null;\n      this.viewport_.removeEventListener(\n        EventType.CONTEXTMENU,\n        this.boundHandleBrowserEvent_,\n      );\n      this.viewport_.removeEventListener(\n        EventType.WHEEL,\n        this.boundHandleBrowserEvent_,\n      );\n      this.mapBrowserEventHandler_.dispose();\n      this.mapBrowserEventHandler_ = null;\n      this.viewport_.remove();\n    }\n\n    if (this.targetElement_ && !isCanvas(this.targetElement_)) {\n      this.resizeObserver_?.unobserve(this.targetElement_);\n      const rootNode = this.targetElement_.getRootNode();\n      if (rootNode instanceof ShadowRoot) {\n        this.resizeObserver_.unobserve(rootNode.host);\n      }\n      this.setSize(undefined);\n    }\n\n    // target may be undefined, null, a string or an Element.\n    // If it's a string we convert it to an Element before proceeding.\n    // If it's not now an Element we remove the viewport from the DOM.\n    // If it's an Element we append the viewport element to it.\n\n    const target = this.getTarget();\n    const targetElement =\n      typeof target === 'string' ? document.getElementById(target) : target;\n    this.targetElement_ = targetElement;\n    if (!targetElement) {\n      if (this.renderer_) {\n        clearTimeout(this.postRenderTimeoutHandle_);\n        this.postRenderTimeoutHandle_ = undefined;\n        this.postRenderFunctions_.length = 0;\n        this.renderer_.dispose();\n        this.renderer_ = null;\n      }\n      if (this.animationDelayKey_) {\n        cancelAnimationFrame(this.animationDelayKey_);\n        this.animationDelayKey_ = undefined;\n      }\n    } else {\n      if (!isCanvas(targetElement)) {\n        targetElement.appendChild(this.viewport_);\n      }\n      if (!this.renderer_) {\n        this.renderer_ = new CompositeMapRenderer(this);\n      }\n\n      if (!isCanvas(targetElement)) {\n        this.mapBrowserEventHandler_ = new MapBrowserEventHandler(\n          this,\n          this.moveTolerance_,\n        );\n        for (const key in MapBrowserEventType) {\n          this.mapBrowserEventHandler_.addEventListener(\n            MapBrowserEventType[key],\n            this.handleMapBrowserEvent.bind(this),\n          );\n        }\n        this.viewport_.addEventListener(\n          EventType.CONTEXTMENU,\n          this.boundHandleBrowserEvent_,\n          false,\n        );\n        this.viewport_.addEventListener(\n          EventType.WHEEL,\n          this.boundHandleBrowserEvent_,\n          PASSIVE_EVENT_LISTENERS ? {passive: false} : false,\n        );\n\n        let keyboardEventTarget;\n        if (!this.keyboardEventTarget_) {\n          // check if map target is in shadowDOM, if yes use host element as target\n          const targetRoot = targetElement.getRootNode();\n          const targetCandidate =\n            targetRoot instanceof ShadowRoot ? targetRoot.host : targetElement;\n          keyboardEventTarget = targetCandidate;\n        } else {\n          keyboardEventTarget = this.keyboardEventTarget_;\n        }\n\n        this.targetChangeHandlerKeys_ = [\n          listen(\n            keyboardEventTarget,\n            EventType.KEYDOWN,\n            this.handleBrowserEvent,\n            this,\n          ),\n          listen(\n            keyboardEventTarget,\n            EventType.KEYPRESS,\n            this.handleBrowserEvent,\n            this,\n          ),\n        ];\n        if (targetElement instanceof HTMLElement) {\n          const rootNode = targetElement.getRootNode();\n          if (rootNode instanceof ShadowRoot) {\n            this.resizeObserver_.observe(rootNode.host);\n          }\n          this.resizeObserver_?.observe(targetElement);\n        }\n      }\n\n      this.updateSize();\n    }\n    // updateSize calls setSize, so no need to call this.render\n    // ourselves here.\n  }\n\n  /**\n   * @private\n   */\n  handleTileChange_() {\n    this.render();\n  }\n\n  /**\n   * @private\n   */\n  handleViewPropertyChanged_() {\n    this.render();\n  }\n\n  /**\n   * @private\n   */\n  handleViewChanged_() {\n    if (this.viewPropertyListenerKey_) {\n      unlistenByKey(this.viewPropertyListenerKey_);\n      this.viewPropertyListenerKey_ = null;\n    }\n    if (this.viewChangeListenerKey_) {\n      unlistenByKey(this.viewChangeListenerKey_);\n      this.viewChangeListenerKey_ = null;\n    }\n    const view = this.getView();\n    if (view) {\n      this.updateViewportSize_(this.getSize());\n\n      this.viewPropertyListenerKey_ = listen(\n        view,\n        ObjectEventType.PROPERTYCHANGE,\n        this.handleViewPropertyChanged_,\n        this,\n      );\n      this.viewChangeListenerKey_ = listen(\n        view,\n        EventType.CHANGE,\n        this.handleViewPropertyChanged_,\n        this,\n      );\n\n      view.resolveConstraints(0);\n    }\n    this.render();\n  }\n\n  /**\n   * @private\n   */\n  handleLayerGroupChanged_() {\n    if (this.layerGroupPropertyListenerKeys_) {\n      this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n      this.layerGroupPropertyListenerKeys_ = null;\n    }\n    const layerGroup = this.getLayerGroup();\n    if (layerGroup) {\n      this.handleLayerAdd_(new GroupEvent('addlayer', layerGroup));\n      this.layerGroupPropertyListenerKeys_ = [\n        listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n        listen(layerGroup, EventType.CHANGE, this.render, this),\n        listen(layerGroup, 'addlayer', this.handleLayerAdd_, this),\n        listen(layerGroup, 'removelayer', this.handleLayerRemove_, this),\n      ];\n    }\n    this.render();\n  }\n\n  /**\n   * @return {boolean} Is rendered.\n   */\n  isRendered() {\n    return !!this.frameState_;\n  }\n\n  /**\n   * @private\n   */\n  animationDelay_() {\n    this.animationDelayKey_ = undefined;\n    this.renderFrame_(Date.now());\n  }\n\n  /**\n   * Requests an immediate render in a synchronous manner.\n   * @api\n   */\n  renderSync() {\n    if (this.animationDelayKey_) {\n      cancelAnimationFrame(this.animationDelayKey_);\n    }\n    this.animationDelay_();\n  }\n\n  /**\n   * Redraws all text after new fonts have loaded\n   */\n  redrawText() {\n    if (!this.frameState_) {\n      return;\n    }\n    const layerStates = this.frameState_.layerStatesArray;\n    for (let i = 0, ii = layerStates.length; i < ii; ++i) {\n      const layer = layerStates[i].layer;\n      if (layer.hasRenderer()) {\n        layer.getRenderer().handleFontsChanged();\n      }\n    }\n  }\n\n  /**\n   * Request a map rendering (at the next animation frame).\n   * @api\n   */\n  render() {\n    if (this.renderer_ && this.animationDelayKey_ === undefined) {\n      this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n    }\n  }\n\n  /**\n   * Remove the given control from the map.\n   * @param {import(\"./control/Control.js\").default} control Control.\n   * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n   *     if the control was not found).\n   * @api\n   */\n  removeControl(control) {\n    return this.getControls().remove(control);\n  }\n\n  /**\n   * Remove the given interaction from the map.\n   * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n   * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n   *     undefined if the interaction was not found).\n   * @api\n   */\n  removeInteraction(interaction) {\n    return this.getInteractions().remove(interaction);\n  }\n\n  /**\n   * Removes the given layer from the map.\n   * @param {import(\"./layer/Base.js\").default} layer Layer.\n   * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n   *     layer was not found).\n   * @api\n   */\n  removeLayer(layer) {\n    const layers = this.getLayerGroup().getLayers();\n    return layers.remove(layer);\n  }\n\n  /**\n   * @param {import(\"./layer/Group.js\").GroupEvent} event The layer remove event.\n   * @private\n   */\n  handleLayerRemove_(event) {\n    removeLayerMapProperty(event.layer);\n  }\n\n  /**\n   * Remove the given overlay from the map.\n   * @param {import(\"./Overlay.js\").default} overlay Overlay.\n   * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n   *     if the overlay was not found).\n   * @api\n   */\n  removeOverlay(overlay) {\n    return this.getOverlays().remove(overlay);\n  }\n\n  /**\n   * @param {number} time Time.\n   * @private\n   */\n  renderFrame_(time) {\n    const size = this.getSize();\n    const view = this.getView();\n    const previousFrameState = this.frameState_;\n    /** @type {?FrameState} */\n    let frameState = null;\n    if (size !== undefined && hasArea(size) && view && view.isDef()) {\n      const viewHints = view.getHints(\n        this.frameState_ ? this.frameState_.viewHints : undefined,\n      );\n      const viewState = view.getState();\n      frameState = {\n        animate: false,\n        coordinateToPixelTransform: this.coordinateToPixelTransform_,\n        declutter: null,\n        extent: getForViewAndSize(\n          viewState.center,\n          viewState.resolution,\n          viewState.rotation,\n          size,\n        ),\n        index: this.frameIndex_++,\n        layerIndex: 0,\n        layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n        pixelRatio: this.pixelRatio_,\n        pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n        postRenderFunctions: [],\n        size: size,\n        tileQueue: this.tileQueue_,\n        time: time,\n        usedTiles: {},\n        viewState: viewState,\n        viewHints: viewHints,\n        wantedTiles: {},\n        mapId: getUid(this),\n        renderTargets: {},\n      };\n      if (viewState.nextCenter && viewState.nextResolution) {\n        const rotation = isNaN(viewState.nextRotation)\n          ? viewState.rotation\n          : viewState.nextRotation;\n\n        frameState.nextExtent = getForViewAndSize(\n          viewState.nextCenter,\n          viewState.nextResolution,\n          rotation,\n          size,\n        );\n      }\n    }\n\n    this.frameState_ = frameState;\n    this.renderer_.renderFrame(frameState);\n\n    if (frameState) {\n      if (frameState.animate) {\n        this.render();\n      }\n      Array.prototype.push.apply(\n        this.postRenderFunctions_,\n        frameState.postRenderFunctions,\n      );\n\n      if (previousFrameState) {\n        const moveStart =\n          !this.previousExtent_ ||\n          (!isEmpty(this.previousExtent_) &&\n            !equalsExtent(frameState.extent, this.previousExtent_));\n        if (moveStart) {\n          this.dispatchEvent(\n            new MapEvent(MapEventType.MOVESTART, this, previousFrameState),\n          );\n          this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n        }\n      }\n\n      const idle =\n        this.previousExtent_ &&\n        !frameState.viewHints[ViewHint.ANIMATING] &&\n        !frameState.viewHints[ViewHint.INTERACTING] &&\n        !equalsExtent(frameState.extent, this.previousExtent_);\n\n      if (idle) {\n        this.dispatchEvent(\n          new MapEvent(MapEventType.MOVEEND, this, frameState),\n        );\n        clone(frameState.extent, this.previousExtent_);\n      }\n    }\n\n    this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n\n    this.renderComplete_ =\n      (this.hasListener(MapEventType.LOADSTART) ||\n        this.hasListener(MapEventType.LOADEND) ||\n        this.hasListener(RenderEventType.RENDERCOMPLETE)) &&\n      !this.tileQueue_.getTilesLoading() &&\n      !this.tileQueue_.getCount() &&\n      !this.getLoadingOrNotReady();\n\n    if (!this.postRenderTimeoutHandle_) {\n      this.postRenderTimeoutHandle_ = setTimeout(() => {\n        this.postRenderTimeoutHandle_ = undefined;\n        this.handlePostRender();\n      }, 0);\n    }\n  }\n\n  /**\n   * Sets the layergroup of this map.\n   * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n   * @observable\n   * @api\n   */\n  setLayerGroup(layerGroup) {\n    const oldLayerGroup = this.getLayerGroup();\n    if (oldLayerGroup) {\n      this.handleLayerRemove_(new GroupEvent('removelayer', oldLayerGroup));\n    }\n    this.set(MapProperty.LAYERGROUP, layerGroup);\n  }\n\n  /**\n   * Set the size of this map.\n   * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n   * @observable\n   * @api\n   */\n  setSize(size) {\n    this.set(MapProperty.SIZE, size);\n  }\n\n  /**\n   * Set the target element to render this map into.\n   * For accessibility (focus and keyboard events for map navigation), the `target` element must have a\n   *  properly configured `tabindex` attribute. If the `target` element is inside a Shadow DOM, the\n   *  `tabindex` atribute must be set on the custom element's host element.\n   * @param {HTMLElement|string} [target] The Element or id of the Element\n   *     that the map is rendered in.\n   * @observable\n   * @api\n   */\n  setTarget(target) {\n    this.set(MapProperty.TARGET, target);\n  }\n\n  /**\n   * Set the view for this map.\n   * @param {View|Promise<import(\"./View.js\").ViewOptions>|null} view The view that controls this map.\n   * It is also possible to pass a promise that resolves to options for constructing a view.  This\n   * alternative allows view properties to be resolved by sources or other components that load\n   * view-related metadata.\n   * @observable\n   * @api\n   */\n  setView(view) {\n    if (!view || view instanceof View) {\n      this.set(MapProperty.VIEW, view);\n      return;\n    }\n    this.set(MapProperty.VIEW, new View());\n\n    const map = this;\n    view.then(function (viewOptions) {\n      map.setView(new View(viewOptions));\n    });\n  }\n\n  /**\n   * Force a recalculation of the map viewport size.  This should be called when\n   * third-party code changes the size of the map viewport.\n   * @api\n   */\n  updateSize() {\n    const targetElement = this.getTargetElement();\n\n    let size = undefined;\n    if (targetElement) {\n      let width, height;\n      if (isCanvas(targetElement)) {\n        const transform = targetElement.getContext('2d').getTransform();\n        // Use scale components of the transform to calculate the size in CSS pixels\n        width = targetElement.width / transform.a;\n        height = targetElement.height / transform.d;\n      } else {\n        const computedStyle = getComputedStyle(targetElement);\n        width =\n          targetElement.offsetWidth -\n          parseFloat(computedStyle['borderLeftWidth']) -\n          parseFloat(computedStyle['paddingLeft']) -\n          parseFloat(computedStyle['paddingRight']) -\n          parseFloat(computedStyle['borderRightWidth']);\n        height =\n          targetElement.offsetHeight -\n          parseFloat(computedStyle['borderTopWidth']) -\n          parseFloat(computedStyle['paddingTop']) -\n          parseFloat(computedStyle['paddingBottom']) -\n          parseFloat(computedStyle['borderBottomWidth']);\n      }\n      if (!isNaN(width) && !isNaN(height)) {\n        size = [Math.max(0, width), Math.max(0, height)];\n        if (\n          !hasArea(size) &&\n          !!(\n            targetElement.offsetWidth ||\n            targetElement.offsetHeight ||\n            targetElement.getClientRects().length\n          )\n        ) {\n          warn(\n            \"No map visible because the map container's width or height are 0.\",\n          );\n        }\n      }\n    }\n\n    const oldSize = this.getSize();\n    if (size && (!oldSize || !equals(size, oldSize))) {\n      this.setSize(size);\n      this.updateViewportSize_(size);\n    }\n  }\n\n  /**\n   * Recomputes the viewport size and save it on the view object (if any)\n   * @param {import(\"./size.js\").Size|undefined} size The size.\n   * @private\n   */\n  updateViewportSize_(size) {\n    const view = this.getView();\n    if (view) {\n      view.setViewportSize(size);\n    }\n  }\n}\n\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n  /**\n   * @type {HTMLElement|Document}\n   */\n  let keyboardEventTarget = null;\n  if (options.keyboardEventTarget !== undefined) {\n    keyboardEventTarget =\n      typeof options.keyboardEventTarget === 'string'\n        ? document.getElementById(options.keyboardEventTarget)\n        : options.keyboardEventTarget;\n  }\n\n  /**\n   * @type {Object<string, *>}\n   */\n  const values = {};\n\n  const layerGroup =\n    options.layers &&\n    typeof (/** @type {?} */ (options.layers).getLayers) === 'function'\n      ? /** @type {LayerGroup} */ (options.layers)\n      : new LayerGroup({\n          layers:\n            /** @type {Collection<import(\"./layer/Base.js\").default>|Array<import(\"./layer/Base.js\").default>} */ (\n              options.layers\n            ),\n        });\n  values[MapProperty.LAYERGROUP] = layerGroup;\n\n  values[MapProperty.TARGET] = options.target;\n\n  values[MapProperty.VIEW] =\n    options.view instanceof View ? options.view : new View();\n\n  /** @type {Collection<import(\"./control/Control.js\").default>} */\n  let controls;\n  if (options.controls !== undefined) {\n    if (Array.isArray(options.controls)) {\n      controls = new Collection(options.controls.slice());\n    } else {\n      assert(\n        typeof (/** @type {?} */ (options.controls).getArray) === 'function',\n        'Expected `controls` to be an array or an `ol/Collection.js`',\n      );\n      controls = options.controls;\n    }\n  }\n\n  /** @type {Collection<import(\"./interaction/Interaction\").default>} */\n  let interactions;\n  if (options.interactions !== undefined) {\n    if (Array.isArray(options.interactions)) {\n      interactions = new Collection(options.interactions.slice());\n    } else {\n      assert(\n        typeof (/** @type {?} */ (options.interactions).getArray) ===\n          'function',\n        'Expected `interactions` to be an array or an `ol/Collection.js`',\n      );\n      interactions = options.interactions;\n    }\n  }\n\n  /** @type {Collection<import(\"./Overlay.js\").default>} */\n  let overlays;\n  if (options.overlays !== undefined) {\n    if (Array.isArray(options.overlays)) {\n      overlays = new Collection(options.overlays.slice());\n    } else {\n      assert(\n        typeof (/** @type {?} */ (options.overlays).getArray) === 'function',\n        'Expected `overlays` to be an array or an `ol/Collection.js`',\n      );\n      overlays = options.overlays;\n    }\n  } else {\n    overlays = new Collection();\n  }\n\n  return {\n    controls: controls,\n    interactions: interactions,\n    keyboardEventTarget: keyboardEventTarget,\n    overlays: overlays,\n    values: values,\n  };\n}\nexport default Map;\n","/**\n * @module ol/geom/flat/center\n */\nimport {createEmpty, createOrUpdateFromFlatCoordinates} from '../../extent.js';\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<Array<number>>} endss Endss.\n * @param {number} stride Stride.\n * @return {Array<number>} Flat centers.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n  const flatCenters = [];\n  let extent = createEmpty();\n  for (let i = 0, ii = endss.length; i < ii; ++i) {\n    const ends = endss[i];\n    extent = createOrUpdateFromFlatCoordinates(\n      flatCoordinates,\n      offset,\n      ends[0],\n      stride,\n    );\n    flatCenters.push((extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2);\n    offset = ends[ends.length - 1];\n  }\n  return flatCenters;\n}\n","/**\n * @module ol/geom/flat/interpolate\n */\nimport {binarySearch} from '../../array.js';\nimport {lerp} from '../../math.js';\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} fraction Fraction.\n * @param {Array<number>} [dest] Destination.\n * @param {number} [dimension] Destination dimension (default is `2`)\n * @return {Array<number>} Destination.\n */\nexport function interpolatePoint(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  fraction,\n  dest,\n  dimension,\n) {\n  let o, t;\n  const n = (end - offset) / stride;\n  if (n === 1) {\n    o = offset;\n  } else if (n === 2) {\n    o = offset;\n    t = fraction;\n  } else if (n !== 0) {\n    let x1 = flatCoordinates[offset];\n    let y1 = flatCoordinates[offset + 1];\n    let length = 0;\n    const cumulativeLengths = [0];\n    for (let i = offset + stride; i < end; i += stride) {\n      const x2 = flatCoordinates[i];\n      const y2 = flatCoordinates[i + 1];\n      length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n      cumulativeLengths.push(length);\n      x1 = x2;\n      y1 = y2;\n    }\n    const target = fraction * length;\n    const index = binarySearch(cumulativeLengths, target);\n    if (index < 0) {\n      t =\n        (target - cumulativeLengths[-index - 2]) /\n        (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);\n      o = offset + (-index - 2) * stride;\n    } else {\n      o = offset + index * stride;\n    }\n  }\n  dimension = dimension > 1 ? dimension : 2;\n  dest = dest ? dest : new Array(dimension);\n  for (let i = 0; i < dimension; ++i) {\n    dest[i] =\n      o === undefined\n        ? NaN\n        : t === undefined\n          ? flatCoordinates[o + i]\n          : lerp(flatCoordinates[o + i], flatCoordinates[o + stride + i], t);\n  }\n  return dest;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @return {import(\"../../coordinate.js\").Coordinate|null} Coordinate.\n */\nexport function lineStringCoordinateAtM(\n  flatCoordinates,\n  offset,\n  end,\n  stride,\n  m,\n  extrapolate,\n) {\n  if (end == offset) {\n    return null;\n  }\n  let coordinate;\n  if (m < flatCoordinates[offset + stride - 1]) {\n    if (extrapolate) {\n      coordinate = flatCoordinates.slice(offset, offset + stride);\n      coordinate[stride - 1] = m;\n      return coordinate;\n    }\n    return null;\n  }\n  if (flatCoordinates[end - 1] < m) {\n    if (extrapolate) {\n      coordinate = flatCoordinates.slice(end - stride, end);\n      coordinate[stride - 1] = m;\n      return coordinate;\n    }\n    return null;\n  }\n  // FIXME use O(1) search\n  if (m == flatCoordinates[offset + stride - 1]) {\n    return flatCoordinates.slice(offset, offset + stride);\n  }\n  let lo = offset / stride;\n  let hi = end / stride;\n  while (lo < hi) {\n    const mid = (lo + hi) >> 1;\n    if (m < flatCoordinates[(mid + 1) * stride - 1]) {\n      hi = mid;\n    } else {\n      lo = mid + 1;\n    }\n  }\n  const m0 = flatCoordinates[lo * stride - 1];\n  if (m == m0) {\n    return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);\n  }\n  const m1 = flatCoordinates[(lo + 1) * stride - 1];\n  const t = (m - m0) / (m1 - m0);\n  coordinate = [];\n  for (let i = 0; i < stride - 1; ++i) {\n    coordinate.push(\n      lerp(\n        flatCoordinates[(lo - 1) * stride + i],\n        flatCoordinates[lo * stride + i],\n        t,\n      ),\n    );\n  }\n  coordinate.push(m);\n  return coordinate;\n}\n\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array<number>} ends Ends.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @param {boolean} interpolate Interpolate.\n * @return {import(\"../../coordinate.js\").Coordinate|null} Coordinate.\n */\nexport function lineStringsCoordinateAtM(\n  flatCoordinates,\n  offset,\n  ends,\n  stride,\n  m,\n  extrapolate,\n  interpolate,\n) {\n  if (interpolate) {\n    return lineStringCoordinateAtM(\n      flatCoordinates,\n      offset,\n      ends[ends.length - 1],\n      stride,\n      m,\n      extrapolate,\n    );\n  }\n  let coordinate;\n  if (m < flatCoordinates[stride - 1]) {\n    if (extrapolate) {\n      coordinate = flatCoordinates.slice(0, stride);\n      coordinate[stride - 1] = m;\n      return coordinate;\n    }\n    return null;\n  }\n  if (flatCoordinates[flatCoordinates.length - 1] < m) {\n    if (extrapolate) {\n      coordinate = flatCoordinates.slice(flatCoordinates.length - stride);\n      coordinate[stride - 1] = m;\n      return coordinate;\n    }\n    return null;\n  }\n  for (let i = 0, ii = ends.length; i < ii; ++i) {\n    const end = ends[i];\n    if (offset == end) {\n      continue;\n    }\n    if (m < flatCoordinates[offset + stride - 1]) {\n      return null;\n    }\n    if (m <= flatCoordinates[end - 1]) {\n      return lineStringCoordinateAtM(\n        flatCoordinates,\n        offset,\n        end,\n        stride,\n        m,\n        false,\n      );\n    }\n    offset = end;\n  }\n  return null;\n}\n","/**\n * @module ol/geom/GeometryCollection\n */\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {\n  closestSquaredDistanceXY,\n  createOrUpdateEmpty,\n  extend,\n  getCenter,\n} from '../extent.js';\nimport Geometry from './Geometry.js';\n\n/**\n * @classdesc\n * An array of {@link module:ol/geom/Geometry~Geometry} objects.\n *\n * @api\n */\nclass GeometryCollection extends Geometry {\n  /**\n   * @param {Array<Geometry>} geometries Geometries.\n   */\n  constructor(geometries) {\n    super();\n\n    /**\n     * @private\n     * @type {Array<Geometry>}\n     */\n    this.geometries_ = geometries;\n\n    /**\n     * @private\n     * @type {Array<import(\"../events.js\").EventsKey>}\n     */\n    this.changeEventsKeys_ = [];\n\n    this.listenGeometriesChange_();\n  }\n\n  /**\n   * @private\n   */\n  unlistenGeometriesChange_() {\n    this.changeEventsKeys_.forEach(unlistenByKey);\n    this.changeEventsKeys_.length = 0;\n  }\n\n  /**\n   * @private\n   */\n  listenGeometriesChange_() {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      this.changeEventsKeys_.push(\n        listen(geometries[i], EventType.CHANGE, this.changed, this),\n      );\n    }\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!GeometryCollection} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const geometryCollection = new GeometryCollection(\n      cloneGeometries(this.geometries_),\n    );\n    geometryCollection.applyProperties(this);\n    return geometryCollection;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n   * @param {number} minSquaredDistance Minimum squared distance.\n   * @return {number} Minimum squared distance.\n   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n      return minSquaredDistance;\n    }\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      minSquaredDistance = geometries[i].closestPointXY(\n        x,\n        y,\n        closestPoint,\n        minSquaredDistance,\n      );\n    }\n    return minSquaredDistance;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @return {boolean} Contains (x, y).\n   * @override\n   */\n  containsXY(x, y) {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      if (geometries[i].containsXY(x, y)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @protected\n   * @return {import(\"../extent.js\").Extent} extent Extent.\n   * @override\n   */\n  computeExtent(extent) {\n    createOrUpdateEmpty(extent);\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      extend(extent, geometries[i].getExtent());\n    }\n    return extent;\n  }\n\n  /**\n   * Return the geometries that make up this geometry collection.\n   * @return {Array<Geometry>} Geometries.\n   * @api\n   */\n  getGeometries() {\n    return cloneGeometries(this.geometries_);\n  }\n\n  /**\n   * @return {Array<Geometry>} Geometries.\n   */\n  getGeometriesArray() {\n    return this.geometries_;\n  }\n\n  /**\n   * @return {Array<Geometry>} Geometries.\n   */\n  getGeometriesArrayRecursive() {\n    /** @type {Array<Geometry>} */\n    let geometriesArray = [];\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      if (geometries[i].getType() === this.getType()) {\n        geometriesArray = geometriesArray.concat(\n          /** @type {GeometryCollection} */ (\n            geometries[i]\n          ).getGeometriesArrayRecursive(),\n        );\n      } else {\n        geometriesArray.push(geometries[i]);\n      }\n    }\n    return geometriesArray;\n  }\n\n  /**\n   * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {GeometryCollection} Simplified GeometryCollection.\n   * @override\n   */\n  getSimplifiedGeometry(squaredTolerance) {\n    if (this.simplifiedGeometryRevision !== this.getRevision()) {\n      this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n      this.simplifiedGeometryRevision = this.getRevision();\n    }\n    if (\n      squaredTolerance < 0 ||\n      (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n        squaredTolerance < this.simplifiedGeometryMaxMinSquaredTolerance)\n    ) {\n      return this;\n    }\n\n    const simplifiedGeometries = [];\n    const geometries = this.geometries_;\n    let simplified = false;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      const geometry = geometries[i];\n      const simplifiedGeometry =\n        geometry.getSimplifiedGeometry(squaredTolerance);\n      simplifiedGeometries.push(simplifiedGeometry);\n      if (simplifiedGeometry !== geometry) {\n        simplified = true;\n      }\n    }\n    if (simplified) {\n      const simplifiedGeometryCollection = new GeometryCollection(\n        simplifiedGeometries,\n      );\n      return simplifiedGeometryCollection;\n    }\n    this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n    return this;\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'GeometryCollection';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      if (geometries[i].intersectsExtent(extent)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * @return {boolean} Is empty.\n   */\n  isEmpty() {\n    return this.geometries_.length === 0;\n  }\n\n  /**\n   * Rotate the geometry around a given coordinate. This modifies the geometry\n   * coordinates in place.\n   * @param {number} angle Rotation angle in radians.\n   * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n   * @api\n   * @override\n   */\n  rotate(angle, anchor) {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      geometries[i].rotate(angle, anchor);\n    }\n    this.changed();\n  }\n\n  /**\n   * Scale the geometry (with an optional origin).  This modifies the geometry\n   * coordinates in place.\n   * @abstract\n   * @param {number} sx The scaling factor in the x-direction.\n   * @param {number} [sy] The scaling factor in the y-direction (defaults to sx).\n   * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n   *     of the geometry extent).\n   * @api\n   * @override\n   */\n  scale(sx, sy, anchor) {\n    if (!anchor) {\n      anchor = getCenter(this.getExtent());\n    }\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      geometries[i].scale(sx, sy, anchor);\n    }\n    this.changed();\n  }\n\n  /**\n   * Set the geometries that make up this geometry collection.\n   * @param {Array<Geometry>} geometries Geometries.\n   * @api\n   */\n  setGeometries(geometries) {\n    this.setGeometriesArray(cloneGeometries(geometries));\n  }\n\n  /**\n   * @param {Array<Geometry>} geometries Geometries.\n   */\n  setGeometriesArray(geometries) {\n    this.unlistenGeometriesChange_();\n    this.geometries_ = geometries;\n    this.listenGeometriesChange_();\n    this.changed();\n  }\n\n  /**\n   * Apply a transform function to the coordinates of the geometry.\n   * The geometry is modified in place.\n   * If you do not want the geometry modified in place, first `clone()` it and\n   * then use this function on the clone.\n   * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n   * Called with a flat array of geometry coordinates.\n   * @api\n   * @override\n   */\n  applyTransform(transformFn) {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      geometries[i].applyTransform(transformFn);\n    }\n    this.changed();\n  }\n\n  /**\n   * Translate the geometry.  This modifies the geometry coordinates in place.  If\n   * instead you want a new geometry, first `clone()` this geometry.\n   * @param {number} deltaX Delta X.\n   * @param {number} deltaY Delta Y.\n   * @api\n   * @override\n   */\n  translate(deltaX, deltaY) {\n    const geometries = this.geometries_;\n    for (let i = 0, ii = geometries.length; i < ii; ++i) {\n      geometries[i].translate(deltaX, deltaY);\n    }\n    this.changed();\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    this.unlistenGeometriesChange_();\n    super.disposeInternal();\n  }\n}\n\n/**\n * @param {Array<Geometry>} geometries Geometries.\n * @return {Array<Geometry>} Cloned geometries.\n */\nfunction cloneGeometries(geometries) {\n  return geometries.map((geometry) => geometry.clone());\n}\n\nexport default GeometryCollection;\n","/**\n * @module ol/geom/LineString\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {assignClosestPoint, maxSquaredDelta} from './flat/closest.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {interpolatePoint, lineStringCoordinateAtM} from './flat/interpolate.js';\nimport {intersectsLineString} from './flat/intersectsextent.js';\nimport {lineStringLength} from './flat/length.js';\nimport {forEach as forEachSegment} from './flat/segments.js';\nimport {douglasPeucker} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Linestring geometry.\n *\n * @api\n */\nclass LineString extends SimpleGeometry {\n  /**\n   * @param {Array<import(\"../coordinate.js\").Coordinate>|Array<number>} coordinates Coordinates.\n   *     For internal use, flat coordinates in combination with `layout` are also accepted.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  constructor(coordinates, layout) {\n    super();\n\n    /**\n     * @private\n     * @type {import(\"../coordinate.js\").Coordinate|null}\n     */\n    this.flatMidpoint_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.flatMidpointRevision_ = -1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDelta_ = -1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDeltaRevision_ = -1;\n\n    if (layout !== undefined && !Array.isArray(coordinates[0])) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n    } else {\n      this.setCoordinates(\n        /** @type {Array<import(\"../coordinate.js\").Coordinate>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    }\n  }\n\n  /**\n   * Append the passed coordinate to the coordinates of the linestring.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @api\n   */\n  appendCoordinate(coordinate) {\n    extend(this.flatCoordinates, coordinate);\n    this.changed();\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!LineString} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const lineString = new LineString(\n      this.flatCoordinates.slice(),\n      this.layout,\n    );\n    lineString.applyProperties(this);\n    return lineString;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n   * @param {number} minSquaredDistance Minimum squared distance.\n   * @return {number} Minimum squared distance.\n   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n      return minSquaredDistance;\n    }\n    if (this.maxDeltaRevision_ != this.getRevision()) {\n      this.maxDelta_ = Math.sqrt(\n        maxSquaredDelta(\n          this.flatCoordinates,\n          0,\n          this.flatCoordinates.length,\n          this.stride,\n          0,\n        ),\n      );\n      this.maxDeltaRevision_ = this.getRevision();\n    }\n    return assignClosestPoint(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      this.maxDelta_,\n      false,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n    );\n  }\n\n  /**\n   * Iterate over each segment, calling the provided callback.\n   * If the callback returns a truthy value the function returns that\n   * value immediately. Otherwise the function returns `false`.\n   *\n   * @param {function(this: S, import(\"../coordinate.js\").Coordinate, import(\"../coordinate.js\").Coordinate): T} callback Function\n   *     called for each segment. The function will receive two arguments, the start and end coordinates of the segment.\n   * @return {T|boolean} Value.\n   * @template T,S\n   * @api\n   */\n  forEachSegment(callback) {\n    return forEachSegment(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      callback,\n    );\n  }\n\n  /**\n   * Returns the coordinate at `m` using linear interpolation, or `null` if no\n   * such coordinate exists.\n   *\n   * `extrapolate` controls extrapolation beyond the range of Ms in the\n   * MultiLineString. If `extrapolate` is `true` then Ms less than the first\n   * M will return the first coordinate and Ms greater than the last M will\n   * return the last coordinate.\n   *\n   * @param {number} m M.\n   * @param {boolean} [extrapolate] Extrapolate. Default is `false`.\n   * @return {import(\"../coordinate.js\").Coordinate|null} Coordinate.\n   * @api\n   */\n  getCoordinateAtM(m, extrapolate) {\n    if (this.layout != 'XYM' && this.layout != 'XYZM') {\n      return null;\n    }\n    extrapolate = extrapolate !== undefined ? extrapolate : false;\n    return lineStringCoordinateAtM(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      m,\n      extrapolate,\n    );\n  }\n\n  /**\n   * Return the coordinates of the linestring.\n   * @return {Array<import(\"../coordinate.js\").Coordinate>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates() {\n    return inflateCoordinates(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n    );\n  }\n\n  /**\n   * Return the coordinate at the provided fraction along the linestring.\n   * The `fraction` is a number between 0 and 1, where 0 is the start of the\n   * linestring and 1 is the end.\n   * @param {number} fraction Fraction.\n   * @param {import(\"../coordinate.js\").Coordinate} [dest] Optional coordinate whose values will\n   *     be modified. If not provided, a new coordinate will be returned.\n   * @return {import(\"../coordinate.js\").Coordinate} Coordinate of the interpolated point.\n   * @api\n   */\n  getCoordinateAt(fraction, dest) {\n    return interpolatePoint(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      fraction,\n      dest,\n      this.stride,\n    );\n  }\n\n  /**\n   * Return the length of the linestring on projected plane.\n   * @return {number} Length (on projected plane).\n   * @api\n   */\n  getLength() {\n    return lineStringLength(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n    );\n  }\n\n  /**\n   * @return {Array<number>} Flat midpoint.\n   */\n  getFlatMidpoint() {\n    if (this.flatMidpointRevision_ != this.getRevision()) {\n      this.flatMidpoint_ = this.getCoordinateAt(\n        0.5,\n        this.flatMidpoint_ ?? undefined,\n      );\n      this.flatMidpointRevision_ = this.getRevision();\n    }\n    return /** @type {Array<number>} */ (this.flatMidpoint_);\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {LineString} Simplified LineString.\n   * @protected\n   * @override\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    /** @type {Array<number>} */\n    const simplifiedFlatCoordinates = [];\n    simplifiedFlatCoordinates.length = douglasPeucker(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      0,\n    );\n    return new LineString(simplifiedFlatCoordinates, 'XY');\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'LineString';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return intersectsLineString(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n      extent,\n      this.getExtent(),\n    );\n  }\n\n  /**\n   * Set the coordinates of the linestring.\n   * @param {!Array<import(\"../coordinate.js\").Coordinate>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 1);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    this.flatCoordinates.length = deflateCoordinates(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n    );\n    this.changed();\n  }\n}\n\nexport default LineString;\n","/**\n * @module ol/geom/MultiLineString\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport LineString from './LineString.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {arrayMaxSquaredDelta, assignClosestArrayPoint} from './flat/closest.js';\nimport {deflateCoordinatesArray} from './flat/deflate.js';\nimport {inflateCoordinatesArray} from './flat/inflate.js';\nimport {\n  interpolatePoint,\n  lineStringsCoordinateAtM,\n} from './flat/interpolate.js';\nimport {intersectsLineStringArray} from './flat/intersectsextent.js';\nimport {lineStringLength} from './flat/length.js';\nimport {douglasPeuckerArray} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Multi-linestring geometry.\n *\n * @api\n */\nclass MultiLineString extends SimpleGeometry {\n  /**\n   * @param {Array<Array<import(\"../coordinate.js\").Coordinate>|LineString>|Array<number>} coordinates\n   *     Coordinates or LineString geometries. (For internal use, flat coordinates in\n   *     combination with `layout` and `ends` are also accepted.)\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @param {Array<number>} [ends] Flat coordinate ends for internal use.\n   */\n  constructor(coordinates, layout, ends) {\n    super();\n\n    /**\n     * @type {Array<number>}\n     * @private\n     */\n    this.ends_ = [];\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDelta_ = -1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDeltaRevision_ = -1;\n\n    if (Array.isArray(coordinates[0])) {\n      this.setCoordinates(\n        /** @type {Array<Array<import(\"../coordinate.js\").Coordinate>>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    } else if (layout !== undefined && ends) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n      this.ends_ = ends;\n    } else {\n      const lineStrings = /** @type {Array<LineString>} */ (coordinates);\n      /** @type {Array<number>} */\n      const flatCoordinates = [];\n      const ends = [];\n      for (let i = 0, ii = lineStrings.length; i < ii; ++i) {\n        const lineString = lineStrings[i];\n        extend(flatCoordinates, lineString.getFlatCoordinates());\n        ends.push(flatCoordinates.length);\n      }\n      const layout =\n        lineStrings.length === 0\n          ? this.getLayout()\n          : lineStrings[0].getLayout();\n      this.setFlatCoordinates(layout, flatCoordinates);\n      this.ends_ = ends;\n    }\n  }\n\n  /**\n   * Append the passed linestring to the multilinestring.\n   * @param {LineString} lineString LineString.\n   * @api\n   */\n  appendLineString(lineString) {\n    extend(this.flatCoordinates, lineString.getFlatCoordinates().slice());\n    this.ends_.push(this.flatCoordinates.length);\n    this.changed();\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!MultiLineString} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const multiLineString = new MultiLineString(\n      this.flatCoordinates.slice(),\n      this.layout,\n      this.ends_.slice(),\n    );\n    multiLineString.applyProperties(this);\n    return multiLineString;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n   * @param {number} minSquaredDistance Minimum squared distance.\n   * @return {number} Minimum squared distance.\n   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n      return minSquaredDistance;\n    }\n    if (this.maxDeltaRevision_ != this.getRevision()) {\n      this.maxDelta_ = Math.sqrt(\n        arrayMaxSquaredDelta(\n          this.flatCoordinates,\n          0,\n          this.ends_,\n          this.stride,\n          0,\n        ),\n      );\n      this.maxDeltaRevision_ = this.getRevision();\n    }\n    return assignClosestArrayPoint(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      this.maxDelta_,\n      false,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n    );\n  }\n\n  /**\n   * Returns the coordinate at `m` using linear interpolation, or `null` if no\n   * such coordinate exists.\n   *\n   * `extrapolate` controls extrapolation beyond the range of Ms in the\n   * MultiLineString. If `extrapolate` is `true` then Ms less than the first\n   * M will return the first coordinate and Ms greater than the last M will\n   * return the last coordinate.\n   *\n   * `interpolate` controls interpolation between consecutive LineStrings\n   * within the MultiLineString. If `interpolate` is `true` the coordinates\n   * will be linearly interpolated between the last coordinate of one LineString\n   * and the first coordinate of the next LineString.  If `interpolate` is\n   * `false` then the function will return `null` for Ms falling between\n   * LineStrings.\n   *\n   * @param {number} m M.\n   * @param {boolean} [extrapolate] Extrapolate. Default is `false`.\n   * @param {boolean} [interpolate] Interpolate. Default is `false`.\n   * @return {import(\"../coordinate.js\").Coordinate|null} Coordinate.\n   * @api\n   */\n  getCoordinateAtM(m, extrapolate, interpolate) {\n    if (\n      (this.layout != 'XYM' && this.layout != 'XYZM') ||\n      this.flatCoordinates.length === 0\n    ) {\n      return null;\n    }\n    extrapolate = extrapolate !== undefined ? extrapolate : false;\n    interpolate = interpolate !== undefined ? interpolate : false;\n    return lineStringsCoordinateAtM(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      m,\n      extrapolate,\n      interpolate,\n    );\n  }\n\n  /**\n   * Return the coordinates of the multilinestring.\n   * @return {Array<Array<import(\"../coordinate.js\").Coordinate>>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates() {\n    return inflateCoordinatesArray(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n    );\n  }\n\n  /**\n   * @return {Array<number>} Ends.\n   */\n  getEnds() {\n    return this.ends_;\n  }\n\n  /**\n   * Return the linestring at the specified index.\n   * @param {number} index Index.\n   * @return {LineString} LineString.\n   * @api\n   */\n  getLineString(index) {\n    if (index < 0 || this.ends_.length <= index) {\n      return null;\n    }\n    return new LineString(\n      this.flatCoordinates.slice(\n        index === 0 ? 0 : this.ends_[index - 1],\n        this.ends_[index],\n      ),\n      this.layout,\n    );\n  }\n\n  /**\n   * Return the linestrings of this multilinestring.\n   * @return {Array<LineString>} LineStrings.\n   * @api\n   */\n  getLineStrings() {\n    const flatCoordinates = this.flatCoordinates;\n    const ends = this.ends_;\n    const layout = this.layout;\n    /** @type {Array<LineString>} */\n    const lineStrings = [];\n    let offset = 0;\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      const end = ends[i];\n      const lineString = new LineString(\n        flatCoordinates.slice(offset, end),\n        layout,\n      );\n      lineStrings.push(lineString);\n      offset = end;\n    }\n    return lineStrings;\n  }\n\n  /**\n   * Return the sum of all line string lengths\n   * @return {number} Length (on projected plane).\n   * @api\n   */\n  getLength() {\n    const ends = this.ends_;\n    let start = 0;\n    let length = 0;\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      length += lineStringLength(\n        this.flatCoordinates,\n        start,\n        ends[i],\n        this.stride,\n      );\n      start = ends[i];\n    }\n    return length;\n  }\n\n  /**\n   * @return {Array<number>} Flat midpoints.\n   */\n  getFlatMidpoints() {\n    /** @type {Array<number>} */\n    const midpoints = [];\n    const flatCoordinates = this.flatCoordinates;\n    let offset = 0;\n    const ends = this.ends_;\n    const stride = this.stride;\n    for (let i = 0, ii = ends.length; i < ii; ++i) {\n      const end = ends[i];\n      const midpoint = interpolatePoint(\n        flatCoordinates,\n        offset,\n        end,\n        stride,\n        0.5,\n      );\n      extend(midpoints, midpoint);\n      offset = end;\n    }\n    return midpoints;\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {MultiLineString} Simplified MultiLineString.\n   * @protected\n   * @override\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    /** @type {Array<number>} */\n    const simplifiedFlatCoordinates = [];\n    /** @type {Array<number>} */\n    const simplifiedEnds = [];\n    simplifiedFlatCoordinates.length = douglasPeuckerArray(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      squaredTolerance,\n      simplifiedFlatCoordinates,\n      0,\n      simplifiedEnds,\n    );\n    return new MultiLineString(simplifiedFlatCoordinates, 'XY', simplifiedEnds);\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'MultiLineString';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return intersectsLineStringArray(\n      this.flatCoordinates,\n      0,\n      this.ends_,\n      this.stride,\n      extent,\n    );\n  }\n\n  /**\n   * Set the coordinates of the multilinestring.\n   * @param {!Array<Array<import(\"../coordinate.js\").Coordinate>>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 2);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    const ends = deflateCoordinatesArray(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n      this.ends_,\n    );\n    this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n    this.changed();\n  }\n}\n\nexport default MultiLineString;\n","/**\n * @module ol/geom/MultiPoint\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY, containsXY} from '../extent.js';\nimport {squaredDistance as squaredDx} from '../math.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {inflateCoordinates} from './flat/inflate.js';\n\n/**\n * @classdesc\n * Multi-point geometry.\n *\n * @api\n */\nclass MultiPoint extends SimpleGeometry {\n  /**\n   * @param {Array<import(\"../coordinate.js\").Coordinate>|Array<number>} coordinates Coordinates.\n   *     For internal use, flat coordinates in combination with `layout` are also accepted.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   */\n  constructor(coordinates, layout) {\n    super();\n    if (layout && !Array.isArray(coordinates[0])) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n    } else {\n      this.setCoordinates(\n        /** @type {Array<import(\"../coordinate.js\").Coordinate>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    }\n  }\n\n  /**\n   * Append the passed point to this multipoint.\n   * @param {Point} point Point.\n   * @api\n   */\n  appendPoint(point) {\n    extend(this.flatCoordinates, point.getFlatCoordinates());\n    this.changed();\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!MultiPoint} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const multiPoint = new MultiPoint(\n      this.flatCoordinates.slice(),\n      this.layout,\n    );\n    multiPoint.applyProperties(this);\n    return multiPoint;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n   * @param {number} minSquaredDistance Minimum squared distance.\n   * @return {number} Minimum squared distance.\n   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n      return minSquaredDistance;\n    }\n    const flatCoordinates = this.flatCoordinates;\n    const stride = this.stride;\n    for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n      const squaredDistance = squaredDx(\n        x,\n        y,\n        flatCoordinates[i],\n        flatCoordinates[i + 1],\n      );\n      if (squaredDistance < minSquaredDistance) {\n        minSquaredDistance = squaredDistance;\n        for (let j = 0; j < stride; ++j) {\n          closestPoint[j] = flatCoordinates[i + j];\n        }\n        closestPoint.length = stride;\n      }\n    }\n    return minSquaredDistance;\n  }\n\n  /**\n   * Return the coordinates of the multipoint.\n   * @return {Array<import(\"../coordinate.js\").Coordinate>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates() {\n    return inflateCoordinates(\n      this.flatCoordinates,\n      0,\n      this.flatCoordinates.length,\n      this.stride,\n    );\n  }\n\n  /**\n   * Return the point at the specified index.\n   * @param {number} index Index.\n   * @return {Point} Point.\n   * @api\n   */\n  getPoint(index) {\n    const n = this.flatCoordinates.length / this.stride;\n    if (index < 0 || n <= index) {\n      return null;\n    }\n    return new Point(\n      this.flatCoordinates.slice(\n        index * this.stride,\n        (index + 1) * this.stride,\n      ),\n      this.layout,\n    );\n  }\n\n  /**\n   * Return the points of this multipoint.\n   * @return {Array<Point>} Points.\n   * @api\n   */\n  getPoints() {\n    const flatCoordinates = this.flatCoordinates;\n    const layout = this.layout;\n    const stride = this.stride;\n    /** @type {Array<Point>} */\n    const points = [];\n    for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n      const point = new Point(flatCoordinates.slice(i, i + stride), layout);\n      points.push(point);\n    }\n    return points;\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'MultiPoint';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    const flatCoordinates = this.flatCoordinates;\n    const stride = this.stride;\n    for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n      const x = flatCoordinates[i];\n      const y = flatCoordinates[i + 1];\n      if (containsXY(extent, x, y)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Set the coordinates of the multipoint.\n   * @param {!Array<import(\"../coordinate.js\").Coordinate>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 1);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    this.flatCoordinates.length = deflateCoordinates(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n    );\n    this.changed();\n  }\n}\n\nexport default MultiPoint;\n","/**\n * @module ol/geom/MultiPolygon\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport MultiPoint from './MultiPoint.js';\nimport Polygon from './Polygon.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {linearRingss as linearRingssArea} from './flat/area.js';\nimport {linearRingss as linearRingssCenter} from './flat/center.js';\nimport {\n  assignClosestMultiArrayPoint,\n  multiArrayMaxSquaredDelta,\n} from './flat/closest.js';\nimport {linearRingssContainsXY} from './flat/contains.js';\nimport {deflateMultiCoordinatesArray} from './flat/deflate.js';\nimport {inflateMultiCoordinatesArray} from './flat/inflate.js';\nimport {getInteriorPointsOfMultiArray} from './flat/interiorpoint.js';\nimport {intersectsLinearRingMultiArray} from './flat/intersectsextent.js';\nimport {\n  linearRingssAreOriented,\n  orientLinearRingsArray,\n} from './flat/orient.js';\nimport {quantizeMultiArray} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Multi-polygon geometry.\n *\n * @api\n */\nclass MultiPolygon extends SimpleGeometry {\n  /**\n   * @param {Array<Array<Array<import(\"../coordinate.js\").Coordinate>>|Polygon>|Array<number>} coordinates Coordinates.\n   *     For internal use, flat coordinates in combination with `layout` and `endss` are also accepted.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @param {Array<Array<number>>} [endss] Array of ends for internal use with flat coordinates.\n   */\n  constructor(coordinates, layout, endss) {\n    super();\n\n    /**\n     * @type {Array<Array<number>>}\n     * @private\n     */\n    this.endss_ = [];\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.flatInteriorPointsRevision_ = -1;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.flatInteriorPoints_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDelta_ = -1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.maxDeltaRevision_ = -1;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.orientedRevision_ = -1;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.orientedFlatCoordinates_ = null;\n\n    if (!endss && !Array.isArray(coordinates[0])) {\n      const polygons = /** @type {Array<Polygon>} */ (coordinates);\n      /** @type {Array<number>} */\n      const flatCoordinates = [];\n      const thisEndss = [];\n      for (let i = 0, ii = polygons.length; i < ii; ++i) {\n        const polygon = polygons[i];\n        const offset = flatCoordinates.length;\n        const ends = polygon.getEnds();\n        for (let j = 0, jj = ends.length; j < jj; ++j) {\n          ends[j] += offset;\n        }\n        extend(flatCoordinates, polygon.getFlatCoordinates());\n        thisEndss.push(ends);\n      }\n      layout =\n        polygons.length === 0 ? this.getLayout() : polygons[0].getLayout();\n      coordinates = flatCoordinates;\n      endss = thisEndss;\n    }\n    if (layout !== undefined && endss) {\n      this.setFlatCoordinates(\n        layout,\n        /** @type {Array<number>} */ (coordinates),\n      );\n      this.endss_ = endss;\n    } else {\n      this.setCoordinates(\n        /** @type {Array<Array<Array<import(\"../coordinate.js\").Coordinate>>>} */ (\n          coordinates\n        ),\n        layout,\n      );\n    }\n  }\n\n  /**\n   * Append the passed polygon to this multipolygon.\n   * @param {Polygon} polygon Polygon.\n   * @api\n   */\n  appendPolygon(polygon) {\n    /** @type {Array<number>} */\n    let ends;\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = polygon.getFlatCoordinates().slice();\n      ends = polygon.getEnds().slice();\n      this.endss_.push();\n    } else {\n      const offset = this.flatCoordinates.length;\n      extend(this.flatCoordinates, polygon.getFlatCoordinates());\n      ends = polygon.getEnds().slice();\n      for (let i = 0, ii = ends.length; i < ii; ++i) {\n        ends[i] += offset;\n      }\n    }\n    this.endss_.push(ends);\n    this.changed();\n  }\n\n  /**\n   * Make a complete copy of the geometry.\n   * @return {!MultiPolygon} Clone.\n   * @api\n   * @override\n   */\n  clone() {\n    const len = this.endss_.length;\n    const newEndss = new Array(len);\n    for (let i = 0; i < len; ++i) {\n      newEndss[i] = this.endss_[i].slice();\n    }\n\n    const multiPolygon = new MultiPolygon(\n      this.flatCoordinates.slice(),\n      this.layout,\n      newEndss,\n    );\n    multiPolygon.applyProperties(this);\n\n    return multiPolygon;\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n   * @param {number} minSquaredDistance Minimum squared distance.\n   * @return {number} Minimum squared distance.\n   * @override\n   */\n  closestPointXY(x, y, closestPoint, minSquaredDistance) {\n    if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n      return minSquaredDistance;\n    }\n    if (this.maxDeltaRevision_ != this.getRevision()) {\n      this.maxDelta_ = Math.sqrt(\n        multiArrayMaxSquaredDelta(\n          this.flatCoordinates,\n          0,\n          this.endss_,\n          this.stride,\n          0,\n        ),\n      );\n      this.maxDeltaRevision_ = this.getRevision();\n    }\n    return assignClosestMultiArrayPoint(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.endss_,\n      this.stride,\n      this.maxDelta_,\n      true,\n      x,\n      y,\n      closestPoint,\n      minSquaredDistance,\n    );\n  }\n\n  /**\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @return {boolean} Contains (x, y).\n   * @override\n   */\n  containsXY(x, y) {\n    return linearRingssContainsXY(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.endss_,\n      this.stride,\n      x,\n      y,\n    );\n  }\n\n  /**\n   * Return the area of the multipolygon on projected plane.\n   * @return {number} Area (on projected plane).\n   * @api\n   */\n  getArea() {\n    return linearRingssArea(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.endss_,\n      this.stride,\n    );\n  }\n\n  /**\n   * Get the coordinate array for this geometry.  This array has the structure\n   * of a GeoJSON coordinate array for multi-polygons.\n   *\n   * @param {boolean} [right] Orient coordinates according to the right-hand\n   *     rule (counter-clockwise for exterior and clockwise for interior rings).\n   *     If `false`, coordinates will be oriented according to the left-hand rule\n   *     (clockwise for exterior and counter-clockwise for interior rings).\n   *     By default, coordinate orientation will depend on how the geometry was\n   *     constructed.\n   * @return {Array<Array<Array<import(\"../coordinate.js\").Coordinate>>>} Coordinates.\n   * @api\n   * @override\n   */\n  getCoordinates(right) {\n    let flatCoordinates;\n    if (right !== undefined) {\n      flatCoordinates = this.getOrientedFlatCoordinates().slice();\n      orientLinearRingsArray(\n        flatCoordinates,\n        0,\n        this.endss_,\n        this.stride,\n        right,\n      );\n    } else {\n      flatCoordinates = this.flatCoordinates;\n    }\n\n    return inflateMultiCoordinatesArray(\n      flatCoordinates,\n      0,\n      this.endss_,\n      this.stride,\n    );\n  }\n\n  /**\n   * @return {Array<Array<number>>} Endss.\n   */\n  getEndss() {\n    return this.endss_;\n  }\n\n  /**\n   * @return {Array<number>} Flat interior points.\n   */\n  getFlatInteriorPoints() {\n    if (this.flatInteriorPointsRevision_ != this.getRevision()) {\n      const flatCenters = linearRingssCenter(\n        this.flatCoordinates,\n        0,\n        this.endss_,\n        this.stride,\n      );\n      this.flatInteriorPoints_ = getInteriorPointsOfMultiArray(\n        this.getOrientedFlatCoordinates(),\n        0,\n        this.endss_,\n        this.stride,\n        flatCenters,\n      );\n      this.flatInteriorPointsRevision_ = this.getRevision();\n    }\n    return /** @type {Array<number>} */ (this.flatInteriorPoints_);\n  }\n\n  /**\n   * Return the interior points as {@link module:ol/geom/MultiPoint~MultiPoint multipoint}.\n   * @return {MultiPoint} Interior points as XYM coordinates, where M is\n   * the length of the horizontal intersection that the point belongs to.\n   * @api\n   */\n  getInteriorPoints() {\n    return new MultiPoint(this.getFlatInteriorPoints().slice(), 'XYM');\n  }\n\n  /**\n   * @return {Array<number>} Oriented flat coordinates.\n   */\n  getOrientedFlatCoordinates() {\n    if (this.orientedRevision_ != this.getRevision()) {\n      const flatCoordinates = this.flatCoordinates;\n      if (\n        linearRingssAreOriented(flatCoordinates, 0, this.endss_, this.stride)\n      ) {\n        this.orientedFlatCoordinates_ = flatCoordinates;\n      } else {\n        this.orientedFlatCoordinates_ = flatCoordinates.slice();\n        this.orientedFlatCoordinates_.length = orientLinearRingsArray(\n          this.orientedFlatCoordinates_,\n          0,\n          this.endss_,\n          this.stride,\n        );\n      }\n      this.orientedRevision_ = this.getRevision();\n    }\n    return /** @type {Array<number>} */ (this.orientedFlatCoordinates_);\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {MultiPolygon} Simplified MultiPolygon.\n   * @protected\n   * @override\n   */\n  getSimplifiedGeometryInternal(squaredTolerance) {\n    /** @type {Array<number>} */\n    const simplifiedFlatCoordinates = [];\n    /** @type {Array<Array<number>>} */\n    const simplifiedEndss = [];\n    simplifiedFlatCoordinates.length = quantizeMultiArray(\n      this.flatCoordinates,\n      0,\n      this.endss_,\n      this.stride,\n      Math.sqrt(squaredTolerance),\n      simplifiedFlatCoordinates,\n      0,\n      simplifiedEndss,\n    );\n    return new MultiPolygon(simplifiedFlatCoordinates, 'XY', simplifiedEndss);\n  }\n\n  /**\n   * Return the polygon at the specified index.\n   * @param {number} index Index.\n   * @return {Polygon} Polygon.\n   * @api\n   */\n  getPolygon(index) {\n    if (index < 0 || this.endss_.length <= index) {\n      return null;\n    }\n    let offset;\n    if (index === 0) {\n      offset = 0;\n    } else {\n      const prevEnds = this.endss_[index - 1];\n      offset = prevEnds[prevEnds.length - 1];\n    }\n    const ends = this.endss_[index].slice();\n    const end = ends[ends.length - 1];\n    if (offset !== 0) {\n      for (let i = 0, ii = ends.length; i < ii; ++i) {\n        ends[i] -= offset;\n      }\n    }\n    return new Polygon(\n      this.flatCoordinates.slice(offset, end),\n      this.layout,\n      ends,\n    );\n  }\n\n  /**\n   * Return the polygons of this multipolygon.\n   * @return {Array<Polygon>} Polygons.\n   * @api\n   */\n  getPolygons() {\n    const layout = this.layout;\n    const flatCoordinates = this.flatCoordinates;\n    const endss = this.endss_;\n    const polygons = [];\n    let offset = 0;\n    for (let i = 0, ii = endss.length; i < ii; ++i) {\n      const ends = endss[i].slice();\n      const end = ends[ends.length - 1];\n      if (offset !== 0) {\n        for (let j = 0, jj = ends.length; j < jj; ++j) {\n          ends[j] -= offset;\n        }\n      }\n      const polygon = new Polygon(\n        flatCoordinates.slice(offset, end),\n        layout,\n        ends,\n      );\n      polygons.push(polygon);\n      offset = end;\n    }\n    return polygons;\n  }\n\n  /**\n   * Get the type of this geometry.\n   * @return {import(\"./Geometry.js\").Type} Geometry type.\n   * @api\n   * @override\n   */\n  getType() {\n    return 'MultiPolygon';\n  }\n\n  /**\n   * Test if the geometry and the passed extent intersect.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {boolean} `true` if the geometry and the extent intersect.\n   * @api\n   * @override\n   */\n  intersectsExtent(extent) {\n    return intersectsLinearRingMultiArray(\n      this.getOrientedFlatCoordinates(),\n      0,\n      this.endss_,\n      this.stride,\n      extent,\n    );\n  }\n\n  /**\n   * Set the coordinates of the multipolygon.\n   * @param {!Array<Array<Array<import(\"../coordinate.js\").Coordinate>>>} coordinates Coordinates.\n   * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n   * @api\n   * @override\n   */\n  setCoordinates(coordinates, layout) {\n    this.setLayout(layout, coordinates, 3);\n    if (!this.flatCoordinates) {\n      this.flatCoordinates = [];\n    }\n    const endss = deflateMultiCoordinatesArray(\n      this.flatCoordinates,\n      0,\n      coordinates,\n      this.stride,\n      this.endss_,\n    );\n    if (endss.length === 0) {\n      this.flatCoordinates.length = 0;\n    } else {\n      const lastEnds = endss[endss.length - 1];\n      this.flatCoordinates.length =\n        lastEnds.length === 0 ? 0 : lastEnds[lastEnds.length - 1];\n    }\n    this.changed();\n  }\n}\n\nexport default MultiPolygon;\n","/**\n * @module ol/render/Feature\n */\nimport Feature from '../Feature.js';\nimport {extend} from '../array.js';\nimport {\n  createOrUpdateFromCoordinate,\n  createOrUpdateFromFlatCoordinates,\n  getCenter,\n  getHeight,\n} from '../extent.js';\nimport {memoizeOne} from '../functions.js';\nimport {linearRingss as linearRingssCenter} from '../geom/flat/center.js';\nimport {\n  getInteriorPointOfArray,\n  getInteriorPointsOfMultiArray,\n} from '../geom/flat/interiorpoint.js';\nimport {interpolatePoint} from '../geom/flat/interpolate.js';\nimport {inflateEnds} from '../geom/flat/orient.js';\nimport {\n  douglasPeucker,\n  douglasPeuckerArray,\n  quantizeArray,\n} from '../geom/flat/simplify.js';\nimport {transform2D} from '../geom/flat/transform.js';\nimport {\n  LineString,\n  MultiLineString,\n  MultiPoint,\n  MultiPolygon,\n  Point,\n  Polygon,\n} from '../geom.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n  compose as composeTransform,\n  create as createTransform,\n} from '../transform.js';\n\n/**\n * @typedef {'Point' | 'LineString' | 'LinearRing' | 'Polygon' | 'MultiPoint' | 'MultiLineString'} Type\n * The geometry type.  One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'` or 'MultiLineString'`.\n */\n\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nconst tmpTransform = createTransform();\n\n/**\n * Lightweight, read-only, {@link module:ol/Feature~Feature} and {@link module:ol/geom/Geometry~Geometry} like\n * structure, optimized for vector tile rendering and styling. Geometry access\n * through the API is limited to getting the type and extent of the geometry.\n */\nclass RenderFeature {\n  /**\n   * @param {Type} type Geometry type.\n   * @param {Array<number>} flatCoordinates Flat coordinates. These always need\n   *     to be right-handed for polygons.\n   * @param {Array<number>} ends Ends.\n   * @param {number} stride Stride.\n   * @param {Object<string, *>} properties Properties.\n   * @param {number|string|undefined} id Feature id.\n   */\n  constructor(type, flatCoordinates, ends, stride, properties, id) {\n    /**\n     * @type {import(\"../style/Style.js\").StyleFunction|undefined}\n     */\n    this.styleFunction;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent|undefined}\n     */\n    this.extent_;\n\n    /**\n     * @private\n     * @type {number|string|undefined}\n     */\n    this.id_ = id;\n\n    /**\n     * @private\n     * @type {Type}\n     */\n    this.type_ = type;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.flatCoordinates_ = flatCoordinates;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.flatInteriorPoints_ = null;\n\n    /**\n     * @private\n     * @type {Array<number>}\n     */\n    this.flatMidpoints_ = null;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.ends_ = ends || null;\n\n    /**\n     * @private\n     * @type {Object<string, *>}\n     */\n    this.properties_ = properties;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.squaredTolerance_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.stride_ = stride;\n\n    /**\n     * @private\n     * @type {RenderFeature}\n     */\n    this.simplifiedGeometry_;\n  }\n\n  /**\n   * Get a feature property by its key.\n   * @param {string} key Key\n   * @return {*} Value for the requested key.\n   * @api\n   */\n  get(key) {\n    return this.properties_[key];\n  }\n\n  /**\n   * Get the extent of this feature's geometry.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   * @api\n   */\n  getExtent() {\n    if (!this.extent_) {\n      this.extent_ =\n        this.type_ === 'Point'\n          ? createOrUpdateFromCoordinate(this.flatCoordinates_)\n          : createOrUpdateFromFlatCoordinates(\n              this.flatCoordinates_,\n              0,\n              this.flatCoordinates_.length,\n              2,\n            );\n    }\n    return this.extent_;\n  }\n\n  /**\n   * @return {Array<number>} Flat interior points.\n   */\n  getFlatInteriorPoint() {\n    if (!this.flatInteriorPoints_) {\n      const flatCenter = getCenter(this.getExtent());\n      this.flatInteriorPoints_ = getInteriorPointOfArray(\n        this.flatCoordinates_,\n        0,\n        this.ends_,\n        2,\n        flatCenter,\n        0,\n      );\n    }\n    return this.flatInteriorPoints_;\n  }\n\n  /**\n   * @return {Array<number>} Flat interior points.\n   */\n  getFlatInteriorPoints() {\n    if (!this.flatInteriorPoints_) {\n      const ends = inflateEnds(this.flatCoordinates_, this.ends_);\n      const flatCenters = linearRingssCenter(this.flatCoordinates_, 0, ends, 2);\n      this.flatInteriorPoints_ = getInteriorPointsOfMultiArray(\n        this.flatCoordinates_,\n        0,\n        ends,\n        2,\n        flatCenters,\n      );\n    }\n    return this.flatInteriorPoints_;\n  }\n\n  /**\n   * @return {Array<number>} Flat midpoint.\n   */\n  getFlatMidpoint() {\n    if (!this.flatMidpoints_) {\n      this.flatMidpoints_ = interpolatePoint(\n        this.flatCoordinates_,\n        0,\n        this.flatCoordinates_.length,\n        2,\n        0.5,\n      );\n    }\n    return this.flatMidpoints_;\n  }\n\n  /**\n   * @return {Array<number>} Flat midpoints.\n   */\n  getFlatMidpoints() {\n    if (!this.flatMidpoints_) {\n      this.flatMidpoints_ = [];\n      const flatCoordinates = this.flatCoordinates_;\n      let offset = 0;\n      const ends = /** @type {Array<number>} */ (this.ends_);\n      for (let i = 0, ii = ends.length; i < ii; ++i) {\n        const end = ends[i];\n        const midpoint = interpolatePoint(flatCoordinates, offset, end, 2, 0.5);\n        extend(this.flatMidpoints_, midpoint);\n        offset = end;\n      }\n    }\n    return this.flatMidpoints_;\n  }\n\n  /**\n   * Get the feature identifier.  This is a stable identifier for the feature and\n   * is set when reading data from a remote source.\n   * @return {number|string|undefined} Id.\n   * @api\n   */\n  getId() {\n    return this.id_;\n  }\n\n  /**\n   * @return {Array<number>} Flat coordinates.\n   */\n  getOrientedFlatCoordinates() {\n    return this.flatCoordinates_;\n  }\n\n  /**\n   * For API compatibility with {@link module:ol/Feature~Feature}, this method is useful when\n   * determining the geometry type in style function (see {@link #getType}).\n   * @return {RenderFeature} Feature.\n   * @api\n   */\n  getGeometry() {\n    return this;\n  }\n\n  /**\n   * @param {number} squaredTolerance Squared tolerance.\n   * @return {RenderFeature} Simplified geometry.\n   */\n  getSimplifiedGeometry(squaredTolerance) {\n    return this;\n  }\n\n  /**\n   * Get a transformed and simplified version of the geometry.\n   * @param {number} squaredTolerance Squared tolerance.\n   * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n   * @return {RenderFeature} Simplified geometry.\n   */\n  simplifyTransformed(squaredTolerance, transform) {\n    return this;\n  }\n\n  /**\n   * Get the feature properties.\n   * @return {Object<string, *>} Feature properties.\n   * @api\n   */\n  getProperties() {\n    return this.properties_;\n  }\n\n  /**\n   * Get an object of all property names and values.  This has the same behavior as getProperties,\n   * but is here to conform with the {@link module:ol/Feature~Feature} interface.\n   * @return {Object<string, *>?} Object.\n   */\n  getPropertiesInternal() {\n    return this.properties_;\n  }\n\n  /**\n   * @return {number} Stride.\n   */\n  getStride() {\n    return this.stride_;\n  }\n\n  /**\n   * @return {import('../style/Style.js').StyleFunction|undefined} Style\n   */\n  getStyleFunction() {\n    return this.styleFunction;\n  }\n\n  /**\n   * Get the type of this feature's geometry.\n   * @return {Type} Geometry type.\n   * @api\n   */\n  getType() {\n    return this.type_;\n  }\n\n  /**\n   * Transform geometry coordinates from tile pixel space to projected.\n   *\n   * @param {import(\"../proj.js\").ProjectionLike} projection The data projection\n   */\n  transform(projection) {\n    projection = getProjection(projection);\n    const pixelExtent = projection.getExtent();\n    const projectedExtent = projection.getWorldExtent();\n    if (pixelExtent && projectedExtent) {\n      const scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n      composeTransform(\n        tmpTransform,\n        projectedExtent[0],\n        projectedExtent[3],\n        scale,\n        -scale,\n        0,\n        0,\n        0,\n      );\n      transform2D(\n        this.flatCoordinates_,\n        0,\n        this.flatCoordinates_.length,\n        2,\n        tmpTransform,\n        this.flatCoordinates_,\n      );\n    }\n  }\n\n  /**\n   * Apply a transform function to the coordinates of the geometry.\n   * The geometry is modified in place.\n   * If you do not want the geometry modified in place, first `clone()` it and\n   * then use this function on the clone.\n   * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n   */\n  applyTransform(transformFn) {\n    transformFn(this.flatCoordinates_, this.flatCoordinates_, this.stride_);\n  }\n\n  /**\n   * @return {RenderFeature} A cloned render feature.\n   */\n  clone() {\n    return new RenderFeature(\n      this.type_,\n      this.flatCoordinates_.slice(),\n      this.ends_?.slice(),\n      this.stride_,\n      Object.assign({}, this.properties_),\n      this.id_,\n    );\n  }\n\n  /**\n   * @return {Array<number>|null} Ends.\n   */\n  getEnds() {\n    return this.ends_;\n  }\n\n  /**\n   * Add transform and resolution based geometry simplification to this instance.\n   * @return {RenderFeature} This render feature.\n   */\n  enableSimplifyTransformed() {\n    this.simplifyTransformed = memoizeOne((squaredTolerance, transform) => {\n      if (squaredTolerance === this.squaredTolerance_) {\n        return this.simplifiedGeometry_;\n      }\n      this.simplifiedGeometry_ = this.clone();\n      if (transform) {\n        this.simplifiedGeometry_.applyTransform(transform);\n      }\n      const simplifiedFlatCoordinates =\n        this.simplifiedGeometry_.getFlatCoordinates();\n      let simplifiedEnds;\n      switch (this.type_) {\n        case 'LineString':\n          simplifiedFlatCoordinates.length = douglasPeucker(\n            simplifiedFlatCoordinates,\n            0,\n            this.simplifiedGeometry_.flatCoordinates_.length,\n            this.simplifiedGeometry_.stride_,\n            squaredTolerance,\n            simplifiedFlatCoordinates,\n            0,\n          );\n          simplifiedEnds = [simplifiedFlatCoordinates.length];\n          break;\n        case 'MultiLineString':\n          simplifiedEnds = [];\n          simplifiedFlatCoordinates.length = douglasPeuckerArray(\n            simplifiedFlatCoordinates,\n            0,\n            this.simplifiedGeometry_.ends_,\n            this.simplifiedGeometry_.stride_,\n            squaredTolerance,\n            simplifiedFlatCoordinates,\n            0,\n            simplifiedEnds,\n          );\n          break;\n        case 'Polygon':\n          simplifiedEnds = [];\n          simplifiedFlatCoordinates.length = quantizeArray(\n            simplifiedFlatCoordinates,\n            0,\n            this.simplifiedGeometry_.ends_,\n            this.simplifiedGeometry_.stride_,\n            Math.sqrt(squaredTolerance),\n            simplifiedFlatCoordinates,\n            0,\n            simplifiedEnds,\n          );\n          break;\n        default:\n      }\n      if (simplifiedEnds) {\n        this.simplifiedGeometry_ = new RenderFeature(\n          this.type_,\n          simplifiedFlatCoordinates,\n          simplifiedEnds,\n          2,\n          this.properties_,\n          this.id_,\n        );\n      }\n      this.squaredTolerance_ = squaredTolerance;\n      return this.simplifiedGeometry_;\n    });\n    return this;\n  }\n}\n\n/**\n * @return {Array<number>} Flat coordinates.\n */\nRenderFeature.prototype.getFlatCoordinates =\n  RenderFeature.prototype.getOrientedFlatCoordinates;\n\n/**\n * Create a geometry from an `ol/render/Feature`\n * @param {RenderFeature} renderFeature\n * Render Feature\n * @return {Point|MultiPoint|LineString|MultiLineString|Polygon|MultiPolygon}\n * New geometry instance.\n * @api\n */\nexport function toGeometry(renderFeature) {\n  const geometryType = renderFeature.getType();\n  switch (geometryType) {\n    case 'Point':\n      return new Point(renderFeature.getFlatCoordinates());\n    case 'MultiPoint':\n      return new MultiPoint(renderFeature.getFlatCoordinates(), 'XY');\n    case 'LineString':\n      return new LineString(renderFeature.getFlatCoordinates(), 'XY');\n    case 'MultiLineString':\n      return new MultiLineString(\n        renderFeature.getFlatCoordinates(),\n        'XY',\n        /** @type {Array<number>} */ (renderFeature.getEnds()),\n      );\n    case 'Polygon':\n      const flatCoordinates = renderFeature.getFlatCoordinates();\n      const ends = renderFeature.getEnds();\n      const endss = inflateEnds(flatCoordinates, ends);\n      return endss.length > 1\n        ? new MultiPolygon(flatCoordinates, 'XY', endss)\n        : new Polygon(flatCoordinates, 'XY', ends);\n    default:\n      throw new Error('Invalid geometry type:' + geometryType);\n  }\n}\n\n/**\n * Create an `ol/Feature` from an `ol/render/Feature`\n * @param {RenderFeature} renderFeature RenderFeature\n * @param {string} [geometryName] Geometry name to use\n * when creating the Feature.\n * @return {Feature} Newly constructed `ol/Feature` with properties,\n * geometry, and id copied over.\n * @api\n */\nexport function toFeature(renderFeature, geometryName) {\n  const id = renderFeature.getId();\n  const geometry = toGeometry(renderFeature);\n  const properties = renderFeature.getProperties();\n  const feature = new Feature();\n  if (geometryName !== undefined) {\n    feature.setGeometryName(geometryName);\n  }\n  feature.setGeometry(geometry);\n  if (id !== undefined) {\n    feature.setId(id);\n  }\n  feature.setProperties(properties, true);\n  return feature;\n}\n\nexport default RenderFeature;\n","/**\n * @module ol/featureloader\n */\n\n/**\n *\n * @type {boolean}\n * @private\n */\nlet withCredentials = false;\n\n/**\n * {@link module:ol/source/Vector~VectorSource} sources use a function of this type to\n * load features.\n *\n * This function takes up to 5 arguments. These are an {@link module:ol/extent~Extent} representing\n * the area to be loaded, a `{number}` representing the resolution (map units per pixel), a\n * {@link module:ol/proj/Projection~Projection} for the projection, an optional success callback that should get\n * the loaded features passed as an argument and an optional failure callback with no arguments. If\n * the callbacks are not used, the corresponding vector source will not fire `'featuresloadend'` and\n * `'featuresloaderror'` events. `this` within the function is bound to the\n * {@link module:ol/source/Vector~VectorSource} it's called from.\n *\n * The function is responsible for loading the features and adding them to the\n * source.\n *\n * @template {import(\"./Feature.js\").FeatureLike} [FeatureType=import(\"./Feature.js\").FeatureLike]\n * @typedef {(\n *           extent: import(\"./extent.js\").Extent,\n *           resolution: number,\n *           projection: import(\"./proj/Projection.js\").default,\n *           success?: (features: Array<FeatureType>) => void,\n *           failure?: () => void) => void} FeatureLoader\n * @api\n */\n\n/**\n * {@link module:ol/source/Vector~VectorSource} sources use a function of this type to\n * get the url to load features from.\n *\n * This function takes an {@link module:ol/extent~Extent} representing the area\n * to be loaded, a `{number}` representing the resolution (map units per pixel)\n * and an {@link module:ol/proj/Projection~Projection} for the projection  as\n * arguments and returns a `{string}` representing the URL.\n * @typedef {function(import(\"./extent.js\").Extent, number, import(\"./proj/Projection.js\").default): string} FeatureUrlFunction\n * @api\n */\n\n/**\n * @template {import(\"./Feature.js\").FeatureLike} [FeatureType=import(\"./Feature.js\").default]\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default<FeatureType>} format Feature format.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {function(Array<FeatureType>, import(\"./proj/Projection.js\").default): void} success Success\n *      Function called with the loaded features and optionally with the data projection.\n * @param {function(): void} failure Failure\n *      Function called when loading failed.\n */\nexport function loadFeaturesXhr(\n  url,\n  format,\n  extent,\n  resolution,\n  projection,\n  success,\n  failure,\n) {\n  const xhr = new XMLHttpRequest();\n  xhr.open(\n    'GET',\n    typeof url === 'function' ? url(extent, resolution, projection) : url,\n    true,\n  );\n  if (format.getType() == 'arraybuffer') {\n    xhr.responseType = 'arraybuffer';\n  }\n  xhr.withCredentials = withCredentials;\n  /**\n   * @param {Event} event Event.\n   * @private\n   */\n  xhr.onload = function (event) {\n    // status will be 0 for file:// urls\n    if (!xhr.status || (xhr.status >= 200 && xhr.status < 300)) {\n      const type = format.getType();\n      try {\n        /** @type {Document|Node|Object|string|undefined} */\n        let source;\n        if (type == 'text' || type == 'json') {\n          source = xhr.responseText;\n        } else if (type == 'xml') {\n          source = xhr.responseXML || xhr.responseText;\n        } else if (type == 'arraybuffer') {\n          source = /** @type {ArrayBuffer} */ (xhr.response);\n        }\n        if (source) {\n          success(\n            /** @type {Array<FeatureType>} */\n            (\n              format.readFeatures(source, {\n                extent: extent,\n                featureProjection: projection,\n              })\n            ),\n            format.readProjection(source),\n          );\n        } else {\n          failure();\n        }\n      } catch {\n        failure();\n      }\n    } else {\n      failure();\n    }\n  };\n  /**\n   * @private\n   */\n  xhr.onerror = failure;\n  xhr.send();\n}\n\n/**\n * Create an XHR feature loader for a `url` and `format`. The feature loader\n * loads features (with XHR), parses the features, and adds them to the\n * vector source.\n *\n * @template {import(\"./Feature.js\").FeatureLike} [FeatureType=import(\"./Feature.js\").default]\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default<FeatureType>} format Feature format.\n * @return {FeatureLoader<FeatureType>} The feature loader.\n * @api\n */\nexport function xhr(url, format) {\n  /**\n   * @param {import(\"./extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {import(\"./proj/Projection.js\").default} projection Projection.\n   * @param {function(Array<FeatureType>): void} [success] Success\n   *      Function called when loading succeeded.\n   * @param {function(): void} [failure] Failure\n   *      Function called when loading failed.\n   * @this {import(\"./source/Vector.js\").default<FeatureType>}\n   */\n  return function (extent, resolution, projection, success, failure) {\n    loadFeaturesXhr(\n      url,\n      format,\n      extent,\n      resolution,\n      projection,\n      /**\n       * @param {Array<FeatureType>} features The loaded features.\n       * @param {import(\"./proj/Projection.js\").default} dataProjection Data\n       * projection.\n       */\n      (features, dataProjection) => {\n        this.addFeatures(features);\n        if (success !== undefined) {\n          success(features);\n        }\n      },\n      () => {\n        this.changed();\n        if (failure !== undefined) {\n          failure();\n        }\n      },\n    );\n  };\n}\n\n/**\n * Setter for the withCredentials configuration for the XHR.\n *\n * @param {boolean} xhrWithCredentials The value of withCredentials to set.\n * Compare https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/\n * @api\n */\nexport function setWithCredentials(xhrWithCredentials) {\n  withCredentials = xhrWithCredentials;\n}\n","/**\n * @module ol/loadingstrategy\n */\n\nimport {fromUserExtent, fromUserResolution, toUserExtent} from './proj.js';\n\n/**\n * Strategy function for loading all features with a single request.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @return {Array<import(\"./extent.js\").Extent>} Extents.\n * @api\n */\nexport function all(extent, resolution) {\n  return [[-Infinity, -Infinity, Infinity, Infinity]];\n}\n\n/**\n * Strategy function for loading features based on the view's extent and\n * resolution.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @return {Array<import(\"./extent.js\").Extent>} Extents.\n * @api\n */\nexport function bbox(extent, resolution) {\n  return [extent];\n}\n\n/**\n * Creates a strategy function for loading features based on a tile grid.\n * @param {import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {function(import(\"./extent.js\").Extent, number, import(\"./proj.js\").Projection): Array<import(\"./extent.js\").Extent>} Loading strategy.\n * @api\n */\nexport function tile(tileGrid) {\n  return (\n    /**\n     * @param {import(\"./extent.js\").Extent} extent Extent.\n     * @param {number} resolution Resolution.\n     * @param {import(\"./proj.js\").Projection} projection Projection.\n     * @return {Array<import(\"./extent.js\").Extent>} Extents.\n     */\n    function (extent, resolution, projection) {\n      const z = tileGrid.getZForResolution(\n        fromUserResolution(resolution, projection),\n      );\n      const tileRange = tileGrid.getTileRangeForExtentAndZ(\n        fromUserExtent(extent, projection),\n        z,\n      );\n      /** @type {Array<import(\"./extent.js\").Extent>} */\n      const extents = [];\n      /** @type {import(\"./tilecoord.js\").TileCoord} */\n      const tileCoord = [z, 0, 0];\n      for (\n        tileCoord[1] = tileRange.minX;\n        tileCoord[1] <= tileRange.maxX;\n        ++tileCoord[1]\n      ) {\n        for (\n          tileCoord[2] = tileRange.minY;\n          tileCoord[2] <= tileRange.maxY;\n          ++tileCoord[2]\n        ) {\n          extents.push(\n            toUserExtent(tileGrid.getTileCoordExtent(tileCoord), projection),\n          );\n        }\n      }\n      return extents;\n    }\n  );\n}\n","/**\n * @module ol/structs/RBush\n */\nimport RBush_ from 'rbush';\nimport {createOrUpdate, equals} from '../extent.js';\nimport {isEmpty} from '../obj.js';\nimport {getUid} from '../util.js';\n\n/**\n * @typedef {import(\"rbush\").BBox & {value: T}} Entry\n * @template T\n */\n\n/**\n * @classdesc\n * Wrapper around the RBush by Vladimir Agafonkin.\n * See https://github.com/mourner/rbush.\n *\n * @template {Object} T\n */\nclass RBush {\n  /**\n   * @param {number} [maxEntries] Max entries.\n   */\n  constructor(maxEntries) {\n    /**\n     * @private\n     * @type {RBush_<Entry<T>>}\n     */\n    this.rbush_ = new RBush_(maxEntries);\n\n    /**\n     * A mapping between the objects added to this rbush wrapper\n     * and the objects that are actually added to the internal rbush.\n     * @private\n     * @type {Object<string, Entry<T>>}\n     */\n    this.items_ = {};\n  }\n\n  /**\n   * Insert a value into the RBush.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {T} value Value.\n   */\n  insert(extent, value) {\n    /** @type {Entry<T>} */\n    const item = {\n      minX: extent[0],\n      minY: extent[1],\n      maxX: extent[2],\n      maxY: extent[3],\n      value: value,\n    };\n\n    this.rbush_.insert(item);\n    this.items_[getUid(value)] = item;\n  }\n\n  /**\n   * Bulk-insert values into the RBush.\n   * @param {Array<import(\"../extent.js\").Extent>} extents Extents.\n   * @param {Array<T>} values Values.\n   */\n  load(extents, values) {\n    const items = new Array(values.length);\n    for (let i = 0, l = values.length; i < l; i++) {\n      const extent = extents[i];\n      const value = values[i];\n\n      /** @type {Entry<T>} */\n      const item = {\n        minX: extent[0],\n        minY: extent[1],\n        maxX: extent[2],\n        maxY: extent[3],\n        value: value,\n      };\n      items[i] = item;\n      this.items_[getUid(value)] = item;\n    }\n    this.rbush_.load(items);\n  }\n\n  /**\n   * Remove a value from the RBush.\n   * @param {T} value Value.\n   * @return {boolean} Removed.\n   */\n  remove(value) {\n    const uid = getUid(value);\n\n    // get the object in which the value was wrapped when adding to the\n    // internal rbush. then use that object to do the removal.\n    const item = this.items_[uid];\n    delete this.items_[uid];\n    return this.rbush_.remove(item) !== null;\n  }\n\n  /**\n   * Update the extent of a value in the RBush.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {T} value Value.\n   */\n  update(extent, value) {\n    const item = this.items_[getUid(value)];\n    const bbox = [item.minX, item.minY, item.maxX, item.maxY];\n    if (!equals(bbox, extent)) {\n      this.remove(value);\n      this.insert(extent, value);\n    }\n  }\n\n  /**\n   * Return all values in the RBush.\n   * @return {Array<T>} All.\n   */\n  getAll() {\n    const items = this.rbush_.all();\n    return items.map(function (item) {\n      return item.value;\n    });\n  }\n\n  /**\n   * Return all values in the given extent.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {Array<T>} All in extent.\n   */\n  getInExtent(extent) {\n    /** @type {import(\"rbush\").BBox} */\n    const bbox = {\n      minX: extent[0],\n      minY: extent[1],\n      maxX: extent[2],\n      maxY: extent[3],\n    };\n    const items = this.rbush_.search(bbox);\n    return items.map(function (item) {\n      return item.value;\n    });\n  }\n\n  /**\n   * Calls a callback function with each value in the tree.\n   * If the callback returns a truthy value, this value is returned without\n   * checking the rest of the tree.\n   * @param {function(T): R} callback Callback.\n   * @return {R|undefined} Callback return value.\n   * @template R\n   */\n  forEach(callback) {\n    return this.forEach_(this.getAll(), callback);\n  }\n\n  /**\n   * Calls a callback function with each value in the provided extent.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {function(T): R} callback Callback.\n   * @return {R|undefined} Callback return value.\n   * @template R\n   */\n  forEachInExtent(extent, callback) {\n    return this.forEach_(this.getInExtent(extent), callback);\n  }\n\n  /**\n   * @param {Array<T>} values Values.\n   * @param {function(T): R} callback Callback.\n   * @return {R|undefined} Callback return value.\n   * @template R\n   * @private\n   */\n  forEach_(values, callback) {\n    let result;\n    for (let i = 0, l = values.length; i < l; i++) {\n      result = callback(values[i]);\n      if (result) {\n        return result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * @return {boolean} Is empty.\n   */\n  isEmpty() {\n    return isEmpty(this.items_);\n  }\n\n  /**\n   * Remove all values from the RBush.\n   */\n  clear() {\n    this.rbush_.clear();\n    this.items_ = {};\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} [extent] Extent.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   */\n  getExtent(extent) {\n    const data = this.rbush_.toJSON();\n    return createOrUpdate(data.minX, data.minY, data.maxX, data.maxY, extent);\n  }\n\n  /**\n   * @param {RBush<T>} rbush R-Tree.\n   */\n  concat(rbush) {\n    this.rbush_.load(rbush.rbush_.all());\n    for (const i in rbush.items_) {\n      this.items_[i] = rbush.items_[i];\n    }\n  }\n}\n\nexport default RBush;\n","/**\n * @module ol/source/Source\n */\nimport BaseObject from '../Object.js';\nimport {get as getProjection} from '../proj.js';\n\n/**\n * @typedef {'undefined' | 'loading' | 'ready' | 'error'} State\n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.\n */\n\n/**\n * A function that takes a {@link import(\"../View.js\").ViewStateLayerStateExtent} and returns a string or\n * an array of strings representing source attributions.\n *\n * @typedef {function(import(\"../View.js\").ViewStateLayerStateExtent): (string|Array<string>)} Attribution\n */\n\n/**\n * A type that can be used to provide attribution information for data sources.\n *\n * It represents either\n * a simple string (e.g. `'© Acme Inc.'`)\n * an array of simple strings (e.g. `['© Acme Inc.', '© Bacme Inc.']`)\n * a function that returns a string or array of strings ({@link module:ol/source/Source~Attribution})\n *\n * @typedef {string|Array<string>|Attribution} AttributionLike\n */\n\n/**\n * @typedef {Object} Options\n * @property {AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {import(\"./Source.js\").State} [state='ready'] State.\n * @property {boolean} [wrapX=false] WrapX.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling.  By default,\n * the nearest neighbor is used when resampling.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for {@link module:ol/layer/Layer~Layer} sources.\n *\n * A generic `change` event is triggered when the state of the source changes.\n * @abstract\n * @api\n */\nclass Source extends BaseObject {\n  /**\n   * @param {Options} options Source options.\n   */\n  constructor(options) {\n    super();\n\n    /**\n     * @protected\n     * @type {import(\"../proj/Projection.js\").default|null}\n     */\n    this.projection = getProjection(options.projection);\n\n    /**\n     * @private\n     * @type {?Attribution}\n     */\n    this.attributions_ = adaptAttributions(options.attributions);\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.attributionsCollapsible_ = options.attributionsCollapsible ?? true;\n\n    /**\n     * This source is currently loading data. Sources that defer loading to the\n     * map's tile queue never set this to `true`.\n     * @type {boolean}\n     */\n    this.loading = false;\n\n    /**\n     * @private\n     * @type {import(\"./Source.js\").State}\n     */\n    this.state_ = options.state !== undefined ? options.state : 'ready';\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.wrapX_ = options.wrapX !== undefined ? options.wrapX : false;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.interpolate_ = !!options.interpolate;\n\n    /**\n     * @protected\n     * @type {function(import(\"../View.js\").ViewOptions):void}\n     */\n    this.viewResolver = null;\n\n    /**\n     * @protected\n     * @type {function(Error):void}\n     */\n    this.viewRejector = null;\n\n    const self = this;\n    /**\n     * @private\n     * @type {Promise<import(\"../View.js\").ViewOptions>}\n     */\n    this.viewPromise_ = new Promise(function (resolve, reject) {\n      self.viewResolver = resolve;\n      self.viewRejector = reject;\n    });\n  }\n\n  /**\n   * Get the attribution function for the source.\n   * @return {?Attribution} Attribution function.\n   * @api\n   */\n  getAttributions() {\n    return this.attributions_;\n  }\n\n  /**\n   * @return {boolean} Attributions are collapsible.\n   * @api\n   */\n  getAttributionsCollapsible() {\n    return this.attributionsCollapsible_;\n  }\n\n  /**\n   * Get the projection of the source.\n   * @return {import(\"../proj/Projection.js\").default|null} Projection.\n   * @api\n   */\n  getProjection() {\n    return this.projection;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection\").default} [projection] Projection.\n   * @return {Array<number>|null} Resolutions.\n   */\n  getResolutions(projection) {\n    return null;\n  }\n\n  /**\n   * @return {Promise<import(\"../View.js\").ViewOptions>} A promise for view-related properties.\n   */\n  getView() {\n    return this.viewPromise_;\n  }\n\n  /**\n   * Get the state of the source, see {@link import(\"./Source.js\").State} for possible states.\n   * @return {import(\"./Source.js\").State} State.\n   * @api\n   */\n  getState() {\n    return this.state_;\n  }\n\n  /**\n   * @return {boolean|undefined} Wrap X.\n   */\n  getWrapX() {\n    return this.wrapX_;\n  }\n\n  /**\n   * @return {boolean} Use linear interpolation when resampling.\n   */\n  getInterpolate() {\n    return this.interpolate_;\n  }\n\n  /**\n   * Refreshes the source. The source will be cleared, and data from the server will be reloaded.\n   * @api\n   */\n  refresh() {\n    this.changed();\n  }\n\n  /**\n   * Set the attributions of the source.\n   * @param {AttributionLike|undefined} attributions Attributions.\n   *     Can be passed as `string`, `Array<string>`, {@link module:ol/source/Source~Attribution},\n   *     or `undefined`.\n   * @api\n   */\n  setAttributions(attributions) {\n    this.attributions_ = adaptAttributions(attributions);\n    this.changed();\n  }\n\n  /**\n   * Set the state of the source.\n   * @param {import(\"./Source.js\").State} state State.\n   */\n  setState(state) {\n    this.state_ = state;\n    this.changed();\n  }\n}\n\n/**\n * Turns the attributions option into an attributions function.\n * @param {AttributionLike|undefined} attributionLike The attribution option.\n * @return {Attribution|null} An attribution function (or null).\n */\nfunction adaptAttributions(attributionLike) {\n  if (!attributionLike) {\n    return null;\n  }\n  if (typeof attributionLike === 'function') {\n    return attributionLike;\n  }\n  if (!Array.isArray(attributionLike)) {\n    attributionLike = [attributionLike];\n  }\n  return (frameState) => attributionLike;\n}\n\nexport default Source;\n","/**\n * @module ol/source/VectorEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  /**\n   * Triggered when a feature is added to the source.\n   * @event module:ol/source/Vector.VectorSourceEvent#addfeature\n   * @api\n   */\n  ADDFEATURE: 'addfeature',\n\n  /**\n   * Triggered when a feature is updated.\n   * @event module:ol/source/Vector.VectorSourceEvent#changefeature\n   * @api\n   */\n  CHANGEFEATURE: 'changefeature',\n\n  /**\n   * Triggered when the clear method is called on the source.\n   * @event module:ol/source/Vector.VectorSourceEvent#clear\n   * @api\n   */\n  CLEAR: 'clear',\n\n  /**\n   * Triggered when a feature is removed from the source.\n   * See {@link module:ol/source/Vector~VectorSource#clear source.clear()} for exceptions.\n   * @event module:ol/source/Vector.VectorSourceEvent#removefeature\n   * @api\n   */\n  REMOVEFEATURE: 'removefeature',\n\n  /**\n   * Triggered when features starts loading.\n   * @event module:ol/source/Vector.VectorSourceEvent#featuresloadstart\n   * @api\n   */\n  FEATURESLOADSTART: 'featuresloadstart',\n\n  /**\n   * Triggered when features finishes loading.\n   * @event module:ol/source/Vector.VectorSourceEvent#featuresloadend\n   * @api\n   */\n  FEATURESLOADEND: 'featuresloadend',\n\n  /**\n   * Triggered if feature loading results in an error.\n   * @event module:ol/source/Vector.VectorSourceEvent#featuresloaderror\n   * @api\n   */\n  FEATURESLOADERROR: 'featuresloaderror',\n};\n\n/**\n * @typedef {'addfeature'|'changefeature'|'clear'|'removefeature'|'featuresloadstart'|'featuresloadend'|'featuresloaderror'} VectorSourceEventTypes\n */\n","/**\n * @module ol/source/Vector\n */\n\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport {extend} from '../array.js';\nimport {assert} from '../asserts.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {containsExtent, equals, wrapAndSliceX} from '../extent.js';\nimport {xhr} from '../featureloader.js';\nimport {TRUE, VOID} from '../functions.js';\nimport {all as allStrategy} from '../loadingstrategy.js';\nimport {isEmpty} from '../obj.js';\nimport RenderFeature from '../render/Feature.js';\nimport RBush from '../structs/RBush.js';\nimport {getUid} from '../util.js';\nimport Source from './Source.js';\nimport VectorEventType from './VectorEventType.js';\n\n/**\n * A function that takes an {@link module:ol/extent~Extent} and a resolution as arguments, and\n * returns an array of {@link module:ol/extent~Extent} with the extents to load. Usually this\n * is one of the standard {@link module:ol/loadingstrategy} strategies.\n *\n * @typedef {function(import(\"../extent.js\").Extent, number, import(\"../proj/Projection.js\").default): Array<import(\"../extent.js\").Extent>} LoadingStrategy\n * @api\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Vector~VectorSource} instances are instances of this\n * type.\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n */\nexport class VectorSourceEvent extends Event {\n  /**\n   * @param {string} type Type.\n   * @param {FeatureType} [feature] Feature.\n   * @param {Array<FeatureType>} [features] Features.\n   */\n  constructor(type, feature, features) {\n    super(type);\n\n    /**\n     * The added or removed feature for the `ADDFEATURE` and `REMOVEFEATURE` events, `undefined` otherwise.\n     * @type {FeatureType|undefined}\n     * @api\n     */\n    this.feature = feature;\n\n    /**\n     * The loaded features for the `FEATURESLOADED` event, `undefined` otherwise.\n     * @type {Array<FeatureType>|undefined}\n     * @api\n     */\n    this.features = features;\n  }\n}\n\n/***\n * @template {import(\"../Feature.js\").FeatureLike} [T=import(\"../Feature.js\").default]\n * @typedef {T extends RenderFeature ? T|Array<T> : T} FeatureClassOrArrayOfRenderFeatures\n */\n\n/***\n * @template Return\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./VectorEventType\").VectorSourceEventTypes, VectorSourceEvent<FeatureType>, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     import(\"./VectorEventType\").VectorSourceEventTypes, Return>} VectorSourceOnSignature\n */\n\n/**\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {Array<FeatureType>|Collection<FeatureType>} [features]\n * Features. If provided as {@link module:ol/Collection~Collection}, the features in the source\n * and the collection will stay in sync.\n * @property {import(\"../format/Feature.js\").default<FeatureType>} [format] The feature format used by the XHR\n * feature loader when `url` is set. Required if `url` is set, otherwise ignored.\n * @property {import(\"../featureloader.js\").FeatureLoader<FeatureType>} [loader]\n * The loader function used to load features, from a remote source for example.\n * If this is not set and `url` is set, the source will create and use an XHR\n * feature loader. The `'featuresloadend'` and `'featuresloaderror'` events\n * will only fire if the `success` and `failure` callbacks are used.\n *\n * Example:\n *\n * ```js\n * import Vector from 'ol/source/Vector.js';\n * import GeoJSON from 'ol/format/GeoJSON.js';\n * import {bbox} from 'ol/loadingstrategy.js';\n *\n * const vectorSource = new Vector({\n *   format: new GeoJSON(),\n *   loader: function(extent, resolution, projection, success, failure) {\n *      const proj = projection.getCode();\n *      const url = 'https://ahocevar.com/geoserver/wfs?service=WFS&' +\n *          'version=1.1.0&request=GetFeature&typename=osm:water_areas&' +\n *          'outputFormat=application/json&srsname=' + proj + '&' +\n *          'bbox=' + extent.join(',') + ',' + proj;\n *      const xhr = new XMLHttpRequest();\n *      xhr.open('GET', url);\n *      const onError = function() {\n *        vectorSource.removeLoadedExtent(extent);\n *        failure();\n *      }\n *      xhr.onerror = onError;\n *      xhr.onload = function() {\n *        if (xhr.status == 200) {\n *          const features = vectorSource.getFormat().readFeatures(xhr.responseText);\n *          vectorSource.addFeatures(features);\n *          success(features);\n *        } else {\n *          onError();\n *        }\n *      }\n *      xhr.send();\n *    },\n *    strategy: bbox,\n *  });\n * ```\n * @property {boolean} [overlaps=true] This source may have overlapping geometries.\n * Setting this to `false` (e.g. for sources with polygons that represent administrative\n * boundaries or TopoJSON sources) allows the renderer to optimise fill and\n * stroke operations.\n * @property {LoadingStrategy} [strategy] The loading strategy to use.\n * By default an {@link module:ol/loadingstrategy.all}\n * strategy is used, a one-off strategy which loads all features at once.\n * @property {string|import(\"../featureloader.js\").FeatureUrlFunction} [url]\n * Setting this option instructs the source to load features using an XHR loader\n * (see {@link module:ol/featureloader.xhr}). Use a `string` and an\n * {@link module:ol/loadingstrategy.all} for a one-off download of all features from\n * the given URL. Use a {@link module:ol/featureloader~FeatureUrlFunction} to generate the url with\n * other loading strategies.\n * Requires `format` to be set as well.\n * When default XHR feature loader is provided, the features will\n * be transformed from the data projection to the view projection\n * during parsing. If your remote data source does not advertise its projection\n * properly, this transformation will be incorrect. For some formats, the\n * default projection (usually EPSG:4326) can be overridden by setting the\n * dataProjection constructor option on the format.\n * Note that if a source contains non-feature data, such as a GeoJSON geometry\n * or a KML NetworkLink, these will be ignored. Use a custom loader to load these.\n * @property {boolean} [useSpatialIndex=true]\n * By default, an RTree is used as spatial index. When features are removed and\n * added frequently, and the total number of features is low, setting this to\n * `false` may improve performance.\n *\n * Note that\n * {@link module:ol/source/Vector~VectorSource#getFeaturesInExtent},\n * {@link module:ol/source/Vector~VectorSource#getClosestFeatureToCoordinate} and\n * {@link module:ol/source/Vector~VectorSource#getExtent} cannot be used when `useSpatialIndex` is\n * set to `false`, and {@link module:ol/source/Vector~VectorSource#forEachFeatureInExtent} will loop\n * through all features.\n *\n * When set to `false`, the features will be maintained in an\n * {@link module:ol/Collection~Collection}, which can be retrieved through\n * {@link module:ol/source/Vector~VectorSource#getFeaturesCollection}.\n * @property {boolean} [wrapX=true] Wrap the world horizontally. For vector editing across the\n * -180° and 180° meridians to work properly, this should be set to `false`. The\n * resulting geometry coordinates will then exceed the world bounds.\n */\n\n/**\n * @classdesc\n * Provides a source of features for vector layers. Vector features provided\n * by this source are suitable for editing. See {@link module:ol/source/VectorTile~VectorTile} for\n * vector data that is optimized for rendering.\n *\n * @fires VectorSourceEvent\n * @api\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n */\nclass VectorSource extends Source {\n  /**\n   * @param {Options<FeatureType>} [options] Vector source options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    super({\n      attributions: options.attributions,\n      interpolate: true,\n      projection: undefined,\n      state: 'ready',\n      wrapX: options.wrapX !== undefined ? options.wrapX : true,\n    });\n\n    /***\n     * @type {VectorSourceOnSignature<import(\"../events\").EventsKey, FeatureType>}\n     */\n    this.on;\n\n    /***\n     * @type {VectorSourceOnSignature<import(\"../events\").EventsKey, FeatureType>}\n     */\n    this.once;\n\n    /***\n     * @type {VectorSourceOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {import(\"../featureloader.js\").FeatureLoader<import(\"../Feature.js\").FeatureLike>}\n     */\n    this.loader_ = VOID;\n\n    /**\n     * @private\n     * @type {import(\"../format/Feature.js\").default<FeatureType>|null}\n     */\n    this.format_ = options.format || null;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.overlaps_ = options.overlaps === undefined ? true : options.overlaps;\n\n    /**\n     * @private\n     * @type {string|import(\"../featureloader.js\").FeatureUrlFunction|undefined}\n     */\n    this.url_ = options.url;\n\n    if (options.loader !== undefined) {\n      this.loader_ = options.loader;\n    } else if (this.url_ !== undefined) {\n      assert(this.format_, '`format` must be set when `url` is set');\n      // create a XHR feature loader for \"url\" and \"format\"\n      this.loader_ = xhr(this.url_, this.format_);\n    }\n\n    /**\n     * @private\n     * @type {LoadingStrategy}\n     */\n    this.strategy_ =\n      options.strategy !== undefined ? options.strategy : allStrategy;\n\n    const useSpatialIndex =\n      options.useSpatialIndex !== undefined ? options.useSpatialIndex : true;\n\n    /**\n     * @private\n     * @type {RBush<FeatureType>}\n     */\n    this.featuresRtree_ = useSpatialIndex ? new RBush() : null;\n\n    /**\n     * @private\n     * @type {RBush<{extent: import(\"../extent.js\").Extent}>}\n     */\n    this.loadedExtentsRtree_ = new RBush();\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.loadingExtentsCount_ = 0;\n\n    /**\n     * @private\n     * @type {!Object<string, FeatureType>}\n     */\n    this.nullGeometryFeatures_ = {};\n\n    /**\n     * A lookup of features by id (the return from feature.getId()).\n     * @private\n     * @type {!Object<string, import('../Feature.js').FeatureLike|Array<import('../Feature.js').FeatureLike>>}\n     */\n    this.idIndex_ = {};\n\n    /**\n     * A lookup of features by uid (using getUid(feature)).\n     * @private\n     * @type {!Object<string, FeatureType>}\n     */\n    this.uidIndex_ = {};\n\n    /**\n     * @private\n     * @type {Object<string, Array<import(\"../events.js\").EventsKey>>}\n     */\n    this.featureChangeKeys_ = {};\n\n    /**\n     * @private\n     * @type {Collection<FeatureType>|null}\n     */\n    this.featuresCollection_ = null;\n\n    /** @type {Collection<FeatureType>} */\n    let collection;\n    /** @type {Array<FeatureType>} */\n    let features;\n    if (Array.isArray(options.features)) {\n      features = options.features;\n    } else if (options.features) {\n      collection = options.features;\n      features = collection.getArray();\n    }\n    if (!useSpatialIndex && collection === undefined) {\n      collection = new Collection(features);\n    }\n    if (features !== undefined) {\n      this.addFeaturesInternal(features);\n    }\n    if (collection !== undefined) {\n      this.bindFeaturesCollection_(collection);\n    }\n  }\n\n  /**\n   * Add a single feature to the source.  If you want to add a batch of features\n   * at once, call {@link module:ol/source/Vector~VectorSource#addFeatures #addFeatures()}\n   * instead. A feature will not be added to the source if feature with\n   * the same id is already there. The reason for this behavior is to avoid\n   * feature duplication when using bbox or tile loading strategies.\n   * Note: this also applies if a {@link module:ol/Collection~Collection} is used for features,\n   * meaning that if a feature with a duplicate id is added in the collection, it will\n   * be removed from it right away.\n   * @param {FeatureType} feature Feature to add.\n   * @api\n   */\n  addFeature(feature) {\n    this.addFeatureInternal(feature);\n    this.changed();\n  }\n\n  /**\n   * Add a feature without firing a `change` event.\n   * @param {FeatureType} feature Feature.\n   * @protected\n   */\n  addFeatureInternal(feature) {\n    const featureKey = getUid(feature);\n\n    if (!this.addToIndex_(featureKey, feature)) {\n      if (this.featuresCollection_) {\n        this.featuresCollection_.remove(feature);\n      }\n      return;\n    }\n\n    this.setupChangeEvents_(featureKey, feature);\n\n    const geometry = feature.getGeometry();\n    if (geometry) {\n      const extent = geometry.getExtent();\n      if (this.featuresRtree_) {\n        this.featuresRtree_.insert(extent, feature);\n      }\n    } else {\n      this.nullGeometryFeatures_[featureKey] = feature;\n    }\n\n    this.dispatchEvent(\n      new VectorSourceEvent(VectorEventType.ADDFEATURE, feature),\n    );\n  }\n\n  /**\n   * @param {string} featureKey Unique identifier for the feature.\n   * @param {FeatureType} feature The feature.\n   * @private\n   */\n  setupChangeEvents_(featureKey, feature) {\n    if (feature instanceof RenderFeature) {\n      return;\n    }\n    this.featureChangeKeys_[featureKey] = [\n      listen(feature, EventType.CHANGE, this.handleFeatureChange_, this),\n      listen(\n        feature,\n        ObjectEventType.PROPERTYCHANGE,\n        this.handleFeatureChange_,\n        this,\n      ),\n    ];\n  }\n\n  /**\n   * @param {string} featureKey Unique identifier for the feature.\n   * @param {FeatureType} feature The feature.\n   * @return {boolean} The feature is \"valid\", in the sense that it is also a\n   *     candidate for insertion into the Rtree.\n   * @private\n   */\n  addToIndex_(featureKey, feature) {\n    let valid = true;\n    if (feature.getId() !== undefined) {\n      const id = String(feature.getId());\n      if (!(id in this.idIndex_)) {\n        this.idIndex_[id] = feature;\n      } else if (feature instanceof RenderFeature) {\n        const indexedFeature = this.idIndex_[id];\n        if (!(indexedFeature instanceof RenderFeature)) {\n          valid = false;\n        } else if (!Array.isArray(indexedFeature)) {\n          this.idIndex_[id] = [indexedFeature, feature];\n        } else {\n          indexedFeature.push(feature);\n        }\n      } else {\n        valid = false;\n      }\n    }\n    if (valid) {\n      assert(\n        !(featureKey in this.uidIndex_),\n        'The passed `feature` was already added to the source',\n      );\n      this.uidIndex_[featureKey] = feature;\n    }\n    return valid;\n  }\n\n  /**\n   * Add a batch of features to the source.\n   * @param {Array<FeatureType>} features Features to add.\n   * @api\n   */\n  addFeatures(features) {\n    this.addFeaturesInternal(features);\n    this.changed();\n  }\n\n  /**\n   * Add features without firing a `change` event.\n   * @param {Array<FeatureType>} features Features.\n   * @protected\n   */\n  addFeaturesInternal(features) {\n    const extents = [];\n    /** @type {Array<FeatureType>} */\n    const newFeatures = [];\n    /** @type {Array<FeatureType>} */\n    const geometryFeatures = [];\n\n    for (let i = 0, length = features.length; i < length; i++) {\n      const feature = features[i];\n      const featureKey = getUid(feature);\n      if (this.addToIndex_(featureKey, feature)) {\n        newFeatures.push(feature);\n      }\n    }\n\n    for (let i = 0, length = newFeatures.length; i < length; i++) {\n      const feature = newFeatures[i];\n      const featureKey = getUid(feature);\n      this.setupChangeEvents_(featureKey, feature);\n\n      const geometry = feature.getGeometry();\n      if (geometry) {\n        const extent = geometry.getExtent();\n        extents.push(extent);\n        geometryFeatures.push(feature);\n      } else {\n        this.nullGeometryFeatures_[featureKey] = feature;\n      }\n    }\n    if (this.featuresRtree_) {\n      this.featuresRtree_.load(extents, geometryFeatures);\n    }\n\n    if (this.hasListener(VectorEventType.ADDFEATURE)) {\n      for (let i = 0, length = newFeatures.length; i < length; i++) {\n        this.dispatchEvent(\n          new VectorSourceEvent(VectorEventType.ADDFEATURE, newFeatures[i]),\n        );\n      }\n    }\n  }\n\n  /**\n   * @param {!Collection<FeatureType>} collection Collection.\n   * @private\n   */\n  bindFeaturesCollection_(collection) {\n    let modifyingCollection = false;\n    this.addEventListener(\n      VectorEventType.ADDFEATURE,\n      /**\n       * @param {VectorSourceEvent<FeatureType>} evt The vector source event\n       */\n      function (evt) {\n        if (!modifyingCollection) {\n          modifyingCollection = true;\n          collection.push(evt.feature);\n          modifyingCollection = false;\n        }\n      },\n    );\n    this.addEventListener(\n      VectorEventType.REMOVEFEATURE,\n      /**\n       * @param {VectorSourceEvent<FeatureType>} evt The vector source event\n       */\n      function (evt) {\n        if (!modifyingCollection) {\n          modifyingCollection = true;\n          collection.remove(evt.feature);\n          modifyingCollection = false;\n        }\n      },\n    );\n    collection.addEventListener(\n      CollectionEventType.ADD,\n      /**\n       * @param {import(\"../Collection.js\").CollectionEvent<FeatureType>} evt The collection event\n       */\n      (evt) => {\n        if (!modifyingCollection) {\n          modifyingCollection = true;\n          this.addFeature(evt.element);\n          modifyingCollection = false;\n        }\n      },\n    );\n    collection.addEventListener(\n      CollectionEventType.REMOVE,\n      /**\n       * @param {import(\"../Collection.js\").CollectionEvent<FeatureType>} evt The collection event\n       */\n      (evt) => {\n        if (!modifyingCollection) {\n          modifyingCollection = true;\n          this.removeFeature(evt.element);\n          modifyingCollection = false;\n        }\n      },\n    );\n    this.featuresCollection_ = collection;\n  }\n\n  /**\n   * Remove all features from the source.\n   * @param {boolean} [fast] Skip dispatching of {@link module:ol/source/Vector.VectorSourceEvent#event:removefeature} events.\n   * @api\n   */\n  clear(fast) {\n    if (fast) {\n      for (const featureId in this.featureChangeKeys_) {\n        const keys = this.featureChangeKeys_[featureId];\n        keys.forEach(unlistenByKey);\n      }\n      if (!this.featuresCollection_) {\n        this.featureChangeKeys_ = {};\n        this.idIndex_ = {};\n        this.uidIndex_ = {};\n      }\n    } else {\n      if (this.featuresRtree_) {\n        this.featuresRtree_.forEach((feature) => {\n          this.removeFeatureInternal(feature);\n        });\n        for (const id in this.nullGeometryFeatures_) {\n          this.removeFeatureInternal(this.nullGeometryFeatures_[id]);\n        }\n      }\n    }\n    if (this.featuresCollection_) {\n      this.featuresCollection_.clear();\n    }\n\n    if (this.featuresRtree_) {\n      this.featuresRtree_.clear();\n    }\n    this.nullGeometryFeatures_ = {};\n\n    const clearEvent = new VectorSourceEvent(VectorEventType.CLEAR);\n    this.dispatchEvent(clearEvent);\n    this.changed();\n  }\n\n  /**\n   * Iterate through all features on the source, calling the provided callback\n   * with each one.  If the callback returns any \"truthy\" value, iteration will\n   * stop and the function will return the same value.\n   * Note: this function only iterate through the feature that have a defined geometry.\n   *\n   * @param {function(FeatureType): T} callback Called with each feature\n   *     on the source.  Return a truthy value to stop iteration.\n   * @return {T|undefined} The return value from the last call to the callback.\n   * @template T\n   * @api\n   */\n  forEachFeature(callback) {\n    if (this.featuresRtree_) {\n      return this.featuresRtree_.forEach(callback);\n    }\n    if (this.featuresCollection_) {\n      this.featuresCollection_.forEach(callback);\n    }\n  }\n\n  /**\n   * Iterate through all features whose geometries contain the provided\n   * coordinate, calling the callback with each feature.  If the callback returns\n   * a \"truthy\" value, iteration will stop and the function will return the same\n   * value.\n   *\n   * For {@link module:ol/render/Feature~RenderFeature} features, the callback will be\n   * called for all features.\n   *\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {function(FeatureType): T} callback Called with each feature\n   *     whose goemetry contains the provided coordinate.\n   * @return {T|undefined} The return value from the last call to the callback.\n   * @template T\n   */\n  forEachFeatureAtCoordinateDirect(coordinate, callback) {\n    const extent = [coordinate[0], coordinate[1], coordinate[0], coordinate[1]];\n    return this.forEachFeatureInExtent(extent, function (feature) {\n      const geometry = feature.getGeometry();\n      if (\n        geometry instanceof RenderFeature ||\n        geometry.intersectsCoordinate(coordinate)\n      ) {\n        return callback(feature);\n      }\n      return undefined;\n    });\n  }\n\n  /**\n   * Iterate through all features whose bounding box intersects the provided\n   * extent (note that the feature's geometry may not intersect the extent),\n   * calling the callback with each feature.  If the callback returns a \"truthy\"\n   * value, iteration will stop and the function will return the same value.\n   *\n   * If you are interested in features whose geometry intersects an extent, call\n   * the {@link module:ol/source/Vector~VectorSource#forEachFeatureIntersectingExtent #forEachFeatureIntersectingExtent()} method instead.\n   *\n   * When `useSpatialIndex` is set to false, this method will loop through all\n   * features, equivalent to {@link module:ol/source/Vector~VectorSource#forEachFeature #forEachFeature()}.\n   *\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {function(FeatureType): T} callback Called with each feature\n   *     whose bounding box intersects the provided extent.\n   * @return {T|undefined} The return value from the last call to the callback.\n   * @template T\n   * @api\n   */\n  forEachFeatureInExtent(extent, callback) {\n    if (this.featuresRtree_) {\n      return this.featuresRtree_.forEachInExtent(extent, callback);\n    }\n    if (this.featuresCollection_) {\n      this.featuresCollection_.forEach(callback);\n    }\n  }\n\n  /**\n   * Iterate through all features whose geometry intersects the provided extent,\n   * calling the callback with each feature.  If the callback returns a \"truthy\"\n   * value, iteration will stop and the function will return the same value.\n   *\n   * If you only want to test for bounding box intersection, call the\n   * {@link module:ol/source/Vector~VectorSource#forEachFeatureInExtent #forEachFeatureInExtent()} method instead.\n   *\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {function(FeatureType): T} callback Called with each feature\n   *     whose geometry intersects the provided extent.\n   * @return {T|undefined} The return value from the last call to the callback.\n   * @template T\n   * @api\n   */\n  forEachFeatureIntersectingExtent(extent, callback) {\n    return this.forEachFeatureInExtent(\n      extent,\n      /**\n       * @param {FeatureType} feature Feature.\n       * @return {T|undefined} The return value from the last call to the callback.\n       */\n      function (feature) {\n        const geometry = feature.getGeometry();\n        if (\n          geometry instanceof RenderFeature ||\n          geometry.intersectsExtent(extent)\n        ) {\n          const result = callback(feature);\n          if (result) {\n            return result;\n          }\n        }\n      },\n    );\n  }\n\n  /**\n   * Get the features collection associated with this source. Will be `null`\n   * unless the source was configured with `useSpatialIndex` set to `false`, or\n   * with a {@link module:ol/Collection~Collection} as `features`.\n   * @return {Collection<FeatureType>|null} The collection of features.\n   * @api\n   */\n  getFeaturesCollection() {\n    return this.featuresCollection_;\n  }\n\n  /**\n   * Get a snapshot of the features currently on the source in random order. The returned array\n   * is a copy, the features are references to the features in the source.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   */\n  getFeatures() {\n    let features;\n    if (this.featuresCollection_) {\n      features = this.featuresCollection_.getArray().slice(0);\n    } else if (this.featuresRtree_) {\n      features = this.featuresRtree_.getAll();\n      if (!isEmpty(this.nullGeometryFeatures_)) {\n        extend(features, Object.values(this.nullGeometryFeatures_));\n      }\n    }\n    return features;\n  }\n\n  /**\n   * Get all features whose geometry intersects the provided coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   */\n  getFeaturesAtCoordinate(coordinate) {\n    /** @type {Array<FeatureType>} */\n    const features = [];\n    this.forEachFeatureAtCoordinateDirect(coordinate, function (feature) {\n      features.push(feature);\n    });\n    return features;\n  }\n\n  /**\n   * Get all features whose bounding box intersects the provided extent.  Note that this returns an array of\n   * all features intersecting the given extent in random order (so it may include\n   * features whose geometries do not intersect the extent).\n   *\n   * When `useSpatialIndex` is set to false, this method will return all\n   * features.\n   *\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {import(\"../proj/Projection.js\").default} [projection] Include features\n   * where `extent` exceeds the x-axis bounds of `projection` and wraps around the world.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   */\n  getFeaturesInExtent(extent, projection) {\n    if (this.featuresRtree_) {\n      const multiWorld = projection && projection.canWrapX() && this.getWrapX();\n\n      if (!multiWorld) {\n        return this.featuresRtree_.getInExtent(extent);\n      }\n\n      const extents = wrapAndSliceX(extent, projection);\n\n      return [].concat(\n        ...extents.map((anExtent) => this.featuresRtree_.getInExtent(anExtent)),\n      );\n    }\n    if (this.featuresCollection_) {\n      return this.featuresCollection_.getArray().slice(0);\n    }\n    return [];\n  }\n\n  /**\n   * Get the closest feature to the provided coordinate.\n   *\n   * This method is not available when the source is configured with\n   * `useSpatialIndex` set to `false` and the features in this source are of type\n   * {@link module:ol/Feature~Feature}.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {function(FeatureType):boolean} [filter] Feature filter function.\n   *     The filter function will receive one argument, the {@link module:ol/Feature~Feature feature}\n   *     and it should return a boolean value. By default, no filtering is made.\n   * @return {FeatureType|null} Closest feature (or `null` if none found).\n   * @api\n   */\n  getClosestFeatureToCoordinate(coordinate, filter) {\n    // Find the closest feature using branch and bound.  We start searching an\n    // infinite extent, and find the distance from the first feature found.  This\n    // becomes the closest feature.  We then compute a smaller extent which any\n    // closer feature must intersect.  We continue searching with this smaller\n    // extent, trying to find a closer feature.  Every time we find a closer\n    // feature, we update the extent being searched so that any even closer\n    // feature must intersect it.  We continue until we run out of features.\n    const x = coordinate[0];\n    const y = coordinate[1];\n    let closestFeature = null;\n    const closestPoint = [NaN, NaN];\n    let minSquaredDistance = Infinity;\n    const extent = [-Infinity, -Infinity, Infinity, Infinity];\n    filter = filter ? filter : TRUE;\n    this.featuresRtree_.forEachInExtent(\n      extent,\n      /**\n       * @param {FeatureType} feature Feature.\n       */\n      function (feature) {\n        if (filter(feature)) {\n          const geometry = feature.getGeometry();\n          const previousMinSquaredDistance = minSquaredDistance;\n          minSquaredDistance =\n            geometry instanceof RenderFeature\n              ? 0\n              : geometry.closestPointXY(x, y, closestPoint, minSquaredDistance);\n          if (minSquaredDistance < previousMinSquaredDistance) {\n            closestFeature = feature;\n            // This is sneaky.  Reduce the extent that it is currently being\n            // searched while the R-Tree traversal using this same extent object\n            // is still in progress.  This is safe because the new extent is\n            // strictly contained by the old extent.\n            const minDistance = Math.sqrt(minSquaredDistance);\n            extent[0] = x - minDistance;\n            extent[1] = y - minDistance;\n            extent[2] = x + minDistance;\n            extent[3] = y + minDistance;\n          }\n        }\n      },\n    );\n    return closestFeature;\n  }\n\n  /**\n   * Get the extent of the features currently in the source.\n   *\n   * This will return `null` when the source is configured with\n   * `useSpatialIndex` set to `false`.\n   * @param {import(\"../extent.js\").Extent} [extent] Destination extent. If provided, no new extent\n   *     will be created. Instead, that extent's coordinates will be overwritten.\n   * @return {import(\"../extent.js\").Extent | null} Extent.\n   * @api\n   */\n  getExtent(extent) {\n    return this.featuresRtree_?.getExtent(extent) ?? null;\n  }\n\n  /**\n   * Get a feature by its identifier (the value returned by feature.getId()). When `RenderFeature`s\n   * are used, `getFeatureById()` can return an array of `RenderFeature`s. This allows for handling\n   * of `GeometryCollection` geometries, where format readers create one `RenderFeature` per\n   * `GeometryCollection` member.\n   * Note that the index treats string and numeric identifiers as the same.  So\n   * `source.getFeatureById(2)` will return a feature with id `'2'` or `2`.\n   *\n   * @param {string|number} id Feature identifier.\n   * @return {FeatureClassOrArrayOfRenderFeatures<FeatureType>|null} The feature (or `null` if not found).\n   * @api\n   */\n  getFeatureById(id) {\n    const feature = this.idIndex_[id.toString()];\n    return feature !== undefined\n      ? /** @type {FeatureClassOrArrayOfRenderFeatures<FeatureType>} */ (\n          feature\n        )\n      : null;\n  }\n\n  /**\n   * Get a feature by its internal unique identifier (using `getUid`).\n   *\n   * @param {string} uid Feature identifier.\n   * @return {FeatureType|null} The feature (or `null` if not found).\n   */\n  getFeatureByUid(uid) {\n    const feature = this.uidIndex_[uid];\n    return feature !== undefined ? feature : null;\n  }\n\n  /**\n   * Get the format associated with this source.\n   *\n   * @return {import(\"../format/Feature.js\").default<FeatureType>|null}} The feature format.\n   * @api\n   */\n  getFormat() {\n    return this.format_;\n  }\n\n  /**\n   * @return {boolean} The source can have overlapping geometries.\n   */\n  getOverlaps() {\n    return this.overlaps_;\n  }\n\n  /**\n   * Get the url associated with this source.\n   *\n   * @return {string|import(\"../featureloader.js\").FeatureUrlFunction|undefined} The url.\n   * @api\n   */\n  getUrl() {\n    return this.url_;\n  }\n\n  /**\n   * @param {Event} event Event.\n   * @private\n   */\n  handleFeatureChange_(event) {\n    const feature = /** @type {FeatureType} */ (event.target);\n    const featureKey = getUid(feature);\n    const geometry = feature.getGeometry();\n    if (!geometry) {\n      if (!(featureKey in this.nullGeometryFeatures_)) {\n        if (this.featuresRtree_) {\n          this.featuresRtree_.remove(feature);\n        }\n        this.nullGeometryFeatures_[featureKey] = feature;\n      }\n    } else {\n      const extent = geometry.getExtent();\n      if (featureKey in this.nullGeometryFeatures_) {\n        delete this.nullGeometryFeatures_[featureKey];\n        if (this.featuresRtree_) {\n          this.featuresRtree_.insert(extent, feature);\n        }\n      } else {\n        if (this.featuresRtree_) {\n          this.featuresRtree_.update(extent, feature);\n        }\n      }\n    }\n    const id = feature.getId();\n    if (id !== undefined) {\n      const sid = id.toString();\n      if (this.idIndex_[sid] !== feature) {\n        this.removeFromIdIndex_(feature);\n        this.idIndex_[sid] = feature;\n      }\n    } else {\n      this.removeFromIdIndex_(feature);\n      this.uidIndex_[featureKey] = feature;\n    }\n    this.changed();\n    this.dispatchEvent(\n      new VectorSourceEvent(VectorEventType.CHANGEFEATURE, feature),\n    );\n  }\n\n  /**\n   * Returns true if the feature is contained within the source.\n   * @param {FeatureType} feature Feature.\n   * @return {boolean} Has feature.\n   * @api\n   */\n  hasFeature(feature) {\n    const id = feature.getId();\n    if (id !== undefined) {\n      return id in this.idIndex_;\n    }\n    return getUid(feature) in this.uidIndex_;\n  }\n\n  /**\n   * @return {boolean} Is empty.\n   */\n  isEmpty() {\n    if (this.featuresRtree_) {\n      return (\n        this.featuresRtree_.isEmpty() && isEmpty(this.nullGeometryFeatures_)\n      );\n    }\n    if (this.featuresCollection_) {\n      return this.featuresCollection_.getLength() === 0;\n    }\n    return true;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   */\n  loadFeatures(extent, resolution, projection) {\n    const loadedExtentsRtree = this.loadedExtentsRtree_;\n    const extentsToLoad = this.strategy_(extent, resolution, projection);\n    for (let i = 0, ii = extentsToLoad.length; i < ii; ++i) {\n      const extentToLoad = extentsToLoad[i];\n      const alreadyLoaded = loadedExtentsRtree.forEachInExtent(\n        extentToLoad,\n        /**\n         * @param {{extent: import(\"../extent.js\").Extent}} object Object.\n         * @return {boolean} Contains.\n         */\n        function (object) {\n          return containsExtent(object.extent, extentToLoad);\n        },\n      );\n      if (!alreadyLoaded) {\n        ++this.loadingExtentsCount_;\n        this.dispatchEvent(\n          new VectorSourceEvent(VectorEventType.FEATURESLOADSTART),\n        );\n        this.loader_.call(\n          this,\n          extentToLoad,\n          resolution,\n          projection,\n          /**\n           * @param {Array<FeatureType>} features Loaded features\n           */\n          (features) => {\n            --this.loadingExtentsCount_;\n            this.dispatchEvent(\n              new VectorSourceEvent(\n                VectorEventType.FEATURESLOADEND,\n                undefined,\n                features,\n              ),\n            );\n          },\n          () => {\n            --this.loadingExtentsCount_;\n            this.dispatchEvent(\n              new VectorSourceEvent(VectorEventType.FEATURESLOADERROR),\n            );\n          },\n        );\n        loadedExtentsRtree.insert(extentToLoad, {extent: extentToLoad.slice()});\n      }\n    }\n    this.loading =\n      this.loader_.length < 4 ? false : this.loadingExtentsCount_ > 0;\n  }\n\n  /**\n   * @override\n   */\n  refresh() {\n    this.clear(true);\n    this.loadedExtentsRtree_.clear();\n    super.refresh();\n  }\n\n  /**\n   * Remove an extent from the list of loaded extents.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @api\n   */\n  removeLoadedExtent(extent) {\n    const loadedExtentsRtree = this.loadedExtentsRtree_;\n    const obj = loadedExtentsRtree.forEachInExtent(extent, function (object) {\n      if (equals(object.extent, extent)) {\n        return object;\n      }\n    });\n    if (obj) {\n      loadedExtentsRtree.remove(obj);\n    }\n  }\n\n  /**\n   * Batch remove features from the source.  If you want to remove all features\n   * at once, use the {@link module:ol/source/Vector~VectorSource#clear #clear()} method\n   * instead.\n   * @param {Array<FeatureType>} features Features to remove.\n   * @api\n   */\n  removeFeatures(features) {\n    let removed = false;\n    for (let i = 0, ii = features.length; i < ii; ++i) {\n      removed = this.removeFeatureInternal(features[i]) || removed;\n    }\n    if (removed) {\n      this.changed();\n    }\n  }\n\n  /**\n   * Remove a single feature from the source. If you want to batch remove\n   * features, use the {@link module:ol/source/Vector~VectorSource#removeFeatures #removeFeatures()} method\n   * instead.\n   * @param {FeatureType} feature Feature to remove.\n   * @api\n   */\n  removeFeature(feature) {\n    if (!feature) {\n      return;\n    }\n    const removed = this.removeFeatureInternal(feature);\n    if (removed) {\n      this.changed();\n    }\n  }\n\n  /**\n   * Remove feature without firing a `change` event.\n   * @param {FeatureType} feature Feature.\n   * @return {boolean} True if the feature was removed, false if it was not found.\n   * @protected\n   */\n  removeFeatureInternal(feature) {\n    const featureKey = getUid(feature);\n    if (!(featureKey in this.uidIndex_)) {\n      return false;\n    }\n\n    if (featureKey in this.nullGeometryFeatures_) {\n      delete this.nullGeometryFeatures_[featureKey];\n    } else {\n      if (this.featuresRtree_) {\n        this.featuresRtree_.remove(feature);\n      }\n    }\n\n    const featureChangeKeys = this.featureChangeKeys_[featureKey];\n    featureChangeKeys?.forEach(unlistenByKey);\n    delete this.featureChangeKeys_[featureKey];\n\n    const id = feature.getId();\n    if (id !== undefined) {\n      const idString = id.toString();\n      const indexedFeature = this.idIndex_[idString];\n      if (indexedFeature === feature) {\n        delete this.idIndex_[idString];\n      } else if (Array.isArray(indexedFeature)) {\n        indexedFeature.splice(indexedFeature.indexOf(feature), 1);\n        if (indexedFeature.length === 1) {\n          this.idIndex_[idString] = indexedFeature[0];\n        }\n      }\n    }\n    delete this.uidIndex_[featureKey];\n    if (this.hasListener(VectorEventType.REMOVEFEATURE)) {\n      this.dispatchEvent(\n        new VectorSourceEvent(VectorEventType.REMOVEFEATURE, feature),\n      );\n    }\n    return true;\n  }\n\n  /**\n   * Remove a feature from the id index.  Called internally when the feature id\n   * may have changed.\n   * @param {FeatureType} feature The feature.\n   * @private\n   */\n  removeFromIdIndex_(feature) {\n    for (const id in this.idIndex_) {\n      if (this.idIndex_[id] === feature) {\n        delete this.idIndex_[id];\n        break;\n      }\n    }\n  }\n\n  /**\n   * Set the new loader of the source. The next render cycle will use the\n   * new loader.\n   * @param {import(\"../featureloader.js\").FeatureLoader} loader The loader to set.\n   * @api\n   */\n  setLoader(loader) {\n    this.loader_ = loader;\n  }\n\n  /**\n   * Points the source to a new url. The next render cycle will use the new url.\n   * @param {string|import(\"../featureloader.js\").FeatureUrlFunction} url Url.\n   * @api\n   */\n  setUrl(url) {\n    assert(this.format_, '`format` must be set when `url` is set');\n    this.url_ = url;\n    this.setLoader(xhr(url, this.format_));\n  }\n\n  /**\n   * @param {boolean} overlaps The source can have overlapping geometries.\n   */\n  setOverlaps(overlaps) {\n    this.overlaps_ = overlaps;\n    this.changed();\n  }\n}\n\nexport default VectorSource;\n","/**\n * @module ol/ImageCanvas\n */\nimport ImageWrapper from './Image.js';\nimport ImageState from './ImageState.js';\n\n/**\n * A function that is called to trigger asynchronous canvas drawing.  It is\n * called with a \"done\" callback that should be called when drawing is done.\n * If any error occurs during drawing, the \"done\" callback should be called with\n * that error.\n *\n * @typedef {function(function(Error=): void): void} Loader\n */\n\nclass ImageCanvas extends ImageWrapper {\n  /**\n   * @param {import(\"./extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {HTMLCanvasElement|OffscreenCanvas} canvas Canvas.\n   * @param {Loader} [loader] Optional loader function to\n   *     support asynchronous canvas drawing.\n   */\n  constructor(extent, resolution, pixelRatio, canvas, loader) {\n    const state = loader !== undefined ? ImageState.IDLE : ImageState.LOADED;\n\n    super(extent, resolution, pixelRatio, state);\n\n    /**\n     * Optional canvas loader function.\n     * @type {?Loader}\n     * @private\n     */\n    this.loader_ = loader !== undefined ? loader : null;\n\n    /**\n     * @private\n     * @type {HTMLCanvasElement|OffscreenCanvas}\n     */\n    this.canvas_ = canvas;\n\n    /**\n     * @private\n     * @type {?Error}\n     */\n    this.error_ = null;\n  }\n\n  /**\n   * Get any error associated with asynchronous rendering.\n   * @return {?Error} Any error that occurred during rendering.\n   */\n  getError() {\n    return this.error_;\n  }\n\n  /**\n   * Handle async drawing complete.\n   * @param {Error} [err] Any error during drawing.\n   * @private\n   */\n  handleLoad_(err) {\n    if (err) {\n      this.error_ = err;\n      this.state = ImageState.ERROR;\n    } else {\n      this.state = ImageState.LOADED;\n    }\n    this.changed();\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * @override\n   */\n  load() {\n    if (this.state == ImageState.IDLE) {\n      this.state = ImageState.LOADING;\n      this.changed();\n      this.loader_(this.handleLoad_.bind(this));\n    }\n  }\n\n  /**\n   * @return {HTMLCanvasElement|OffscreenCanvas} Canvas element.\n   * @override\n   */\n  getImage() {\n    return this.canvas_;\n  }\n}\n\nexport default ImageCanvas;\n","/**\n * @module ol/Tile\n */\nimport TileState from './TileState.js';\nimport {easeIn} from './easing.js';\nimport EventType from './events/EventType.js';\nimport EventTarget from './events/Target.js';\nimport {abstract} from './util.js';\n\n/**\n * A function that takes a {@link module:ol/Tile~Tile} for the tile and a\n * `{string}` for the url as arguments. The default is\n * ```js\n * source.setTileLoadFunction(function(tile, src) {\n *   tile.getImage().src = src;\n * });\n * ```\n * For more fine grained control, the load function can use fetch or XMLHttpRequest and involve\n * error handling:\n *\n * ```js\n * import TileState from 'ol/TileState.js';\n *\n * source.setTileLoadFunction(function(tile, src) {\n *   const xhr = new XMLHttpRequest();\n *   xhr.responseType = 'blob';\n *   xhr.addEventListener('loadend', function (evt) {\n *     const data = this.response;\n *     if (data !== undefined) {\n *       tile.getImage().src = URL.createObjectURL(data);\n *     } else {\n *       tile.setState(TileState.ERROR);\n *     }\n *   });\n *   xhr.addEventListener('error', function () {\n *     tile.setState(TileState.ERROR);\n *   });\n *   xhr.open('GET', src);\n *   xhr.send();\n * });\n * ```\n *\n * @typedef {function(Tile, string): void} LoadFunction\n * @api\n */\n\n/**\n * {@link module:ol/source/Tile~TileSource} sources use a function of this type to get\n * the url that provides a tile for a given tile coordinate.\n *\n * This function takes a {@link module:ol/tilecoord~TileCoord} for the tile\n * coordinate, a `{number}` representing the pixel ratio and a\n * {@link module:ol/proj/Projection~Projection} for the projection  as arguments\n * and returns a `{string}` representing the tile URL, or undefined if no tile\n * should be requested for the passed tile coordinate.\n *\n * @typedef {function(import(\"./tilecoord.js\").TileCoord, number,\n *           import(\"./proj/Projection.js\").default): (string|undefined)} UrlFunction\n * @api\n */\n\n/**\n * @typedef {Object} Options\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling.  By default,\n * the nearest neighbor is used when resampling.\n * @api\n */\n\n/**\n * @classdesc\n * Base class for tiles.\n *\n * @abstract\n */\nclass Tile extends EventTarget {\n  /**\n   * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"./TileState.js\").default} state State.\n   * @param {Options} [options] Tile options.\n   */\n  constructor(tileCoord, state, options) {\n    super();\n\n    options = options ? options : {};\n\n    /**\n     * @type {import(\"./tilecoord.js\").TileCoord}\n     */\n    this.tileCoord = tileCoord;\n\n    /**\n     * @protected\n     * @type {import(\"./TileState.js\").default}\n     */\n    this.state = state;\n\n    /**\n     * A key assigned to the tile. This is used in conjunction with a source key\n     * to determine if a cached version of this tile may be used by the renderer.\n     * @type {string}\n     */\n    this.key = '';\n\n    /**\n     * The duration for the opacity transition.\n     * @private\n     * @type {number}\n     */\n    this.transition_ =\n      options.transition === undefined ? 250 : options.transition;\n\n    /**\n     * Lookup of start times for rendering transitions.  If the start time is\n     * equal to -1, the transition is complete.\n     * @private\n     * @type {Object<string, number>}\n     */\n    this.transitionStarts_ = {};\n\n    /**\n     * @type {boolean}\n     */\n    this.interpolate = !!options.interpolate;\n  }\n\n  /**\n   * @protected\n   */\n  changed() {\n    this.dispatchEvent(EventType.CHANGE);\n  }\n\n  /**\n   * Called by the tile cache when the tile is removed from the cache due to expiry\n   */\n  release() {\n    // to remove the `change` listener on this tile in `ol/TileQueue#handleTileChange`\n    this.setState(TileState.EMPTY);\n  }\n\n  /**\n   * @return {string} Key.\n   */\n  getKey() {\n    return this.key + '/' + this.tileCoord;\n  }\n\n  /**\n   * Get the tile coordinate for this tile.\n   * @return {import(\"./tilecoord.js\").TileCoord} The tile coordinate.\n   * @api\n   */\n  getTileCoord() {\n    return this.tileCoord;\n  }\n\n  /**\n   * @return {import(\"./TileState.js\").default} State.\n   */\n  getState() {\n    return this.state;\n  }\n\n  /**\n   * Sets the state of this tile. If you write your own {@link module:ol/Tile~LoadFunction tileLoadFunction} ,\n   * it is important to set the state correctly to {@link module:ol/TileState~ERROR}\n   * when the tile cannot be loaded. Otherwise the tile cannot be removed from\n   * the tile queue and will block other requests.\n   * @param {import(\"./TileState.js\").default} state State.\n   * @api\n   */\n  setState(state) {\n    if (this.state === TileState.EMPTY) {\n      // no more state changes\n      return;\n    }\n    if (this.state !== TileState.ERROR && this.state > state) {\n      throw new Error('Tile load sequence violation');\n    }\n    this.state = state;\n    this.changed();\n  }\n\n  /**\n   * Load the image or retry if loading previously failed.\n   * Loading is taken care of by the tile queue, and calling this method is\n   * only needed for preloading or for reloading in case of an error.\n   * @abstract\n   * @api\n   */\n  load() {\n    abstract();\n  }\n\n  /**\n   * Get the alpha value for rendering.\n   * @param {string} id An id for the renderer.\n   * @param {number} time The render frame time.\n   * @return {number} A number between 0 and 1.\n   */\n  getAlpha(id, time) {\n    if (!this.transition_) {\n      return 1;\n    }\n\n    let start = this.transitionStarts_[id];\n    if (!start) {\n      start = time;\n      this.transitionStarts_[id] = start;\n    } else if (start === -1) {\n      return 1;\n    }\n\n    const delta = time - start + 1000 / 60; // avoid rendering at 0\n    if (delta >= this.transition_) {\n      return 1;\n    }\n    return easeIn(delta / this.transition_);\n  }\n\n  /**\n   * Determine if a tile is in an alpha transition.  A tile is considered in\n   * transition if tile.getAlpha() has not yet been called or has been called\n   * and returned 1.\n   * @param {string} id An id for the renderer.\n   * @return {boolean} The tile is in transition.\n   */\n  inTransition(id) {\n    if (!this.transition_) {\n      return false;\n    }\n    return this.transitionStarts_[id] !== -1;\n  }\n\n  /**\n   * Mark a transition as complete.\n   * @param {string} id An id for the renderer.\n   */\n  endTransition(id) {\n    if (this.transition_) {\n      this.transitionStarts_[id] = -1;\n    }\n  }\n\n  /**\n   * @override\n   */\n  disposeInternal() {\n    this.release();\n    super.disposeInternal();\n  }\n}\n\nexport default Tile;\n","/**\n * @module ol/ImageTile\n */\nimport {listenImage} from './Image.js';\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\nimport {WORKER_OFFSCREEN_CANVAS} from './has.js';\n\nclass ImageTile extends Tile {\n  /**\n   * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"./TileState.js\").default} state State.\n   * @param {string} src Image source URI.\n   * @param {import('./dom.js').ImageAttributes} imageAttributes Image attributes options.\n   * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n   * @param {import(\"./Tile.js\").Options} [options] Tile options.\n   */\n  constructor(\n    tileCoord,\n    state,\n    src,\n    imageAttributes,\n    tileLoadFunction,\n    options,\n  ) {\n    super(tileCoord, state, options);\n\n    /**\n     * @private\n     * @type {?string}\n     */\n    this.crossOrigin_ = imageAttributes?.crossOrigin;\n\n    /**\n     * @private\n     * @type {ReferrerPolicy}\n     */\n    this.referrerPolicy_ = imageAttributes?.referrerPolicy;\n\n    /**\n     * Image URI\n     *\n     * @private\n     * @type {string}\n     */\n    this.src_ = src;\n\n    this.key = src;\n\n    /**\n     * @private\n     * @type {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas}\n     */\n    this.image_;\n\n    if (WORKER_OFFSCREEN_CANVAS) {\n      this.image_ = new OffscreenCanvas(1, 1);\n    } else {\n      this.image_ = new Image();\n      if (this.crossOrigin_ !== null) {\n        this.image_.crossOrigin = this.crossOrigin_;\n      }\n      if (this.referrerPolicy_ !== undefined) {\n        this.image_.referrerPolicy = this.referrerPolicy_;\n      }\n    }\n\n    /**\n     * @private\n     * @type {?function():void}\n     */\n    this.unlisten_ = null;\n\n    /**\n     * @private\n     * @type {import(\"./Tile.js\").LoadFunction}\n     */\n    this.tileLoadFunction_ = tileLoadFunction;\n  }\n\n  /**\n   * Get the HTML image element for this tile (may be a Canvas, OffscreenCanvas, Image, or Video).\n   * @return {HTMLCanvasElement|OffscreenCanvas|HTMLImageElement|HTMLVideoElement} Image.\n   * @api\n   */\n  getImage() {\n    return this.image_;\n  }\n\n  /**\n   * Sets an HTML image element for this tile (may be a Canvas or preloaded Image).\n   * @param {HTMLCanvasElement|OffscreenCanvas|HTMLImageElement} element Element.\n   */\n  setImage(element) {\n    this.image_ = element;\n    this.state = TileState.LOADED;\n    this.unlistenImage_();\n    this.changed();\n  }\n\n  /**\n   * Get the cross origin of the ImageTile.\n   * @return {string} Cross origin.\n   */\n  getCrossOrigin() {\n    return this.crossOrigin_;\n  }\n\n  /**\n   * Get the referrer policy of the ImageTile.\n   * @return {ReferrerPolicy} Referrer policy.\n   */\n  getReferrerPolicy() {\n    return this.referrerPolicy_;\n  }\n\n  /**\n   * Tracks loading or read errors.\n   *\n   * @private\n   */\n  handleImageError_() {\n    this.state = TileState.ERROR;\n    this.unlistenImage_();\n    this.image_ = getBlankImage();\n    this.changed();\n  }\n\n  /**\n   * Tracks successful image load.\n   *\n   * @private\n   */\n  handleImageLoad_() {\n    if (WORKER_OFFSCREEN_CANVAS) {\n      // OffscreenCanvas does not have naturalWidth and naturalHeight\n      this.state = TileState.LOADED;\n    } else {\n      const image = /** @type {HTMLImageElement} */ (this.image_);\n      if (image.naturalWidth && image.naturalHeight) {\n        this.state = TileState.LOADED;\n      } else {\n        this.state = TileState.EMPTY;\n      }\n    }\n    this.unlistenImage_();\n    this.changed();\n  }\n\n  /**\n   * Load the image or retry if loading previously failed.\n   * Loading is taken care of by the tile queue, and calling this method is\n   * only needed for preloading or for reloading in case of an error.\n   *\n   * To retry loading tiles on failed requests, use a custom `tileLoadFunction`\n   * that checks for error status codes and reloads only when the status code is\n   * 408, 429, 500, 502, 503 and 504, and only when not too many retries have been\n   * made already:\n   *\n   * ```js\n   * const retryCodes = [408, 429, 500, 502, 503, 504];\n   * const retries = {};\n   * source.setTileLoadFunction((tile, src) => {\n   *   const image = tile.getImage();\n   *   fetch(src)\n   *     .then((response) => {\n   *       if (retryCodes.includes(response.status)) {\n   *         retries[src] = (retries[src] || 0) + 1;\n   *         if (retries[src] <= 3) {\n   *           setTimeout(() => tile.load(), retries[src] * 1000);\n   *         }\n   *         return Promise.reject();\n   *       }\n   *       return response.blob();\n   *     })\n   *     .then((blob) => {\n   *       const imageUrl = URL.createObjectURL(blob);\n   *       image.src = imageUrl;\n   *       setTimeout(() => URL.revokeObjectURL(imageUrl), 5000);\n   *     })\n   *     .catch(() => tile.setState(3)); // error\n   * });\n   * ```\n   * @api\n   * @override\n   */\n  load() {\n    if (this.state == TileState.ERROR) {\n      this.state = TileState.IDLE;\n      this.image_ = new Image();\n      if (this.crossOrigin_ !== null) {\n        this.image_.crossOrigin = this.crossOrigin_;\n      }\n      if (this.referrerPolicy_ !== undefined) {\n        this.image_.referrerPolicy = this.referrerPolicy_;\n      }\n    }\n    if (this.state == TileState.IDLE) {\n      this.state = TileState.LOADING;\n      this.changed();\n      this.tileLoadFunction_(this, this.src_);\n      this.unlisten_ = listenImage(\n        this.image_,\n        this.handleImageLoad_.bind(this),\n        this.handleImageError_.bind(this),\n      );\n    }\n  }\n\n  /**\n   * Discards event handlers which listen for load completion or errors.\n   *\n   * @private\n   */\n  unlistenImage_() {\n    if (this.unlisten_) {\n      this.unlisten_();\n      this.unlisten_ = null;\n    }\n  }\n\n  /**\n   * @override\n   */\n  disposeInternal() {\n    this.unlistenImage_();\n    this.image_ = null;\n    super.disposeInternal();\n  }\n}\n\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement|OffscreenCanvas} Blank image.\n */\nfunction getBlankImage() {\n  const ctx = createCanvasContext2D(1, 1);\n  ctx.fillStyle = 'rgba(0,0,0,0)';\n  ctx.fillRect(0, 0, 1, 1);\n  return ctx.canvas;\n}\n\nexport default ImageTile;\n","/**\n * @module ol/TileRange\n */\n\n/**\n * A representation of a contiguous block of tiles.  A tile range is specified\n * by its min/max tile coordinates and is inclusive of coordinates.\n */\nclass TileRange {\n  /**\n   * @param {number} minX Minimum X.\n   * @param {number} maxX Maximum X.\n   * @param {number} minY Minimum Y.\n   * @param {number} maxY Maximum Y.\n   */\n  constructor(minX, maxX, minY, maxY) {\n    /**\n     * @type {number}\n     */\n    this.minX = minX;\n\n    /**\n     * @type {number}\n     */\n    this.maxX = maxX;\n\n    /**\n     * @type {number}\n     */\n    this.minY = minY;\n\n    /**\n     * @type {number}\n     */\n    this.maxY = maxY;\n  }\n\n  /**\n   * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @return {boolean} Contains tile coordinate.\n   */\n  contains(tileCoord) {\n    return this.containsXY(tileCoord[1], tileCoord[2]);\n  }\n\n  /**\n   * @param {TileRange} tileRange Tile range.\n   * @return {boolean} Contains.\n   */\n  containsTileRange(tileRange) {\n    return (\n      this.minX <= tileRange.minX &&\n      tileRange.maxX <= this.maxX &&\n      this.minY <= tileRange.minY &&\n      tileRange.maxY <= this.maxY\n    );\n  }\n\n  /**\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @return {boolean} Contains coordinate.\n   */\n  containsXY(x, y) {\n    return this.minX <= x && x <= this.maxX && this.minY <= y && y <= this.maxY;\n  }\n\n  /**\n   * @param {TileRange} tileRange Tile range.\n   * @return {boolean} Equals.\n   */\n  equals(tileRange) {\n    return (\n      this.minX == tileRange.minX &&\n      this.minY == tileRange.minY &&\n      this.maxX == tileRange.maxX &&\n      this.maxY == tileRange.maxY\n    );\n  }\n\n  /**\n   * @param {TileRange} tileRange Tile range.\n   */\n  extend(tileRange) {\n    if (tileRange.minX < this.minX) {\n      this.minX = tileRange.minX;\n    }\n    if (tileRange.maxX > this.maxX) {\n      this.maxX = tileRange.maxX;\n    }\n    if (tileRange.minY < this.minY) {\n      this.minY = tileRange.minY;\n    }\n    if (tileRange.maxY > this.maxY) {\n      this.maxY = tileRange.maxY;\n    }\n  }\n\n  /**\n   * @return {number} Height.\n   */\n  getHeight() {\n    return this.maxY - this.minY + 1;\n  }\n\n  /**\n   * @return {import(\"./size.js\").Size} Size.\n   */\n  getSize() {\n    return [this.getWidth(), this.getHeight()];\n  }\n\n  /**\n   * @return {number} Width.\n   */\n  getWidth() {\n    return this.maxX - this.minX + 1;\n  }\n\n  /**\n   * @param {TileRange} tileRange Tile range.\n   * @return {boolean} Intersects.\n   */\n  intersects(tileRange) {\n    return (\n      this.minX <= tileRange.maxX &&\n      this.maxX >= tileRange.minX &&\n      this.minY <= tileRange.maxY &&\n      this.maxY >= tileRange.minY\n    );\n  }\n}\n\n/**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n * @param {TileRange} [tileRange] TileRange.\n * @return {TileRange} Tile range.\n */\nexport function createOrUpdate(minX, maxX, minY, maxY, tileRange) {\n  if (tileRange !== undefined) {\n    tileRange.minX = minX;\n    tileRange.maxX = maxX;\n    tileRange.minY = minY;\n    tileRange.maxY = maxY;\n    return tileRange;\n  }\n  return new TileRange(minX, maxX, minY, maxY);\n}\n\nexport default TileRange;\n","/**\n * @module ol/VectorRenderTile\n */\nimport Tile from './Tile.js';\nimport {createCanvasContext2D, releaseCanvas} from './dom.js';\nimport {getUid} from './util.js';\n\n/**\n * @typedef {Object} ReplayState\n * @property {boolean} dirty Dirty.\n * @property {null|import(\"./render.js\").OrderFunction} renderedRenderOrder RenderedRenderOrder.\n * @property {number} renderedTileRevision RenderedTileRevision.\n * @property {number} renderedResolution RenderedResolution.\n * @property {number} renderedPixelRatio RenderedPixelRatio.\n * @property {number} renderedRevision RenderedRevision.\n * @property {number} renderedTileResolution RenderedTileResolution.\n * @property {number} renderedTileZ RenderedTileZ.\n */\n\n/**\n * @type {Array<HTMLCanvasElement|OffscreenCanvas>}\n */\nconst canvasPool = [];\n\nclass VectorRenderTile extends Tile {\n  /**\n   * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"./TileState.js\").default} state State.\n   * @param {import(\"./tilecoord.js\").TileCoord} urlTileCoord Wrapped tile coordinate for source urls.\n   * @param {function(VectorRenderTile):Array<import(\"./VectorTile\").default>} getSourceTiles Function.\n   * @param {function(VectorRenderTile):void} removeSourceTiles Function.\n   */\n  constructor(\n    tileCoord,\n    state,\n    urlTileCoord,\n    getSourceTiles,\n    removeSourceTiles,\n  ) {\n    super(tileCoord, state, {transition: 0});\n\n    /**\n     * @private\n     * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D|null}\n     */\n    this.context_ = null;\n\n    /**\n     * Executor groups. Read/written by the renderer.\n     * @type {Object<string, Array<import(\"./render/canvas/ExecutorGroup.js\").default>>}\n     */\n    this.executorGroups = {};\n\n    /**\n     * Number of loading source tiles. Read/written by the source.\n     * @type {number}\n     */\n    this.loadingSourceTiles = 0;\n\n    /**\n     * @type {Object<string, ImageData>}\n     */\n    this.hitDetectionImageData = {};\n\n    /**\n     * @private\n     * @type {!Object<string, ReplayState>}\n     */\n    this.replayState_ = {};\n\n    /**\n     * @type {Array<import(\"./VectorTile.js\").default>}\n     */\n    this.sourceTiles = [];\n\n    /**\n     * @type {Object<string, boolean>}\n     */\n    this.errorTileKeys = {};\n\n    /**\n     * @type {number}\n     */\n    this.wantedResolution;\n\n    /**\n     * @type {!function():Array<import(\"./VectorTile.js\").default>}\n     */\n    this.getSourceTiles = getSourceTiles.bind(undefined, this);\n\n    /**\n     * @type {!function(VectorRenderTile):void}\n     * @private\n     */\n    this.removeSourceTiles_ = removeSourceTiles;\n\n    /**\n     * @type {import(\"./tilecoord.js\").TileCoord}\n     */\n    this.wrappedTileCoord = urlTileCoord;\n  }\n\n  /**\n   * @return {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} The rendering context.\n   */\n  getContext() {\n    if (!this.context_) {\n      this.context_ = createCanvasContext2D(1, 1, canvasPool);\n    }\n    return this.context_;\n  }\n\n  /**\n   * @return {boolean} Tile has a rendering context.\n   */\n  hasContext() {\n    return !!this.context_;\n  }\n\n  /**\n   * Get the Canvas for this tile.\n   * @return {HTMLCanvasElement|OffscreenCanvas} Canvas.\n   */\n  getImage() {\n    return this.hasContext() ? this.getContext().canvas : null;\n  }\n\n  /**\n   * @param {import(\"./layer/Layer.js\").default} layer Layer.\n   * @return {ReplayState} The replay state.\n   */\n  getReplayState(layer) {\n    const key = getUid(layer);\n    if (!(key in this.replayState_)) {\n      this.replayState_[key] = {\n        dirty: false,\n        renderedRenderOrder: null,\n        renderedResolution: NaN,\n        renderedPixelRatio: NaN,\n        renderedRevision: -1,\n        renderedTileResolution: NaN,\n        renderedTileRevision: -1,\n        renderedTileZ: -1,\n      };\n    }\n    return this.replayState_[key];\n  }\n\n  /**\n   * Load the tile.\n   * @override\n   */\n  load() {\n    this.getSourceTiles();\n  }\n\n  /**\n   * Remove from the cache due to expiry\n   * @override\n   */\n  release() {\n    if (this.context_) {\n      releaseCanvas(this.context_);\n      canvasPool.push(this.context_.canvas);\n      this.context_ = null;\n    }\n    this.removeSourceTiles_(this);\n    this.sourceTiles.length = 0;\n    super.release();\n  }\n}\n\nexport default VectorRenderTile;\n","/**\n * @module ol/VectorTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\n\n/**\n * @template {import('./Feature.js').FeatureLike} FeatureType\n */\nclass VectorTile extends Tile {\n  /**\n   * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"./TileState.js\").default} state State.\n   * @param {string} src Data source url.\n   * @param {import(\"./format/Feature.js\").default<FeatureType>} format Feature format.\n   * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n   * @param {import(\"./Tile.js\").Options} [options] Tile options.\n   */\n  constructor(tileCoord, state, src, format, tileLoadFunction, options) {\n    super(tileCoord, state, options);\n\n    /**\n     * Extent of this tile; set by the source.\n     * @type {import(\"./extent.js\").Extent}\n     */\n    this.extent = null;\n\n    /**\n     * @private\n     * @type {import(\"./format/Feature.js\").default<FeatureType>}\n     */\n    this.format_ = format;\n\n    /**\n     * @private\n     * @type {Array<FeatureType>}\n     */\n    this.features_ = null;\n\n    /**\n     * @private\n     * @type {import(\"./featureloader.js\").FeatureLoader}\n     */\n    this.loader_;\n\n    /**\n     * Feature projection of this tile; set by the source.\n     * @type {import(\"./proj/Projection.js\").default}\n     */\n    this.projection = null;\n\n    /**\n     * Resolution of this tile; set by the source.\n     * @type {number}\n     */\n    this.resolution;\n\n    /**\n     * @private\n     * @type {import(\"./Tile.js\").LoadFunction}\n     */\n    this.tileLoadFunction_ = tileLoadFunction;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.url_ = src;\n\n    this.key = src;\n  }\n\n  /**\n   * @return {string} Tile url.\n   */\n  getTileUrl() {\n    return this.url_;\n  }\n\n  /**\n   * Get the feature format assigned for reading this tile's features.\n   * @return {import(\"./format/Feature.js\").default<FeatureType>} Feature format.\n   * @api\n   */\n  getFormat() {\n    return this.format_;\n  }\n\n  /**\n   * Get the features for this tile. Geometries will be in the view projection.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   */\n  getFeatures() {\n    return this.features_;\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * @override\n   */\n  load() {\n    if (this.state == TileState.IDLE) {\n      this.setState(TileState.LOADING);\n      this.tileLoadFunction_(this, this.url_);\n      if (this.loader_) {\n        this.loader_(this.extent, this.resolution, this.projection);\n      }\n    }\n  }\n\n  /**\n   * Handler for successful tile load.\n   * @param {Array<FeatureType>} features The loaded features.\n   * @param {import(\"./proj/Projection.js\").default} dataProjection Data projection.\n   */\n  onLoad(features, dataProjection) {\n    this.setFeatures(features);\n  }\n\n  /**\n   * Handler for tile load errors.\n   */\n  onError() {\n    this.setState(TileState.ERROR);\n  }\n\n  /**\n   * Function for use in a {@link module:ol/source/VectorTile~VectorTile}'s `tileLoadFunction`.\n   * Sets the features for the tile.\n   * @param {Array<FeatureType>} features Features.\n   * @api\n   */\n  setFeatures(features) {\n    this.features_ = features;\n    this.setState(TileState.LOADED);\n  }\n\n  /**\n   * Set the feature loader for reading this tile's features.\n   * @param {import(\"./featureloader.js\").FeatureLoader<FeatureType>} loader Feature loader.\n   * @api\n   */\n  setLoader(loader) {\n    this.loader_ = loader;\n  }\n}\n\nexport default VectorTile;\n","const mapboxBaseUrl = 'https://api.mapbox.com';\n\n/**\n * @typedef {Object} Sprite\n * @property {string} id Id of the sprite source.\n * @property {string} url URL to the sprite source.\n */\n\n/**\n * Gets the path from a mapbox:// URL.\n * @param {string} url The Mapbox URL.\n * @return {string} The path.\n * @private\n */\nexport function getMapboxPath(url) {\n  const startsWith = 'mapbox://';\n  if (url.indexOf(startsWith) !== 0) {\n    return '';\n  }\n  return url.slice(startsWith.length);\n}\n\n/**\n * Normalizes legacy string-based or new-style array based sprite definitions into array-based.\n * @param {string|Array<Sprite>} sprite the sprite source.\n * @param {string} token The access token.\n * @param {string} styleUrl The style URL.\n * @return {Array<Sprite>} An array of sprite definitions with normalized URLs.\n * @private\n */\nexport function normalizeSpriteDefinition(sprite, token, styleUrl) {\n  if (typeof sprite === 'string') {\n    return [\n      {\n        'id': 'default',\n        'url': normalizeSpriteUrl(sprite, token, styleUrl),\n      },\n    ];\n  }\n\n  for (const spriteObj of sprite) {\n    spriteObj.url = normalizeSpriteUrl(spriteObj.url, token, styleUrl);\n  }\n\n  return sprite;\n}\n\n/**\n * Turns mapbox:// sprite URLs into resolvable URLs.\n * @param {string} url The sprite URL.\n * @param {string} token The access token.\n * @param {string} styleUrl The style URL.\n * @return {string} A resolvable URL.\n * @private\n */\nexport function normalizeSpriteUrl(url, token, styleUrl) {\n  const mapboxPath = getMapboxPath(url);\n  if (!mapboxPath) {\n    return decodeURI(new URL(url, styleUrl).href);\n  }\n  const startsWith = 'sprites/';\n  if (mapboxPath.indexOf(startsWith) !== 0) {\n    throw new Error(`unexpected sprites url: ${url}`);\n  }\n  const sprite = mapboxPath.slice(startsWith.length);\n\n  return `${mapboxBaseUrl}/styles/v1/${sprite}/sprite?access_token=${token}`;\n}\n\n/**\n * Turns mapbox:// style URLs into resolvable URLs.\n * @param {string} url The style URL.\n * @param {string} token The access token.\n * @return {string} A resolvable URL.\n * @private\n */\nexport function normalizeStyleUrl(url, token) {\n  const mapboxPath = getMapboxPath(url);\n  if (!mapboxPath) {\n    return decodeURI(new URL(url, location.href).href);\n  }\n  const startsWith = 'styles/';\n  if (mapboxPath.indexOf(startsWith) !== 0) {\n    throw new Error(`unexpected style url: ${url}`);\n  }\n  const style = mapboxPath.slice(startsWith.length);\n\n  return `${mapboxBaseUrl}/styles/v1/${style}?&access_token=${token}`;\n}\n\nconst mapboxSubdomains = ['a', 'b', 'c', 'd'];\n\n/**\n * Turns mapbox:// source URLs into vector tile URL templates.\n * @param {string} url The source URL.\n * @param {string} token The access token.\n * @param {string} tokenParam The access token key.\n * @param {string} styleUrl The style URL.\n * @return {Array<string>} A vector tile template.\n * @private\n */\nexport function normalizeSourceUrl(url, token, tokenParam, styleUrl) {\n  const urlObject = new URL(url, styleUrl || location.href);\n  const mapboxPath = getMapboxPath(url);\n  if (!mapboxPath) {\n    if (!token) {\n      return [decodeURI(urlObject.href)];\n    }\n    if (!urlObject.searchParams.has(tokenParam)) {\n      urlObject.searchParams.set(tokenParam, token);\n    }\n    return [decodeURI(urlObject.href)];\n  }\n\n  if (mapboxPath === 'mapbox.satellite') {\n    const sizeFactor = window.devicePixelRatio >= 1.5 ? '@2x' : '';\n    return [\n      `https://api.mapbox.com/v4/${mapboxPath}/{z}/{x}/{y}${sizeFactor}.webp?access_token=${token}`,\n    ];\n  }\n  return mapboxSubdomains.map(\n    (sub) =>\n      `https://${sub}.tiles.mapbox.com/v4/${mapboxPath}/{z}/{x}/{y}.vector.pbf?access_token=${token}`,\n  );\n}\n","import {VectorTile} from 'ol';\nimport TileState from 'ol/TileState.js';\nimport {toPromise} from 'ol/functions.js';\nimport {getUid} from 'ol/util.js';\nimport {normalizeSourceUrl, normalizeStyleUrl} from './mapbox.js';\n\n/** @typedef {'Style'|'Source'|'Sprite'|'SpriteImage'|'Tiles'|'GeoJSON'} ResourceType */\n\n/** @typedef {import(\"ol\").Map} Map */\n/** @typedef {import(\"ol/layer\").Layer} Layer */\n/** @typedef {import(\"ol/layer\").Group} LayerGroup */\n/** @typedef {import(\"ol/layer\").Vector} VectorLayer */\n/** @typedef {import(\"ol/layer\").VectorTile} VectorTileLayer */\n/** @typedef {import(\"ol/source\").Source} Source */\n\nexport const emptyObj = Object.freeze({});\n\nconst functionCacheByStyleId = {};\nconst filterCacheByStyleId = {};\n\nlet styleId = 0;\nexport function getStyleId(glStyle) {\n  if (!glStyle.id) {\n    glStyle.id = styleId++;\n  }\n  return glStyle.id;\n}\n\nexport function getStyleFunctionKey(glStyle, olLayer) {\n  return getStyleId(glStyle) + '.' + getUid(olLayer);\n}\n\n/**\n * @param {Object} glStyle Mapboox style object.\n * @return {Object} Function cache.\n */\nexport function getFunctionCache(glStyle) {\n  let functionCache = functionCacheByStyleId[glStyle.id];\n  if (!functionCache) {\n    functionCache = {};\n    functionCacheByStyleId[getStyleId(glStyle)] = functionCache;\n  }\n  return functionCache;\n}\n\nexport function clearFunctionCache() {\n  for (const key in functionCacheByStyleId) {\n    delete functionCacheByStyleId[key];\n  }\n}\n\n/**\n * @param {Object} glStyle Mapboox style object.\n * @return {Object} Filter cache.\n */\nexport function getFilterCache(glStyle) {\n  let filterCache = filterCacheByStyleId[glStyle.id];\n  if (!filterCache) {\n    filterCache = {};\n    filterCacheByStyleId[getStyleId(glStyle)] = filterCache;\n  }\n  return filterCache;\n}\n\nexport function deg2rad(degrees) {\n  return (degrees * Math.PI) / 180;\n}\n\nexport const defaultResolutions = (function () {\n  const resolutions = [];\n  for (let res = 78271.51696402048; resolutions.length <= 24; res /= 2) {\n    resolutions.push(res);\n  }\n  return resolutions;\n})();\n\n/**\n * @param {number} width Width of the canvas.\n * @param {number} height Height of the canvas.\n * @return {HTMLCanvasElement} Canvas.\n */\nexport function createCanvas(width, height) {\n  if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope && typeof OffscreenCanvas !== 'undefined') { // eslint-disable-line\n    return /** @type {?} */ (new OffscreenCanvas(width, height));\n  }\n  const canvas = document.createElement('canvas');\n  canvas.width = width;\n  canvas.height = height;\n  return canvas;\n}\n\nexport function getZoomForResolution(resolution, resolutions) {\n  let i = 0;\n  const ii = resolutions.length;\n  for (; i < ii; ++i) {\n    const candidate = resolutions[i];\n    if (candidate < resolution && i + 1 < ii) {\n      const zoomFactor = resolutions[i] / resolutions[i + 1];\n      return i + Math.log(resolutions[i] / resolution) / Math.log(zoomFactor);\n    }\n  }\n  return ii - 1;\n}\n\nexport function getResolutionForZoom(zoom, resolutions) {\n  const base = Math.floor(zoom);\n  const factor = Math.pow(2, zoom - base);\n  return resolutions[base] / factor;\n}\n\nconst pendingRequests = {};\n/**\n * @param {ResourceType} resourceType Type of resource to load.\n * @param {string} url Url of the resource.\n * @param {Options} [options] Options.\n * @param {{url?: string}} [metadata] Object to be filled with the request.\n * @return {Promise<Object|Response>} Promise that resolves with the loaded resource\n * or rejects with the Response object.\n * @private\n */\nexport function fetchResource(resourceType, url, options = {}, metadata) {\n  if (url in pendingRequests) {\n    if (metadata) {\n      metadata.url = pendingRequests[url][0].url;\n    }\n    return pendingRequests[url][1];\n  }\n  const transformedRequest = options.transformRequest\n    ? options.transformRequest(url, resourceType) || url\n    : url;\n  const handleError = function (error) {\n    delete pendingRequests[url];\n    return Promise.reject(new Error('Error fetching source ' + url));\n  };\n  const handleResponse = function (response) {\n    delete pendingRequests[url];\n    return response.ok\n      ? response.json()\n      : Promise.reject(new Error('Error fetching source ' + url));\n  };\n  const pendingRequest = toPromise(() => transformedRequest)\n    .then((transformedRequest) => {\n      if (transformedRequest instanceof Response) {\n        if (metadata) {\n          metadata.url = transformedRequest.url;\n        }\n        return handleResponse(transformedRequest);\n      }\n      if (!(transformedRequest instanceof Request)) {\n        transformedRequest = new Request(transformedRequest);\n      }\n      if (!transformedRequest.headers.get('Accept')) {\n        transformedRequest.headers.set('Accept', 'application/json');\n      }\n      if (metadata) {\n        metadata.url = transformedRequest.url;\n      }\n      return fetch(transformedRequest).then(handleResponse).catch(handleError);\n    })\n    .catch(handleError);\n  pendingRequests[url] = [transformedRequest, pendingRequest];\n  return pendingRequest;\n}\n\nexport function getGlStyle(glStyleOrUrl, options) {\n  if (typeof glStyleOrUrl === 'string') {\n    if (glStyleOrUrl.trim().startsWith('{')) {\n      try {\n        const glStyle = JSON.parse(glStyleOrUrl);\n        return Promise.resolve(glStyle);\n      } catch (error) {\n        return Promise.reject(error);\n      }\n    } else {\n      glStyleOrUrl = normalizeStyleUrl(glStyleOrUrl, options.accessToken);\n      return fetchResource('Style', glStyleOrUrl, options);\n    }\n  } else {\n    return Promise.resolve(glStyleOrUrl);\n  }\n}\n\nconst tilejsonCache = {};\n/**\n * @param {Object} glSource glStyle source object.\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {Promise<{tileJson: Object, tileLoadFunction: import('ol/Tile.js').LoadFunction}?>} TileJson and load function\n */\nexport function getTileJson(glSource, styleUrl, options = {}) {\n  const cacheKey = [styleUrl, JSON.stringify(glSource)].toString();\n  let promise = tilejsonCache[cacheKey];\n  if (!promise || options.transformRequest) {\n    let tileLoadFunction;\n    if (options.transformRequest) {\n      tileLoadFunction = (tile, src) => {\n        const transformedRequest = options.transformRequest\n          ? options.transformRequest(src, 'Tiles') || src\n          : src;\n        if (tile instanceof VectorTile) {\n          tile.setLoader((extent, resolution, projection) => {\n            const handleResponse = function (response) {\n              response.arrayBuffer().then((data) => {\n                const format = tile.getFormat();\n                const features = format.readFeatures(data, {\n                  extent: extent,\n                  featureProjection: projection,\n                });\n                // @ts-ignore\n                tile.setFeatures(features);\n              });\n            };\n            toPromise(() => transformedRequest)\n              .then((transformedRequest) => {\n                if (transformedRequest instanceof Response) {\n                  return handleResponse(transformedRequest);\n                }\n                fetch(transformedRequest)\n                  .then(handleResponse)\n                  .catch((e) => tile.setState(TileState.ERROR));\n              })\n              .catch((e) => tile.setState(TileState.ERROR));\n          });\n        } else {\n          const img = tile.getImage();\n          toPromise(() => transformedRequest)\n            .then((transformedRequest) => {\n              if (typeof transformedRequest === 'string') {\n                img.src = transformedRequest;\n                return;\n              }\n              const handleResponse = (response) =>\n                response.blob().then((blob) => {\n                  const url = URL.createObjectURL(blob);\n                  img.addEventListener('load', () => URL.revokeObjectURL(url));\n                  img.addEventListener('error', () => URL.revokeObjectURL(url));\n                  img.src = url;\n                });\n              if (transformedRequest instanceof Response) {\n                return handleResponse(transformedRequest);\n              }\n              fetch(transformedRequest)\n                .then(handleResponse)\n                .catch((e) => tile.setState(TileState.ERROR));\n            })\n            .catch((e) => tile.setState(TileState.ERROR));\n        }\n      };\n    }\n    const url = glSource.url;\n    if (url && !glSource.tiles) {\n      const normalizedSourceUrl = normalizeSourceUrl(\n        url,\n        options.accessToken,\n        options.accessTokenParam || 'access_token',\n        styleUrl || location.href,\n      );\n      if (url.startsWith('mapbox://')) {\n        promise = Promise.resolve({\n          tileJson: Object.assign({}, glSource, {\n            url: undefined,\n            tiles: normalizedSourceUrl,\n          }),\n          tileLoadFunction,\n        });\n      } else {\n        const metadata = {};\n        promise = fetchResource(\n          'Source',\n          normalizedSourceUrl[0],\n          options,\n          metadata,\n        ).then(function (tileJson) {\n          tileJson.tiles = tileJson.tiles.map(function (tileUrl) {\n            if (tileJson.scheme === 'tms') {\n              tileUrl = tileUrl.replace('{y}', '{-y}');\n            }\n            return normalizeSourceUrl(\n              tileUrl,\n              options.accessToken,\n              options.accessTokenParam || 'access_token',\n              metadata.url,\n            )[0];\n          });\n          return Promise.resolve({tileJson, tileLoadFunction});\n        });\n      }\n    } else if (glSource.tiles) {\n      glSource = Object.assign({}, glSource, {\n        tiles: glSource.tiles.map(function (tileUrl) {\n          if (glSource.scheme === 'tms') {\n            tileUrl = tileUrl.replace('{y}', '{-y}');\n          }\n          return normalizeSourceUrl(\n            tileUrl,\n            options.accessToken,\n            options.accessTokenParam || 'access_token',\n            styleUrl || location.href,\n          )[0];\n        }),\n      });\n      promise = Promise.resolve({\n        tileJson: Object.assign({}, glSource),\n        tileLoadFunction,\n      });\n    } else {\n      promise = Promise.reject(new Error('source has no `tiles` nor `url`'));\n    }\n    tilejsonCache[cacheKey] = promise;\n  }\n  return promise;\n}\n\n/**\n * @param {HTMLImageElement|HTMLCanvasElement} spriteImage Sprite image id.\n * @param {{x: number, y: number, width: number, height: number, pixelRatio: number}} spriteImageData Sprite image data.\n * @param {number} haloWidth Halo width.\n * @param {{r: number, g: number, b: number, a: number}} haloColor Halo color.\n * @return {HTMLCanvasElement} Canvas element with the halo.\n */\nexport function drawIconHalo(\n  spriteImage,\n  spriteImageData,\n  haloWidth,\n  haloColor,\n) {\n  const imgSize = [\n    2 * haloWidth * spriteImageData.pixelRatio + spriteImageData.width,\n    2 * haloWidth * spriteImageData.pixelRatio + spriteImageData.height,\n  ];\n  const imageCanvas = createCanvas(imgSize[0], imgSize[1]);\n  const imageContext = imageCanvas.getContext('2d');\n  imageContext.drawImage(\n    spriteImage,\n    spriteImageData.x,\n    spriteImageData.y,\n    spriteImageData.width,\n    spriteImageData.height,\n    haloWidth * spriteImageData.pixelRatio,\n    haloWidth * spriteImageData.pixelRatio,\n    spriteImageData.width,\n    spriteImageData.height,\n  );\n  const imageData = imageContext.getImageData(0, 0, imgSize[0], imgSize[1]);\n  imageContext.globalCompositeOperation = 'destination-over';\n  imageContext.fillStyle = `rgba(${haloColor.r * 255},${haloColor.g * 255},${\n    haloColor.b * 255\n  },${haloColor.a})`;\n  const data = imageData.data;\n  for (let i = 0, ii = imageData.width; i < ii; ++i) {\n    for (let j = 0, jj = imageData.height; j < jj; ++j) {\n      const index = (j * ii + i) * 4;\n      const alpha = data[index + 3];\n      if (alpha > 0) {\n        imageContext.arc(\n          i,\n          j,\n          haloWidth * spriteImageData.pixelRatio,\n          0,\n          2 * Math.PI,\n        );\n      }\n    }\n  }\n  imageContext.fill();\n  return imageCanvas;\n}\n\nfunction smoothstep(min, max, value) {\n  const x = Math.max(0, Math.min(1, (value - min) / (max - min)));\n  return x * x * (3 - 2 * x);\n}\n\n/**\n * @param {HTMLImageElement|HTMLCanvasElement} image SDF image\n * @param {{x: number, y: number, width: number, height: number}} area Area to unSDF\n * @param {{r: number, g: number, b: number, a: number}} color Color to use\n * @return {HTMLCanvasElement} Regular image\n */\nexport function drawSDF(image, area, color) {\n  const imageCanvas = createCanvas(area.width, area.height);\n  const imageContext = imageCanvas.getContext('2d');\n  imageContext.drawImage(\n    image,\n    area.x,\n    area.y,\n    area.width,\n    area.height,\n    0,\n    0,\n    area.width,\n    area.height,\n  );\n  const imageData = imageContext.getImageData(0, 0, area.width, area.height);\n  const data = imageData.data;\n  for (let i = 0, ii = imageData.width; i < ii; ++i) {\n    for (let j = 0, jj = imageData.height; j < jj; ++j) {\n      const index = (j * ii + i) * 4;\n      const dist = data[index + 3] / 255;\n\n      const buffer = 0.75;\n      const gamma = 0.1;\n\n      const alpha = smoothstep(buffer - gamma, buffer + gamma, dist);\n      if (alpha > 0) {\n        data[index + 0] = Math.round(255 * color.r * alpha);\n        data[index + 1] = Math.round(255 * color.g * alpha);\n        data[index + 2] = Math.round(255 * color.b * alpha);\n        data[index + 3] = Math.round(255 * alpha);\n      } else {\n        data[index + 3] = 0;\n      }\n    }\n  }\n  imageContext.putImageData(imageData, 0, 0);\n  return imageCanvas;\n}\n\n/**\n * @typedef {import(\"./apply.js\").Options} Options\n * @private\n */\n","import mb2css from 'mapbox-to-css-font';\nimport {checkedFonts, registerFont} from 'ol/render/canvas.js';\nimport {createCanvas} from './util.js';\n\nconst hairSpacePool = Array(256).join('\\u200A');\nexport function applyLetterSpacing(text, letterSpacing) {\n  if (letterSpacing >= 0.05) {\n    let textWithLetterSpacing = '';\n    const lines = text.split('\\n');\n    const joinSpaceString = hairSpacePool.slice(\n      0,\n      Math.round(letterSpacing / 0.1),\n    );\n    for (let l = 0, ll = lines.length; l < ll; ++l) {\n      if (l > 0) {\n        textWithLetterSpacing += '\\n';\n      }\n      textWithLetterSpacing += lines[l].split('').join(joinSpaceString);\n    }\n    return textWithLetterSpacing;\n  }\n  return text;\n}\n\nlet measureContext;\nfunction getMeasureContext() {\n  if (!measureContext) {\n    measureContext = createCanvas(1, 1).getContext('2d');\n  }\n  return measureContext;\n}\n\nfunction measureText(text, letterSpacing) {\n  return (\n    getMeasureContext().measureText(text).width +\n    (text.length - 1) * letterSpacing\n  );\n}\n\nconst measureCache = {};\nexport function wrapText(text, font, em, letterSpacing) {\n  if (text.indexOf('\\n') !== -1) {\n    const hardLines = text.split('\\n');\n    const lines = [];\n    for (let i = 0, ii = hardLines.length; i < ii; ++i) {\n      lines.push(wrapText(hardLines[i], font, em, letterSpacing));\n    }\n    return lines.join('\\n');\n  }\n  const key = em + ',' + font + ',' + text + ',' + letterSpacing;\n  let wrappedText = measureCache[key];\n  if (!wrappedText) {\n    const words = text.split(' ');\n    if (words.length > 1) {\n      const ctx = getMeasureContext();\n      ctx.font = font;\n      const oneEm = ctx.measureText('M').width;\n      const maxWidth = oneEm * em;\n      let line = '';\n      const lines = [];\n      // Pass 1 - wrap lines to not exceed maxWidth\n      for (let i = 0, ii = words.length; i < ii; ++i) {\n        const word = words[i];\n        const testLine = line + (line ? ' ' : '') + word;\n        if (measureText(testLine, letterSpacing) <= maxWidth) {\n          line = testLine;\n        } else {\n          if (line) {\n            lines.push(line);\n          }\n          line = word;\n        }\n      }\n      if (line) {\n        lines.push(line);\n      }\n      // Pass 2 - add lines with a width of less than 30% of maxWidth to the previous or next line\n      for (let i = 0, ii = lines.length; i < ii && ii > 1; ++i) {\n        const line = lines[i];\n        if (measureText(line, letterSpacing) < maxWidth * 0.35) {\n          const prevWidth =\n            i > 0 ? measureText(lines[i - 1], letterSpacing) : Infinity;\n          const nextWidth =\n            i < ii - 1 ? measureText(lines[i + 1], letterSpacing) : Infinity;\n          lines.splice(i, 1);\n          ii -= 1;\n          if (prevWidth < nextWidth) {\n            lines[i - 1] += ' ' + line;\n            i -= 1;\n          } else {\n            lines[i] = line + ' ' + lines[i];\n          }\n        }\n      }\n      // Pass 3 - try to fill 80% of maxWidth for each line\n      for (let i = 0, ii = lines.length - 1; i < ii; ++i) {\n        const line = lines[i];\n        const next = lines[i + 1];\n        if (\n          measureText(line, letterSpacing) > maxWidth * 0.7 &&\n          measureText(next, letterSpacing) < maxWidth * 0.6\n        ) {\n          const lineWords = line.split(' ');\n          const lastWord = lineWords.pop();\n          if (measureText(lastWord, letterSpacing) < maxWidth * 0.2) {\n            lines[i] = lineWords.join(' ');\n            lines[i + 1] = lastWord + ' ' + next;\n          }\n          ii -= 1;\n        }\n      }\n      wrappedText = lines.join('\\n');\n    } else {\n      wrappedText = text;\n    }\n    wrappedText = applyLetterSpacing(wrappedText, letterSpacing);\n    measureCache[key] = wrappedText;\n  }\n  return wrappedText;\n}\n\nconst fontFamilyRegEx = /font-family: ?([^;]*);/;\nconst stripQuotesRegEx = /(\"|')/g;\nlet loadedFontFamilies;\nfunction hasFontFamily(family) {\n  if (!loadedFontFamilies) {\n    loadedFontFamilies = {};\n    const styleSheets = document.styleSheets;\n    for (let i = 0, ii = styleSheets.length; i < ii; ++i) {\n      const styleSheet = /** @type {CSSStyleSheet} */ (styleSheets[i]);\n      try {\n        const cssRules = styleSheet.rules || styleSheet.cssRules;\n        if (cssRules) {\n          for (let j = 0, jj = cssRules.length; j < jj; ++j) {\n            const cssRule = cssRules[j];\n            if (cssRule.type == 5) {\n              const match = cssRule.cssText.match(fontFamilyRegEx);\n              loadedFontFamilies[match[1].replace(stripQuotesRegEx, '')] = true;\n            }\n          }\n        }\n      } catch {\n        // empty catch block\n      }\n    }\n  }\n  return family in loadedFontFamilies;\n}\n\nconst processedFontFamilies = {};\n\n/**\n * @param {Array} fonts Fonts.\n * @param {string} [templateUrl] Template URL.\n * @return {Array} Processed fonts.\n * @private\n */\nexport function getFonts(\n  fonts,\n  templateUrl = 'https://cdn.jsdelivr.net/npm/@fontsource/{font-family}/{fontweight}{-fontstyle}.css',\n) {\n  const fontsKey = fonts.toString();\n  if (fontsKey in processedFontFamilies) {\n    return processedFontFamilies[fontsKey];\n  }\n  const fontDescriptions = [];\n  for (let i = 0, ii = fonts.length; i < ii; ++i) {\n    fonts[i] = fonts[i].replace('Arial Unicode MS', 'Arial');\n    const font = fonts[i];\n    const cssFont = mb2css(font, 1);\n    registerFont(cssFont);\n    const parts = cssFont.split(' ');\n    fontDescriptions.push([\n      parts.slice(3).join(' ').replace(/\"/g, ''),\n      parts[1],\n      parts[0],\n    ]);\n  }\n  for (let i = 0, ii = fontDescriptions.length; i < ii; ++i) {\n    const fontDescription = fontDescriptions[i];\n    const family = fontDescription[0];\n    if (!hasFontFamily(family)) {\n      if (\n        checkedFonts.get(\n          `${fontDescription[2]}\\n${fontDescription[1]} \\n${family}`,\n        ) !== 100\n      ) {\n        const fontUrl = templateUrl\n          .replace('{font-family}', family.replace(/ /g, '-').toLowerCase())\n          .replace('{Font+Family}', family.replace(/ /g, '+'))\n          .replace('{fontweight}', fontDescription[1])\n          .replace(\n            '{-fontstyle}',\n            fontDescription[2].replace('normal', '').replace(/(.+)/, '-$1'),\n          )\n          .replace('{fontstyle}', fontDescription[2]);\n        if (!document.querySelector('link[href=\"' + fontUrl + '\"]')) {\n          const markup = document.createElement('link');\n          markup.href = fontUrl;\n          markup.rel = 'stylesheet';\n          document.head.appendChild(markup);\n        }\n      }\n    }\n  }\n  processedFontFamilies[fontsKey] = fonts;\n  return fonts;\n}\n","/*\nol-mapbox-style - Use Mapbox/MapLibre Style objects with OpenLayers\nCopyright 2016-present ol-mapbox-style contributors\nLicense: https://raw.githubusercontent.com/openlayers/ol-mapbox-style/master/LICENSE\n*/\n\nimport {\n  Color,\n  CompoundExpression,\n  convertFunction,\n  createPropertyExpression,\n  derefLayers,\n  expressions,\n  featureFilter as createFilter,\n  isExpression,\n  isFunction,\n  v8 as spec,\n} from '@maplibre/maplibre-gl-style-spec';\nimport mb2css from 'mapbox-to-css-font';\nimport Map from 'ol/Map.js';\nimport {distance} from 'ol/coordinate.js';\nimport {getCenter} from 'ol/extent.js';\nimport {toPromise} from 'ol/functions.js';\nimport RenderFeature from 'ol/render/Feature.js';\nimport Circle from 'ol/style/Circle.js';\nimport Fill from 'ol/style/Fill.js';\nimport Icon from 'ol/style/Icon.js';\nimport Stroke from 'ol/style/Stroke.js';\nimport Style from 'ol/style/Style.js';\nimport Text from 'ol/style/Text.js';\nimport {applyLetterSpacing, wrapText} from './text.js';\nimport {\n  clearFunctionCache,\n  createCanvas,\n  defaultResolutions,\n  deg2rad,\n  drawIconHalo,\n  drawSDF,\n  emptyObj,\n  getFilterCache,\n  getFunctionCache,\n  getStyleFunctionKey,\n  getZoomForResolution,\n} from './util.js';\n\n/**\n * @typedef {import(\"ol/layer/Vector\").default} VectorLayer\n * @typedef {import(\"ol/layer/VectorTile\").default} VectorTileLayer\n * @typedef {import(\"ol/style/Style\").StyleFunction} StyleFunction\n * @typedef {import('./util.js').ResourceType} ResourceType\n */\n\n/** @typedef {string|Request|Response|Promise<string|Request|Response>|Object<string, string|Request|Response|Promise<string|Request|Response>>} SpriteImageUrl */\n\n/**\n * @typedef {Object} SpriteImage\n * @property {HTMLImageElement|HTMLCanvasElement} image Image\n * @property {Array<number>} size Size\n * @property {boolean} [unSDFed] Image has been unSDFed\n */\n\n/** @typedef {Object<string, SpriteImage>} SpriteImages */\n\nconst types = {\n  'Point': 1,\n  'MultiPoint': 1,\n  'LineString': 2,\n  'MultiLineString': 2,\n  'Polygon': 3,\n  'MultiPolygon': 3,\n};\nconst anchor = {\n  'center': [0.5, 0.5],\n  'left': [0, 0.5],\n  'right': [1, 0.5],\n  'top': [0.5, 0],\n  'bottom': [0.5, 1],\n  'top-left': [0, 0],\n  'top-right': [1, 0],\n  'bottom-left': [0, 1],\n  'bottom-right': [1, 1],\n};\n\nconst expressionData = function (rawExpression, propertySpec) {\n  const compiledExpression = createPropertyExpression(\n    rawExpression,\n    propertySpec,\n  );\n  if (compiledExpression.result === 'error') {\n    throw new Error(\n      compiledExpression.value\n        .map((err) => `${err.key}: ${err.message}`)\n        .join(', '),\n    );\n  }\n  return compiledExpression.value;\n};\n\n// Shared camera object for global expression evaluation context\nexport const cameraObj = {zoom: 0, distanceFromCenter: 0};\n\n// Add unsupported expressions to the MapLibre GL Style spec\nCompoundExpression.register(expressions, {\n  ...CompoundExpression.definitions,\n  'pitch': [{kind: 'number'}, [], (ctx) => cameraObj.pitch || 90],\n  'distance-from-center': [\n    {kind: 'number'},\n    [],\n    (ctx) => cameraObj.distanceFromCenter || 0,\n  ],\n});\n\nlet renderFeatureCoordinates, renderFeature;\n\n/**\n * @private\n * @param {Object} layer Gl object layer.\n * @param {string} layoutOrPaint 'layout' or 'paint'.\n * @param {string} property Feature property.\n * @param {Object} feature Gl feature.\n * @param {Object} [functionCache] Function cache.\n * @param {Object} [featureState] Feature state.\n * @return {?} Value.\n */\nexport function getValue(\n  layer,\n  layoutOrPaint,\n  property,\n  feature,\n  functionCache,\n  featureState,\n) {\n  const layerId = layer.id;\n  if (!functionCache) {\n    functionCache = {};\n    console.warn('No functionCache provided to getValue()'); // eslint-disable-line no-console\n  }\n  if (!functionCache[layerId]) {\n    functionCache[layerId] = {};\n  }\n  const functions = functionCache[layerId];\n  if (!functions[property]) {\n    let value = (layer[layoutOrPaint] || emptyObj)[property];\n    const propertySpec = spec[`${layoutOrPaint}_${layer.type}`][property];\n    if (value === undefined) {\n      value = propertySpec.default;\n    }\n    let isExpr = isExpression(value);\n    if (!isExpr && isFunction(value)) {\n      value = convertFunction(value, propertySpec);\n      isExpr = true;\n    }\n    if (isExpr) {\n      const compiledExpression = expressionData(value, propertySpec);\n      functions[property] =\n        compiledExpression.evaluate.bind(compiledExpression);\n    } else {\n      if (propertySpec.type == 'color') {\n        value = Color.parse(value);\n      }\n      functions[property] = function () {\n        return value;\n      };\n    }\n  }\n  return functions[property](cameraObj, feature, featureState);\n}\n\n/**\n * @private\n * @param {Object} layer Gl object layer.\n * @param {Object} feature Gl feature.\n * @param {\"icon\"|\"text\"} prefix Style property prefix.\n * @param {Object} [functionCache] Function cache.\n * @return {\"declutter\"|\"obstacle\"|\"none\"} Value.\n */\nfunction getDeclutterMode(layer, feature, prefix, functionCache) {\n  const allowOverlap = getValue(\n    layer,\n    'layout',\n    `${prefix}-allow-overlap`,\n    feature,\n    functionCache,\n  );\n  if (!allowOverlap) {\n    return 'declutter';\n  }\n  const ignorePlacement = getValue(\n    layer,\n    'layout',\n    `${prefix}-ignore-placement`,\n    feature,\n    functionCache,\n  );\n  if (!ignorePlacement) {\n    return 'obstacle';\n  }\n  return 'none';\n}\n\n/**\n * @private\n * @param {string} layerId Layer id.\n * @param {?} filter Filter.\n * @param {Object} feature Feature.\n * @param {Object} [filterCache] Filter cache.\n * @return {boolean} Filter result.\n */\nfunction evaluateFilter(layerId, filter, feature, filterCache) {\n  if (!filterCache) {\n    console.warn('No filterCache provided to evaluateFilter()'); // eslint-disable-line no-console\n  }\n  if (!(layerId in filterCache)) {\n    try {\n      filterCache[layerId] = createFilter(filter).filter;\n    } catch (e) {\n      console.warn('Filter will evaluate to false: ' + e.message); // eslint-disable-line no-console\n      filterCache[layerId] = function () {\n        return false;\n      };\n    }\n  }\n  return filterCache[layerId](cameraObj, feature);\n}\n\nlet renderTransparentEnabled = false;\n\n/**\n * Configure whether features with a transparent style should be rendered. When\n * set to `true`, it will be possible to hit detect content that is not visible,\n * like transparent fills of polygons, using `ol/layer/Layer#getFeatures()` or\n * `ol/Map#getFeaturesAtPixel()`\n * @param {boolean} enabled Rendering of transparent elements is enabled.\n * Default is `false`.\n */\nexport function renderTransparent(enabled) {\n  if (enabled !== renderTransparentEnabled) {\n    clearFunctionCache();\n    renderTransparentEnabled = enabled;\n  }\n}\n\n/**\n * @private\n * @param {?} color Color.\n * @param {number} [opacity] Opacity.\n * @return {string} Color.\n */\nfunction colorWithOpacity(color, opacity) {\n  if (color) {\n    if (!renderTransparentEnabled && (color.a === 0 || opacity === 0)) {\n      return undefined;\n    }\n    const a = color.a;\n    opacity = opacity === undefined ? 1 : opacity;\n    return a === 0\n      ? 'transparent'\n      : 'rgba(' +\n          Math.round((color.r * 255) / a) +\n          ',' +\n          Math.round((color.g * 255) / a) +\n          ',' +\n          Math.round((color.b * 255) / a) +\n          ',' +\n          a * opacity +\n          ')';\n  }\n  return color;\n}\n\nconst templateRegEx = /\\{[^{}}]*\\}/g;\n\n/**\n * @private\n * @param {string} text Text.\n * @param {Object} properties Properties.\n * @return {string} Text.\n */\nfunction fromTemplate(text, properties) {\n  return text.replace(templateRegEx, function (match) {\n    return properties[match.slice(1, -1)] || '';\n  });\n}\n\n/**\n * @private\n * @param {string} icon Icon identifier (with prefix if not 'default')\n * @param {SpriteImages} spriteImages Sprite images.\n * @return {SpriteImage} Image.\n */\nexport function getSpriteImageForIcon(icon, spriteImages) {\n  let prefix = icon.split(':')[0];\n  if (prefix === icon) {\n    prefix = 'default';\n  }\n  return spriteImages[prefix];\n}\n\nlet recordLayer = false;\n\n/**\n * Turns recording of the Mapbox/MapLibre Style's `layer` on and off. When turned on,\n * the layer that a rendered feature belongs to will be set as the feature's\n * `mapbox-layer` property.\n * @param {boolean} record Recording of the style layer is on.\n */\nexport function recordStyleLayer(record = false) {\n  recordLayer = record;\n}\n\nexport const styleFunctionArgs = {};\n\n/**\n * Creates a style function from the `glStyle` object for all layers that use\n * the specified `source`, which needs to be a `\"type\": \"vector\"` or\n * `\"type\": \"geojson\"` source and applies it to the specified OpenLayers layer.\n *\n * Two additional properties will be set on the provided layer:\n *\n *  * `mapbox-source`: The `id` of the Mapbox/MapLibre Style document's source that the\n *    OpenLayers layer was created from. Usually `apply()` creates one\n *    OpenLayers layer per Mapbox/MapLibre Style source, unless the layer stack has\n *    layers from different sources in between.\n *  * `mapbox-layers`: The `id`s of the Mapbox/MapLibre Style document's layers that are\n *    included in the OpenLayers layer.\n *\n * This function also works in a web worker. In worker mode, the main thread needs\n * to listen to messages from the worker and respond with another message to make\n * sure that sprite image loading works:\n *\n * ```js\n *  worker.addEventListener('message', event => {\n *   if (event.data.action === 'loadImage') {\n *     const image = new Image();\n *     image.crossOrigin = 'anonymous';\n *     image.addEventListener('load', function() {\n *       createImageBitmap(image, 0, 0, image.width, image.height).then(imageBitmap => {\n *         worker.postMessage({\n *           action: 'imageLoaded',\n *           image: imageBitmap,\n *           src: event.data.src\n *         }, [imageBitmap]);\n *       });\n *     });\n *     image.src = event.data.src;\n *   }\n * });\n * ```\n *\n * @param {VectorLayer|VectorTileLayer} olLayer OpenLayers layer to\n * apply the style to. In addition to the style, the layer will get two\n * properties: `mapbox-source` will be the `id` of the `glStyle`'s source used\n * for the layer, and `mapbox-layers` will be an array of the `id`s of the\n * `glStyle`'s layers.\n * @param {string|Object} glStyle Mapbox/MapLibre Style object.\n * @param {string|Array<string>} sourceOrLayers `source` key or an array of layer `id`s\n * from the Mapbox/MapLibre Style object. When a `source` key is provided, all layers for\n * the specified source will be included in the style function. When layer `id`s\n * are provided, they must be from layers that use the same source.\n * @param {Array<number>} resolutions\n * Resolutions for mapping resolution to zoom level.\n * @param {Object} spriteData Sprite data from the url specified in\n * the Mapbox/MapLibre Style object's `sprite` property. Only required if a `sprite`\n * property is specified in the Mapbox/MapLibre Style object.\n * @param {SpriteImageUrl} spriteImageUrl Sprite image url for the sprite\n * specified in the Mapbox/MapLibre Style object's `sprite` property. Only required if a\n * `sprite` property is specified in the Mapbox/MapLibre Style object. If multiple `sprite`s\n * are defined in the style object, this has to be an object with the sprite id as key and the\n * sprite image URL as value.\n * @param {function(Array<string>, string=):Array<string>} getFonts Function that\n * receives a font stack and the url template from the GL style's `metadata['ol:webfonts']`\n * property (if set) as arguments, and returns a (modified) font stack that\n * is available. Font names are the names used in the Mapbox/MapLibre Style object. If\n * not provided, the font stack will be used as-is. This function can also be\n * used for loading web fonts.\n * @param {function(VectorLayer|VectorTileLayer, string):HTMLImageElement|HTMLCanvasElement|string|undefined} [getImage]\n * Function that returns an image or a URL for an image name. If the result is an HTMLImageElement, it must already be\n * loaded. The layer can be used to call layer.changed() when the loading and processing of the image has finished.\n * This function can be used for icons not in the sprite or to override sprite icons.\n * @return {StyleFunction} Style function for use in\n * `ol.layer.Vector` or `ol.layer.VectorTile`.\n */\nexport function stylefunction(\n  olLayer,\n  glStyle,\n  sourceOrLayers,\n  resolutions = defaultResolutions,\n  spriteData = undefined,\n  spriteImageUrl = undefined,\n  getFonts = undefined,\n  getImage = undefined,\n) {\n  if (typeof glStyle == 'string') {\n    glStyle = JSON.parse(glStyle);\n  }\n  if (glStyle.version != 8) {\n    throw new Error('glStyle version 8 required.');\n  }\n  styleFunctionArgs[getStyleFunctionKey(glStyle, olLayer)] =\n    Array.from(arguments);\n\n  /** @type {SpriteImages} */\n  const spriteImages = {};\n\n  if (\n    typeof spriteImageUrl === 'string' ||\n    spriteImageUrl instanceof Request ||\n    spriteImageUrl instanceof Response ||\n    spriteImageUrl instanceof Promise\n  ) {\n    spriteImageUrl = {'default': spriteImageUrl};\n  }\n\n  for (const prefix in spriteImageUrl) {\n    const imageUrl = spriteImageUrl[prefix];\n    toPromise(() => imageUrl).then(async (imageUrl) => {\n      let blobUrl;\n      if (typeof Image !== 'undefined') {\n        const img = new Image();\n        if (typeof imageUrl === 'string') {\n          img.crossOrigin = 'anonymous';\n          img.src = imageUrl;\n        } else {\n          let response;\n          if (imageUrl instanceof Request) {\n            response = await fetch(imageUrl);\n          } else if (imageUrl instanceof Response) {\n            response = imageUrl;\n          }\n          const blob = await response.blob();\n          blobUrl = URL.createObjectURL(blob);\n          img.src = blobUrl;\n        }\n        img.addEventListener('load', function load() {\n          img.removeEventListener('load', load);\n          spriteImages[prefix] = {\n            image: img,\n            size: [img.width, img.height],\n          };\n          olLayer.changed();\n          if (blobUrl) {\n            URL.revokeObjectURL(blobUrl);\n          }\n        });\n        img.addEventListener('error', function error() {\n          URL.revokeObjectURL(blobUrl);\n          img.removeEventListener('error', error);\n        });\n      } else if (\n        typeof WorkerGlobalScope !== 'undefined' &&\n        self instanceof WorkerGlobalScope // eslint-disable-line\n      ) {\n        const worker = /** @type {*} */ (self);\n        // Main thread needs to handle 'loadImage' and dispatch 'imageLoaded'\n        worker.postMessage({\n          action: 'loadImage',\n          src: imageUrl,\n        });\n        worker.addEventListener('message', function handler(event) {\n          if (\n            event.data.action === 'imageLoaded' &&\n            event.data.src === imageUrl\n          ) {\n            spriteImages[prefix] = {\n              image: event.data.image,\n              size: [event.data.image.width, event.data.image.height],\n            };\n          }\n        });\n      }\n    });\n  }\n\n  const allLayers = derefLayers(glStyle.layers);\n\n  const layersBySourceLayer = {};\n  const mapboxLayers = [];\n\n  const iconImageCache = {};\n  const patternCache = {};\n  const functionCache = getFunctionCache(glStyle);\n  const filterCache = getFilterCache(glStyle);\n\n  let mapboxSource;\n  for (let i = 0, ii = allLayers.length; i < ii; ++i) {\n    const layer = allLayers[i];\n    const layerId = layer.id;\n    if (\n      (typeof sourceOrLayers == 'string' && layer.source == sourceOrLayers) ||\n      (Array.isArray(sourceOrLayers) && sourceOrLayers.indexOf(layerId) !== -1)\n    ) {\n      const sourceLayer = layer['source-layer'];\n      if (!mapboxSource) {\n        mapboxSource = layer.source;\n        const source = glStyle.sources[mapboxSource];\n        if (!source) {\n          throw new Error(`Source \"${mapboxSource}\" is not defined`);\n        }\n        const type = source.type;\n        if (type !== 'vector' && type !== 'geojson') {\n          throw new Error(\n            `Source \"${mapboxSource}\" is not of type \"vector\" or \"geojson\", but \"${type}\"`,\n          );\n        }\n      } else if (layer.source !== mapboxSource) {\n        throw new Error(\n          `Layer \"${layerId}\" does not use source \"${mapboxSource}`,\n        );\n      }\n      let layers = layersBySourceLayer[sourceLayer];\n      if (!layers) {\n        layers = [];\n        layersBySourceLayer[sourceLayer] = layers;\n      }\n      layers.push({\n        layer: layer,\n        index: i,\n      });\n      mapboxLayers.push(layerId);\n    }\n  }\n\n  const textHalo = new Stroke();\n  const textColor = new Fill();\n\n  const styles = [];\n\n  /**\n   * @param {import(\"ol/Feature\").default|import(\"ol/render/Feature\").default} feature Feature.\n   * @param {number} resolution Resolution.\n   * @param {string} [onlyLayer] Calculate style for this layer only.\n   * @return {Array<import(\"ol/style/Style\").default>} Style.\n   */\n  const styleFunction = function (feature, resolution, onlyLayer) {\n    const properties = feature.getProperties();\n    const layers = layersBySourceLayer[properties.layer];\n    if (!layers) {\n      return undefined;\n    }\n    let zoom = resolutions.indexOf(resolution);\n    if (zoom == -1) {\n      zoom = getZoomForResolution(resolution, resolutions);\n    }\n    cameraObj.zoom = zoom;\n    cameraObj.distanceFromCenter = 0;\n    const featureGeometry = feature.getGeometry();\n    const type = types[featureGeometry.getType()];\n    const map = olLayer.get('map');\n    if (map && map instanceof Map && type === 1) {\n      const size = map.getSize();\n      if (size) {\n        const mapCenter = map.getView().getCenter();\n        const featureCenter = getCenter(featureGeometry.getExtent());\n        cameraObj.distanceFromCenter =\n          distance(mapCenter, featureCenter) / resolution / size[1];\n      }\n    }\n    const f = {\n      id: feature.getId(),\n      properties: properties,\n      type: type,\n    };\n    const featureState = olLayer.get('mapbox-featurestate')[feature.getId()];\n    let stylesLength = -1;\n    let featureBelongsToLayer;\n    for (let i = 0, ii = layers.length; i < ii; ++i) {\n      const layerData = layers[i];\n      const layer = layerData.layer;\n      const layerId = layer.id;\n      if (onlyLayer !== undefined && onlyLayer !== layerId) {\n        continue;\n      }\n\n      const layout = layer.layout || emptyObj;\n      const paint = layer.paint || emptyObj;\n      if (\n        layout.visibility === 'none' ||\n        ('minzoom' in layer && zoom < layer.minzoom) ||\n        ('maxzoom' in layer && zoom >= layer.maxzoom)\n      ) {\n        continue;\n      }\n      const filter = layer.filter;\n      if (!filter || evaluateFilter(layerId, filter, f, filterCache)) {\n        featureBelongsToLayer = layer;\n        let color, opacity, fill, stroke, strokeColor, style;\n        const index = layerData.index;\n        if (\n          type == 3 &&\n          (layer.type == 'fill' || layer.type == 'fill-extrusion')\n        ) {\n          opacity = getValue(\n            layer,\n            'paint',\n            layer.type + '-opacity',\n            f,\n            functionCache,\n            featureState,\n          );\n          if (layer.type + '-pattern' in paint) {\n            const fillIcon = getValue(\n              layer,\n              'paint',\n              layer.type + '-pattern',\n              f,\n              functionCache,\n              featureState,\n            );\n            if (fillIcon) {\n              const icon =\n                typeof fillIcon === 'string'\n                  ? fromTemplate(fillIcon, properties)\n                  : fillIcon.toString();\n              const spriteImage = getSpriteImageForIcon(icon, spriteImages);\n              if (spriteData && spriteData[icon] && spriteImage) {\n                ++stylesLength;\n                style = styles[stylesLength];\n                if (\n                  !style ||\n                  !style.getFill() ||\n                  style.getStroke() ||\n                  style.getText()\n                ) {\n                  style = new Style({\n                    fill: new Fill(),\n                  });\n                  styles[stylesLength] = style;\n                }\n                fill = style.getFill();\n                style.setZIndex(index);\n                const icon_cache_key = icon + '.' + opacity;\n                let pattern = patternCache[icon_cache_key];\n                if (!pattern) {\n                  const spriteImageData = spriteData[icon];\n                  const canvas = createCanvas(\n                    spriteImageData.width,\n                    spriteImageData.height,\n                  );\n                  const ctx = /** @type {CanvasRenderingContext2D} */ (\n                    canvas.getContext('2d')\n                  );\n                  ctx.globalAlpha = opacity;\n                  ctx.drawImage(\n                    spriteImage.image,\n                    spriteImageData.x,\n                    spriteImageData.y,\n                    spriteImageData.width,\n                    spriteImageData.height,\n                    0,\n                    0,\n                    spriteImageData.width,\n                    spriteImageData.height,\n                  );\n                  pattern = ctx.createPattern(canvas, 'repeat');\n                  patternCache[icon_cache_key] = pattern;\n                }\n                fill.setColor(pattern);\n              }\n            }\n          } else {\n            color = colorWithOpacity(\n              getValue(\n                layer,\n                'paint',\n                layer.type + '-color',\n                f,\n                functionCache,\n                featureState,\n              ),\n              opacity,\n            );\n            if (layer.type + '-outline-color' in paint) {\n              strokeColor = colorWithOpacity(\n                getValue(\n                  layer,\n                  'paint',\n                  layer.type + '-outline-color',\n                  f,\n                  functionCache,\n                  featureState,\n                ),\n                opacity,\n              );\n            }\n            if (!strokeColor) {\n              strokeColor = color;\n            }\n            if (color || strokeColor) {\n              ++stylesLength;\n              style = styles[stylesLength];\n              if (\n                !style ||\n                (color && !style.getFill()) ||\n                (!color && style.getFill()) ||\n                (strokeColor && !style.getStroke()) ||\n                (!strokeColor && style.getStroke()) ||\n                style.getText()\n              ) {\n                style = new Style({\n                  fill: color ? new Fill() : undefined,\n                  stroke: strokeColor ? new Stroke() : undefined,\n                });\n                styles[stylesLength] = style;\n              }\n              if (color) {\n                fill = style.getFill();\n                fill.setColor(color);\n              }\n              if (strokeColor) {\n                stroke = style.getStroke();\n                stroke.setColor(strokeColor);\n                stroke.setWidth(0.5);\n              }\n              style.setZIndex(index);\n            }\n          }\n        }\n        if (type != 1 && layer.type == 'line') {\n          if (!('line-pattern' in paint)) {\n            color = colorWithOpacity(\n              getValue(\n                layer,\n                'paint',\n                'line-color',\n                f,\n                functionCache,\n                featureState,\n              ),\n              getValue(\n                layer,\n                'paint',\n                'line-opacity',\n                f,\n                functionCache,\n                featureState,\n              ),\n            );\n          } else {\n            color = undefined;\n          }\n          const width = getValue(\n            layer,\n            'paint',\n            'line-width',\n            f,\n            functionCache,\n            featureState,\n          );\n          if (color && width > 0) {\n            ++stylesLength;\n            style = styles[stylesLength];\n            if (\n              !style ||\n              !style.getStroke() ||\n              style.getFill() ||\n              style.getText()\n            ) {\n              style = new Style({\n                stroke: new Stroke(),\n              });\n              styles[stylesLength] = style;\n            }\n            stroke = style.getStroke();\n            stroke.setLineCap(\n              getValue(\n                layer,\n                'layout',\n                'line-cap',\n                f,\n                functionCache,\n                featureState,\n              ),\n            );\n            stroke.setLineJoin(\n              getValue(\n                layer,\n                'layout',\n                'line-join',\n                f,\n                functionCache,\n                featureState,\n              ),\n            );\n            stroke.setMiterLimit(\n              getValue(\n                layer,\n                'layout',\n                'line-miter-limit',\n                f,\n                functionCache,\n                featureState,\n              ),\n            );\n            stroke.setColor(color);\n            stroke.setWidth(width);\n            stroke.setLineDash(\n              paint['line-dasharray']\n                ? getValue(\n                    layer,\n                    'paint',\n                    'line-dasharray',\n                    f,\n                    functionCache,\n                    featureState,\n                  ).map(function (x) {\n                    return x * width;\n                  })\n                : null,\n            );\n            style.setZIndex(index);\n          }\n        }\n\n        let hasImage = false;\n        let text = null;\n        let placementAngle = 0;\n        let icon, iconImg, skipLabel;\n        if ((type == 1 || type == 2) && 'icon-image' in layout) {\n          const iconImage = getValue(\n            layer,\n            'layout',\n            'icon-image',\n            f,\n            functionCache,\n            featureState,\n          );\n          if (iconImage) {\n            icon =\n              typeof iconImage === 'string'\n                ? fromTemplate(iconImage, properties)\n                : iconImage.toString();\n            let styleGeom = undefined;\n            const imageElement = getImage ? getImage(olLayer, icon) : undefined;\n            const spriteImage = getSpriteImageForIcon(icon, spriteImages);\n            if (\n              (spriteData && spriteData[icon] && spriteImage) ||\n              imageElement\n            ) {\n              const iconRotationAlignment = getValue(\n                layer,\n                'layout',\n                'icon-rotation-alignment',\n                f,\n                functionCache,\n                featureState,\n              );\n              if (type == 2) {\n                const geom = /** @type {*} */ (feature.getGeometry());\n                // ol package and ol-debug.js only\n                if (geom.getFlatMidpoint || geom.getFlatMidpoints) {\n                  const extent = geom.getExtent();\n                  const size = Math.sqrt(\n                    Math.max(\n                      Math.pow((extent[2] - extent[0]) / resolution, 2),\n                      Math.pow((extent[3] - extent[1]) / resolution, 2),\n                    ),\n                  );\n                  if (size > 150) {\n                    //FIXME Do not hard-code a size of 150\n                    const midpoint =\n                      geom.getType() === 'MultiLineString'\n                        ? geom.getFlatMidpoints()\n                        : geom.getFlatMidpoint();\n                    if (!renderFeature) {\n                      renderFeatureCoordinates = [NaN, NaN];\n                      renderFeature = new RenderFeature(\n                        'Point',\n                        renderFeatureCoordinates,\n                        [],\n                        2,\n                        {},\n                        undefined,\n                      );\n                    }\n                    styleGeom = renderFeature;\n                    renderFeatureCoordinates[0] = midpoint[0];\n                    renderFeatureCoordinates[1] = midpoint[1];\n                    const placement = getValue(\n                      layer,\n                      'layout',\n                      'symbol-placement',\n                      f,\n                      functionCache,\n                      featureState,\n                    );\n                    if (\n                      placement === 'line' &&\n                      iconRotationAlignment === 'map'\n                    ) {\n                      const stride = geom.getStride();\n                      const coordinates = geom.getFlatCoordinates();\n                      for (\n                        let i = 0, ii = coordinates.length - stride;\n                        i < ii;\n                        i += stride\n                      ) {\n                        const x1 = coordinates[i];\n                        const y1 = coordinates[i + 1];\n                        const x2 = coordinates[i + stride];\n                        const y2 = coordinates[i + stride + 1];\n                        const minX = Math.min(x1, x2);\n                        const maxX = Math.max(x1, x2);\n                        const xM = midpoint[0];\n                        const yM = midpoint[1];\n                        const dotProduct =\n                          (y2 - y1) * (xM - x1) - (x2 - x1) * (yM - y1);\n                        if (\n                          Math.abs(dotProduct) < 0.001 && //midpoint is aligned with the segment\n                          xM <= maxX &&\n                          xM >= minX //midpoint is on the segment and not outside it\n                        ) {\n                          placementAngle = Math.atan2(y1 - y2, x2 - x1);\n                          break;\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n              if (type !== 2 || styleGeom) {\n                const iconSize = getValue(\n                  layer,\n                  'layout',\n                  'icon-size',\n                  f,\n                  functionCache,\n                  featureState,\n                );\n                const iconColor =\n                  paint['icon-color'] !== undefined\n                    ? getValue(\n                        layer,\n                        'paint',\n                        'icon-color',\n                        f,\n                        functionCache,\n                        featureState,\n                      )\n                    : null;\n                if (!iconColor || iconColor.a !== 0) {\n                  const haloColor = getValue(\n                    layer,\n                    'paint',\n                    'icon-halo-color',\n                    f,\n                    functionCache,\n                    featureState,\n                  );\n                  const haloWidth = getValue(\n                    layer,\n                    'paint',\n                    'icon-halo-width',\n                    f,\n                    functionCache,\n                    featureState,\n                  );\n                  let iconCacheKey = `${icon}.${iconSize}.${haloWidth}.${haloColor}`;\n                  if (iconColor !== null) {\n                    iconCacheKey += `.${iconColor}`;\n                  }\n                  iconImg = iconImageCache[iconCacheKey];\n                  if (!iconImg) {\n                    const declutterMode = getDeclutterMode(\n                      layer,\n                      f,\n                      'icon',\n                      functionCache,\n                    );\n                    let displacement;\n                    if ('icon-offset' in layout) {\n                      displacement = getValue(\n                        layer,\n                        'layout',\n                        'icon-offset',\n                        f,\n                        functionCache,\n                        featureState,\n                      ).slice(0);\n                      displacement[0] *= iconSize;\n                      displacement[1] *= -iconSize;\n                    }\n                    let color = iconColor\n                      ? [\n                          iconColor.r * 255,\n                          iconColor.g * 255,\n                          iconColor.b * 255,\n                          iconColor.a,\n                        ]\n                      : undefined;\n                    if (imageElement) {\n                      const iconOptions = {\n                        color: color,\n                        rotateWithView: iconRotationAlignment === 'map',\n                        displacement: displacement,\n                        declutterMode: declutterMode,\n                        scale: iconSize,\n                      };\n                      if (typeof imageElement === 'string') {\n                        // it is a src URL\n                        iconOptions.src = imageElement;\n                      } else {\n                        iconOptions.img = imageElement;\n                        iconOptions.imgSize = [\n                          imageElement.width,\n                          imageElement.height,\n                        ];\n                      }\n                      iconImg = new Icon(iconOptions);\n                    } else {\n                      const spriteImageData = spriteData[icon];\n                      let img, size, offset;\n                      if (haloWidth) {\n                        if (spriteImageData.sdf) {\n                          img = drawIconHalo(\n                            drawSDF(\n                              spriteImage.image,\n                              spriteImageData,\n                              iconColor || [0, 0, 0, 1],\n                            ),\n                            {\n                              x: 0,\n                              y: 0,\n                              width: spriteImageData.width,\n                              height: spriteImageData.height,\n                              pixelRatio: spriteImageData.pixelRatio,\n                            },\n                            haloWidth,\n                            haloColor,\n                          );\n                          color = undefined; // do not tint haloed icons\n                        } else {\n                          img = drawIconHalo(\n                            spriteImage.image,\n                            spriteImageData,\n                            haloWidth,\n                            haloColor,\n                          );\n                        }\n                      } else {\n                        if (spriteImageData.sdf) {\n                          if (!spriteImage.unSDFed) {\n                            const spriteImageUnSDFed = drawSDF(\n                              spriteImage.image,\n                              {\n                                x: 0,\n                                y: 0,\n                                width: spriteImage.size[0],\n                                height: spriteImage.size[1],\n                              },\n                              {r: 1, g: 1, b: 1, a: 1},\n                            );\n                            spriteImage.image = spriteImageUnSDFed;\n                            spriteImage.unSDFed = true;\n                          }\n                        }\n                        img = spriteImage.image;\n                        size = [spriteImageData.width, spriteImageData.height];\n                        offset = [spriteImageData.x, spriteImageData.y];\n                      }\n                      iconImg = new Icon({\n                        color: color,\n                        img: img,\n                        // @ts-ignore\n                        imgSize: spriteImage.size,\n                        size: size,\n                        offset: offset,\n                        rotateWithView: iconRotationAlignment === 'map',\n                        scale: iconSize / spriteImageData.pixelRatio,\n                        displacement: displacement,\n                        declutterMode: declutterMode,\n                      });\n                    }\n                    iconImageCache[iconCacheKey] = iconImg;\n                  }\n                }\n                if (iconImg) {\n                  ++stylesLength;\n                  style = styles[stylesLength];\n                  if (\n                    !style ||\n                    !style.getImage() ||\n                    style.getFill() ||\n                    style.getStroke()\n                  ) {\n                    style = new Style();\n                    styles[stylesLength] = style;\n                  }\n                  style.setGeometry(styleGeom);\n                  iconImg.setRotation(\n                    placementAngle +\n                      deg2rad(\n                        getValue(\n                          layer,\n                          'layout',\n                          'icon-rotate',\n                          f,\n                          functionCache,\n                          featureState,\n                        ),\n                      ),\n                  );\n                  iconImg.setOpacity(\n                    getValue(\n                      layer,\n                      'paint',\n                      'icon-opacity',\n                      f,\n                      functionCache,\n                      featureState,\n                    ),\n                  );\n                  iconImg.setAnchor(\n                    anchor[\n                      getValue(\n                        layer,\n                        'layout',\n                        'icon-anchor',\n                        f,\n                        functionCache,\n                        featureState,\n                      )\n                    ],\n                  );\n                  style.setImage(iconImg);\n                  text = style.getText();\n                  style.setText(undefined);\n                  style.setZIndex(index);\n                  hasImage = true;\n                  skipLabel = false;\n                }\n              } else {\n                skipLabel = true;\n              }\n            }\n          }\n        }\n\n        if (type == 1 && layer.type === 'circle') {\n          ++stylesLength;\n          style = styles[stylesLength];\n          if (\n            !style ||\n            !style.getImage() ||\n            style.getFill() ||\n            style.getStroke()\n          ) {\n            style = new Style();\n            styles[stylesLength] = style;\n          }\n          const circleRadius =\n            'circle-radius' in paint\n              ? getValue(\n                  layer,\n                  'paint',\n                  'circle-radius',\n                  f,\n                  functionCache,\n                  featureState,\n                )\n              : 5;\n          const circleStrokeColor = colorWithOpacity(\n            getValue(\n              layer,\n              'paint',\n              'circle-stroke-color',\n              f,\n              functionCache,\n              featureState,\n            ),\n            getValue(\n              layer,\n              'paint',\n              'circle-stroke-opacity',\n              f,\n              functionCache,\n              featureState,\n            ),\n          );\n\n          const circleTranslate = getValue(\n            layer,\n            'paint',\n            'circle-translate',\n            f,\n            functionCache,\n            featureState,\n          );\n          const circleColor = colorWithOpacity(\n            getValue(\n              layer,\n              'paint',\n              'circle-color',\n              f,\n              functionCache,\n              featureState,\n            ),\n            getValue(\n              layer,\n              'paint',\n              'circle-opacity',\n              f,\n              functionCache,\n              featureState,\n            ),\n          );\n          const circleStrokeWidth = getValue(\n            layer,\n            'paint',\n            'circle-stroke-width',\n            f,\n            functionCache,\n            featureState,\n          );\n          const cache_key =\n            circleRadius +\n            '.' +\n            circleStrokeColor +\n            '.' +\n            circleColor +\n            '.' +\n            circleStrokeWidth +\n            '.' +\n            circleTranslate[0] +\n            '.' +\n            circleTranslate[1];\n\n          iconImg = iconImageCache[cache_key];\n          if (!iconImg) {\n            iconImg = new Circle({\n              radius: circleRadius,\n              displacement: [circleTranslate[0], -circleTranslate[1]],\n              stroke:\n                circleStrokeColor && circleStrokeWidth > 0\n                  ? new Stroke({\n                      width: circleStrokeWidth,\n                      color: circleStrokeColor,\n                    })\n                  : undefined,\n              fill: circleColor\n                ? new Fill({\n                    color: circleColor,\n                  })\n                : undefined,\n              declutterMode: 'none',\n            });\n            iconImageCache[cache_key] = iconImg;\n          }\n          style.setImage(iconImg);\n          text = style.getText();\n          style.setText(undefined);\n          style.setGeometry(undefined);\n          style.setZIndex(index);\n          hasImage = true;\n        }\n\n        let label, font, textLineHeight, textSize, letterSpacing, maxTextWidth;\n        if ('text-field' in layout) {\n          textSize = Math.round(\n            getValue(\n              layer,\n              'layout',\n              'text-size',\n              f,\n              functionCache,\n              featureState,\n            ),\n          );\n          const fontArray = getValue(\n            layer,\n            'layout',\n            'text-font',\n            f,\n            functionCache,\n            featureState,\n          );\n          textLineHeight = getValue(\n            layer,\n            'layout',\n            'text-line-height',\n            f,\n            functionCache,\n            featureState,\n          );\n          font = mb2css(\n            getFonts\n              ? getFonts(\n                  fontArray,\n                  glStyle.metadata\n                    ? glStyle.metadata['ol:webfonts']\n                    : undefined,\n                )\n              : fontArray,\n            textSize,\n            textLineHeight,\n          );\n          if (!font.includes('sans-serif')) {\n            font += ',sans-serif';\n          }\n          letterSpacing = getValue(\n            layer,\n            'layout',\n            'text-letter-spacing',\n            f,\n            functionCache,\n            featureState,\n          );\n          maxTextWidth = getValue(\n            layer,\n            'layout',\n            'text-max-width',\n            f,\n            functionCache,\n            featureState,\n          );\n          const textField = getValue(\n            layer,\n            'layout',\n            'text-field',\n            f,\n            functionCache,\n            featureState,\n          );\n          if (typeof textField === 'object' && textField.sections) {\n            if (textField.sections.length === 1) {\n              label = textField.toString();\n            } else {\n              label = textField.sections.reduce((acc, chunk, i) => {\n                const fonts = chunk.fontStack\n                  ? chunk.fontStack.split(',')\n                  : fontArray;\n                const chunkFont = mb2css(\n                  getFonts ? getFonts(fonts) : fonts,\n                  textSize * (chunk.scale || 1),\n                  textLineHeight,\n                );\n                let text = chunk.text;\n                if (text === '\\n') {\n                  acc.push('\\n', '');\n                  return acc;\n                }\n                if (type == 2) {\n                  acc.push(applyLetterSpacing(text, letterSpacing), chunkFont);\n                  return acc;\n                }\n                text = wrapText(\n                  text,\n                  chunkFont,\n                  maxTextWidth,\n                  letterSpacing,\n                ).split('\\n');\n                for (let i = 0, ii = text.length; i < ii; ++i) {\n                  if (i > 0) {\n                    acc.push('\\n', '');\n                  }\n                  acc.push(text[i], chunkFont);\n                }\n                return acc;\n              }, []);\n            }\n          } else {\n            label = fromTemplate(textField, properties).trim();\n          }\n          opacity = getValue(\n            layer,\n            'paint',\n            'text-opacity',\n            f,\n            functionCache,\n            featureState,\n          );\n        }\n        if (label && opacity && !skipLabel) {\n          if (!hasImage) {\n            ++stylesLength;\n            style = styles[stylesLength];\n            if (\n              !style ||\n              !style.getText() ||\n              style.getFill() ||\n              style.getStroke()\n            ) {\n              style = new Style();\n              styles[stylesLength] = style;\n            }\n            style.setImage(undefined);\n            style.setGeometry(undefined);\n          }\n          const declutterMode = getDeclutterMode(\n            layer,\n            f,\n            'text',\n            functionCache,\n          );\n          if (!style.getText()) {\n            style.setText(text);\n          }\n          text = style.getText();\n          if (\n            !text ||\n            ('getDeclutterMode' in text &&\n              text.getDeclutterMode() !== declutterMode)\n          ) {\n            text = new Text({\n              padding: [2, 2, 2, 2],\n              // @ts-ignore\n              declutterMode: declutterMode,\n            });\n            style.setText(text);\n          }\n          const textTransform = getValue(\n            layer,\n            'layout',\n            'text-transform',\n            f,\n            functionCache,\n            featureState,\n          );\n          if (textTransform == 'uppercase') {\n            label = Array.isArray(label)\n              ? label.map((t, i) => (i % 2 ? t : t.toUpperCase()))\n              : label.toUpperCase();\n          } else if (textTransform == 'lowercase') {\n            label = Array.isArray(label)\n              ? label.map((t, i) => (i % 2 ? t : t.toLowerCase()))\n              : label.toLowerCase();\n          }\n          const wrappedLabel = Array.isArray(label)\n            ? label\n            : type == 2\n              ? applyLetterSpacing(label, letterSpacing)\n              : wrapText(label, font, maxTextWidth, letterSpacing);\n          text.setText(wrappedLabel);\n          text.setFont(font);\n          text.setRotation(\n            deg2rad(\n              getValue(\n                layer,\n                'layout',\n                'text-rotate',\n                f,\n                functionCache,\n                featureState,\n              ),\n            ),\n          );\n          if (typeof text.setKeepUpright === 'function') {\n            const keepUpright = getValue(\n              layer,\n              'layout',\n              'text-keep-upright',\n              f,\n              functionCache,\n              featureState,\n            );\n            text.setKeepUpright(keepUpright);\n          }\n          const textAnchor = getValue(\n            layer,\n            'layout',\n            'text-anchor',\n            f,\n            functionCache,\n            featureState,\n          );\n          const placement =\n            hasImage || type == 1\n              ? 'point'\n              : getValue(\n                  layer,\n                  'layout',\n                  'symbol-placement',\n                  f,\n                  functionCache,\n                  featureState,\n                );\n          let textAlign;\n          if (placement === 'line-center') {\n            text.setPlacement('line');\n            textAlign = 'center';\n          } else {\n            text.setPlacement(placement);\n          }\n          if (placement === 'line' && typeof text.setRepeat === 'function') {\n            const symbolSpacing = getValue(\n              layer,\n              'layout',\n              'symbol-spacing',\n              f,\n              functionCache,\n              featureState,\n            );\n            text.setRepeat(symbolSpacing * 2);\n          }\n          text.setOverflow(placement === 'point');\n          let textHaloWidth = getValue(\n            layer,\n            'paint',\n            'text-halo-width',\n            f,\n            functionCache,\n            featureState,\n          );\n          const textOffset = getValue(\n            layer,\n            'layout',\n            'text-offset',\n            f,\n            functionCache,\n            featureState,\n          );\n          const textTranslate = getValue(\n            layer,\n            'paint',\n            'text-translate',\n            f,\n            functionCache,\n            featureState,\n          );\n          // Text offset has to take halo width and line height into account\n          let vOffset = 0;\n          let hOffset = 0;\n          if (placement == 'point') {\n            textAlign = 'center';\n            if (textAnchor.indexOf('left') !== -1) {\n              textAlign = 'left';\n              hOffset = textHaloWidth;\n            } else if (textAnchor.indexOf('right') !== -1) {\n              textAlign = 'right';\n              hOffset = -textHaloWidth;\n            }\n            const textRotationAlignment = getValue(\n              layer,\n              'layout',\n              'text-rotation-alignment',\n              f,\n              functionCache,\n              featureState,\n            );\n            text.setRotateWithView(textRotationAlignment == 'map');\n          } else {\n            text.setMaxAngle(\n              (deg2rad(\n                getValue(\n                  layer,\n                  'layout',\n                  'text-max-angle',\n                  f,\n                  functionCache,\n                  featureState,\n                ),\n              ) *\n                label.length) /\n                wrappedLabel.length,\n            );\n            text.setRotateWithView(false);\n          }\n          text.setTextAlign(textAlign);\n          let textBaseline = 'middle';\n          if (textAnchor.indexOf('bottom') == 0) {\n            textBaseline = 'bottom';\n            vOffset = -textHaloWidth - 0.5 * (textLineHeight - 1) * textSize;\n          } else if (textAnchor.indexOf('top') == 0) {\n            textBaseline = 'top';\n            vOffset = textHaloWidth + 0.5 * (textLineHeight - 1) * textSize;\n          }\n          text.setTextBaseline(textBaseline);\n          const textJustify = getValue(\n            layer,\n            'layout',\n            'text-justify',\n            f,\n            functionCache,\n            featureState,\n          );\n          text.setJustify(textJustify === 'auto' ? undefined : textJustify);\n          text.setOffsetX(\n            textOffset[0] * textSize + hOffset + textTranslate[0],\n          );\n          text.setOffsetY(\n            textOffset[1] * textSize + vOffset + textTranslate[1],\n          );\n          textColor.setColor(\n            colorWithOpacity(\n              getValue(\n                layer,\n                'paint',\n                'text-color',\n                f,\n                functionCache,\n                featureState,\n              ),\n              opacity,\n            ),\n          );\n          text.setFill(textColor);\n          const haloColor = colorWithOpacity(\n            getValue(\n              layer,\n              'paint',\n              'text-halo-color',\n              f,\n              functionCache,\n              featureState,\n            ),\n            opacity,\n          );\n          if (haloColor && textHaloWidth > 0) {\n            textHalo.setColor(haloColor);\n            // spec here : https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-symbol-text-halo-width\n            // Halo width must be doubled because it is applied around the center of the text outline\n            textHaloWidth *= 2;\n            // 1/4 of text size (spec) x 2\n            const halfTextSize = 0.5 * textSize;\n            textHalo.setWidth(\n              textHaloWidth <= halfTextSize ? textHaloWidth : halfTextSize,\n            );\n            text.setStroke(textHalo);\n          } else {\n            text.setStroke(undefined);\n          }\n          const textPadding = getValue(\n            layer,\n            'layout',\n            'text-padding',\n            f,\n            functionCache,\n            featureState,\n          );\n          const padding = text.getPadding();\n          if (textPadding !== padding[0]) {\n            padding[0] = textPadding;\n            padding[1] = textPadding;\n            padding[2] = textPadding;\n            padding[3] = textPadding;\n          }\n          style.setZIndex(index);\n        }\n      }\n    }\n\n    if (stylesLength > -1) {\n      styles.length = stylesLength + 1;\n      if (recordLayer) {\n        if ('set' in feature) {\n          // ol/Feature\n          feature.set('mapbox-layer', featureBelongsToLayer);\n        } else {\n          // ol/render/Feature\n          feature.getProperties()['mapbox-layer'] = featureBelongsToLayer;\n        }\n      }\n      return styles;\n    }\n    return undefined;\n  };\n\n  olLayer.setStyle(styleFunction);\n  olLayer.set('mapbox-layers', mapboxLayers);\n  olLayer.set('mapbox-source', mapboxSource);\n  olLayer.set('mapbox-featurestate', olLayer.get('mapbox-featurestate') || {});\n  return styleFunction;\n}\n\n/**\n * Get the the style for a specific Mapbox layer only. This can be useful for creating a legend.\n * @param {import(\"ol/Feature\").default|import(\"ol/render/Feature\").default} feature OpenLayers feature.\n * @param {number} resolution View resolution.\n * @param {import(\"ol/layer\").Vector|import(\"ol/layer\").VectorTile} olLayer OpenLayers layer.\n * @param {string} layerId Id of the Mapbox layer to get the style for\n * @return {Array<import(\"ol/style\").Style>} Styles for the provided Mapbox layer.\n */\nexport function getStyleForLayer(feature, resolution, olLayer, layerId) {\n  const evaluateStyle = olLayer.getStyleFunction();\n  if (evaluateStyle.length === 3) {\n    // @ts-ignore\n    return evaluateStyle(feature, resolution, layerId);\n  }\n  return undefined;\n}\n\nexport {\n  colorWithOpacity as _colorWithOpacity,\n  evaluateFilter as _evaluateFilter,\n  fromTemplate as _fromTemplate,\n  getValue as _getValue,\n};\n","/**\n * @module ol/format/Feature\n */\nimport Feature from '../Feature.js';\nimport {\n  linearRingsAreOriented,\n  linearRingssAreOriented,\n  orientLinearRings,\n  orientLinearRingsArray,\n} from '../geom/flat/orient.js';\nimport {\n  GeometryCollection,\n  LineString,\n  MultiLineString,\n  MultiPoint,\n  MultiPolygon,\n  Point,\n  Polygon,\n} from '../geom.js';\nimport {\n  equivalent as equivalentProjection,\n  get as getProjection,\n  getTransform,\n  transformExtent,\n} from '../proj.js';\nimport RenderFeature from '../render/Feature.js';\nimport {abstract} from '../util.js';\n\n/**\n * @typedef {Object} ReadOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are reading.\n * If not provided, the projection will be derived from the data (where possible) or\n * the `dataProjection` of the format is assigned (where set). If the projection\n * can not be derived from the data and if no `dataProjection` is set for a format,\n * the features will not be reprojected.\n * @property {import(\"../extent.js\").Extent} [extent] Tile extent in map units of the tile being read.\n * This is only required when reading data with tile pixels as geometry units. When configured,\n * a `dataProjection` with `TILE_PIXELS` as `units` and the tile's pixel extent as `extent` needs to be\n * provided.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * created by the format reader. If not provided, features will be returned in the\n * `dataProjection`.\n */\n\n/**\n * @typedef {Object} WriteOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are writing.\n * If not provided, the `dataProjection` of the format is assigned (where set).\n * If no `dataProjection` is set for a format, the features will be returned\n * in the `featureProjection`.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * that will be serialized by the format writer. If not provided, geometries are assumed\n * to be in the `dataProjection` if that is set; in other words, they are not transformed.\n * @property {boolean} [rightHanded] When writing geometries, follow the right-hand\n * rule for linear ring orientation.  This means that polygons will have counter-clockwise\n * exterior rings and clockwise interior rings.  By default, coordinates are serialized\n * as they are provided at construction.  If `true`, the right-hand rule will\n * be applied.  If `false`, the left-hand rule will be applied (clockwise for\n * exterior and counter-clockwise for interior rings).  Note that not all\n * formats support this.  The GeoJSON format does use this property when writing\n * geometries.\n * @property {number} [decimals] Maximum number of decimal places for coordinates.\n * Coordinates are stored internally as floats, but floating-point arithmetic can create\n * coordinates with a large number of decimal places, not generally wanted on output.\n * Set a number here to round coordinates. Can also be used to ensure that\n * coordinates read in can be written back out with the same number of decimals.\n * Default is no rounding.\n */\n\n/**\n * @typedef {'arraybuffer' | 'json' | 'text' | 'xml'} Type\n */\n\n/**\n * @typedef {Object} SimpleGeometryObject\n * @property {import('../geom/Geometry.js').Type} type Type.\n * @property {Array<number>} flatCoordinates Flat coordinates.\n * @property {Array<number>|Array<Array<number>>} [ends] Ends or endss.\n * @property {import('../geom/Geometry.js').GeometryLayout} [layout] Layout.\n */\n\n/**\n * @typedef {Array<GeometryObject>} GeometryCollectionObject\n */\n\n/**\n * @typedef {SimpleGeometryObject|GeometryCollectionObject} GeometryObject\n */\n\n/**\n * @typedef {Object} FeatureObject\n * @property {string|number} [id] Id.\n * @property {GeometryObject} [geometry] Geometry.\n * @property {Object<string, *>} [properties] Properties.\n */\n\n/***\n * @template {import('../Feature.js').FeatureLike} T\n * @typedef {T extends RenderFeature ? typeof RenderFeature : typeof Feature} FeatureToFeatureClass\n */\n\n/***\n * @template {import(\"../Feature.js\").FeatureClass} T\n * @typedef {T[keyof T] extends RenderFeature ? RenderFeature : Feature} FeatureClassToFeature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for feature formats.\n * {@link module:ol/format/Feature~FeatureFormat} subclasses provide the ability to decode and encode\n * {@link module:ol/Feature~Feature} objects from a variety of commonly used geospatial\n * file formats.  See the documentation for each format for more details.\n *\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @abstract\n * @api\n */\nclass FeatureFormat {\n  constructor() {\n    /**\n     * @protected\n     * @type {import(\"../proj/Projection.js\").default|undefined}\n     */\n    this.dataProjection = undefined;\n\n    /**\n     * @protected\n     * @type {import(\"../proj/Projection.js\").default|undefined}\n     */\n    this.defaultFeatureProjection = undefined;\n\n    /**\n     * @protected\n     * @type {FeatureToFeatureClass<FeatureType>}\n     */\n    this.featureClass = /** @type {FeatureToFeatureClass<FeatureType>} */ (\n      Feature\n    );\n\n    /**\n     * A list media types supported by the format in descending order of preference.\n     * @type {Array<string>}\n     */\n    this.supportedMediaTypes = null;\n  }\n\n  /**\n   * Adds the data projection to the read options.\n   * @param {Document|Element|Object|string} source Source.\n   * @param {ReadOptions} [options] Options.\n   * @return {ReadOptions|undefined} Options.\n   * @protected\n   */\n  getReadOptions(source, options) {\n    if (options) {\n      let dataProjection = options.dataProjection\n        ? getProjection(options.dataProjection)\n        : this.readProjection(source);\n      if (\n        options.extent &&\n        dataProjection &&\n        dataProjection.getUnits() === 'tile-pixels'\n      ) {\n        dataProjection = getProjection(dataProjection);\n        dataProjection.setWorldExtent(options.extent);\n      }\n      options = {\n        dataProjection: dataProjection,\n        featureProjection: options.featureProjection,\n      };\n    }\n    return this.adaptOptions(options);\n  }\n\n  /**\n   * Sets the `dataProjection` on the options, if no `dataProjection`\n   * is set.\n   * @param {WriteOptions|ReadOptions|undefined} options\n   *     Options.\n   * @protected\n   * @return {WriteOptions|ReadOptions|undefined}\n   *     Updated options.\n   */\n  adaptOptions(options) {\n    return Object.assign(\n      {\n        dataProjection: this.dataProjection,\n        featureProjection: this.defaultFeatureProjection,\n        featureClass: this.featureClass,\n      },\n      options,\n    );\n  }\n\n  /**\n   * @abstract\n   * @return {Type} The format type.\n   */\n  getType() {\n    return abstract();\n  }\n\n  /**\n   * Read a single feature from a source.\n   *\n   * @abstract\n   * @param {Document|Element|Object|string} source Source.\n   * @param {ReadOptions} [options] Read options.\n   * @return {FeatureType|Array<FeatureType>} Feature.\n   */\n  readFeature(source, options) {\n    return abstract();\n  }\n\n  /**\n   * Read all features from a source.\n   *\n   * @abstract\n   * @param {Document|Element|ArrayBuffer|Object|string} source Source.\n   * @param {ReadOptions} [options] Read options.\n   * @return {Array<FeatureType>} Features.\n   */\n  readFeatures(source, options) {\n    return abstract();\n  }\n\n  /**\n   * Read a single geometry from a source.\n   *\n   * @abstract\n   * @param {Document|Element|Object|string} source Source.\n   * @param {ReadOptions} [options] Read options.\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   */\n  readGeometry(source, options) {\n    return abstract();\n  }\n\n  /**\n   * Read the projection from a source.\n   *\n   * @abstract\n   * @param {Document|Element|Object|string} source Source.\n   * @return {import(\"../proj/Projection.js\").default|undefined} Projection.\n   */\n  readProjection(source) {\n    return abstract();\n  }\n\n  /**\n   * Encode a feature in this format.\n   *\n   * @abstract\n   * @param {Feature} feature Feature.\n   * @param {WriteOptions} [options] Write options.\n   * @return {string|ArrayBuffer} Result.\n   */\n  writeFeature(feature, options) {\n    return abstract();\n  }\n\n  /**\n   * Encode an array of features in this format.\n   *\n   * @abstract\n   * @param {Array<Feature>} features Features.\n   * @param {WriteOptions} [options] Write options.\n   * @return {string|ArrayBuffer} Result.\n   */\n  writeFeatures(features, options) {\n    return abstract();\n  }\n\n  /**\n   * Write a single geometry in this format.\n   *\n   * @abstract\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {WriteOptions} [options] Write options.\n   * @return {string|ArrayBuffer} Result.\n   */\n  writeGeometry(geometry, options) {\n    return abstract();\n  }\n}\n\nexport default FeatureFormat;\n\n/**\n * @template {import(\"../geom/Geometry.js\").default|RenderFeature} T\n * @param {T} geometry Geometry.\n * @param {boolean} write Set to true for writing, false for reading.\n * @param {WriteOptions|ReadOptions} [options] Options.\n * @return {T} Transformed geometry.\n */\nexport function transformGeometryWithOptions(geometry, write, options) {\n  const featureProjection = options\n    ? getProjection(options.featureProjection)\n    : null;\n  const dataProjection = options ? getProjection(options.dataProjection) : null;\n\n  let transformed = geometry;\n  if (\n    featureProjection &&\n    dataProjection &&\n    !equivalentProjection(featureProjection, dataProjection)\n  ) {\n    if (write) {\n      transformed = /** @type {T} */ (geometry.clone());\n    }\n    const fromProjection = write ? featureProjection : dataProjection;\n    const toProjection = write ? dataProjection : featureProjection;\n    if (fromProjection.getUnits() === 'tile-pixels') {\n      transformed.transform(fromProjection, toProjection);\n    } else {\n      transformed.applyTransform(getTransform(fromProjection, toProjection));\n    }\n  }\n  if (\n    write &&\n    options &&\n    /** @type {WriteOptions} */ (options).decimals !== undefined\n  ) {\n    const power = Math.pow(10, /** @type {WriteOptions} */ (options).decimals);\n    // if decimals option on write, round each coordinate appropriately\n    /**\n     * @param {Array<number>} coordinates Coordinates.\n     * @return {Array<number>} Transformed coordinates.\n     */\n    const transform = function (coordinates) {\n      for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n        coordinates[i] = Math.round(coordinates[i] * power) / power;\n      }\n      return coordinates;\n    };\n    if (transformed === geometry) {\n      transformed = /** @type {T} */ (geometry.clone());\n    }\n    transformed.applyTransform(transform);\n  }\n  return transformed;\n}\n\n/**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {ReadOptions} [options] Read options.\n * @return {import(\"../extent.js\").Extent} Transformed extent.\n */\nexport function transformExtentWithOptions(extent, options) {\n  const featureProjection = options\n    ? getProjection(options.featureProjection)\n    : null;\n  const dataProjection = options ? getProjection(options.dataProjection) : null;\n\n  if (\n    featureProjection &&\n    dataProjection &&\n    !equivalentProjection(featureProjection, dataProjection)\n  ) {\n    return transformExtent(extent, dataProjection, featureProjection);\n  }\n  return extent;\n}\n\nconst GeometryConstructor = {\n  Point: Point,\n  LineString: LineString,\n  Polygon: Polygon,\n  MultiPoint: MultiPoint,\n  MultiLineString: MultiLineString,\n  MultiPolygon: MultiPolygon,\n};\n\nfunction orientFlatCoordinates(flatCoordinates, ends, stride) {\n  if (Array.isArray(ends[0])) {\n    // MultiPolagon\n    if (!linearRingssAreOriented(flatCoordinates, 0, ends, stride)) {\n      flatCoordinates = flatCoordinates.slice();\n      orientLinearRingsArray(flatCoordinates, 0, ends, stride);\n    }\n    return flatCoordinates;\n  }\n  if (!linearRingsAreOriented(flatCoordinates, 0, ends, stride)) {\n    flatCoordinates = flatCoordinates.slice();\n    orientLinearRings(flatCoordinates, 0, ends, stride);\n  }\n  return flatCoordinates;\n}\n\n/**\n * @param {FeatureObject} object Feature object.\n * @param {WriteOptions|ReadOptions} [options] Options.\n * @return {RenderFeature|Array<RenderFeature>} Render feature.\n */\nexport function createRenderFeature(object, options) {\n  const geometry = object.geometry;\n  if (!geometry) {\n    return [];\n  }\n  if (Array.isArray(geometry)) {\n    return geometry\n      .map((geometry) => createRenderFeature({...object, geometry}))\n      .flat();\n  }\n\n  const geometryType =\n    geometry.type === 'MultiPolygon' ? 'Polygon' : geometry.type;\n  if (geometryType === 'GeometryCollection' || geometryType === 'Circle') {\n    throw new Error('Unsupported geometry type: ' + geometryType);\n  }\n\n  const stride = geometry.layout.length;\n  return transformGeometryWithOptions(\n    new RenderFeature(\n      geometryType,\n      geometryType === 'Polygon'\n        ? orientFlatCoordinates(geometry.flatCoordinates, geometry.ends, stride)\n        : geometry.flatCoordinates,\n      geometry.ends?.flat(),\n      stride,\n      object.properties || {},\n      object.id,\n    ).enableSimplifyTransformed(),\n    false,\n    options,\n  );\n}\n\n/**\n * @param {GeometryObject|null} object Geometry object.\n * @param {WriteOptions|ReadOptions} [options] Options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nexport function createGeometry(object, options) {\n  if (!object) {\n    return null;\n  }\n  if (Array.isArray(object)) {\n    const geometries = object.map((geometry) =>\n      createGeometry(geometry, options),\n    );\n    return new GeometryCollection(geometries);\n  }\n  const Geometry = GeometryConstructor[object.type];\n  return transformGeometryWithOptions(\n    new Geometry(object.flatCoordinates, object.layout || 'XY', object.ends),\n    false,\n    options,\n  );\n}\n","/**\n * @module ol/format/JSONFeature\n */\nimport {abstract} from '../util.js';\nimport FeatureFormat from './Feature.js';\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for JSON feature formats.\n *\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @extends {FeatureFormat<FeatureType>}\n * @abstract\n */\nclass JSONFeature extends FeatureFormat {\n  constructor() {\n    super();\n  }\n\n  /**\n   * @return {import(\"./Feature.js\").Type} Format.\n   * @override\n   */\n  getType() {\n    return 'json';\n  }\n\n  /**\n   * Read a feature.  Only works for a single feature. Use `readFeatures` to\n   * read a feature collection.\n   *\n   * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @return {FeatureType|Array<FeatureType>} Feature.\n   * @api\n   * @override\n   */\n  readFeature(source, options) {\n    return this.readFeatureFromObject(\n      getObject(source),\n      this.getReadOptions(source, options),\n    );\n  }\n\n  /**\n   * Read all features.  Works with both a single feature and a feature\n   * collection.\n   *\n   * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   * @override\n   */\n  readFeatures(source, options) {\n    return this.readFeaturesFromObject(\n      getObject(source),\n      this.getReadOptions(source, options),\n    );\n  }\n\n  /**\n   * @abstract\n   * @param {Object} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {FeatureType|Array<FeatureType>} Feature.\n   */\n  readFeatureFromObject(object, options) {\n    return abstract();\n  }\n\n  /**\n   * @abstract\n   * @param {Object} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {Array<FeatureType>} Features.\n   */\n  readFeaturesFromObject(object, options) {\n    return abstract();\n  }\n\n  /**\n   * Read a geometry.\n   *\n   * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   * @api\n   * @override\n   */\n  readGeometry(source, options) {\n    return this.readGeometryFromObject(\n      getObject(source),\n      this.getReadOptions(source, options),\n    );\n  }\n\n  /**\n   * @abstract\n   * @param {Object} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   */\n  readGeometryFromObject(object, options) {\n    return abstract();\n  }\n\n  /**\n   * Read the projection.\n   *\n   * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   * @api\n   * @override\n   */\n  readProjection(source) {\n    return this.readProjectionFromObject(getObject(source));\n  }\n\n  /**\n   * @abstract\n   * @param {Object} object Object.\n   * @protected\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   */\n  readProjectionFromObject(object) {\n    return abstract();\n  }\n\n  /**\n   * Encode a feature as string.\n   *\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {string} Encoded feature.\n   * @api\n   * @override\n   */\n  writeFeature(feature, options) {\n    return JSON.stringify(this.writeFeatureObject(feature, options));\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {Object} Object.\n   */\n  writeFeatureObject(feature, options) {\n    return abstract();\n  }\n\n  /**\n   * Encode an array of features as string.\n   *\n   * @param {Array<import(\"../Feature.js\").default>} features Features.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {string} Encoded features.\n   * @api\n   * @override\n   */\n  writeFeatures(features, options) {\n    return JSON.stringify(this.writeFeaturesObject(features, options));\n  }\n\n  /**\n   * @abstract\n   * @param {Array<import(\"../Feature.js\").default>} features Features.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {Object} Object.\n   */\n  writeFeaturesObject(features, options) {\n    return abstract();\n  }\n\n  /**\n   * Encode a geometry as string.\n   *\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {string} Encoded geometry.\n   * @api\n   * @override\n   */\n  writeGeometry(geometry, options) {\n    return JSON.stringify(this.writeGeometryObject(geometry, options));\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {Object} Object.\n   */\n  writeGeometryObject(geometry, options) {\n    return abstract();\n  }\n}\n\n/**\n * @param {Document|Element|Object|string} source Source.\n * @return {Object} Object.\n */\nfunction getObject(source) {\n  if (typeof source === 'string') {\n    const object = JSON.parse(source);\n    return object ? /** @type {Object} */ (object) : null;\n  }\n  if (source !== null) {\n    return source;\n  }\n  return null;\n}\n\nexport default JSONFeature;\n","/**\n * @module ol/format/GeoJSON\n */\n\nimport Feature from '../Feature.js';\nimport {getLayoutForStride} from '../geom/SimpleGeometry.js';\nimport {\n  deflateCoordinatesArray,\n  deflateMultiCoordinatesArray,\n} from '../geom/flat/deflate.js';\nimport {isEmpty} from '../obj.js';\nimport {get as getProjection} from '../proj.js';\nimport RenderFeature from '../render/Feature.js';\nimport {\n  createGeometry,\n  createRenderFeature,\n  transformGeometryWithOptions,\n} from './Feature.js';\nimport JSONFeature from './JSONFeature.js';\n\n/**\n * @typedef {import(\"geojson\").GeoJSON} GeoJSONObject\n * @typedef {import(\"geojson\").Feature} GeoJSONFeature\n * @typedef {import(\"geojson\").FeatureCollection} GeoJSONFeatureCollection\n * @typedef {import(\"geojson\").Geometry} GeoJSONGeometry\n * @typedef {import(\"geojson\").Point} GeoJSONPoint\n * @typedef {import(\"geojson\").LineString} GeoJSONLineString\n * @typedef {import(\"geojson\").Polygon} GeoJSONPolygon\n * @typedef {import(\"geojson\").MultiPoint} GeoJSONMultiPoint\n * @typedef {import(\"geojson\").MultiLineString} GeoJSONMultiLineString\n * @typedef {import(\"geojson\").MultiPolygon} GeoJSONMultiPolygon\n * @typedef {import(\"geojson\").GeometryCollection} GeoJSONGeometryCollection\n */\n\n/**\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @typedef {Object} Options\n *\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection='EPSG:4326'] Default data projection.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection for features read or\n * written by the format.  Options passed to read or write methods will take precedence.\n * @property {string} [geometryName] Geometry name to use when creating features.\n * @property {boolean} [extractGeometryName=false] Certain GeoJSON providers include\n * the geometry_name field in the feature GeoJSON. If set to `true` the GeoJSON reader\n * will look for that field to set the geometry name. If both this field is set to `true`\n * and a `geometryName` is provided, the `geometryName` will take precedence.\n * @property {import('./Feature.js').FeatureToFeatureClass<FeatureType>} [featureClass] Feature class\n * to be used when reading features. The default is {@link module:ol/Feature~Feature}. If performance is\n * the primary concern, and features are not going to be modified or round-tripped through the format,\n * consider using {@link module:ol/render/Feature~RenderFeature}\n */\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GeoJSON format.\n *\n * @template {import('../Feature.js').FeatureLike} [FeatureType=import(\"../Feature.js\").default]\n * @extends {JSONFeature<FeatureType>}\n * @api\n */\nclass GeoJSON extends JSONFeature {\n  /**\n   * @param {Options<FeatureType>} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super();\n\n    /**\n     * @type {import(\"../proj/Projection.js\").default}\n     */\n    this.dataProjection = getProjection(\n      options.dataProjection ? options.dataProjection : 'EPSG:4326',\n    );\n\n    if (options.featureProjection) {\n      /**\n       * @type {import(\"../proj/Projection.js\").default}\n       */\n      this.defaultFeatureProjection = getProjection(options.featureProjection);\n    }\n\n    if (options.featureClass) {\n      this.featureClass = options.featureClass;\n    }\n\n    /**\n     * Name of the geometry attribute for features.\n     * @type {string|undefined}\n     * @private\n     */\n    this.geometryName_ = options.geometryName;\n\n    /**\n     * Look for the `geometry_name` in the feature GeoJSON\n     * @type {boolean|undefined}\n     * @private\n     */\n    this.extractGeometryName_ = options.extractGeometryName;\n\n    this.supportedMediaTypes = [\n      'application/geo+json',\n      'application/vnd.geo+json',\n    ];\n  }\n\n  /**\n   * @param {Object} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {FeatureType|Array<FeatureType>} Feature.\n   * @override\n   */\n  readFeatureFromObject(object, options) {\n    /**\n     * @type {GeoJSONFeature}\n     */\n    let geoJSONFeature = null;\n    if (object['type'] === 'Feature') {\n      geoJSONFeature = /** @type {GeoJSONFeature} */ (object);\n    } else {\n      geoJSONFeature = {\n        'type': 'Feature',\n        'geometry': /** @type {GeoJSONGeometry} */ (object),\n        'properties': null,\n      };\n    }\n\n    const geometry = readGeometryInternal(geoJSONFeature['geometry'], options);\n    if (this.featureClass === RenderFeature) {\n      return /** @type {FeatureType|Array<FeatureType>} */ (\n        createRenderFeature(\n          {\n            geometry,\n            id: geoJSONFeature['id'],\n            properties: geoJSONFeature['properties'],\n          },\n          options,\n        )\n      );\n    }\n\n    const feature = new Feature();\n    if (this.geometryName_) {\n      feature.setGeometryName(this.geometryName_);\n    } else if (this.extractGeometryName_ && geoJSONFeature['geometry_name']) {\n      feature.setGeometryName(geoJSONFeature['geometry_name']);\n    }\n    feature.setGeometry(createGeometry(geometry, options));\n\n    if ('id' in geoJSONFeature) {\n      feature.setId(geoJSONFeature['id']);\n    }\n\n    if (geoJSONFeature['properties']) {\n      feature.setProperties(geoJSONFeature['properties'], true);\n    }\n    return /** @type {FeatureType|Array<FeatureType>} */ (feature);\n  }\n\n  /**\n   * @param {Object} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {Array<FeatureType>} Features.\n   * @override\n   */\n  readFeaturesFromObject(object, options) {\n    const geoJSONObject = /** @type {GeoJSONObject} */ (object);\n    let features = null;\n    if (geoJSONObject['type'] === 'FeatureCollection') {\n      const geoJSONFeatureCollection = /** @type {GeoJSONFeatureCollection} */ (\n        object\n      );\n      features = [];\n      const geoJSONFeatures = geoJSONFeatureCollection['features'];\n      for (let i = 0, ii = geoJSONFeatures.length; i < ii; ++i) {\n        const featureObject = this.readFeatureFromObject(\n          geoJSONFeatures[i],\n          options,\n        );\n        if (!featureObject) {\n          continue;\n        }\n        features.push(featureObject);\n      }\n    } else {\n      features = [this.readFeatureFromObject(object, options)];\n    }\n    return /** @type {Array<FeatureType>} */ (features.flat());\n  }\n\n  /**\n   * @param {GeoJSONGeometry} object Object.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @protected\n   * @return {import(\"../geom/Geometry.js\").default} Geometry.\n   * @override\n   */\n  readGeometryFromObject(object, options) {\n    return readGeometry(object, options);\n  }\n\n  /**\n   * @param {Object} object Object.\n   * @protected\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   * @override\n   */\n  readProjectionFromObject(object) {\n    const crs = object['crs'];\n    let projection;\n    if (crs) {\n      if (crs['type'] == 'name') {\n        projection = getProjection(crs['properties']['name']);\n      } else if (crs['type'] === 'EPSG') {\n        projection = getProjection('EPSG:' + crs['properties']['code']);\n      } else {\n        throw new Error('Unknown SRS type');\n      }\n    } else {\n      projection = this.dataProjection;\n    }\n    return /** @type {import(\"../proj/Projection.js\").default} */ (projection);\n  }\n\n  /**\n   * Encode a feature as a GeoJSON Feature object.\n   *\n   * @param {import(\"../Feature.js\").default} feature Feature.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {GeoJSONFeature} Object.\n   * @api\n   * @override\n   */\n  writeFeatureObject(feature, options) {\n    options = this.adaptOptions(options);\n\n    /** @type {GeoJSONFeature} */\n    const object = {\n      'type': 'Feature',\n      geometry: null,\n      properties: null,\n    };\n\n    const id = feature.getId();\n    if (id !== undefined) {\n      object.id = id;\n    }\n\n    if (!feature.hasProperties()) {\n      return object;\n    }\n\n    const properties = feature.getProperties();\n    const geometry = feature.getGeometry();\n    if (geometry) {\n      object.geometry = writeGeometry(geometry, options);\n\n      delete properties[feature.getGeometryName()];\n    }\n\n    if (!isEmpty(properties)) {\n      object.properties = properties;\n    }\n\n    return object;\n  }\n\n  /**\n   * Encode an array of features as a GeoJSON object.\n   *\n   * @param {Array<import(\"../Feature.js\").default>} features Features.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {GeoJSONFeatureCollection} GeoJSON Object.\n   * @api\n   * @override\n   */\n  writeFeaturesObject(features, options) {\n    options = this.adaptOptions(options);\n    const objects = [];\n    for (let i = 0, ii = features.length; i < ii; ++i) {\n      objects.push(this.writeFeatureObject(features[i], options));\n    }\n    return {\n      type: 'FeatureCollection',\n      features: objects,\n    };\n  }\n\n  /**\n   * Encode a geometry as a GeoJSON object.\n   *\n   * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n   * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n   * @return {GeoJSONGeometry|GeoJSONGeometryCollection} Object.\n   * @api\n   * @override\n   */\n  writeGeometryObject(geometry, options) {\n    return writeGeometry(geometry, this.adaptOptions(options));\n  }\n}\n\n/**\n * @param {GeoJSONGeometry|GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"./Feature.js\").GeometryObject} Geometry.\n */\nfunction readGeometryInternal(object, options) {\n  if (!object) {\n    return null;\n  }\n\n  /** @type {import(\"./Feature.js\").GeometryObject} */\n  let geometry;\n  switch (object['type']) {\n    case 'Point': {\n      geometry = readPointGeometry(/** @type {GeoJSONPoint} */ (object));\n      break;\n    }\n    case 'LineString': {\n      geometry = readLineStringGeometry(\n        /** @type {GeoJSONLineString} */ (object),\n      );\n      break;\n    }\n    case 'Polygon': {\n      geometry = readPolygonGeometry(/** @type {GeoJSONPolygon} */ (object));\n      break;\n    }\n    case 'MultiPoint': {\n      geometry = readMultiPointGeometry(\n        /** @type {GeoJSONMultiPoint} */ (object),\n      );\n      break;\n    }\n    case 'MultiLineString': {\n      geometry = readMultiLineStringGeometry(\n        /** @type {GeoJSONMultiLineString} */ (object),\n      );\n      break;\n    }\n    case 'MultiPolygon': {\n      geometry = readMultiPolygonGeometry(\n        /** @type {GeoJSONMultiPolygon} */ (object),\n      );\n      break;\n    }\n    case 'GeometryCollection': {\n      geometry = readGeometryCollectionGeometry(\n        /** @type {GeoJSONGeometryCollection} */ (object),\n      );\n      break;\n    }\n    default: {\n      throw new Error('Unsupported GeoJSON type: ' + object['type']);\n    }\n  }\n  return geometry;\n}\n\n/**\n * @param {GeoJSONGeometry|GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nfunction readGeometry(object, options) {\n  const geometryObject = readGeometryInternal(object, options);\n  return createGeometry(geometryObject, options);\n}\n\n/**\n * @param {GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"./Feature.js\").GeometryCollectionObject} Geometry collection.\n */\nfunction readGeometryCollectionGeometry(object, options) {\n  const geometries = object['geometries'].map(\n    /**\n     * @param {GeoJSONGeometry} geometry Geometry.\n     * @return {import(\"./Feature.js\").GeometryObject} geometry Geometry.\n     */\n    function (geometry) {\n      return readGeometryInternal(geometry, options);\n    },\n  );\n  return geometries;\n}\n\n/**\n * @param {GeoJSONPoint} object Input object.\n * @return {import(\"./Feature.js\").GeometryObject} Point geometry.\n */\nfunction readPointGeometry(object) {\n  const flatCoordinates = object['coordinates'];\n  return {\n    type: 'Point',\n    flatCoordinates,\n    layout: getLayoutForStride(flatCoordinates.length),\n  };\n}\n\n/**\n * @param {GeoJSONLineString} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} LineString geometry.\n */\nfunction readLineStringGeometry(object) {\n  const coordinates = object['coordinates'];\n  const flatCoordinates = coordinates.flat();\n  return {\n    type: 'LineString',\n    flatCoordinates,\n    ends: [flatCoordinates.length],\n    layout: getLayoutForStride(coordinates[0]?.length || 2),\n  };\n}\n\n/**\n * @param {GeoJSONMultiLineString} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} MultiLineString geometry.\n */\nfunction readMultiLineStringGeometry(object) {\n  const coordinates = object['coordinates'];\n  const stride = coordinates[0]?.[0]?.length || 2;\n  const flatCoordinates = [];\n  const ends = deflateCoordinatesArray(flatCoordinates, 0, coordinates, stride);\n  return {\n    type: 'MultiLineString',\n    flatCoordinates,\n    ends,\n    layout: getLayoutForStride(stride),\n  };\n}\n\n/**\n * @param {GeoJSONMultiPoint} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} MultiPoint geometry.\n */\nfunction readMultiPointGeometry(object) {\n  const coordinates = object['coordinates'];\n  return {\n    type: 'MultiPoint',\n    flatCoordinates: coordinates.flat(),\n    layout: getLayoutForStride(coordinates[0]?.length || 2),\n  };\n}\n\n/**\n * @param {GeoJSONMultiPolygon} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} MultiPolygon geometry.\n */\nfunction readMultiPolygonGeometry(object) {\n  const coordinates = object['coordinates'];\n  const flatCoordinates = [];\n  const stride = coordinates[0]?.[0]?.[0].length || 2;\n  const endss = deflateMultiCoordinatesArray(\n    flatCoordinates,\n    0,\n    coordinates,\n    stride,\n  );\n  return {\n    type: 'MultiPolygon',\n    flatCoordinates,\n    ends: endss,\n    layout: getLayoutForStride(stride),\n  };\n}\n\n/**\n * @param {GeoJSONPolygon} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} Polygon.\n */\nfunction readPolygonGeometry(object) {\n  const coordinates = object['coordinates'];\n  const flatCoordinates = [];\n  const stride = coordinates[0]?.[0]?.length;\n  const ends = deflateCoordinatesArray(flatCoordinates, 0, coordinates, stride);\n  return {\n    type: 'Polygon',\n    flatCoordinates,\n    ends,\n    layout: getLayoutForStride(stride),\n  };\n}\n\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeGeometry(geometry, options) {\n  geometry = transformGeometryWithOptions(geometry, true, options);\n\n  const type = geometry.getType();\n\n  /** @type {GeoJSONGeometry} */\n  let geoJSON;\n  switch (type) {\n    case 'Point': {\n      geoJSON = writePointGeometry(\n        /** @type {import(\"../geom/Point.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'LineString': {\n      geoJSON = writeLineStringGeometry(\n        /** @type {import(\"../geom/LineString.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'Polygon': {\n      geoJSON = writePolygonGeometry(\n        /** @type {import(\"../geom/Polygon.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'MultiPoint': {\n      geoJSON = writeMultiPointGeometry(\n        /** @type {import(\"../geom/MultiPoint.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'MultiLineString': {\n      geoJSON = writeMultiLineStringGeometry(\n        /** @type {import(\"../geom/MultiLineString.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'MultiPolygon': {\n      geoJSON = writeMultiPolygonGeometry(\n        /** @type {import(\"../geom/MultiPolygon.js\").default} */ (geometry),\n        options,\n      );\n      break;\n    }\n    case 'GeometryCollection': {\n      geoJSON = writeGeometryCollectionGeometry(\n        /** @type {import(\"../geom/GeometryCollection.js\").default} */ (\n          geometry\n        ),\n        options,\n      );\n      break;\n    }\n    case 'Circle': {\n      geoJSON = {\n        type: 'GeometryCollection',\n        geometries: [],\n      };\n      break;\n    }\n    default: {\n      throw new Error('Unsupported geometry type: ' + type);\n    }\n  }\n  return geoJSON;\n}\n\n/**\n * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometryCollection} GeoJSON geometry collection.\n */\nfunction writeGeometryCollectionGeometry(geometry, options) {\n  options = Object.assign({}, options);\n  delete options.featureProjection;\n  const geometries = geometry.getGeometriesArray().map(function (geometry) {\n    return writeGeometry(geometry, options);\n  });\n  return {\n    type: 'GeometryCollection',\n    geometries: geometries,\n  };\n}\n\n/**\n * @param {import(\"../geom/LineString.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeLineStringGeometry(geometry, options) {\n  return {\n    type: 'LineString',\n    coordinates: geometry.getCoordinates(),\n  };\n}\n\n/**\n * @param {import(\"../geom/MultiLineString.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiLineStringGeometry(geometry, options) {\n  return {\n    type: 'MultiLineString',\n    coordinates: geometry.getCoordinates(),\n  };\n}\n\n/**\n * @param {import(\"../geom/MultiPoint.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPointGeometry(geometry, options) {\n  return {\n    type: 'MultiPoint',\n    coordinates: geometry.getCoordinates(),\n  };\n}\n\n/**\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPolygonGeometry(geometry, options) {\n  let right;\n  if (options) {\n    right = options.rightHanded;\n  }\n  return {\n    type: 'MultiPolygon',\n    coordinates: geometry.getCoordinates(right),\n  };\n}\n\n/**\n * @param {import(\"../geom/Point.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePointGeometry(geometry, options) {\n  return {\n    type: 'Point',\n    coordinates: geometry.getCoordinates(),\n  };\n}\n\n/**\n * @param {import(\"../geom/Polygon.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePolygonGeometry(geometry, options) {\n  let right;\n  if (options) {\n    right = options.rightHanded;\n  }\n  return {\n    type: 'Polygon',\n    coordinates: geometry.getCoordinates(right),\n  };\n}\n\nexport default GeoJSON;\n","\nconst SHIFT_LEFT_32 = (1 << 16) * (1 << 16);\nconst SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nconst TEXT_DECODER_MIN_LENGTH = 12;\nconst utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8');\n\nconst PBF_VARINT  = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nconst PBF_FIXED64 = 1; // 64-bit: double, fixed64, sfixed64\nconst PBF_BYTES   = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nconst PBF_FIXED32 = 5; // 32-bit: float, fixed32, sfixed32\n\nexport default class Pbf {\n    /**\n     * @param {Uint8Array | ArrayBuffer} [buf]\n     */\n    constructor(buf = new Uint8Array(16)) {\n        this.buf = ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf);\n        this.dataView = new DataView(this.buf.buffer);\n        this.pos = 0;\n        this.type = 0;\n        this.length = this.buf.length;\n    }\n\n    // === READING =================================================================\n\n    /**\n     * @template T\n     * @param {(tag: number, result: T, pbf: Pbf) => void} readField\n     * @param {T} result\n     * @param {number} [end]\n     */\n    readFields(readField, result, end = this.length) {\n        while (this.pos < end) {\n            const val = this.readVarint(),\n                tag = val >> 3,\n                startPos = this.pos;\n\n            this.type = val & 0x7;\n            readField(tag, result, this);\n\n            if (this.pos === startPos) this.skip(val);\n        }\n        return result;\n    }\n\n    /**\n     * @template T\n     * @param {(tag: number, result: T, pbf: Pbf) => void} readField\n     * @param {T} result\n     */\n    readMessage(readField, result) {\n        return this.readFields(readField, result, this.readVarint() + this.pos);\n    }\n\n    readFixed32() {\n        const val = this.dataView.getUint32(this.pos, true);\n        this.pos += 4;\n        return val;\n    }\n\n    readSFixed32() {\n        const val = this.dataView.getInt32(this.pos, true);\n        this.pos += 4;\n        return val;\n    }\n\n    // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n    readFixed64() {\n        const val = this.dataView.getUint32(this.pos, true) + this.dataView.getUint32(this.pos + 4, true) * SHIFT_LEFT_32;\n        this.pos += 8;\n        return val;\n    }\n\n    readSFixed64() {\n        const val = this.dataView.getUint32(this.pos, true) + this.dataView.getInt32(this.pos + 4, true) * SHIFT_LEFT_32;\n        this.pos += 8;\n        return val;\n    }\n\n    readFloat() {\n        const val = this.dataView.getFloat32(this.pos, true);\n        this.pos += 4;\n        return val;\n    }\n\n    readDouble() {\n        const val = this.dataView.getFloat64(this.pos, true);\n        this.pos += 8;\n        return val;\n    }\n\n    /**\n     * @param {boolean} [isSigned]\n     */\n    readVarint(isSigned) {\n        const buf = this.buf;\n        let val, b;\n\n        b = buf[this.pos++]; val  =  b & 0x7f;        if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 7;  if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n        b = buf[this.pos];   val |= (b & 0x0f) << 28;\n\n        return readVarintRemainder(val, isSigned, this);\n    }\n\n    readVarint64() { // for compatibility with v2.0.1\n        return this.readVarint(true);\n    }\n\n    readSVarint() {\n        const num = this.readVarint();\n        return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n    }\n\n    readBoolean() {\n        return Boolean(this.readVarint());\n    }\n\n    readString() {\n        const end = this.readVarint() + this.pos;\n        const pos = this.pos;\n        this.pos = end;\n\n        if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n            // longer strings are fast with the built-in browser TextDecoder API\n            return utf8TextDecoder.decode(this.buf.subarray(pos, end));\n        }\n        // short strings are fast with our custom implementation\n        return readUtf8(this.buf, pos, end);\n    }\n\n    readBytes() {\n        const end = this.readVarint() + this.pos,\n            buffer = this.buf.subarray(this.pos, end);\n        this.pos = end;\n        return buffer;\n    }\n\n    // verbose for performance reasons; doesn't affect gzipped size\n\n    /**\n     * @param {number[]} [arr]\n     * @param {boolean} [isSigned]\n     */\n    readPackedVarint(arr = [], isSigned) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readVarint(isSigned));\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedSVarint(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readSVarint());\n        return arr;\n    }\n    /** @param {boolean[]} [arr] */\n    readPackedBoolean(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readBoolean());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedFloat(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readFloat());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedDouble(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readDouble());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedFixed32(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readFixed32());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedSFixed32(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readSFixed32());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedFixed64(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readFixed64());\n        return arr;\n    }\n    /** @param {number[]} [arr] */\n    readPackedSFixed64(arr = []) {\n        const end = this.readPackedEnd();\n        while (this.pos < end) arr.push(this.readSFixed64());\n        return arr;\n    }\n    readPackedEnd() {\n        return this.type === PBF_BYTES ? this.readVarint() + this.pos : this.pos + 1;\n    }\n\n    /** @param {number} val */\n    skip(val) {\n        const type = val & 0x7;\n        if (type === PBF_VARINT) while (this.buf[this.pos++] > 0x7f) {}\n        else if (type === PBF_BYTES) this.pos = this.readVarint() + this.pos;\n        else if (type === PBF_FIXED32) this.pos += 4;\n        else if (type === PBF_FIXED64) this.pos += 8;\n        else throw new Error(`Unimplemented type: ${type}`);\n    }\n\n    // === WRITING =================================================================\n\n    /**\n     * @param {number} tag\n     * @param {number} type\n     */\n    writeTag(tag, type) {\n        this.writeVarint((tag << 3) | type);\n    }\n\n    /** @param {number} min */\n    realloc(min) {\n        let length = this.length || 16;\n\n        while (length < this.pos + min) length *= 2;\n\n        if (length !== this.length) {\n            const buf = new Uint8Array(length);\n            buf.set(this.buf);\n            this.buf = buf;\n            this.dataView = new DataView(buf.buffer);\n            this.length = length;\n        }\n    }\n\n    finish() {\n        this.length = this.pos;\n        this.pos = 0;\n        return this.buf.subarray(0, this.length);\n    }\n\n    /** @param {number} val */\n    writeFixed32(val) {\n        this.realloc(4);\n        this.dataView.setInt32(this.pos, val, true);\n        this.pos += 4;\n    }\n\n    /** @param {number} val */\n    writeSFixed32(val) {\n        this.realloc(4);\n        this.dataView.setInt32(this.pos, val, true);\n        this.pos += 4;\n    }\n\n    /** @param {number} val */\n    writeFixed64(val) {\n        this.realloc(8);\n        this.dataView.setInt32(this.pos, val & -1, true);\n        this.dataView.setInt32(this.pos + 4, Math.floor(val * SHIFT_RIGHT_32), true);\n        this.pos += 8;\n    }\n\n    /** @param {number} val */\n    writeSFixed64(val) {\n        this.realloc(8);\n        this.dataView.setInt32(this.pos, val & -1, true);\n        this.dataView.setInt32(this.pos + 4, Math.floor(val * SHIFT_RIGHT_32), true);\n        this.pos += 8;\n    }\n\n    /** @param {number} val */\n    writeVarint(val) {\n        val = +val || 0;\n\n        if (val > 0xfffffff || val < 0) {\n            writeBigVarint(val, this);\n            return;\n        }\n\n        this.realloc(4);\n\n        this.buf[this.pos++] =           val & 0x7f  | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] =   (val >>> 7) & 0x7f;\n    }\n\n    /** @param {number} val */\n    writeSVarint(val) {\n        this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n    }\n\n    /** @param {boolean} val */\n    writeBoolean(val) {\n        this.writeVarint(+val);\n    }\n\n    /** @param {string} str */\n    writeString(str) {\n        str = String(str);\n        this.realloc(str.length * 4);\n\n        this.pos++; // reserve 1 byte for short string length\n\n        const startPos = this.pos;\n        // write the string directly to the buffer and see how much was written\n        this.pos = writeUtf8(this.buf, str, this.pos);\n        const len = this.pos - startPos;\n\n        if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n        // finally, write the message length in the reserved place and restore the position\n        this.pos = startPos - 1;\n        this.writeVarint(len);\n        this.pos += len;\n    }\n\n    /** @param {number} val */\n    writeFloat(val) {\n        this.realloc(4);\n        this.dataView.setFloat32(this.pos, val, true);\n        this.pos += 4;\n    }\n\n    /** @param {number} val */\n    writeDouble(val) {\n        this.realloc(8);\n        this.dataView.setFloat64(this.pos, val, true);\n        this.pos += 8;\n    }\n\n    /** @param {Uint8Array} buffer */\n    writeBytes(buffer) {\n        const len = buffer.length;\n        this.writeVarint(len);\n        this.realloc(len);\n        for (let i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n    }\n\n    /**\n     * @template T\n     * @param {(obj: T, pbf: Pbf) => void} fn\n     * @param {T} obj\n     */\n    writeRawMessage(fn, obj) {\n        this.pos++; // reserve 1 byte for short message length\n\n        // write the message directly to the buffer and see how much was written\n        const startPos = this.pos;\n        fn(obj, this);\n        const len = this.pos - startPos;\n\n        if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n        // finally, write the message length in the reserved place and restore the position\n        this.pos = startPos - 1;\n        this.writeVarint(len);\n        this.pos += len;\n    }\n\n    /**\n     * @template T\n     * @param {number} tag\n     * @param {(obj: T, pbf: Pbf) => void} fn\n     * @param {T} obj\n     */\n    writeMessage(tag, fn, obj) {\n        this.writeTag(tag, PBF_BYTES);\n        this.writeRawMessage(fn, obj);\n    }\n\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedVarint(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedVarint, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedSVarint(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedSVarint, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {boolean[]} arr\n     */\n    writePackedBoolean(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedBoolean, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedFloat(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedFloat, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedDouble(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedDouble, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedFixed32(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedFixed32, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedSFixed32(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedFixed64(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedFixed64, arr);\n    }\n    /**\n     * @param {number} tag\n     * @param {number[]} arr\n     */\n    writePackedSFixed64(tag, arr) {\n        if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr);\n    }\n\n    /**\n     * @param {number} tag\n     * @param {Uint8Array} buffer\n     */\n    writeBytesField(tag, buffer) {\n        this.writeTag(tag, PBF_BYTES);\n        this.writeBytes(buffer);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeFixed32Field(tag, val) {\n        this.writeTag(tag, PBF_FIXED32);\n        this.writeFixed32(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeSFixed32Field(tag, val) {\n        this.writeTag(tag, PBF_FIXED32);\n        this.writeSFixed32(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeFixed64Field(tag, val) {\n        this.writeTag(tag, PBF_FIXED64);\n        this.writeFixed64(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeSFixed64Field(tag, val) {\n        this.writeTag(tag, PBF_FIXED64);\n        this.writeSFixed64(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeVarintField(tag, val) {\n        this.writeTag(tag, PBF_VARINT);\n        this.writeVarint(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeSVarintField(tag, val) {\n        this.writeTag(tag, PBF_VARINT);\n        this.writeSVarint(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {string} str\n     */\n    writeStringField(tag, str) {\n        this.writeTag(tag, PBF_BYTES);\n        this.writeString(str);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeFloatField(tag, val) {\n        this.writeTag(tag, PBF_FIXED32);\n        this.writeFloat(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {number} val\n     */\n    writeDoubleField(tag, val) {\n        this.writeTag(tag, PBF_FIXED64);\n        this.writeDouble(val);\n    }\n    /**\n     * @param {number} tag\n     * @param {boolean} val\n     */\n    writeBooleanField(tag, val) {\n        this.writeVarintField(tag, +val);\n    }\n};\n\n/**\n * @param {number} l\n * @param {boolean | undefined} s\n * @param {Pbf} p\n */\nfunction readVarintRemainder(l, s, p) {\n    const buf = p.buf;\n    let h, b;\n\n    b = buf[p.pos++]; h  = (b & 0x70) >> 4;  if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 3;  if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n    throw new Error('Expected varint not more than 10 bytes');\n}\n\n/**\n * @param {number} low\n * @param {number} high\n * @param {boolean} [isSigned]\n */\nfunction toNum(low, high, isSigned) {\n    return isSigned ? high * 0x100000000 + (low >>> 0) : ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\n/**\n * @param {number} val\n * @param {Pbf} pbf\n */\nfunction writeBigVarint(val, pbf) {\n    let low, high;\n\n    if (val >= 0) {\n        low  = (val % 0x100000000) | 0;\n        high = (val / 0x100000000) | 0;\n    } else {\n        low  = ~(-val % 0x100000000);\n        high = ~(-val / 0x100000000);\n\n        if (low ^ 0xffffffff) {\n            low = (low + 1) | 0;\n        } else {\n            low = 0;\n            high = (high + 1) | 0;\n        }\n    }\n\n    if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n        throw new Error('Given varint doesn\\'t fit into 10 bytes');\n    }\n\n    pbf.realloc(10);\n\n    writeBigVarintLow(low, high, pbf);\n    writeBigVarintHigh(high, pbf);\n}\n\n/**\n * @param {number} high\n * @param {number} low\n * @param {Pbf} pbf\n */\nfunction writeBigVarintLow(low, high, pbf) {\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos]   = low & 0x7f;\n}\n\n/**\n * @param {number} high\n * @param {Pbf} pbf\n */\nfunction writeBigVarintHigh(high, pbf) {\n    const lsb = (high & 0x07) << 4;\n\n    pbf.buf[pbf.pos++] |= lsb         | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f;\n}\n\n/**\n * @param {number} startPos\n * @param {number} len\n * @param {Pbf} pbf\n */\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n    const extraLen =\n        len <= 0x3fff ? 1 :\n        len <= 0x1fffff ? 2 :\n        len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n    // if 1 byte isn't enough for encoding message length, shift the data to the right\n    pbf.realloc(extraLen);\n    for (let i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedVarint(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSVarint(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFloat(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedDouble(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]);\n}\n/**\n * @param {boolean[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedBoolean(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFixed32(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSFixed32(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFixed64(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSFixed64(arr, pbf) {\n    for (let i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]);\n}\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\n/**\n * @param {Uint8Array} buf\n * @param {number} pos\n * @param {number} end\n */\nfunction readUtf8(buf, pos, end) {\n    let str = '';\n    let i = pos;\n\n    while (i < end) {\n        const b0 = buf[i];\n        let c = null; // codepoint\n        let bytesPerSequence =\n            b0 > 0xEF ? 4 :\n            b0 > 0xDF ? 3 :\n            b0 > 0xBF ? 2 : 1;\n\n        if (i + bytesPerSequence > end) break;\n\n        let b1, b2, b3;\n\n        if (bytesPerSequence === 1) {\n            if (b0 < 0x80) {\n                c = b0;\n            }\n        } else if (bytesPerSequence === 2) {\n            b1 = buf[i + 1];\n            if ((b1 & 0xC0) === 0x80) {\n                c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n                if (c <= 0x7F) {\n                    c = null;\n                }\n            }\n        } else if (bytesPerSequence === 3) {\n            b1 = buf[i + 1];\n            b2 = buf[i + 2];\n            if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n                c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n                if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n                    c = null;\n                }\n            }\n        } else if (bytesPerSequence === 4) {\n            b1 = buf[i + 1];\n            b2 = buf[i + 2];\n            b3 = buf[i + 3];\n            if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n                c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n                if (c <= 0xFFFF || c >= 0x110000) {\n                    c = null;\n                }\n            }\n        }\n\n        if (c === null) {\n            c = 0xFFFD;\n            bytesPerSequence = 1;\n\n        } else if (c > 0xFFFF) {\n            c -= 0x10000;\n            str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n            c = 0xDC00 | c & 0x3FF;\n        }\n\n        str += String.fromCharCode(c);\n        i += bytesPerSequence;\n    }\n\n    return str;\n}\n\n/**\n * @param {Uint8Array} buf\n * @param {string} str\n * @param {number} pos\n */\nfunction writeUtf8(buf, str, pos) {\n    for (let i = 0, c, lead; i < str.length; i++) {\n        c = str.charCodeAt(i); // code point\n\n        if (c > 0xD7FF && c < 0xE000) {\n            if (lead) {\n                if (c < 0xDC00) {\n                    buf[pos++] = 0xEF;\n                    buf[pos++] = 0xBF;\n                    buf[pos++] = 0xBD;\n                    lead = c;\n                    continue;\n                } else {\n                    c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n                    lead = null;\n                }\n            } else {\n                if (c > 0xDBFF || (i + 1 === str.length)) {\n                    buf[pos++] = 0xEF;\n                    buf[pos++] = 0xBF;\n                    buf[pos++] = 0xBD;\n                } else {\n                    lead = c;\n                }\n                continue;\n            }\n        } else if (lead) {\n            buf[pos++] = 0xEF;\n            buf[pos++] = 0xBF;\n            buf[pos++] = 0xBD;\n            lead = null;\n        }\n\n        if (c < 0x80) {\n            buf[pos++] = c;\n        } else {\n            if (c < 0x800) {\n                buf[pos++] = c >> 0x6 | 0xC0;\n            } else {\n                if (c < 0x10000) {\n                    buf[pos++] = c >> 0xC | 0xE0;\n                } else {\n                    buf[pos++] = c >> 0x12 | 0xF0;\n                    buf[pos++] = c >> 0xC & 0x3F | 0x80;\n                }\n                buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n            }\n            buf[pos++] = c & 0x3F | 0x80;\n        }\n    }\n    return pos;\n}\n","/**\n * @module ol/format/MVT\n */\n//FIXME Implement projection handling\n\nimport PBF from 'pbf';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport {inflateEnds} from '../geom/flat/orient.js';\nimport Projection from '../proj/Projection.js';\nimport {get} from '../proj.js';\nimport RenderFeature from '../render/Feature.js';\nimport FeatureFormat, {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../render/Feature.js\").default]\n * @typedef {Object} Options\n * @property {import('./Feature.js').FeatureToFeatureClass<FeatureType>} [featureClass] Class for features returned by\n * {@link module:ol/format/MVT~MVT#readFeatures}. Set to {@link module:ol/Feature~Feature} to get full editing and geometry\n * support at the cost of decreased rendering performance. The default is\n * {@link module:ol/render/Feature~RenderFeature}, which is optimized for rendering and hit detection.\n * @property {string} [geometryName='geometry'] Geometry name to use when creating features.\n * @property {string} [layerName='layer'] Name of the feature attribute that holds the layer name.\n * @property {Array<string>} [layers] Layers to read features from. If not provided, features will be read from all\n * @property {string} [idProperty] Optional property that will be assigned as the feature id and removed from the properties.\n * layers.\n */\n\n/**\n * @classdesc\n * Feature format for reading data in the Mapbox MVT format.\n *\n * @template {import('../Feature.js').FeatureLike} [FeatureType=RenderFeature]\n * @extends {FeatureFormat<FeatureType>}\n * @api\n */\nclass MVT extends FeatureFormat {\n  /**\n   * @param {Options<FeatureType>} [options] Options.\n   */\n  constructor(options) {\n    super();\n\n    options = options ? options : {};\n\n    /**\n     * @type {Projection}\n     */\n    this.dataProjection = new Projection({\n      code: '',\n      units: 'tile-pixels',\n    });\n\n    this.featureClass = options.featureClass\n      ? options.featureClass\n      : /** @type {import('./Feature.js').FeatureToFeatureClass<FeatureType>} */ (\n          RenderFeature\n        );\n\n    /**\n     * @private\n     * @type {string|undefined}\n     */\n    this.geometryName_ = options.geometryName;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.layerName_ = options.layerName ? options.layerName : 'layer';\n\n    /**\n     * @private\n     * @type {Array<string>|null}\n     */\n    this.layers_ = options.layers ? options.layers : null;\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.idProperty_ = options.idProperty;\n\n    this.supportedMediaTypes = [\n      'application/vnd.mapbox-vector-tile',\n      'application/x-protobuf',\n    ];\n  }\n\n  /**\n   * Read the raw geometry from the pbf offset stored in a raw feature's geometry\n   * property.\n   * @param {PBF} pbf PBF.\n   * @param {Object} feature Raw feature.\n   * @param {Array<number>} flatCoordinates Array to store flat coordinates in.\n   * @param {Array<number>} ends Array to store ends in.\n   * @private\n   */\n  readRawGeometry_(pbf, feature, flatCoordinates, ends) {\n    pbf.pos = feature.geometry;\n\n    const end = pbf.readVarint() + pbf.pos;\n    let cmd = 1;\n    let length = 0;\n    let x = 0;\n    let y = 0;\n    let coordsLen = 0;\n    let currentEnd = 0;\n\n    while (pbf.pos < end) {\n      if (!length) {\n        const cmdLen = pbf.readVarint();\n        cmd = cmdLen & 0x7;\n        length = cmdLen >> 3;\n      }\n\n      length--;\n\n      if (cmd === 1 || cmd === 2) {\n        x += pbf.readSVarint();\n        y += pbf.readSVarint();\n\n        if (cmd === 1) {\n          // moveTo\n          if (coordsLen > currentEnd) {\n            ends.push(coordsLen);\n            currentEnd = coordsLen;\n          }\n        }\n\n        flatCoordinates.push(x, y);\n        coordsLen += 2;\n      } else if (cmd === 7) {\n        if (coordsLen > currentEnd) {\n          // close polygon\n          flatCoordinates.push(\n            flatCoordinates[currentEnd],\n            flatCoordinates[currentEnd + 1],\n          );\n          coordsLen += 2;\n        }\n      } else {\n        throw new Error('Invalid command found in the PBF');\n      }\n    }\n\n    if (coordsLen > currentEnd) {\n      ends.push(coordsLen);\n      currentEnd = coordsLen;\n    }\n  }\n\n  /**\n   * @private\n   * @param {PBF} pbf PBF\n   * @param {Object} rawFeature Raw Mapbox feature.\n   * @param {import(\"./Feature.js\").ReadOptions} options Read options.\n   * @return {FeatureType|null} Feature.\n   */\n  createFeature_(pbf, rawFeature, options) {\n    const type = rawFeature.type;\n    if (type === 0) {\n      return null;\n    }\n\n    let feature;\n    const values = rawFeature.properties;\n\n    let id;\n    if (!this.idProperty_) {\n      id = rawFeature.id;\n    } else {\n      id = values[this.idProperty_];\n      delete values[this.idProperty_];\n    }\n\n    values[this.layerName_] = rawFeature.layer.name;\n\n    const flatCoordinates = /** @type {Array<number>} */ ([]);\n    const ends = /** @type {Array<number>} */ ([]);\n    this.readRawGeometry_(pbf, rawFeature, flatCoordinates, ends);\n\n    const geometryType = getGeometryType(type, ends.length);\n\n    if (this.featureClass === RenderFeature) {\n      feature =\n        new /** @type {import('./Feature.js').FeatureToFeatureClass<RenderFeature>} */ (\n          this.featureClass\n        )(geometryType, flatCoordinates, ends, 2, values, id);\n      feature.transform(options.dataProjection);\n    } else {\n      let geom;\n      if (geometryType == 'Polygon') {\n        const endss = inflateEnds(flatCoordinates, ends);\n        geom =\n          endss.length > 1\n            ? new MultiPolygon(flatCoordinates, 'XY', endss)\n            : new Polygon(flatCoordinates, 'XY', ends);\n      } else {\n        geom =\n          geometryType === 'Point'\n            ? new Point(flatCoordinates, 'XY')\n            : geometryType === 'LineString'\n              ? new LineString(flatCoordinates, 'XY')\n              : geometryType === 'MultiPoint'\n                ? new MultiPoint(flatCoordinates, 'XY')\n                : geometryType === 'MultiLineString'\n                  ? new MultiLineString(flatCoordinates, 'XY', ends)\n                  : null;\n      }\n      const ctor = /** @type {typeof import(\"../Feature.js\").default} */ (\n        this.featureClass\n      );\n      feature = new ctor();\n      if (this.geometryName_) {\n        feature.setGeometryName(this.geometryName_);\n      }\n      const geometry = transformGeometryWithOptions(geom, false, options);\n      feature.setGeometry(geometry);\n      if (id !== undefined) {\n        feature.setId(id);\n      }\n      feature.setProperties(values, true);\n    }\n\n    return /** @type {FeatureType} */ (feature);\n  }\n\n  /**\n   * @return {import(\"./Feature.js\").Type} Format.\n   * @override\n   */\n  getType() {\n    return 'arraybuffer';\n  }\n\n  /**\n   * Read all features.\n   *\n   * @param {ArrayBuffer} source Source.\n   * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   * @override\n   */\n  readFeatures(source, options) {\n    const layers = this.layers_;\n    options = this.adaptOptions(options);\n    const dataProjection = get(options.dataProjection);\n    dataProjection.setWorldExtent(options.extent);\n    options.dataProjection = dataProjection;\n\n    const pbf = new PBF(/** @type {ArrayBuffer} */ (source));\n    const pbfLayers = pbf.readFields(layersPBFReader, {});\n    const features = [];\n    for (const name in pbfLayers) {\n      if (layers && !layers.includes(name)) {\n        continue;\n      }\n      const pbfLayer = pbfLayers[name];\n\n      const extent = pbfLayer ? [0, 0, pbfLayer.extent, pbfLayer.extent] : null;\n      dataProjection.setExtent(extent);\n\n      for (let i = 0, ii = pbfLayer.length; i < ii; ++i) {\n        const rawFeature = readRawFeature(pbf, pbfLayer, i);\n        const feature = this.createFeature_(pbf, rawFeature, options);\n        if (feature !== null) {\n          features.push(feature);\n        }\n      }\n    }\n\n    return /** @type {Array<FeatureType>} */ (features);\n  }\n\n  /**\n   * Read the projection from the source.\n   *\n   * @param {Document|Element|Object|string} source Source.\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   * @api\n   * @override\n   */\n  readProjection(source) {\n    return this.dataProjection;\n  }\n\n  /**\n   * Sets the layers that features will be read from.\n   * @param {Array<string>} layers Layers.\n   * @api\n   */\n  setLayers(layers) {\n    this.layers_ = layers;\n  }\n}\n\n/**\n * Reader callback for parsing layers.\n * @param {number} tag The tag.\n * @param {Object} layers The layers object.\n * @param {PBF} pbf The PBF.\n */\nfunction layersPBFReader(tag, layers, pbf) {\n  if (tag === 3) {\n    const layer = {\n      keys: [],\n      values: [],\n      features: [],\n    };\n    const end = pbf.readVarint() + pbf.pos;\n    pbf.readFields(layerPBFReader, layer, end);\n    layer.length = layer.features.length;\n    if (layer.length) {\n      layers[layer.name] = layer;\n    }\n  }\n}\n\n/**\n * Reader callback for parsing layer.\n * @param {number} tag The tag.\n * @param {Object} layer The layer object.\n * @param {PBF} pbf The PBF.\n */\nfunction layerPBFReader(tag, layer, pbf) {\n  if (tag === 15) {\n    layer.version = pbf.readVarint();\n  } else if (tag === 1) {\n    layer.name = pbf.readString();\n  } else if (tag === 5) {\n    layer.extent = pbf.readVarint();\n  } else if (tag === 2) {\n    layer.features.push(pbf.pos);\n  } else if (tag === 3) {\n    layer.keys.push(pbf.readString());\n  } else if (tag === 4) {\n    let value = null;\n    const end = pbf.readVarint() + pbf.pos;\n    while (pbf.pos < end) {\n      tag = pbf.readVarint() >> 3;\n      value =\n        tag === 1\n          ? pbf.readString()\n          : tag === 2\n            ? pbf.readFloat()\n            : tag === 3\n              ? pbf.readDouble()\n              : tag === 4\n                ? pbf.readVarint64()\n                : tag === 5\n                  ? pbf.readVarint()\n                  : tag === 6\n                    ? pbf.readSVarint()\n                    : tag === 7\n                      ? pbf.readBoolean()\n                      : null;\n    }\n    layer.values.push(value);\n  }\n}\n\n/**\n * Reader callback for parsing feature.\n * @param {number} tag The tag.\n * @param {Object} feature The feature object.\n * @param {PBF} pbf The PBF.\n */\nfunction featurePBFReader(tag, feature, pbf) {\n  if (tag == 1) {\n    feature.id = pbf.readVarint();\n  } else if (tag == 2) {\n    const end = pbf.readVarint() + pbf.pos;\n    while (pbf.pos < end) {\n      const key = feature.layer.keys[pbf.readVarint()];\n      const value = feature.layer.values[pbf.readVarint()];\n      feature.properties[key] = value;\n    }\n  } else if (tag == 3) {\n    feature.type = pbf.readVarint();\n  } else if (tag == 4) {\n    feature.geometry = pbf.pos;\n  }\n}\n\n/**\n * Read a raw feature from the pbf offset stored at index `i` in the raw layer.\n * @param {PBF} pbf PBF.\n * @param {Object} layer Raw layer.\n * @param {number} i Index of the feature in the raw layer's `features` array.\n * @return {Object} Raw feature.\n */\nfunction readRawFeature(pbf, layer, i) {\n  pbf.pos = layer.features[i];\n  const end = pbf.readVarint() + pbf.pos;\n\n  const feature = {\n    layer: layer,\n    type: 0,\n    properties: {},\n  };\n  pbf.readFields(featurePBFReader, feature, end);\n  return feature;\n}\n\n/**\n * @param {number} type The raw feature's geometry type\n * @param {number} numEnds Number of ends of the flat coordinates of the\n * geometry.\n * @return {import(\"../render/Feature.js\").Type} The geometry type.\n */\nfunction getGeometryType(type, numEnds) {\n  /** @type {import(\"../render/Feature.js\").Type} */\n  let geometryType;\n  if (type === 1) {\n    geometryType = numEnds === 1 ? 'Point' : 'MultiPoint';\n  } else if (type === 2) {\n    geometryType = numEnds === 1 ? 'LineString' : 'MultiLineString';\n  } else if (type === 3) {\n    geometryType = 'Polygon';\n    // MultiPolygon not relevant for rendering - winding order determines\n    // outer rings of polygons.\n  }\n  return geometryType;\n}\n\nexport default MVT;\n","/**\n * @module ol/renderer/canvas/ImageLayer\n */\nimport ImageState from '../../ImageState.js';\nimport ViewHint from '../../ViewHint.js';\nimport {\n  containsCoordinate,\n  containsExtent,\n  getHeight,\n  getIntersection,\n  getWidth,\n  intersects as intersectsExtent,\n  isEmpty,\n} from '../../extent.js';\nimport {fromUserExtent} from '../../proj.js';\nimport {\n  apply as applyTransform,\n  compose as composeTransform,\n} from '../../transform.js';\nimport CanvasLayerRenderer from './Layer.js';\n\n/**\n * @classdesc\n * Canvas renderer for image layers.\n * @api\n */\nclass CanvasImageLayerRenderer extends CanvasLayerRenderer {\n  /**\n   * @param {import(\"../../layer/Image.js\").default} imageLayer Image layer.\n   */\n  constructor(imageLayer) {\n    super(imageLayer);\n\n    /**\n     * @protected\n     * @type {?import(\"../../Image.js\").default}\n     */\n    this.image = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedSourceRevision_ = 0;\n  }\n\n  /**\n   * @return {import('../../DataTile.js').ImageLike} Image.\n   */\n  getImage() {\n    return !this.image ? null : this.image.getImage();\n  }\n\n  /**\n   * Determine whether render should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrame(frameState) {\n    const layerState = frameState.layerStatesArray[frameState.layerIndex];\n    const pixelRatio = frameState.pixelRatio;\n    const viewState = frameState.viewState;\n    const viewResolution = viewState.resolution;\n\n    const imageSource = this.getLayer().getSource();\n\n    const hints = frameState.viewHints;\n\n    let renderedExtent = frameState.extent;\n    if (layerState.extent !== undefined) {\n      renderedExtent = getIntersection(\n        renderedExtent,\n        fromUserExtent(layerState.extent, viewState.projection),\n      );\n    }\n\n    if (\n      !hints[ViewHint.ANIMATING] &&\n      !hints[ViewHint.INTERACTING] &&\n      !isEmpty(renderedExtent)\n    ) {\n      if (imageSource) {\n        if (\n          !this.getLayer().rendered &&\n          this.renderedSourceRevision_ !== imageSource.getRevision()\n        ) {\n          this.image = null;\n        }\n        this.renderedSourceRevision_ = imageSource.getRevision();\n\n        const projection = viewState.projection;\n        const image = imageSource.getImage(\n          renderedExtent,\n          viewResolution,\n          pixelRatio,\n          projection,\n        );\n        if (image) {\n          if (this.loadImage(image)) {\n            this.image = image;\n          } else if (image.getState() === ImageState.EMPTY) {\n            this.image = null;\n          }\n        }\n      } else {\n        this.image = null;\n      }\n    }\n\n    return !!this.image;\n  }\n\n  /**\n   * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray} Data at the pixel location.\n   * @override\n   */\n  getData(pixel) {\n    const frameState = this.frameState;\n    if (!frameState) {\n      return null;\n    }\n\n    const layer = this.getLayer();\n    const coordinate = applyTransform(\n      frameState.pixelToCoordinateTransform,\n      pixel.slice(),\n    );\n\n    const layerExtent = layer.getExtent();\n    if (layerExtent) {\n      if (!containsCoordinate(layerExtent, coordinate)) {\n        return null;\n      }\n    }\n\n    const imageExtent = this.image.getExtent();\n    const img = this.image.getImage();\n\n    const imageMapWidth = getWidth(imageExtent);\n    const col = Math.floor(\n      img.width * ((coordinate[0] - imageExtent[0]) / imageMapWidth),\n    );\n    if (col < 0 || col >= img.width) {\n      return null;\n    }\n\n    const imageMapHeight = getHeight(imageExtent);\n    const row = Math.floor(\n      img.height * ((imageExtent[3] - coordinate[1]) / imageMapHeight),\n    );\n    if (row < 0 || row >= img.height) {\n      return null;\n    }\n\n    return this.getImageData(img, col, row);\n  }\n\n  /**\n   * Render the layer.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement} target Target that may be used to render content to.\n   * @return {HTMLElement} The rendered element.\n   * @override\n   */\n  renderFrame(frameState, target) {\n    const image = this.image;\n    const imageExtent = image.getExtent();\n    const imageResolution = image.getResolution();\n    const [imageResolutionX, imageResolutionY] = Array.isArray(imageResolution)\n      ? imageResolution\n      : [imageResolution, imageResolution];\n    const imagePixelRatio = image.getPixelRatio();\n    const layerState = frameState.layerStatesArray[frameState.layerIndex];\n    const pixelRatio = frameState.pixelRatio;\n    const viewState = frameState.viewState;\n    const viewCenter = viewState.center;\n    const viewResolution = viewState.resolution;\n    const scaleX =\n      (pixelRatio * imageResolutionX) / (viewResolution * imagePixelRatio);\n    const scaleY =\n      (pixelRatio * imageResolutionY) / (viewResolution * imagePixelRatio);\n\n    this.prepareContainer(frameState, target);\n\n    // desired dimensions of the canvas in pixels\n    const width = this.context.canvas.width;\n    const height = this.context.canvas.height;\n\n    const context = this.getRenderContext(frameState);\n\n    // clipped rendering if layer extent is set\n    let clipped = false;\n    let render = true;\n    if (layerState.extent) {\n      const layerExtent = fromUserExtent(\n        layerState.extent,\n        viewState.projection,\n      );\n      render = intersectsExtent(layerExtent, frameState.extent);\n      clipped = render && !containsExtent(layerExtent, frameState.extent);\n      if (clipped) {\n        this.clipUnrotated(context, frameState, layerExtent);\n      }\n    }\n\n    const img = image.getImage();\n\n    const transform = composeTransform(\n      this.tempTransform,\n      width / 2,\n      height / 2,\n      scaleX,\n      scaleY,\n      0,\n      (imagePixelRatio * (imageExtent[0] - viewCenter[0])) / imageResolutionX,\n      (imagePixelRatio * (viewCenter[1] - imageExtent[3])) / imageResolutionY,\n    );\n\n    this.renderedResolution = (imageResolutionY * pixelRatio) / imagePixelRatio;\n\n    const dw = img.width * transform[0];\n    const dh = img.height * transform[3];\n\n    if (!this.getLayer().getSource().getInterpolate()) {\n      context.imageSmoothingEnabled = false;\n    }\n\n    this.preRender(context, frameState);\n    if (render && dw >= 0.5 && dh >= 0.5) {\n      const dx = transform[4];\n      const dy = transform[5];\n      const opacity = layerState.opacity;\n      if (opacity !== 1) {\n        context.save();\n        context.globalAlpha = opacity;\n      }\n      context.drawImage(img, 0, 0, +img.width, +img.height, dx, dy, dw, dh);\n      if (opacity !== 1) {\n        context.restore();\n      }\n    }\n    this.postRender(this.context, frameState);\n\n    if (clipped) {\n      context.restore();\n    }\n    context.imageSmoothingEnabled = true;\n    return this.container;\n  }\n}\n\nexport default CanvasImageLayerRenderer;\n","/**\n * @module ol/layer/BaseImage\n */\nimport Layer from './Layer.js';\n\n/**\n * @template {import(\"../source/Image.js\").default} ImageSourceType\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering.  The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering.  At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use {@link import(\"../Map.js\").default#addLayer map.addLayer()}.\n * @property {ImageSourceType} [source] Source for this layer.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @classdesc\n * Server-rendered images that are available for arbitrary extents and\n * resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Image.js\").default} ImageSourceType\n * @template {import(\"../renderer/Layer.js\").default} RendererType\n * @extends {Layer<ImageSourceType, RendererType>}\n * @api\n */\nclass BaseImageLayer extends Layer {\n  /**\n   * @param {Options<ImageSourceType>} [options] Layer options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n    super(options);\n  }\n}\n\nexport default BaseImageLayer;\n","/**\n * @module ol/layer/Image\n */\nimport CanvasImageLayerRenderer from '../renderer/canvas/ImageLayer.js';\nimport BaseImageLayer from './BaseImage.js';\n\n/**\n * @classdesc\n * Server-rendered images that are available for arbitrary extents and\n * resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Image.js\").default} ImageSourceType\n * @extends {BaseImageLayer<ImageSourceType, CanvasImageLayerRenderer>}\n * @api\n */\nclass ImageLayer extends BaseImageLayer {\n  /**\n   * @param {import(\"./BaseImage.js\").Options<ImageSourceType>} [options] Layer options.\n   */\n  constructor(options) {\n    super(options);\n  }\n\n  /**\n   * @override\n   */\n  createRenderer() {\n    return new CanvasImageLayerRenderer(this);\n  }\n\n  /**\n   * Get data for a pixel location.  A four element RGBA array will be returned.  For requests outside the\n   * layer extent, `null` will be returned.  Data for an image can only be retrieved if the\n   * source's `crossOrigin` property is set.\n   *\n   * ```js\n   * // display layer data on every pointer move\n   * map.on('pointermove', (event) => {\n   *   console.log(layer.getData(event.pixel));\n   * });\n   * ```\n   * @param {import(\"../pixel\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n   * @api\n   * @override\n   */\n  getData(pixel) {\n    return super.getData(pixel);\n  }\n}\n\nexport default ImageLayer;\n","/**\n * @module ol/DataTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\n\n/**\n * @typedef {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas|HTMLVideoElement|ImageBitmap} ImageLike\n */\n\n/**\n * @typedef {Uint8Array|Uint8ClampedArray|Float32Array|DataView} ArrayLike\n */\n\n/**\n * Data that can be used with a DataTile.\n * @typedef {ArrayLike|ImageLike} Data\n */\n\n/**\n * @param {Data} data Tile data.\n * @return {ImageLike|null} The image-like data.\n */\nexport function asImageLike(data) {\n  return data instanceof Image ||\n    data instanceof HTMLCanvasElement ||\n    data instanceof HTMLVideoElement ||\n    data instanceof ImageBitmap\n    ? data\n    : null;\n}\n\n/**\n * @param {Data} data Tile data.\n * @return {ArrayLike|null} The array-like data.\n */\nexport function asArrayLike(data) {\n  return data instanceof Uint8Array ||\n    data instanceof Uint8ClampedArray ||\n    data instanceof Float32Array ||\n    data instanceof DataView\n    ? data\n    : null;\n}\n\n/**\n * This is set as the cancellation reason when a tile is disposed.\n */\nexport const disposedError = new Error('disposed');\n\n/**\n * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D|null}\n */\nlet sharedContext = null;\n\n/**\n * @param {ImageLike} image The image.\n * @return {Uint8ClampedArray} The data.\n */\nexport function toArray(image) {\n  if (!sharedContext) {\n    sharedContext = createCanvasContext2D(\n      image.width,\n      image.height,\n      undefined,\n      {willReadFrequently: true},\n    );\n  }\n  const canvas = sharedContext.canvas;\n  const width = image.width;\n  if (canvas.width !== width) {\n    canvas.width = width;\n  }\n  const height = image.height;\n  if (canvas.height !== height) {\n    canvas.height = height;\n  }\n  sharedContext.clearRect(0, 0, width, height);\n  sharedContext.drawImage(image, 0, 0);\n  return sharedContext.getImageData(0, 0, width, height).data;\n}\n\n/**\n * @type {import('./size.js').Size}\n */\nconst defaultSize = [256, 256];\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @property {function(): Promise<Data>} loader Data loader.  For loaders that generate images,\n * the promise should not resolve until the image is loaded.\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling.  By default,\n * the nearest neighbor is used when resampling.\n * @property {import('./size.js').Size} [size=[256, 256]] Tile size.\n * @property {AbortController} [controller] An abort controller.\n * @api\n */\n\nclass DataTile extends Tile {\n  /**\n   * @param {Options} options Tile options.\n   */\n  constructor(options) {\n    const state = TileState.IDLE;\n\n    super(options.tileCoord, state, {\n      transition: options.transition,\n      interpolate: options.interpolate,\n    });\n\n    /**\n     * @type {function(): Promise<Data>}\n     * @private\n     */\n    this.loader_ = options.loader;\n\n    /**\n     * @type {Data}\n     * @private\n     */\n    this.data_ = null;\n\n    /**\n     * @type {Error}\n     * @private\n     */\n    this.error_ = null;\n\n    /**\n     * @type {import('./size.js').Size|null}\n     * @private\n     */\n    this.size_ = options.size || null;\n\n    /**\n     * @type {AbortController|null}\n     * @private\n     */\n    this.controller_ = options.controller || null;\n  }\n\n  /**\n   * Get the tile size.\n   * @return {import('./size.js').Size} Tile size.\n   */\n  getSize() {\n    if (this.size_) {\n      return this.size_;\n    }\n    const imageData = asImageLike(this.data_);\n    if (imageData) {\n      return [imageData.width, imageData.height];\n    }\n    return defaultSize;\n  }\n\n  /**\n   * Get the data for the tile.\n   * @return {Data} Tile data.\n   * @api\n   */\n  getData() {\n    return this.data_;\n  }\n\n  /**\n   * Get any loading error.\n   * @return {Error} Loading error.\n   * @api\n   */\n  getError() {\n    return this.error_;\n  }\n\n  /**\n   * Load the tile data.\n   * @api\n   * @override\n   */\n  load() {\n    if (this.state !== TileState.IDLE && this.state !== TileState.ERROR) {\n      return;\n    }\n    this.state = TileState.LOADING;\n    this.changed();\n\n    const self = this;\n    this.loader_()\n      .then(function (data) {\n        self.data_ = data;\n        self.state = TileState.LOADED;\n        self.changed();\n      })\n      .catch(function (error) {\n        self.error_ = error;\n        self.state = TileState.ERROR;\n        self.changed();\n      });\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    if (this.controller_) {\n      this.controller_.abort(disposedError);\n      this.controller_ = null;\n    }\n    super.disposeInternal();\n  }\n}\n\nexport default DataTile;\n","/**\n * @module ol/reproj\n */\nimport {createCanvasContext2D, releaseCanvas} from './dom.js';\nimport {\n  containsCoordinate,\n  createEmpty,\n  extend,\n  forEachCorner,\n  getCenter,\n  getHeight,\n  getTopLeft,\n  getWidth,\n} from './extent.js';\nimport {solveLinearSystem} from './math.js';\nimport {getPointResolution, transform} from './proj.js';\n\nlet brokenDiagonalRendering_;\n\n/**\n * @type {Array<HTMLCanvasElement|OffscreenCanvas>}\n */\nexport const canvasPool = [];\n\n/**\n * This draws a small triangle into a canvas by setting the triangle as the clip region\n * and then drawing a (too large) rectangle\n *\n * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} ctx The context in which to draw the triangle\n * @param {number} u1 The x-coordinate of the second point. The first point is 0,0.\n * @param {number} v1 The y-coordinate of the second point.\n * @param {number} u2 The x-coordinate of the third point.\n * @param {number} v2 The y-coordinate of the third point.\n */\nfunction drawTestTriangle(ctx, u1, v1, u2, v2) {\n  ctx.beginPath();\n  ctx.moveTo(0, 0);\n  ctx.lineTo(u1, v1);\n  ctx.lineTo(u2, v2);\n  ctx.closePath();\n  ctx.save();\n  ctx.clip();\n  ctx.fillRect(0, 0, Math.max(u1, u2) + 1, Math.max(v1, v2));\n  ctx.restore();\n}\n\n/**\n * Given the data from getImageData, see if the right values appear at the provided offset.\n * Returns true if either the color or transparency is off\n *\n * @param {Uint8ClampedArray} data The data returned from getImageData\n * @param {number} offset The pixel offset from the start of data.\n * @return {boolean} true if the diagonal rendering is broken\n */\nfunction verifyBrokenDiagonalRendering(data, offset) {\n  // the values ought to be close to the rgba(210, 0, 0, 0.75)\n  return (\n    Math.abs(data[offset * 4] - 210) > 2 ||\n    Math.abs(data[offset * 4 + 3] - 0.75 * 255) > 2\n  );\n}\n\n/**\n * Determines if the current browser configuration can render triangular clip regions correctly.\n * This value is cached so the function is only expensive the first time called.\n * Firefox on Windows (as of now) does not if HWA is enabled. See https://bugzilla.mozilla.org/show_bug.cgi?id=1606976\n * Chrome works, and everything seems to work on OSX and Android. This function caches the\n * result. I suppose that it is conceivably possible that a browser might flip modes while the app is\n * running, but lets hope not.\n *\n * @return {boolean} true if the Diagonal Rendering is broken.\n */\nfunction isBrokenDiagonalRendering() {\n  if (brokenDiagonalRendering_ === undefined) {\n    const ctx = createCanvasContext2D(6, 6, canvasPool);\n    ctx.globalCompositeOperation = 'lighter';\n    ctx.fillStyle = 'rgba(210, 0, 0, 0.75)';\n    drawTestTriangle(ctx, 4, 5, 4, 0);\n    drawTestTriangle(ctx, 4, 5, 0, 5);\n    const data = ctx.getImageData(0, 0, 3, 3).data;\n    brokenDiagonalRendering_ =\n      verifyBrokenDiagonalRendering(data, 0) ||\n      verifyBrokenDiagonalRendering(data, 4) ||\n      verifyBrokenDiagonalRendering(data, 8);\n    releaseCanvas(ctx);\n    canvasPool.push(ctx.canvas);\n  }\n\n  return brokenDiagonalRendering_;\n}\n\n/**\n * Calculates ideal resolution to use from the source in order to achieve\n * pixel mapping as close as possible to 1:1 during reprojection.\n * The resolution is calculated regardless of what resolutions\n * are actually available in the dataset (TileGrid, Image, ...).\n *\n * @param {import(\"./proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"./proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"./coordinate.js\").Coordinate} targetCenter Target center.\n * @param {number} targetResolution Target resolution.\n * @return {number} The best resolution to use. Can be +-Infinity, NaN or 0.\n */\nexport function calculateSourceResolution(\n  sourceProj,\n  targetProj,\n  targetCenter,\n  targetResolution,\n) {\n  const sourceCenter = transform(targetCenter, targetProj, sourceProj);\n\n  // calculate the ideal resolution of the source data\n  let sourceResolution = getPointResolution(\n    targetProj,\n    targetResolution,\n    targetCenter,\n  );\n\n  const targetMetersPerUnit = targetProj.getMetersPerUnit();\n  if (targetMetersPerUnit !== undefined) {\n    sourceResolution *= targetMetersPerUnit;\n  }\n  const sourceMetersPerUnit = sourceProj.getMetersPerUnit();\n  if (sourceMetersPerUnit !== undefined) {\n    sourceResolution /= sourceMetersPerUnit;\n  }\n\n  // Based on the projection properties, the point resolution at the specified\n  // coordinates may be slightly different. We need to reverse-compensate this\n  // in order to achieve optimal results.\n\n  const sourceExtent = sourceProj.getExtent();\n  if (!sourceExtent || containsCoordinate(sourceExtent, sourceCenter)) {\n    const compensationFactor =\n      getPointResolution(sourceProj, sourceResolution, sourceCenter) /\n      sourceResolution;\n    if (isFinite(compensationFactor) && compensationFactor > 0) {\n      sourceResolution /= compensationFactor;\n    }\n  }\n\n  return sourceResolution;\n}\n\n/**\n * Calculates ideal resolution to use from the source in order to achieve\n * pixel mapping as close as possible to 1:1 during reprojection.\n * The resolution is calculated regardless of what resolutions\n * are actually available in the dataset (TileGrid, Image, ...).\n *\n * @param {import(\"./proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"./proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"./extent.js\").Extent} targetExtent Target extent\n * @param {number} targetResolution Target resolution.\n * @return {number} The best resolution to use. Can be +-Infinity, NaN or 0.\n */\nexport function calculateSourceExtentResolution(\n  sourceProj,\n  targetProj,\n  targetExtent,\n  targetResolution,\n) {\n  const targetCenter = getCenter(targetExtent);\n  let sourceResolution = calculateSourceResolution(\n    sourceProj,\n    targetProj,\n    targetCenter,\n    targetResolution,\n  );\n\n  if (!isFinite(sourceResolution) || sourceResolution <= 0) {\n    forEachCorner(targetExtent, function (corner) {\n      sourceResolution = calculateSourceResolution(\n        sourceProj,\n        targetProj,\n        corner,\n        targetResolution,\n      );\n      return isFinite(sourceResolution) && sourceResolution > 0;\n    });\n  }\n\n  return sourceResolution;\n}\n\n/**\n * @typedef {Object} ImageExtent\n * @property {import(\"./extent.js\").Extent} extent Extent.\n * @property {import(\"./extent.js\").Extent} [clipExtent] Clip extent.\n * @property {import('./DataTile.js').ImageLike} image Image.\n */\n\n/**\n * Renders the source data into new canvas based on the triangulation.\n *\n * @param {number} width Width of the canvas.\n * @param {number} height Height of the canvas.\n * @param {number} pixelRatio Pixel ratio.\n * @param {number} sourceResolution Source resolution.\n * @param {import(\"./extent.js\").Extent} sourceExtent Extent of the data source.\n * @param {number} targetResolution Target resolution.\n * @param {import(\"./extent.js\").Extent} targetExtent Target extent.\n * @param {import(\"./reproj/Triangulation.js\").default} triangulation Calculated triangulation.\n * @param {Array<ImageExtent>} sources Array of sources.\n * @param {number} gutter Gutter of the sources.\n * @param {boolean} [renderEdges] Render reprojection edges.\n * @param {boolean} [interpolate] Use linear interpolation when resampling.\n * @param {boolean} [drawSingle] Draw single source images directly without stitchContext.\n * @param {boolean} [clipExtent] Clip stitchContext to sourceExtent.\n * @return {HTMLCanvasElement|OffscreenCanvas} Canvas with reprojected data.\n */\nexport function render(\n  width,\n  height,\n  pixelRatio,\n  sourceResolution,\n  sourceExtent,\n  targetResolution,\n  targetExtent,\n  triangulation,\n  sources,\n  gutter,\n  renderEdges,\n  interpolate,\n  drawSingle,\n  clipExtent,\n) {\n  const context = createCanvasContext2D(\n    Math.round(pixelRatio * width),\n    Math.round(pixelRatio * height),\n    canvasPool,\n  );\n\n  if (!interpolate) {\n    context.imageSmoothingEnabled = false;\n  }\n\n  if (sources.length === 0) {\n    return context.canvas;\n  }\n\n  context.scale(pixelRatio, pixelRatio);\n\n  function pixelRound(value) {\n    return Math.round(value * pixelRatio) / pixelRatio;\n  }\n\n  context.globalCompositeOperation = 'lighter';\n\n  const sourceDataExtent = createEmpty();\n  sources.forEach(function (src, i, arr) {\n    extend(sourceDataExtent, src.extent);\n  });\n\n  let stitchContext;\n  const stitchScale = pixelRatio / sourceResolution;\n  // Round up Float32 scale values to prevent interpolation in Firefox.\n  const inverseScale = (interpolate ? 1 : 1 + Math.pow(2, -24)) / stitchScale;\n\n  if (!drawSingle || sources.length !== 1 || gutter !== 0) {\n    stitchContext = createCanvasContext2D(\n      Math.round(getWidth(sourceDataExtent) * stitchScale),\n      Math.round(getHeight(sourceDataExtent) * stitchScale),\n      canvasPool,\n    );\n\n    if (!interpolate) {\n      stitchContext.imageSmoothingEnabled = false;\n    }\n    if (sourceExtent && clipExtent) {\n      const xPos = (sourceExtent[0] - sourceDataExtent[0]) * stitchScale;\n      const yPos = -(sourceExtent[3] - sourceDataExtent[3]) * stitchScale;\n      const width = getWidth(sourceExtent) * stitchScale;\n      const height = getHeight(sourceExtent) * stitchScale;\n      stitchContext.rect(xPos, yPos, width, height);\n      stitchContext.clip();\n    }\n\n    sources.forEach(function (src, i, arr) {\n      // This test should never fail -- but it does. Need to find a fix the upstream condition\n      if (src.image.width > 0 && src.image.height > 0) {\n        if (src.clipExtent) {\n          stitchContext.save();\n          const xPos = (src.clipExtent[0] - sourceDataExtent[0]) * stitchScale;\n          const yPos = -(src.clipExtent[3] - sourceDataExtent[3]) * stitchScale;\n          const width = getWidth(src.clipExtent) * stitchScale;\n          const height = getHeight(src.clipExtent) * stitchScale;\n          stitchContext.rect(\n            interpolate ? xPos : Math.round(xPos),\n            interpolate ? yPos : Math.round(yPos),\n            interpolate ? width : Math.round(xPos + width) - Math.round(xPos),\n            interpolate ? height : Math.round(yPos + height) - Math.round(yPos),\n          );\n          stitchContext.clip();\n        }\n\n        const xPos = (src.extent[0] - sourceDataExtent[0]) * stitchScale;\n        const yPos = -(src.extent[3] - sourceDataExtent[3]) * stitchScale;\n        const srcWidth = getWidth(src.extent) * stitchScale;\n        const srcHeight = getHeight(src.extent) * stitchScale;\n        stitchContext.drawImage(\n          src.image,\n          gutter,\n          gutter,\n          src.image.width - 2 * gutter,\n          src.image.height - 2 * gutter,\n          interpolate ? xPos : Math.round(xPos),\n          interpolate ? yPos : Math.round(yPos),\n          interpolate\n            ? srcWidth\n            : Math.round(xPos + srcWidth) - Math.round(xPos),\n          interpolate\n            ? srcHeight\n            : Math.round(yPos + srcHeight) - Math.round(yPos),\n        );\n\n        if (src.clipExtent) {\n          stitchContext.restore();\n        }\n      }\n    });\n  }\n  const targetTopLeft = getTopLeft(targetExtent);\n\n  triangulation.getTriangles().forEach(function (triangle, i, arr) {\n    /* Calculate affine transform (src -> dst)\n     * Resulting matrix can be used to transform coordinate\n     * from `sourceProjection` to destination pixels.\n     *\n     * To optimize number of context calls and increase numerical stability,\n     * we also do the following operations:\n     * trans(-topLeftExtentCorner), scale(1 / targetResolution), scale(1, -1)\n     * here before solving the linear system so [ui, vi] are pixel coordinates.\n     *\n     * Src points: xi, yi\n     * Dst points: ui, vi\n     * Affine coefficients: aij\n     *\n     * | x0 y0 1  0  0 0 |   |a00|   |u0|\n     * | x1 y1 1  0  0 0 |   |a01|   |u1|\n     * | x2 y2 1  0  0 0 | x |a02| = |u2|\n     * |  0  0 0 x0 y0 1 |   |a10|   |v0|\n     * |  0  0 0 x1 y1 1 |   |a11|   |v1|\n     * |  0  0 0 x2 y2 1 |   |a12|   |v2|\n     */\n    const source = triangle.source;\n    const target = triangle.target;\n    let x0 = source[0][0],\n      y0 = source[0][1];\n    let x1 = source[1][0],\n      y1 = source[1][1];\n    let x2 = source[2][0],\n      y2 = source[2][1];\n    // Make sure that everything is on pixel boundaries\n    const u0 = pixelRound((target[0][0] - targetTopLeft[0]) / targetResolution);\n    const v0 = pixelRound(\n      -(target[0][1] - targetTopLeft[1]) / targetResolution,\n    );\n    const u1 = pixelRound((target[1][0] - targetTopLeft[0]) / targetResolution);\n    const v1 = pixelRound(\n      -(target[1][1] - targetTopLeft[1]) / targetResolution,\n    );\n    const u2 = pixelRound((target[2][0] - targetTopLeft[0]) / targetResolution);\n    const v2 = pixelRound(\n      -(target[2][1] - targetTopLeft[1]) / targetResolution,\n    );\n\n    // Shift all the source points to improve numerical stability\n    // of all the subsequent calculations. The [x0, y0] is used here.\n    // This is also used to simplify the linear system.\n    const sourceNumericalShiftX = x0;\n    const sourceNumericalShiftY = y0;\n    x0 = 0;\n    y0 = 0;\n    x1 -= sourceNumericalShiftX;\n    y1 -= sourceNumericalShiftY;\n    x2 -= sourceNumericalShiftX;\n    y2 -= sourceNumericalShiftY;\n\n    const augmentedMatrix = [\n      [x1, y1, 0, 0, u1 - u0],\n      [x2, y2, 0, 0, u2 - u0],\n      [0, 0, x1, y1, v1 - v0],\n      [0, 0, x2, y2, v2 - v0],\n    ];\n    const affineCoefs = solveLinearSystem(augmentedMatrix);\n    if (!affineCoefs) {\n      return;\n    }\n\n    context.save();\n    context.beginPath();\n\n    if (isBrokenDiagonalRendering() || !interpolate) {\n      // Make sure that all lines are horizontal or vertical\n      context.moveTo(u1, v1);\n      // This is the diagonal line. Do it in 4 steps\n      const steps = 4;\n      const ud = u0 - u1;\n      const vd = v0 - v1;\n      for (let step = 0; step < steps; step++) {\n        // Go horizontally\n        context.lineTo(\n          u1 + pixelRound(((step + 1) * ud) / steps),\n          v1 + pixelRound((step * vd) / (steps - 1)),\n        );\n        // Go vertically\n        if (step != steps - 1) {\n          context.lineTo(\n            u1 + pixelRound(((step + 1) * ud) / steps),\n            v1 + pixelRound(((step + 1) * vd) / (steps - 1)),\n          );\n        }\n      }\n      // We are almost at u0r, v0r\n      context.lineTo(u2, v2);\n    } else {\n      context.moveTo(u1, v1);\n      context.lineTo(u0, v0);\n      context.lineTo(u2, v2);\n    }\n\n    context.clip();\n\n    context.transform(\n      affineCoefs[0],\n      affineCoefs[2],\n      affineCoefs[1],\n      affineCoefs[3],\n      u0,\n      v0,\n    );\n\n    context.translate(\n      sourceDataExtent[0] - sourceNumericalShiftX,\n      sourceDataExtent[3] - sourceNumericalShiftY,\n    );\n\n    let image;\n    if (stitchContext) {\n      image = stitchContext.canvas;\n      context.scale(inverseScale, -inverseScale);\n    } else {\n      const source = sources[0];\n      const extent = source.extent;\n      image = source.image;\n      context.scale(\n        getWidth(extent) / image.width,\n        -getHeight(extent) / image.height,\n      );\n    }\n\n    context.drawImage(image, 0, 0);\n    context.restore();\n  });\n\n  if (stitchContext) {\n    releaseCanvas(stitchContext);\n    canvasPool.push(stitchContext.canvas);\n  }\n\n  if (renderEdges) {\n    context.save();\n\n    context.globalCompositeOperation = 'source-over';\n    context.strokeStyle = 'black';\n    context.lineWidth = 1;\n\n    triangulation.getTriangles().forEach(function (triangle, i, arr) {\n      const target = triangle.target;\n      const u0 = (target[0][0] - targetTopLeft[0]) / targetResolution;\n      const v0 = -(target[0][1] - targetTopLeft[1]) / targetResolution;\n      const u1 = (target[1][0] - targetTopLeft[0]) / targetResolution;\n      const v1 = -(target[1][1] - targetTopLeft[1]) / targetResolution;\n      const u2 = (target[2][0] - targetTopLeft[0]) / targetResolution;\n      const v2 = -(target[2][1] - targetTopLeft[1]) / targetResolution;\n\n      context.beginPath();\n      context.moveTo(u1, v1);\n      context.lineTo(u0, v0);\n      context.lineTo(u2, v2);\n      context.closePath();\n      context.stroke();\n    });\n\n    context.restore();\n  }\n  return context.canvas;\n}\n","/**\n * @module ol/reproj/Triangulation\n */\nimport {\n  boundingExtent,\n  createEmpty,\n  extendCoordinate,\n  getArea,\n  getBottomLeft,\n  getBottomRight,\n  getTopLeft,\n  getTopRight,\n  getWidth,\n  intersects,\n} from '../extent.js';\nimport {modulo} from '../math.js';\nimport {\n  createTransformFromCoordinateTransform,\n  getTransform,\n  transform,\n} from '../proj.js';\nimport {apply as applyMatrix} from '../transform.js';\n\n/**\n * Single triangle; consists of 3 source points and 3 target points.\n * @typedef {Object} Triangle\n * @property {Array<import(\"../coordinate.js\").Coordinate>} source Source.\n * @property {Array<import(\"../coordinate.js\").Coordinate>} target Target.\n */\n\n/**\n * Maximum number of subdivision steps during raster reprojection triangulation.\n * Prevents high memory usage and large number of proj4 calls (for certain\n * transformations and areas). At most `2*(2^this)` triangles are created for\n * each triangulated extent (tile/image).\n * @type {number}\n */\nconst MAX_SUBDIVISION = 10;\n\n/**\n * Maximum allowed size of triangle relative to world width. When transforming\n * corners of world extent between certain projections, the resulting\n * triangulation seems to have zero error and no subdivision is performed. If\n * the triangle width is more than this (relative to world width; 0-1),\n * subdivison is forced (up to `MAX_SUBDIVISION`). Default is `0.25`.\n * @type {number}\n */\nconst MAX_TRIANGLE_WIDTH = 0.25;\n\n/**\n * @classdesc\n * Class containing triangulation of the given target extent.\n * Used for determining source data and the reprojection itself.\n */\nclass Triangulation {\n  /**\n   * @param {import(\"../proj/Projection.js\").default} sourceProj Source projection.\n   * @param {import(\"../proj/Projection.js\").default} targetProj Target projection.\n   * @param {import(\"../extent.js\").Extent} targetExtent Target extent to triangulate.\n   * @param {import(\"../extent.js\").Extent} maxSourceExtent Maximal source extent that can be used.\n   * @param {number} errorThreshold Acceptable error (in source units).\n   * @param {?number} destinationResolution The (optional) resolution of the destination.\n   * @param {import(\"../transform.js\").Transform} [sourceMatrix] Source transform matrix.\n   */\n  constructor(\n    sourceProj,\n    targetProj,\n    targetExtent,\n    maxSourceExtent,\n    errorThreshold,\n    destinationResolution,\n    sourceMatrix,\n  ) {\n    /**\n     * @type {import(\"../proj/Projection.js\").default}\n     * @private\n     */\n    this.sourceProj_ = sourceProj;\n\n    /**\n     * @type {import(\"../proj/Projection.js\").default}\n     * @private\n     */\n    this.targetProj_ = targetProj;\n\n    /** @type {!Object<string, import(\"../coordinate.js\").Coordinate>} */\n    let transformInvCache = {};\n    const transformInv = sourceMatrix\n      ? createTransformFromCoordinateTransform((input) =>\n          applyMatrix(\n            sourceMatrix,\n            transform(input, this.targetProj_, this.sourceProj_),\n          ),\n        )\n      : getTransform(this.targetProj_, this.sourceProj_);\n\n    /**\n     * @param {import(\"../coordinate.js\").Coordinate} c A coordinate.\n     * @return {import(\"../coordinate.js\").Coordinate} Transformed coordinate.\n     * @private\n     */\n    this.transformInv_ = function (c) {\n      const key = c[0] + '/' + c[1];\n      if (!transformInvCache[key]) {\n        transformInvCache[key] = transformInv(c);\n      }\n      return transformInvCache[key];\n    };\n\n    /**\n     * @type {import(\"../extent.js\").Extent}\n     * @private\n     */\n    this.maxSourceExtent_ = maxSourceExtent;\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.errorThresholdSquared_ = errorThreshold * errorThreshold;\n\n    /**\n     * @type {Array<Triangle>}\n     * @private\n     */\n    this.triangles_ = [];\n\n    /**\n     * Indicates that the triangulation crosses edge of the source projection.\n     * @type {boolean}\n     * @private\n     */\n    this.wrapsXInSource_ = false;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.canWrapXInSource_ =\n      this.sourceProj_.canWrapX() &&\n      !!maxSourceExtent &&\n      !!this.sourceProj_.getExtent() &&\n      getWidth(maxSourceExtent) >= getWidth(this.sourceProj_.getExtent());\n\n    /**\n     * @type {?number}\n     * @private\n     */\n    this.sourceWorldWidth_ = this.sourceProj_.getExtent()\n      ? getWidth(this.sourceProj_.getExtent())\n      : null;\n\n    /**\n     * @type {?number}\n     * @private\n     */\n    this.targetWorldWidth_ = this.targetProj_.getExtent()\n      ? getWidth(this.targetProj_.getExtent())\n      : null;\n\n    const destinationTopLeft = getTopLeft(targetExtent);\n    const destinationTopRight = getTopRight(targetExtent);\n    const destinationBottomRight = getBottomRight(targetExtent);\n    const destinationBottomLeft = getBottomLeft(targetExtent);\n    const sourceTopLeft = this.transformInv_(destinationTopLeft);\n    const sourceTopRight = this.transformInv_(destinationTopRight);\n    const sourceBottomRight = this.transformInv_(destinationBottomRight);\n    const sourceBottomLeft = this.transformInv_(destinationBottomLeft);\n\n    /*\n     * The maxSubdivision controls how many splittings of the target area can\n     * be done. The idea here is to do a linear mapping of the target areas\n     * but the actual overall reprojection (can be) extremely non-linear. The\n     * default value of MAX_SUBDIVISION was chosen based on mapping a 256x256\n     * tile size. However this function is also called to remap canvas rendered\n     * layers which can be much larger. This calculation increases the maxSubdivision\n     * value by the right factor so that each 256x256 pixel area has\n     * MAX_SUBDIVISION divisions.\n     */\n    const maxSubdivision =\n      MAX_SUBDIVISION +\n      (destinationResolution\n        ? Math.max(\n            0,\n            Math.ceil(\n              Math.log2(\n                getArea(targetExtent) /\n                  (destinationResolution * destinationResolution * 256 * 256),\n              ),\n            ),\n          )\n        : 0);\n\n    this.addQuad_(\n      destinationTopLeft,\n      destinationTopRight,\n      destinationBottomRight,\n      destinationBottomLeft,\n      sourceTopLeft,\n      sourceTopRight,\n      sourceBottomRight,\n      sourceBottomLeft,\n      maxSubdivision,\n    );\n\n    if (this.wrapsXInSource_) {\n      let leftBound = Infinity;\n      this.triangles_.forEach(function (triangle, i, arr) {\n        leftBound = Math.min(\n          leftBound,\n          triangle.source[0][0],\n          triangle.source[1][0],\n          triangle.source[2][0],\n        );\n      });\n\n      // Shift triangles to be as close to `leftBound` as possible\n      // (if the distance is more than `worldWidth / 2` it can be closer.\n      this.triangles_.forEach((triangle) => {\n        if (\n          Math.max(\n            triangle.source[0][0],\n            triangle.source[1][0],\n            triangle.source[2][0],\n          ) -\n            leftBound >\n          this.sourceWorldWidth_ / 2\n        ) {\n          const newTriangle = [\n            [triangle.source[0][0], triangle.source[0][1]],\n            [triangle.source[1][0], triangle.source[1][1]],\n            [triangle.source[2][0], triangle.source[2][1]],\n          ];\n          if (newTriangle[0][0] - leftBound > this.sourceWorldWidth_ / 2) {\n            newTriangle[0][0] -= this.sourceWorldWidth_;\n          }\n          if (newTriangle[1][0] - leftBound > this.sourceWorldWidth_ / 2) {\n            newTriangle[1][0] -= this.sourceWorldWidth_;\n          }\n          if (newTriangle[2][0] - leftBound > this.sourceWorldWidth_ / 2) {\n            newTriangle[2][0] -= this.sourceWorldWidth_;\n          }\n\n          // Rarely (if the extent contains both the dateline and prime meridian)\n          // the shift can in turn break some triangles.\n          // Detect this here and don't shift in such cases.\n          const minX = Math.min(\n            newTriangle[0][0],\n            newTriangle[1][0],\n            newTriangle[2][0],\n          );\n          const maxX = Math.max(\n            newTriangle[0][0],\n            newTriangle[1][0],\n            newTriangle[2][0],\n          );\n          if (maxX - minX < this.sourceWorldWidth_ / 2) {\n            triangle.source = newTriangle;\n          }\n        }\n      });\n    }\n\n    transformInvCache = {};\n  }\n\n  /**\n   * Adds triangle to the triangulation.\n   * @param {import(\"../coordinate.js\").Coordinate} a The target a coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} b The target b coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} c The target c coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} aSrc The source a coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} bSrc The source b coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} cSrc The source c coordinate.\n   * @private\n   */\n  addTriangle_(a, b, c, aSrc, bSrc, cSrc) {\n    this.triangles_.push({\n      source: [aSrc, bSrc, cSrc],\n      target: [a, b, c],\n    });\n  }\n\n  /**\n   * Adds quad (points in clock-wise order) to the triangulation\n   * (and reprojects the vertices) if valid.\n   * Performs quad subdivision if needed to increase precision.\n   *\n   * @param {import(\"../coordinate.js\").Coordinate} a The target a coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} b The target b coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} c The target c coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} d The target d coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} aSrc The source a coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} bSrc The source b coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} cSrc The source c coordinate.\n   * @param {import(\"../coordinate.js\").Coordinate} dSrc The source d coordinate.\n   * @param {number} maxSubdivision Maximal allowed subdivision of the quad.\n   * @private\n   */\n  addQuad_(a, b, c, d, aSrc, bSrc, cSrc, dSrc, maxSubdivision) {\n    const sourceQuadExtent = boundingExtent([aSrc, bSrc, cSrc, dSrc]);\n    const sourceCoverageX = this.sourceWorldWidth_\n      ? getWidth(sourceQuadExtent) / this.sourceWorldWidth_\n      : null;\n    const sourceWorldWidth = /** @type {number} */ (this.sourceWorldWidth_);\n\n    // when the quad is wrapped in the source projection\n    // it covers most of the projection extent, but not fully\n    const wrapsX =\n      this.sourceProj_.canWrapX() &&\n      sourceCoverageX > 0.5 &&\n      sourceCoverageX < 1;\n\n    let needsSubdivision = false;\n\n    if (maxSubdivision > 0) {\n      if (this.targetProj_.isGlobal() && this.targetWorldWidth_) {\n        const targetQuadExtent = boundingExtent([a, b, c, d]);\n        const targetCoverageX =\n          getWidth(targetQuadExtent) / this.targetWorldWidth_;\n        needsSubdivision =\n          targetCoverageX > MAX_TRIANGLE_WIDTH || needsSubdivision;\n      }\n      if (!wrapsX && this.sourceProj_.isGlobal() && sourceCoverageX) {\n        needsSubdivision =\n          sourceCoverageX > MAX_TRIANGLE_WIDTH || needsSubdivision;\n      }\n    }\n\n    if (!needsSubdivision && this.maxSourceExtent_) {\n      if (\n        isFinite(sourceQuadExtent[0]) &&\n        isFinite(sourceQuadExtent[1]) &&\n        isFinite(sourceQuadExtent[2]) &&\n        isFinite(sourceQuadExtent[3])\n      ) {\n        if (!intersects(sourceQuadExtent, this.maxSourceExtent_)) {\n          // whole quad outside source projection extent -> ignore\n          return;\n        }\n      }\n    }\n\n    let isNotFinite = 0;\n\n    if (!needsSubdivision) {\n      if (\n        !isFinite(aSrc[0]) ||\n        !isFinite(aSrc[1]) ||\n        !isFinite(bSrc[0]) ||\n        !isFinite(bSrc[1]) ||\n        !isFinite(cSrc[0]) ||\n        !isFinite(cSrc[1]) ||\n        !isFinite(dSrc[0]) ||\n        !isFinite(dSrc[1])\n      ) {\n        if (maxSubdivision > 0) {\n          needsSubdivision = true;\n        } else {\n          // It might be the case that only 1 of the points is infinite. In this case\n          // we can draw a single triangle with the other three points\n          isNotFinite =\n            (!isFinite(aSrc[0]) || !isFinite(aSrc[1]) ? 8 : 0) +\n            (!isFinite(bSrc[0]) || !isFinite(bSrc[1]) ? 4 : 0) +\n            (!isFinite(cSrc[0]) || !isFinite(cSrc[1]) ? 2 : 0) +\n            (!isFinite(dSrc[0]) || !isFinite(dSrc[1]) ? 1 : 0);\n          if (\n            isNotFinite != 1 &&\n            isNotFinite != 2 &&\n            isNotFinite != 4 &&\n            isNotFinite != 8\n          ) {\n            return;\n          }\n        }\n      }\n    }\n\n    if (maxSubdivision > 0) {\n      if (!needsSubdivision) {\n        const center = [(a[0] + c[0]) / 2, (a[1] + c[1]) / 2];\n        const centerSrc = this.transformInv_(center);\n\n        let dx;\n        if (wrapsX) {\n          const centerSrcEstimX =\n            (modulo(aSrc[0], sourceWorldWidth) +\n              modulo(cSrc[0], sourceWorldWidth)) /\n            2;\n          dx = centerSrcEstimX - modulo(centerSrc[0], sourceWorldWidth);\n        } else {\n          dx = (aSrc[0] + cSrc[0]) / 2 - centerSrc[0];\n        }\n        const dy = (aSrc[1] + cSrc[1]) / 2 - centerSrc[1];\n        const centerSrcErrorSquared = dx * dx + dy * dy;\n        needsSubdivision = centerSrcErrorSquared > this.errorThresholdSquared_;\n      }\n      if (needsSubdivision) {\n        if (Math.abs(a[0] - c[0]) <= Math.abs(a[1] - c[1])) {\n          // split horizontally (top & bottom)\n          const bc = [(b[0] + c[0]) / 2, (b[1] + c[1]) / 2];\n          const bcSrc = this.transformInv_(bc);\n          const da = [(d[0] + a[0]) / 2, (d[1] + a[1]) / 2];\n          const daSrc = this.transformInv_(da);\n\n          this.addQuad_(\n            a,\n            b,\n            bc,\n            da,\n            aSrc,\n            bSrc,\n            bcSrc,\n            daSrc,\n            maxSubdivision - 1,\n          );\n          this.addQuad_(\n            da,\n            bc,\n            c,\n            d,\n            daSrc,\n            bcSrc,\n            cSrc,\n            dSrc,\n            maxSubdivision - 1,\n          );\n        } else {\n          // split vertically (left & right)\n          const ab = [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2];\n          const abSrc = this.transformInv_(ab);\n          const cd = [(c[0] + d[0]) / 2, (c[1] + d[1]) / 2];\n          const cdSrc = this.transformInv_(cd);\n\n          this.addQuad_(\n            a,\n            ab,\n            cd,\n            d,\n            aSrc,\n            abSrc,\n            cdSrc,\n            dSrc,\n            maxSubdivision - 1,\n          );\n          this.addQuad_(\n            ab,\n            b,\n            c,\n            cd,\n            abSrc,\n            bSrc,\n            cSrc,\n            cdSrc,\n            maxSubdivision - 1,\n          );\n        }\n        return;\n      }\n    }\n\n    if (wrapsX) {\n      if (!this.canWrapXInSource_) {\n        return;\n      }\n      this.wrapsXInSource_ = true;\n    }\n\n    // Exactly zero or one of *Src is not finite\n    // The triangles must have the diagonal line as the first side\n    // This is to allow easy code in reproj.s to make it straight for broken\n    // browsers that can't handle diagonal clipping\n    if ((isNotFinite & 0xb) == 0) {\n      this.addTriangle_(a, c, d, aSrc, cSrc, dSrc);\n    }\n    if ((isNotFinite & 0xe) == 0) {\n      this.addTriangle_(a, c, b, aSrc, cSrc, bSrc);\n    }\n    if (isNotFinite) {\n      // Try the other two triangles\n      if ((isNotFinite & 0xd) == 0) {\n        this.addTriangle_(b, d, a, bSrc, dSrc, aSrc);\n      }\n      if ((isNotFinite & 0x7) == 0) {\n        this.addTriangle_(b, d, c, bSrc, dSrc, cSrc);\n      }\n    }\n  }\n\n  /**\n   * Calculates extent of the `source` coordinates from all the triangles.\n   *\n   * @return {import(\"../extent.js\").Extent} Calculated extent.\n   */\n  calculateSourceExtent() {\n    const extent = createEmpty();\n\n    this.triangles_.forEach(function (triangle, i, arr) {\n      const src = triangle.source;\n      extendCoordinate(extent, src[0]);\n      extendCoordinate(extent, src[1]);\n      extendCoordinate(extent, src[2]);\n    });\n\n    return extent;\n  }\n\n  /**\n   * @return {Array<Triangle>} Array of the calculated triangles.\n   */\n  getTriangles() {\n    return this.triangles_;\n  }\n}\n\nexport default Triangulation;\n","/**\n * @module ol/reproj/common\n */\n\n/**\n * Default maximum allowed threshold  (in pixels) for reprojection\n * triangulation.\n * @type {number}\n */\nexport const ERROR_THRESHOLD = 0.5;\n","/**\n * @module ol/reproj/Tile\n */\n\nimport Tile from '../Tile.js';\nimport TileState from '../TileState.js';\nimport {releaseCanvas} from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {getArea, getIntersection, getWidth, wrapAndSliceX} from '../extent.js';\nimport {clamp} from '../math.js';\nimport {\n  calculateSourceExtentResolution,\n  canvasPool,\n  render as renderReprojected,\n} from '../reproj.js';\nimport Triangulation from './Triangulation.js';\nimport {ERROR_THRESHOLD} from './common.js';\n\n/**\n * @typedef {function(number, number, number, number) : (import(\"../ImageTile.js\").default)} FunctionType\n */\n\n/**\n * @typedef {Object} TileOffset\n * @property {import(\"../ImageTile.js\").default} [tile] Tile.\n * @property {function(): import(\"../ImageTile.js\").default} getTile Tile getter.\n * @property {number} offset Offset.\n */\n\n/**\n * @classdesc\n * Class encapsulating single reprojected tile.\n * See {@link module:ol/source/TileImage~TileImage}.\n *\n */\nclass ReprojTile extends Tile {\n  /**\n   * @param {import(\"../proj/Projection.js\").default} sourceProj Source projection.\n   * @param {import(\"../tilegrid/TileGrid.js\").default} sourceTileGrid Source tile grid.\n   * @param {import(\"../proj/Projection.js\").default} targetProj Target projection.\n   * @param {import(\"../tilegrid/TileGrid.js\").default} targetTileGrid Target tile grid.\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Coordinate of the tile.\n   * @param {import(\"../tilecoord.js\").TileCoord} wrappedTileCoord Coordinate of the tile wrapped in X.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {number} gutter Gutter of the source tiles.\n   * @param {FunctionType} getTileFunction\n   *     Function returning source tiles (z, x, y, pixelRatio).\n   * @param {number} [errorThreshold] Acceptable reprojection error (in px).\n   * @param {boolean} [renderEdges] Render reprojection edges.\n   * @param {import(\"../Tile.js\").Options} [options] Tile options.\n   */\n  constructor(\n    sourceProj,\n    sourceTileGrid,\n    targetProj,\n    targetTileGrid,\n    tileCoord,\n    wrappedTileCoord,\n    pixelRatio,\n    gutter,\n    getTileFunction,\n    errorThreshold,\n    renderEdges,\n    options,\n  ) {\n    super(tileCoord, TileState.IDLE, options);\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderEdges_ = renderEdges !== undefined ? renderEdges : false;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.pixelRatio_ = pixelRatio;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.gutter_ = gutter;\n\n    /**\n     * @private\n     * @type {HTMLCanvasElement|OffscreenCanvas}\n     */\n    this.canvas_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../tilegrid/TileGrid.js\").default}\n     */\n    this.sourceTileGrid_ = sourceTileGrid;\n\n    /**\n     * @private\n     * @type {import(\"../tilegrid/TileGrid.js\").default}\n     */\n    this.targetTileGrid_ = targetTileGrid;\n\n    /**\n     * @private\n     * @type {import(\"../tilecoord.js\").TileCoord}\n     */\n    this.wrappedTileCoord_ = wrappedTileCoord ? wrappedTileCoord : tileCoord;\n\n    /**\n     * @private\n     * @type {!Array<TileOffset>}\n     */\n    this.sourceTiles_ = [];\n\n    /**\n     * @private\n     * @type {?Array<import(\"../events.js\").EventsKey>}\n     */\n    this.sourcesListenerKeys_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.sourceZ_ = 0;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.clipExtent_ = sourceProj.canWrapX()\n      ? sourceProj.getExtent()\n      : undefined;\n\n    const targetExtent = targetTileGrid.getTileCoordExtent(\n      this.wrappedTileCoord_,\n    );\n    const maxTargetExtent = this.targetTileGrid_.getExtent();\n    let maxSourceExtent = this.sourceTileGrid_.getExtent();\n\n    const limitedTargetExtent = maxTargetExtent\n      ? getIntersection(targetExtent, maxTargetExtent)\n      : targetExtent;\n\n    if (getArea(limitedTargetExtent) === 0) {\n      // Tile is completely outside range -> EMPTY\n      // TODO: is it actually correct that the source even creates the tile ?\n      this.state = TileState.EMPTY;\n      return;\n    }\n\n    const sourceProjExtent = sourceProj.getExtent();\n    if (sourceProjExtent) {\n      if (!maxSourceExtent) {\n        maxSourceExtent = sourceProjExtent;\n      } else {\n        maxSourceExtent = getIntersection(maxSourceExtent, sourceProjExtent);\n      }\n    }\n\n    const targetResolution = targetTileGrid.getResolution(\n      this.wrappedTileCoord_[0],\n    );\n\n    const sourceResolution = calculateSourceExtentResolution(\n      sourceProj,\n      targetProj,\n      limitedTargetExtent,\n      targetResolution,\n    );\n\n    if (!isFinite(sourceResolution) || sourceResolution <= 0) {\n      // invalid sourceResolution -> EMPTY\n      // probably edges of the projections when no extent is defined\n      this.state = TileState.EMPTY;\n      return;\n    }\n\n    const errorThresholdInPixels =\n      errorThreshold !== undefined ? errorThreshold : ERROR_THRESHOLD;\n\n    /**\n     * @private\n     * @type {!import(\"./Triangulation.js\").default}\n     */\n    this.triangulation_ = new Triangulation(\n      sourceProj,\n      targetProj,\n      limitedTargetExtent,\n      maxSourceExtent,\n      sourceResolution * errorThresholdInPixels,\n      targetResolution,\n    );\n\n    if (this.triangulation_.getTriangles().length === 0) {\n      // no valid triangles -> EMPTY\n      this.state = TileState.EMPTY;\n      return;\n    }\n\n    this.sourceZ_ = sourceTileGrid.getZForResolution(sourceResolution);\n    let sourceExtent = this.triangulation_.calculateSourceExtent();\n\n    if (maxSourceExtent) {\n      if (sourceProj.canWrapX()) {\n        sourceExtent[1] = clamp(\n          sourceExtent[1],\n          maxSourceExtent[1],\n          maxSourceExtent[3],\n        );\n        sourceExtent[3] = clamp(\n          sourceExtent[3],\n          maxSourceExtent[1],\n          maxSourceExtent[3],\n        );\n      } else {\n        sourceExtent = getIntersection(sourceExtent, maxSourceExtent);\n      }\n    }\n\n    if (!getArea(sourceExtent)) {\n      this.state = TileState.EMPTY;\n    } else {\n      let worldWidth = 0;\n      let worldsAway = 0;\n      if (sourceProj.canWrapX()) {\n        worldWidth = getWidth(sourceProjExtent);\n        worldsAway = Math.floor(\n          (sourceExtent[0] - sourceProjExtent[0]) / worldWidth,\n        );\n      }\n\n      const sourceExtents = wrapAndSliceX(\n        sourceExtent.slice(),\n        sourceProj,\n        true,\n      );\n      sourceExtents.forEach((extent) => {\n        const sourceRange = sourceTileGrid.getTileRangeForExtentAndZ(\n          extent,\n          this.sourceZ_,\n        );\n\n        for (let srcX = sourceRange.minX; srcX <= sourceRange.maxX; srcX++) {\n          for (let srcY = sourceRange.minY; srcY <= sourceRange.maxY; srcY++) {\n            const offset = worldsAway * worldWidth;\n            this.sourceTiles_.push({\n              getTile: () =>\n                getTileFunction(this.sourceZ_, srcX, srcY, pixelRatio),\n              offset,\n            });\n          }\n        }\n        ++worldsAway;\n      });\n\n      if (this.sourceTiles_.length === 0) {\n        this.state = TileState.EMPTY;\n      }\n    }\n  }\n\n  /**\n   * Get the HTML Canvas element for this tile.\n   * @return {HTMLCanvasElement|OffscreenCanvas} Canvas.\n   */\n  getImage() {\n    return this.canvas_;\n  }\n\n  /**\n   * @private\n   */\n  reproject_() {\n    const sources = [];\n    this.sourceTiles_.forEach((source) => {\n      const tile = source.tile;\n      if (tile && tile.getState() == TileState.LOADED) {\n        const extent = this.sourceTileGrid_.getTileCoordExtent(tile.tileCoord);\n        extent[0] += source.offset;\n        extent[2] += source.offset;\n        const clipExtent = this.clipExtent_?.slice();\n        if (clipExtent) {\n          clipExtent[0] += source.offset;\n          clipExtent[2] += source.offset;\n        }\n        sources.push({\n          extent: extent,\n          clipExtent: clipExtent,\n          image: tile.getImage(),\n        });\n      }\n    });\n    this.sourceTiles_.length = 0;\n\n    if (sources.length === 0) {\n      this.state = TileState.ERROR;\n    } else {\n      const z = this.wrappedTileCoord_[0];\n      const size = this.targetTileGrid_.getTileSize(z);\n      const width = typeof size === 'number' ? size : size[0];\n      const height = typeof size === 'number' ? size : size[1];\n      const targetResolution = this.targetTileGrid_.getResolution(z);\n      const sourceResolution = this.sourceTileGrid_.getResolution(\n        this.sourceZ_,\n      );\n\n      const targetExtent = this.targetTileGrid_.getTileCoordExtent(\n        this.wrappedTileCoord_,\n      );\n\n      this.canvas_ = renderReprojected(\n        width,\n        height,\n        this.pixelRatio_,\n        sourceResolution,\n        this.sourceTileGrid_.getExtent(),\n        targetResolution,\n        targetExtent,\n        this.triangulation_,\n        sources,\n        this.gutter_,\n        this.renderEdges_,\n        this.interpolate,\n      );\n\n      this.state = TileState.LOADED;\n    }\n    this.changed();\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * @override\n   */\n  load() {\n    for (const sourceTile of this.sourceTiles_) {\n      sourceTile.tile = sourceTile.getTile();\n    }\n    if (this.state == TileState.IDLE) {\n      this.state = TileState.LOADING;\n      this.changed();\n\n      let leftToLoad = 0;\n\n      this.sourcesListenerKeys_ = [];\n      this.sourceTiles_.forEach(({tile}) => {\n        const state = tile.getState();\n        if (state == TileState.IDLE || state == TileState.LOADING) {\n          leftToLoad++;\n\n          const sourceListenKey = listen(tile, EventType.CHANGE, (e) => {\n            const state = tile.getState();\n            if (\n              state == TileState.LOADED ||\n              state == TileState.ERROR ||\n              state == TileState.EMPTY\n            ) {\n              unlistenByKey(sourceListenKey);\n              leftToLoad--;\n              if (leftToLoad === 0) {\n                this.unlistenSources_();\n                this.reproject_();\n              }\n            }\n          });\n          this.sourcesListenerKeys_.push(sourceListenKey);\n        }\n      });\n\n      if (leftToLoad === 0) {\n        setTimeout(this.reproject_.bind(this), 0);\n      } else {\n        this.sourceTiles_.forEach(function ({tile}, i, arr) {\n          const state = tile.getState();\n          if (state == TileState.IDLE) {\n            tile.load();\n          }\n        });\n      }\n    }\n  }\n\n  /**\n   * @private\n   */\n  unlistenSources_() {\n    this.sourcesListenerKeys_.forEach(unlistenByKey);\n    this.sourcesListenerKeys_ = null;\n  }\n\n  /**\n   * Remove from the cache due to expiry\n   * @override\n   */\n  release() {\n    if (this.canvas_) {\n      releaseCanvas(\n        /** @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} */ (\n          this.canvas_.getContext('2d')\n        ),\n      );\n      canvasPool.push(this.canvas_);\n      this.canvas_ = null;\n    }\n    this.sourceTiles_.length = 0;\n    super.release();\n  }\n}\n\nexport default ReprojTile;\n","/**\n * @module ol/structs/LRUCache\n */\n\nimport Disposable from '../Disposable.js';\nimport {assert} from '../asserts.js';\n\n/**\n * @typedef {Object} Entry\n * @property {string} key_ Key.\n * @property {Entry|null} newer Newer.\n * @property {Entry|null} older Older.\n * @property {*} value_ Value.\n */\n\n/**\n * @classdesc\n * Implements a Least-Recently-Used cache where the keys do not conflict with\n * Object's properties (e.g. 'hasOwnProperty' is not allowed as a key). Expiring\n * items from the cache is the responsibility of the user.\n *\n * @fires import(\"../events/Event.js\").default\n * @template T\n */\nclass LRUCache {\n  /**\n   * @param {number} [highWaterMark] High water mark.\n   */\n  constructor(highWaterMark) {\n    /**\n     * Desired max cache size after expireCache(). If set to 0, no cache entries\n     * will be pruned at all.\n     * @type {number}\n     */\n    this.highWaterMark = highWaterMark !== undefined ? highWaterMark : 2048;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.count_ = 0;\n\n    /**\n     * @private\n     * @type {!Object<string, Entry>}\n     */\n    this.entries_ = {};\n\n    /**\n     * @private\n     * @type {?Entry}\n     */\n    this.oldest_ = null;\n\n    /**\n     * @private\n     * @type {?Entry}\n     */\n    this.newest_ = null;\n  }\n\n  deleteOldest() {\n    const entry = this.pop();\n    if (entry instanceof Disposable) {\n      entry.dispose();\n    }\n  }\n\n  /**\n   * @return {boolean} Can expire cache.\n   */\n  canExpireCache() {\n    return this.highWaterMark > 0 && this.getCount() > this.highWaterMark;\n  }\n\n  /**\n   * Expire the cache. When the cache entry is a {@link module:ol/Disposable~Disposable},\n   * the entry will be disposed.\n   * @param {!Object<string, boolean>} [keep] Keys to keep. To be implemented by subclasses.\n   */\n  expireCache(keep) {\n    while (this.canExpireCache()) {\n      this.deleteOldest();\n    }\n  }\n\n  /**\n   * FIXME empty description for jsdoc\n   */\n  clear() {\n    while (this.oldest_) {\n      this.deleteOldest();\n    }\n  }\n\n  /**\n   * @param {string} key Key.\n   * @return {boolean} Contains key.\n   */\n  containsKey(key) {\n    return this.entries_.hasOwnProperty(key);\n  }\n\n  /**\n   * @param {function(T, string, LRUCache<T>): ?} f The function\n   *     to call for every entry from the oldest to the newer. This function takes\n   *     3 arguments (the entry value, the entry key and the LRUCache object).\n   *     The return value is ignored.\n   */\n  forEach(f) {\n    let entry = this.oldest_;\n    while (entry) {\n      f(entry.value_, entry.key_, this);\n      entry = entry.newer;\n    }\n  }\n\n  /**\n   * @param {string} key Key.\n   * @param {*} [options] Options (reserved for subclasses).\n   * @return {T} Value.\n   */\n  get(key, options) {\n    const entry = this.entries_[key];\n    assert(\n      entry !== undefined,\n      'Tried to get a value for a key that does not exist in the cache',\n    );\n    if (entry === this.newest_) {\n      return entry.value_;\n    }\n    if (entry === this.oldest_) {\n      this.oldest_ = /** @type {Entry} */ (this.oldest_.newer);\n      this.oldest_.older = null;\n    } else {\n      entry.newer.older = entry.older;\n      entry.older.newer = entry.newer;\n    }\n    entry.newer = null;\n    entry.older = this.newest_;\n    this.newest_.newer = entry;\n    this.newest_ = entry;\n    return entry.value_;\n  }\n\n  /**\n   * Remove an entry from the cache.\n   * @param {string} key The entry key.\n   * @return {T} The removed entry.\n   */\n  remove(key) {\n    const entry = this.entries_[key];\n    assert(\n      entry !== undefined,\n      'Tried to get a value for a key that does not exist in the cache',\n    );\n    if (entry === this.newest_) {\n      this.newest_ = /** @type {Entry} */ (entry.older);\n      if (this.newest_) {\n        this.newest_.newer = null;\n      }\n    } else if (entry === this.oldest_) {\n      this.oldest_ = /** @type {Entry} */ (entry.newer);\n      if (this.oldest_) {\n        this.oldest_.older = null;\n      }\n    } else {\n      entry.newer.older = entry.older;\n      entry.older.newer = entry.newer;\n    }\n    delete this.entries_[key];\n    --this.count_;\n    return entry.value_;\n  }\n\n  /**\n   * @return {number} Count.\n   */\n  getCount() {\n    return this.count_;\n  }\n\n  /**\n   * @return {Array<string>} Keys.\n   */\n  getKeys() {\n    const keys = new Array(this.count_);\n    let i = 0;\n    let entry;\n    for (entry = this.newest_; entry; entry = entry.older) {\n      keys[i++] = entry.key_;\n    }\n    return keys;\n  }\n\n  /**\n   * @return {Array<T>} Values.\n   */\n  getValues() {\n    const values = new Array(this.count_);\n    let i = 0;\n    let entry;\n    for (entry = this.newest_; entry; entry = entry.older) {\n      values[i++] = entry.value_;\n    }\n    return values;\n  }\n\n  /**\n   * @return {T} Last value.\n   */\n  peekLast() {\n    return this.oldest_.value_;\n  }\n\n  /**\n   * @return {string} Last key.\n   */\n  peekLastKey() {\n    return this.oldest_.key_;\n  }\n\n  /**\n   * Get the key of the newest item in the cache.  Throws if the cache is empty.\n   * @return {string} The newest key.\n   */\n  peekFirstKey() {\n    return this.newest_.key_;\n  }\n\n  /**\n   * Return an entry without updating least recently used time.\n   * @param {string} key Key.\n   * @return {T|undefined} Value.\n   */\n  peek(key) {\n    return this.entries_[key]?.value_;\n  }\n\n  /**\n   * @return {T} value Value.\n   */\n  pop() {\n    const entry = this.oldest_;\n    delete this.entries_[entry.key_];\n    if (entry.newer) {\n      entry.newer.older = null;\n    }\n    this.oldest_ = /** @type {Entry} */ (entry.newer);\n    if (!this.oldest_) {\n      this.newest_ = null;\n    }\n    --this.count_;\n    return entry.value_;\n  }\n\n  /**\n   * @param {string} key Key.\n   * @param {T} value Value.\n   */\n  replace(key, value) {\n    this.get(key); // update `newest_`\n    this.entries_[key].value_ = value;\n  }\n\n  /**\n   * @param {string} key Key.\n   * @param {T} value Value.\n   */\n  set(key, value) {\n    assert(\n      !(key in this.entries_),\n      'Tried to set a value for a key that is used already',\n    );\n    const entry = {\n      key_: key,\n      newer: null,\n      older: this.newest_,\n      value_: value,\n    };\n    if (!this.newest_) {\n      this.oldest_ = entry;\n    } else {\n      this.newest_.newer = entry;\n    }\n    this.newest_ = entry;\n    this.entries_[key] = entry;\n    ++this.count_;\n  }\n\n  /**\n   * Set a maximum number of entries for the cache.\n   * @param {number} size Cache size.\n   * @api\n   */\n  setSize(size) {\n    this.highWaterMark = size;\n  }\n}\n\nexport default LRUCache;\n","/**\n * @module ol/tilecoord\n */\n\nimport {getUid} from './util.js';\n\n/**\n * An array of three numbers representing the location of a tile in a tile\n * grid. The order is `z` (zoom level), `x` (column), and `y` (row).\n * @typedef {Array<number>} TileCoord\n * @api\n */\n\n/**\n * @param {number} z Z.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {TileCoord} [tileCoord] Tile coordinate.\n * @return {TileCoord} Tile coordinate.\n */\nexport function createOrUpdate(z, x, y, tileCoord) {\n  if (tileCoord !== undefined) {\n    tileCoord[0] = z;\n    tileCoord[1] = x;\n    tileCoord[2] = y;\n    return tileCoord;\n  }\n  return [z, x, y];\n}\n\n/**\n * @param {number} z Z.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {string} Key.\n */\nexport function getKeyZXY(z, x, y) {\n  return z + '/' + x + '/' + y;\n}\n\n/**\n * Get the key for a tile coord.\n * @param {TileCoord} tileCoord The tile coord.\n * @return {string} Key.\n */\nexport function getKey(tileCoord) {\n  return getKeyZXY(tileCoord[0], tileCoord[1], tileCoord[2]);\n}\n\n/**\n * Get the tile cache key for a tile key obtained through `tile.getKey()`.\n * @param {string} tileKey The tile key.\n * @return {string} The cache key.\n */\nexport function getCacheKeyForTileKey(tileKey) {\n  const [z, x, y] = tileKey\n    .substring(tileKey.lastIndexOf('/') + 1, tileKey.length)\n    .split(',')\n    .map(Number);\n  return getKeyZXY(z, x, y);\n}\n\n/**\n * @param {import(\"./source/Tile.js\").default} source The tile source.\n * @param {string} sourceKey The source key.\n * @param {number} z The tile z level.\n * @param {number} x The tile x level.\n * @param {number} y The tile y level.\n * @return {string} The cache key.\n */\nexport function getCacheKey(source, sourceKey, z, x, y) {\n  return `${getUid(source)},${sourceKey},${getKeyZXY(z, x, y)}`;\n}\n\n/**\n * Get a tile coord given a key.\n * @param {string} key The tile coord key.\n * @return {TileCoord} The tile coord.\n */\nexport function fromKey(key) {\n  return key.split('/').map(Number);\n}\n\n/**\n * @param {TileCoord} tileCoord Tile coord.\n * @return {number} Hash.\n */\nexport function hash(tileCoord) {\n  return hashZXY(tileCoord[0], tileCoord[1], tileCoord[2]);\n}\n\n/**\n * @param {number} z The tile z coordinate.\n * @param {number} x The tile x coordinate.\n * @param {number} y The tile y coordinate.\n * @return {number} Hash.\n */\nexport function hashZXY(z, x, y) {\n  return (x << z) + y;\n}\n\n/**\n * @param {TileCoord} tileCoord Tile coordinate.\n * @param {!import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {boolean} Tile coordinate is within extent and zoom level range.\n */\nexport function withinExtentAndZ(tileCoord, tileGrid) {\n  const z = tileCoord[0];\n  const x = tileCoord[1];\n  const y = tileCoord[2];\n\n  if (tileGrid.getMinZoom() > z || z > tileGrid.getMaxZoom()) {\n    return false;\n  }\n  const tileRange = tileGrid.getFullTileRange(z);\n  if (!tileRange) {\n    return true;\n  }\n  return tileRange.containsXY(x, y);\n}\n","/**\n * @module ol/renderer/canvas/TileLayer\n */\nimport DataTile, {asImageLike} from '../../DataTile.js';\nimport ImageTile from '../../ImageTile.js';\nimport TileRange from '../../TileRange.js';\nimport TileState from '../../TileState.js';\nimport {ascending} from '../../array.js';\nimport {\n  containsCoordinate,\n  createEmpty,\n  equals,\n  getIntersection,\n  getRotatedViewport,\n  getTopLeft,\n  intersects,\n} from '../../extent.js';\nimport {equivalent, fromUserExtent} from '../../proj.js';\nimport ReprojTile from '../../reproj/Tile.js';\nimport {toSize} from '../../size.js';\nimport LRUCache from '../../structs/LRUCache.js';\nimport {\n  createOrUpdate as createTileCoord,\n  getCacheKey,\n} from '../../tilecoord.js';\nimport {\n  apply as applyTransform,\n  compose as composeTransform,\n} from '../../transform.js';\nimport {getUid} from '../../util.js';\nimport CanvasLayerRenderer from './Layer.js';\n\n/**\n * @typedef {Object<number, Set<import(\"../../Tile.js\").default>>} TileLookup\n */\n\n/**\n * Add a tile to the lookup.\n * @param {TileLookup} tilesByZ Lookup of tiles by zoom level.\n * @param {import(\"../../Tile.js\").default} tile A tile.\n * @param {number} z The zoom level.\n * @return {boolean} The tile was added to the lookup.\n */\nfunction addTileToLookup(tilesByZ, tile, z) {\n  if (!(z in tilesByZ)) {\n    tilesByZ[z] = new Set([tile]);\n    return true;\n  }\n  const set = tilesByZ[z];\n  const existing = set.has(tile);\n  if (!existing) {\n    set.add(tile);\n  }\n  return !existing;\n}\n\n/**\n * Remove a tile from the lookup.\n * @param {TileLookup} tilesByZ Lookup of tiles by zoom level.\n * @param {import(\"../../Tile.js\").default} tile A tile.\n * @param {number} z The zoom level.\n * @return {boolean} The tile was removed from the lookup.\n */\nfunction removeTileFromLookup(tilesByZ, tile, z) {\n  const set = tilesByZ[z];\n  if (set) {\n    return set.delete(tile);\n  }\n  return false;\n}\n\n/**\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n * @param {import(\"../../extent.js\").Extent} extent The frame extent.\n * @return {import(\"../../extent.js\").Extent} Frame extent intersected with layer extents.\n */\nfunction getRenderExtent(frameState, extent) {\n  const layerState = frameState.layerStatesArray[frameState.layerIndex];\n  if (layerState.extent) {\n    extent = getIntersection(\n      extent,\n      fromUserExtent(layerState.extent, frameState.viewState.projection),\n    );\n  }\n  const source = /** @type {import(\"../../source/Tile.js\").default} */ (\n    layerState.layer.getRenderSource()\n  );\n  if (!source.getWrapX()) {\n    const gridExtent = source\n      .getTileGridForProjection(frameState.viewState.projection)\n      .getExtent();\n    if (gridExtent) {\n      extent = getIntersection(extent, gridExtent);\n    }\n  }\n  return extent;\n}\n\n/**\n * @typedef {Object} Options\n * @property {number} [cacheSize=512] The cache size.\n */\n\n/**\n * @classdesc\n * Canvas renderer for tile layers.\n * @api\n * @template {import(\"../../layer/Tile.js\").default|import(\"../../layer/VectorTile.js\").default} [LayerType=import(\"../../layer/Tile.js\").default<import(\"../../source/Tile.js\").default>|import(\"../../layer/VectorTile.js\").default]\n * @extends {CanvasLayerRenderer<LayerType>}\n */\nclass CanvasTileLayerRenderer extends CanvasLayerRenderer {\n  /**\n   * @param {LayerType} tileLayer Tile layer.\n   * @param {Options} [options] Options.\n   */\n  constructor(tileLayer, options) {\n    super(tileLayer);\n\n    options = options || {};\n\n    /**\n     * Rendered extent has changed since the previous `renderFrame()` call\n     * @type {boolean}\n     */\n    this.extentChanged = true;\n\n    /**\n     * The last call to `renderFrame` was completed with all tiles loaded\n     * @type {boolean}\n     */\n    this.renderComplete = false;\n\n    /**\n     * @private\n     * @type {?import(\"../../extent.js\").Extent}\n     */\n    this.renderedExtent_ = null;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.renderedPixelRatio;\n\n    /**\n     * @protected\n     * @type {import(\"../../proj/Projection.js\").default|null}\n     */\n    this.renderedProjection = null;\n\n    /**\n     * @protected\n     * @type {!Array<import(\"../../Tile.js\").default>}\n     */\n    this.renderedTiles = [];\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.renderedSourceKey_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedSourceRevision_;\n\n    /**\n     * @protected\n     * @type {import(\"../../extent.js\").Extent}\n     */\n    this.tempExtent = createEmpty();\n\n    /**\n     * @private\n     * @type {import(\"../../TileRange.js\").default}\n     */\n    this.tempTileRange_ = new TileRange(0, 0, 0, 0);\n\n    /**\n     * @type {import(\"../../tilecoord.js\").TileCoord}\n     * @private\n     */\n    this.tempTileCoord_ = createTileCoord(0, 0, 0);\n\n    const cacheSize = options.cacheSize !== undefined ? options.cacheSize : 512;\n\n    /**\n     * @type {import(\"../../structs/LRUCache.js\").default<import(\"../../Tile.js\").default>}\n     * @private\n     */\n    this.tileCache_ = new LRUCache(cacheSize);\n\n    /**\n     * @type {import(\"../../structs/LRUCache.js\").default<import(\"../../Tile.js\").default|null>}\n     * @private\n     */\n    this.sourceTileCache_ = null;\n\n    this.maxStaleKeys = cacheSize * 0.5;\n  }\n\n  /**\n   * @return {LRUCache} Tile cache.\n   */\n  getTileCache() {\n    return this.tileCache_;\n  }\n\n  /**\n   * @return {LRUCache} Tile cache.\n   */\n  getSourceTileCache() {\n    if (!this.sourceTileCache_) {\n      this.sourceTileCache_ = new LRUCache(512);\n    }\n    return this.sourceTileCache_;\n  }\n\n  /**\n   * Get a tile from the cache or create one if needed.\n   *\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {import(\"../../Tile.js\").default|null} Tile (or null if outside source extent).\n   * @protected\n   */\n  getOrCreateTile(z, x, y, frameState) {\n    const tileCache = this.tileCache_;\n    const tileLayer = this.getLayer();\n    const tileSource = tileLayer.getSource();\n    const cacheKey = getCacheKey(tileSource, tileSource.getKey(), z, x, y);\n\n    /** @type {import(\"../../Tile.js\").default} */\n    let tile;\n\n    if (tileCache.containsKey(cacheKey)) {\n      tile = tileCache.get(cacheKey);\n    } else {\n      const projection = frameState.viewState.projection;\n      const sourceProjection = tileSource.getProjection();\n      tile = tileSource.getTile(\n        z,\n        x,\n        y,\n        frameState.pixelRatio,\n        projection,\n        !sourceProjection || equivalent(sourceProjection, projection)\n          ? undefined\n          : this.getSourceTileCache(),\n      );\n      if (!tile) {\n        return null;\n      }\n      tileCache.set(cacheKey, tile);\n    }\n    return tile;\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {import(\"../../Tile.js\").default|null} Tile (or null if outside source extent).\n   * @protected\n   */\n  getTile(z, x, y, frameState) {\n    const tile = this.getOrCreateTile(z, x, y, frameState);\n    if (!tile) {\n      return null;\n    }\n    return tile;\n  }\n\n  /**\n   * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray} Data at the pixel location.\n   * @override\n   */\n  getData(pixel) {\n    const frameState = this.frameState;\n    if (!frameState) {\n      return null;\n    }\n\n    const layer = this.getLayer();\n    const coordinate = applyTransform(\n      frameState.pixelToCoordinateTransform,\n      pixel.slice(),\n    );\n\n    const layerExtent = layer.getExtent();\n    if (layerExtent) {\n      if (!containsCoordinate(layerExtent, coordinate)) {\n        return null;\n      }\n    }\n\n    const viewState = frameState.viewState;\n    const source = layer.getRenderSource();\n    const tileGrid = source.getTileGridForProjection(viewState.projection);\n    const tilePixelRatio = source.getTilePixelRatio(frameState.pixelRatio);\n\n    for (\n      let z = tileGrid.getZForResolution(viewState.resolution);\n      z >= tileGrid.getMinZoom();\n      --z\n    ) {\n      const tileCoord = tileGrid.getTileCoordForCoordAndZ(coordinate, z);\n      const tile = this.getTile(z, tileCoord[1], tileCoord[2], frameState);\n      if (!tile || tile.getState() !== TileState.LOADED) {\n        continue;\n      }\n\n      const tileOrigin = tileGrid.getOrigin(z);\n      const tileSize = toSize(tileGrid.getTileSize(z));\n      const tileResolution = tileGrid.getResolution(z);\n\n      /**\n       * @type {import('../../DataTile.js').ImageLike}\n       */\n      let image;\n      if (tile instanceof ImageTile || tile instanceof ReprojTile) {\n        image = tile.getImage();\n      } else if (tile instanceof DataTile) {\n        image = asImageLike(tile.getData());\n        if (!image) {\n          continue;\n        }\n      } else {\n        continue;\n      }\n\n      const col = Math.floor(\n        tilePixelRatio *\n          ((coordinate[0] - tileOrigin[0]) / tileResolution -\n            tileCoord[1] * tileSize[0]),\n      );\n\n      const row = Math.floor(\n        tilePixelRatio *\n          ((tileOrigin[1] - coordinate[1]) / tileResolution -\n            tileCoord[2] * tileSize[1]),\n      );\n\n      const gutter = Math.round(\n        tilePixelRatio * source.getGutterForProjection(viewState.projection),\n      );\n\n      return this.getImageData(image, col + gutter, row + gutter);\n    }\n\n    return null;\n  }\n\n  /**\n   * Determine whether render should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrame(frameState) {\n    if (!this.renderedProjection) {\n      this.renderedProjection = frameState.viewState.projection;\n    } else if (frameState.viewState.projection !== this.renderedProjection) {\n      this.tileCache_.clear();\n      this.renderedProjection = frameState.viewState.projection;\n    }\n\n    const source = this.getLayer().getSource();\n    if (!source) {\n      return false;\n    }\n    const sourceRevision = source.getRevision();\n    if (!this.renderedSourceRevision_) {\n      this.renderedSourceRevision_ = sourceRevision;\n    } else if (this.renderedSourceRevision_ !== sourceRevision) {\n      this.renderedSourceRevision_ = sourceRevision;\n      if (this.renderedSourceKey_ === source.getKey()) {\n        this.tileCache_.clear();\n        this.sourceTileCache_?.clear();\n      }\n    }\n    return true;\n  }\n\n  /**\n   * Determine whether tiles for next extent should be enqueued for rendering.\n   * @return {boolean} Rendering tiles for next extent is supported.\n   * @protected\n   */\n  enqueueTilesForNextExtent() {\n    return true;\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../../extent.js\").Extent} extent The extent to be rendered.\n   * @param {number} initialZ The zoom level.\n   * @param {TileLookup} tilesByZ Lookup of tiles by zoom level.\n   * @param {number} preload Number of additional levels to load.\n   */\n  enqueueTiles(frameState, extent, initialZ, tilesByZ, preload) {\n    const viewState = frameState.viewState;\n    const tileLayer = this.getLayer();\n    const tileSource = tileLayer.getRenderSource();\n    const tileGrid = tileSource.getTileGridForProjection(viewState.projection);\n\n    const tileSourceKey = getUid(tileSource);\n    if (!(tileSourceKey in frameState.wantedTiles)) {\n      frameState.wantedTiles[tileSourceKey] = {};\n    }\n\n    const wantedTiles = frameState.wantedTiles[tileSourceKey];\n\n    const map = tileLayer.getMapInternal();\n    const minZ = Math.max(\n      initialZ - preload,\n      tileGrid.getMinZoom(),\n      tileGrid.getZForResolution(\n        Math.min(\n          tileLayer.getMaxResolution(),\n          map\n            ? map\n                .getView()\n                .getResolutionForZoom(Math.max(tileLayer.getMinZoom(), 0))\n            : tileGrid.getResolution(0),\n        ),\n        tileSource.zDirection,\n      ),\n    );\n    const rotation = viewState.rotation;\n    const viewport = rotation\n      ? getRotatedViewport(\n          viewState.center,\n          viewState.resolution,\n          rotation,\n          frameState.size,\n        )\n      : undefined;\n    for (let z = initialZ; z >= minZ; --z) {\n      const tileRange = tileGrid.getTileRangeForExtentAndZ(\n        extent,\n        z,\n        this.tempTileRange_,\n      );\n\n      const tileResolution = tileGrid.getResolution(z);\n\n      for (let x = tileRange.minX; x <= tileRange.maxX; ++x) {\n        for (let y = tileRange.minY; y <= tileRange.maxY; ++y) {\n          if (\n            rotation &&\n            !tileGrid.tileCoordIntersectsViewport([z, x, y], viewport)\n          ) {\n            continue;\n          }\n          const tile = this.getTile(z, x, y, frameState);\n          if (!tile) {\n            continue;\n          }\n          const added = addTileToLookup(tilesByZ, tile, z);\n          if (!added) {\n            continue;\n          }\n\n          const tileQueueKey = tile.getKey();\n          wantedTiles[tileQueueKey] = true;\n\n          if (tile.getState() === TileState.IDLE) {\n            if (!frameState.tileQueue.isKeyQueued(tileQueueKey)) {\n              const tileCoord = createTileCoord(z, x, y, this.tempTileCoord_);\n              frameState.tileQueue.enqueue([\n                tile,\n                tileSourceKey,\n                tileGrid.getTileCoordCenter(tileCoord),\n                tileResolution,\n              ]);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Look for tiles covering the provided tile coordinate at an alternate\n   * zoom level.  Loaded tiles will be added to the provided tile texture lookup.\n   * @param {import(\"../../tilecoord.js\").TileCoord} tileCoord The target tile coordinate.\n   * @param {TileLookup} tilesByZ Lookup of tiles by zoom level.\n   * @return {boolean} The tile coordinate is covered by loaded tiles at the alternate zoom level.\n   * @private\n   */\n  findStaleTile_(tileCoord, tilesByZ) {\n    const tileCache = this.tileCache_;\n    const z = tileCoord[0];\n    const x = tileCoord[1];\n    const y = tileCoord[2];\n    const staleKeys = this.getStaleKeys();\n    for (let i = 0; i < staleKeys.length; ++i) {\n      const cacheKey = getCacheKey(\n        this.getLayer().getSource(),\n        staleKeys[i],\n        z,\n        x,\n        y,\n      );\n      if (tileCache.containsKey(cacheKey)) {\n        const tile = tileCache.peek(cacheKey);\n        if (tile.getState() === TileState.LOADED) {\n          tile.endTransition(getUid(this));\n          addTileToLookup(tilesByZ, tile, z);\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Look for tiles covering the provided tile coordinate at an alternate\n   * zoom level.  Loaded tiles will be added to the provided tile texture lookup.\n   * @param {import(\"../../tilegrid/TileGrid.js\").default} tileGrid The tile grid.\n   * @param {import(\"../../tilecoord.js\").TileCoord} tileCoord The target tile coordinate.\n   * @param {number} altZ The alternate zoom level.\n   * @param {TileLookup} tilesByZ Lookup of tiles by zoom level.\n   * @return {boolean} The tile coordinate is covered by loaded tiles at the alternate zoom level.\n   * @private\n   */\n  findAltTiles_(tileGrid, tileCoord, altZ, tilesByZ) {\n    const tileRange = tileGrid.getTileRangeForTileCoordAndZ(\n      tileCoord,\n      altZ,\n      this.tempTileRange_,\n    );\n\n    if (!tileRange) {\n      return false;\n    }\n\n    let covered = true;\n    const tileCache = this.tileCache_;\n    const source = this.getLayer().getRenderSource();\n    const sourceKey = source.getKey();\n    for (let x = tileRange.minX; x <= tileRange.maxX; ++x) {\n      for (let y = tileRange.minY; y <= tileRange.maxY; ++y) {\n        const cacheKey = getCacheKey(source, sourceKey, altZ, x, y);\n        let loaded = false;\n        if (tileCache.containsKey(cacheKey)) {\n          const tile = tileCache.peek(cacheKey);\n          if (tile.getState() === TileState.LOADED) {\n            addTileToLookup(tilesByZ, tile, altZ);\n            loaded = true;\n          }\n        }\n        if (!loaded) {\n          covered = false;\n        }\n      }\n    }\n    return covered;\n  }\n\n  /**\n   * Render the layer.\n   *\n   * The frame rendering logic has three parts:\n   *\n   *  1. Enqueue tiles\n   *  2. Find alt tiles for those that are not yet loaded\n   *  3. Render loaded tiles\n   *\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {HTMLElement} target Target that may be used to render content to.\n   * @return {HTMLElement} The rendered element.\n   * @override\n   */\n  renderFrame(frameState, target) {\n    this.renderComplete = true;\n    /**\n     * TODO:\n     *  maybe skip transition when not fully opaque\n     *  decide if this.renderComplete is useful\n     */\n\n    const layerState = frameState.layerStatesArray[frameState.layerIndex];\n    const viewState = frameState.viewState;\n    const projection = viewState.projection;\n    const viewResolution = viewState.resolution;\n    const viewCenter = viewState.center;\n    const pixelRatio = frameState.pixelRatio;\n\n    const tileLayer = this.getLayer();\n    const tileSource = tileLayer.getSource();\n    const tileGrid = tileSource.getTileGridForProjection(projection);\n    const z = tileGrid.getZForResolution(viewResolution, tileSource.zDirection);\n    const tileResolution = tileGrid.getResolution(z);\n\n    const sourceKey = tileSource.getKey();\n    if (!this.renderedSourceKey_) {\n      this.renderedSourceKey_ = sourceKey;\n    } else if (this.renderedSourceKey_ !== sourceKey) {\n      this.prependStaleKey(this.renderedSourceKey_);\n      this.renderedSourceKey_ = sourceKey;\n    }\n\n    let frameExtent = frameState.extent;\n    const tilePixelRatio = tileSource.getTilePixelRatio(pixelRatio);\n\n    this.prepareContainer(frameState, target);\n\n    // desired dimensions of the canvas in pixels\n    const width = this.context.canvas.width;\n    const height = this.context.canvas.height;\n\n    const layerExtent =\n      layerState.extent && fromUserExtent(layerState.extent, projection);\n    if (layerExtent) {\n      frameExtent = getIntersection(\n        frameExtent,\n        fromUserExtent(layerState.extent, projection),\n      );\n    }\n\n    const dx = (tileResolution * width) / 2 / tilePixelRatio;\n    const dy = (tileResolution * height) / 2 / tilePixelRatio;\n    const canvasExtent = [\n      viewCenter[0] - dx,\n      viewCenter[1] - dy,\n      viewCenter[0] + dx,\n      viewCenter[1] + dy,\n    ];\n\n    /**\n     * @type {TileLookup}\n     */\n    const tilesByZ = {};\n\n    this.renderedTiles.length = 0;\n\n    /**\n     * Part 1: Enqueue tiles\n     */\n\n    const preload = tileLayer.getPreload();\n    if (frameState.nextExtent && this.enqueueTilesForNextExtent()) {\n      const targetZ = tileGrid.getZForResolution(\n        viewState.nextResolution,\n        tileSource.zDirection,\n      );\n      const nextExtent = getRenderExtent(frameState, frameState.nextExtent);\n      this.enqueueTiles(frameState, nextExtent, targetZ, tilesByZ, preload);\n    }\n\n    const renderExtent = getRenderExtent(frameState, frameExtent);\n    this.enqueueTiles(frameState, renderExtent, z, tilesByZ, 0);\n    if (preload > 0) {\n      setTimeout(() => {\n        this.enqueueTiles(\n          frameState,\n          renderExtent,\n          z - 1,\n          tilesByZ,\n          preload - 1,\n        );\n      }, 0);\n    }\n\n    if (!(z in tilesByZ)) {\n      return this.container;\n    }\n\n    /**\n     * Part 2: Find alt tiles for those that are not yet loaded\n     */\n\n    const uid = getUid(this);\n    const time = frameState.time;\n\n    // look for cached tiles to use if a target tile is not ready\n    for (const tile of tilesByZ[z]) {\n      const tileState = tile.getState();\n      if (tileState === TileState.EMPTY) {\n        continue;\n      }\n      const tileCoord = tile.tileCoord;\n\n      if (tileState === TileState.LOADED) {\n        const alpha = tile.getAlpha(uid, time);\n        if (alpha === 1) {\n          // no need to look for alt tiles\n          tile.endTransition(uid);\n          continue;\n        }\n      }\n      if (tileState !== TileState.ERROR) {\n        this.renderComplete = false;\n      }\n\n      const hasStaleTile = this.findStaleTile_(tileCoord, tilesByZ);\n      if (hasStaleTile) {\n        // use the stale tile before the new tile's transition has completed\n        removeTileFromLookup(tilesByZ, tile, z);\n        frameState.animate = true;\n        continue;\n      }\n\n      // first look for child tiles (at z + 1)\n      const coveredByChildren = this.findAltTiles_(\n        tileGrid,\n        tileCoord,\n        z + 1,\n        tilesByZ,\n      );\n\n      if (coveredByChildren) {\n        continue;\n      }\n\n      // next look for parent tiles\n      const minZoom = tileGrid.getMinZoom();\n      for (let parentZ = z - 1; parentZ >= minZoom; --parentZ) {\n        const coveredByParent = this.findAltTiles_(\n          tileGrid,\n          tileCoord,\n          parentZ,\n          tilesByZ,\n        );\n\n        if (coveredByParent) {\n          break;\n        }\n      }\n    }\n\n    /**\n     * Part 3: Render loaded tiles\n     */\n\n    const canvasScale =\n      ((tileResolution / viewResolution) * pixelRatio) / tilePixelRatio;\n\n    const context = this.getRenderContext(frameState);\n\n    // set scale transform for calculating tile positions on the canvas\n    composeTransform(\n      this.tempTransform,\n      width / 2,\n      height / 2,\n      canvasScale,\n      canvasScale,\n      0,\n      -width / 2,\n      -height / 2,\n    );\n\n    if (layerState.extent) {\n      this.clipUnrotated(context, frameState, layerExtent);\n    }\n\n    if (!tileSource.getInterpolate()) {\n      context.imageSmoothingEnabled = false;\n    }\n\n    this.preRender(context, frameState);\n\n    /** @type {Array<number>} */\n    const zs = Object.keys(tilesByZ).map(Number);\n    zs.sort(ascending);\n\n    let currentClip;\n    const clips = [];\n    const clipZs = [];\n    for (let i = zs.length - 1; i >= 0; --i) {\n      const currentZ = zs[i];\n      const currentTilePixelSize = tileSource.getTilePixelSize(\n        currentZ,\n        pixelRatio,\n        projection,\n      );\n      const currentResolution = tileGrid.getResolution(currentZ);\n      const currentScale = currentResolution / tileResolution;\n      const dx = currentTilePixelSize[0] * currentScale * canvasScale;\n      const dy = currentTilePixelSize[1] * currentScale * canvasScale;\n      const originTileCoord = tileGrid.getTileCoordForCoordAndZ(\n        getTopLeft(canvasExtent),\n        currentZ,\n      );\n      const originTileExtent = tileGrid.getTileCoordExtent(originTileCoord);\n      const origin = applyTransform(this.tempTransform, [\n        (tilePixelRatio * (originTileExtent[0] - canvasExtent[0])) /\n          tileResolution,\n        (tilePixelRatio * (canvasExtent[3] - originTileExtent[3])) /\n          tileResolution,\n      ]);\n      const tileGutter =\n        tilePixelRatio * tileSource.getGutterForProjection(projection);\n      for (const tile of tilesByZ[currentZ]) {\n        if (tile.getState() !== TileState.LOADED) {\n          continue;\n        }\n        const tileCoord = tile.tileCoord;\n\n        // Calculate integer positions and sizes so that tiles align\n        const xIndex = originTileCoord[1] - tileCoord[1];\n        const nextX = Math.round(origin[0] - (xIndex - 1) * dx);\n        const yIndex = originTileCoord[2] - tileCoord[2];\n        const nextY = Math.round(origin[1] - (yIndex - 1) * dy);\n        const x = Math.round(origin[0] - xIndex * dx);\n        const y = Math.round(origin[1] - yIndex * dy);\n        const w = nextX - x;\n        const h = nextY - y;\n        const transition = zs.length === 1;\n\n        let contextSaved = false;\n\n        // Clip mask for regions in this tile that already filled by a higher z tile\n        currentClip = [x, y, x + w, y, x + w, y + h, x, y + h];\n        for (let i = 0, ii = clips.length; i < ii; ++i) {\n          if (!transition && currentZ < clipZs[i]) {\n            const clip = clips[i];\n            if (\n              intersects(\n                [x, y, x + w, y + h],\n                [clip[0], clip[3], clip[4], clip[7]],\n              )\n            ) {\n              if (!contextSaved) {\n                context.save();\n                contextSaved = true;\n              }\n              context.beginPath();\n              // counter-clockwise (outer ring) for current tile\n              context.moveTo(currentClip[0], currentClip[1]);\n              context.lineTo(currentClip[2], currentClip[3]);\n              context.lineTo(currentClip[4], currentClip[5]);\n              context.lineTo(currentClip[6], currentClip[7]);\n              // clockwise (inner ring) for higher z tile\n              context.moveTo(clip[6], clip[7]);\n              context.lineTo(clip[4], clip[5]);\n              context.lineTo(clip[2], clip[3]);\n              context.lineTo(clip[0], clip[1]);\n              context.clip();\n            }\n          }\n        }\n        clips.push(currentClip);\n        clipZs.push(currentZ);\n\n        this.drawTile(tile, frameState, x, y, w, h, tileGutter, transition);\n        if (contextSaved) {\n          context.restore();\n        }\n        this.renderedTiles.unshift(tile);\n\n        // TODO: decide if this is necessary\n        this.updateUsedTiles(frameState.usedTiles, tileSource, tile);\n      }\n    }\n\n    this.renderedResolution = tileResolution;\n    this.extentChanged =\n      !this.renderedExtent_ || !equals(this.renderedExtent_, canvasExtent);\n    this.renderedExtent_ = canvasExtent;\n    this.renderedPixelRatio = pixelRatio;\n\n    this.postRender(this.context, frameState);\n\n    if (layerState.extent) {\n      context.restore();\n    }\n    context.imageSmoothingEnabled = true;\n\n    if (this.renderComplete) {\n      /**\n       * @param {import(\"../../Map.js\").default} map Map.\n       * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n       */\n      const postRenderFunction = (map, frameState) => {\n        const tileSourceKey = getUid(tileSource);\n        const wantedTiles = frameState.wantedTiles[tileSourceKey];\n        const tilesCount = wantedTiles ? Object.keys(wantedTiles).length : 0;\n        this.updateCacheSize(tilesCount);\n        this.tileCache_.expireCache();\n        this.sourceTileCache_?.expireCache();\n      };\n\n      frameState.postRenderFunctions.push(postRenderFunction);\n    }\n\n    // this normally is `div.ol-layer` and is a mocked div in worker\n    return this.container;\n  }\n\n  /**\n   * Increases the cache size if needed\n   * @param {number} tileCount Minimum number of tiles needed.\n   */\n  updateCacheSize(tileCount) {\n    this.tileCache_.highWaterMark = Math.max(\n      this.tileCache_.highWaterMark,\n      tileCount * 2,\n    );\n  }\n\n  /**\n   * @param {import(\"../../Tile.js\").default} tile Tile.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {number} x Left of the tile.\n   * @param {number} y Top of the tile.\n   * @param {number} w Width of the tile.\n   * @param {number} h Height of the tile.\n   * @param {number} gutter Tile gutter.\n   * @param {boolean} transition Apply an alpha transition.\n   * @protected\n   */\n  drawTile(tile, frameState, x, y, w, h, gutter, transition) {\n    let image;\n    if (tile instanceof DataTile) {\n      image = asImageLike(tile.getData());\n      if (!image) {\n        throw new Error('Rendering array data is not yet supported');\n      }\n    } else {\n      image = this.getTileImage(\n        /** @type {import(\"../../ImageTile.js\").default} */ (tile),\n      );\n    }\n\n    if (!image) {\n      return;\n    }\n    const context = this.getRenderContext(frameState);\n    const uid = getUid(this);\n    const layerState = frameState.layerStatesArray[frameState.layerIndex];\n    const alpha =\n      layerState.opacity *\n      (transition ? tile.getAlpha(uid, frameState.time) : 1);\n    const alphaChanged = alpha !== context.globalAlpha;\n    if (alphaChanged) {\n      context.save();\n      context.globalAlpha = alpha;\n    }\n    context.drawImage(\n      image,\n      gutter,\n      gutter,\n      image.width - 2 * gutter,\n      image.height - 2 * gutter,\n      x,\n      y,\n      w,\n      h,\n    );\n\n    if (alphaChanged) {\n      context.restore();\n    }\n    if (alpha !== layerState.opacity) {\n      frameState.animate = true;\n    } else if (transition) {\n      tile.endTransition(uid);\n    }\n  }\n\n  /**\n   * @return {HTMLCanvasElement|OffscreenCanvas} Image\n   */\n  getImage() {\n    const context = this.context;\n    return context ? context.canvas : null;\n  }\n\n  /**\n   * Get the image from a tile.\n   * @param {import(\"../../ImageTile.js\").default} tile Tile.\n   * @return {HTMLCanvasElement|OffscreenCanvas|HTMLImageElement|HTMLVideoElement} Image.\n   * @protected\n   */\n  getTileImage(tile) {\n    return tile.getImage();\n  }\n\n  /**\n   * @param {!Object<string, !Object<string, boolean>>} usedTiles Used tiles.\n   * @param {import(\"../../source/Tile.js\").default} tileSource Tile source.\n   * @param {import('../../Tile.js').default} tile Tile.\n   * @protected\n   */\n  updateUsedTiles(usedTiles, tileSource, tile) {\n    // FIXME should we use tilesToDrawByZ instead?\n    const tileSourceKey = getUid(tileSource);\n    if (!(tileSourceKey in usedTiles)) {\n      usedTiles[tileSourceKey] = {};\n    }\n    usedTiles[tileSourceKey][tile.getKey()] = true;\n  }\n}\n\nexport default CanvasTileLayerRenderer;\n","/**\n * @module ol/layer/TileProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  PRELOAD: 'preload',\n  USE_INTERIM_TILES_ON_ERROR: 'useInterimTilesOnError',\n};\n","/**\n * @module ol/layer/BaseTile\n */\nimport Layer from './Layer.js';\nimport TileProperty from './TileProperty.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./Base\").BaseLayerObjectEventTypes|\n *     import(\"./Layer.js\").LayerEventType|'change:preload'|'change:useInterimTilesOnError', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../render/EventType\").LayerRenderEventTypes, import(\"../render/Event\").default, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"./Base\").BaseLayerObjectEventTypes|\n *   import(\"./Layer.js\").LayerEventType|'change:preload'|'change:useInterimTilesOnError'|import(\"../render/EventType\").LayerRenderEventTypes, Return>} BaseTileLayerOnSignature\n */\n\n/**\n * @template {import(\"../source/Tile.js\").default} TileSourceType\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering.  The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering.  At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`\n * means no preloading.\n * @property {TileSourceType} [source] Source for this layer.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use {@link import(\"../Map.js\").default#addLayer map.addLayer()}.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {boolean} [useInterimTilesOnError=true] Deprecated.  Use interim tiles on error.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n * @property {number} [cacheSize=512] The internal tile cache size.  This needs to be large enough to render\n * two zoom levels worth of tiles.\n */\n\n/**\n * @classdesc\n * For layer sources that provide pre-rendered, tiled images in grids that are\n * organized by zoom levels for specific resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Tile.js\").default} TileSourceType\n * @template {import(\"../renderer/Layer.js\").default} RendererType\n * @extends {Layer<TileSourceType, RendererType>}\n * @api\n */\nclass BaseTileLayer extends Layer {\n  /**\n   * @param {Options<TileSourceType>} [options] Tile layer options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const baseOptions = Object.assign({}, options);\n\n    const cacheSize = options.cacheSize;\n    delete options.cacheSize;\n\n    delete baseOptions.preload;\n    delete baseOptions.useInterimTilesOnError;\n    super(baseOptions);\n\n    /***\n     * @type {BaseTileLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {BaseTileLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {BaseTileLayerOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @type {number|undefined}\n     * @private\n     */\n    this.cacheSize_ = cacheSize;\n\n    this.setPreload(options.preload !== undefined ? options.preload : 0);\n    this.setUseInterimTilesOnError(\n      options.useInterimTilesOnError !== undefined\n        ? options.useInterimTilesOnError\n        : true,\n    );\n  }\n\n  /**\n   * @return {number|undefined} The suggested cache size\n   * @protected\n   */\n  getCacheSize() {\n    return this.cacheSize_;\n  }\n\n  /**\n   * Return the level as number to which we will preload tiles up to.\n   * @return {number} The level to preload tiles up to.\n   * @observable\n   * @api\n   */\n  getPreload() {\n    return /** @type {number} */ (this.get(TileProperty.PRELOAD));\n  }\n\n  /**\n   * Set the level as number to which we will preload tiles up to.\n   * @param {number} preload The level to preload tiles up to.\n   * @observable\n   * @api\n   */\n  setPreload(preload) {\n    this.set(TileProperty.PRELOAD, preload);\n  }\n\n  /**\n   * Deprecated.  Whether we use interim tiles on error.\n   * @return {boolean} Use interim tiles on error.\n   * @observable\n   * @api\n   */\n  getUseInterimTilesOnError() {\n    return /** @type {boolean} */ (\n      this.get(TileProperty.USE_INTERIM_TILES_ON_ERROR)\n    );\n  }\n\n  /**\n   * Deprecated.  Set whether we use interim tiles on error.\n   * @param {boolean} useInterimTilesOnError Use interim tiles on error.\n   * @observable\n   * @api\n   */\n  setUseInterimTilesOnError(useInterimTilesOnError) {\n    this.set(TileProperty.USE_INTERIM_TILES_ON_ERROR, useInterimTilesOnError);\n  }\n\n  /**\n   * Get data for a pixel location.  The return type depends on the source data.  For image tiles,\n   * a four element RGBA array will be returned.  For data tiles, the array length will match the\n   * number of bands in the dataset.  For requests outside the layer extent, `null` will be returned.\n   * Data for a image tiles can only be retrieved if the source's `crossOrigin` property is set.\n   *\n   * ```js\n   * // display layer data on every pointer move\n   * map.on('pointermove', (event) => {\n   *   console.log(layer.getData(event.pixel));\n   * });\n   * ```\n   * @param {import(\"../pixel\").Pixel} pixel Pixel.\n   * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n   * @api\n   * @override\n   */\n  getData(pixel) {\n    return super.getData(pixel);\n  }\n}\n\nexport default BaseTileLayer;\n","/**\n * @module ol/layer/Tile\n */\nimport CanvasTileLayerRenderer from '../renderer/canvas/TileLayer.js';\nimport BaseTileLayer from './BaseTile.js';\n\n/**\n * @classdesc\n * For layer sources that provide pre-rendered, tiled images in grids that are\n * organized by zoom levels for specific resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Tile.js\").default} [TileSourceType=import(\"../source/Tile.js\").default]\n * @extends BaseTileLayer<TileSourceType, CanvasTileLayerRenderer>\n * @api\n */\nclass TileLayer extends BaseTileLayer {\n  /**\n   * @param {import(\"./BaseTile.js\").Options<TileSourceType>} [options] Tile layer options.\n   */\n  constructor(options) {\n    super(options);\n  }\n\n  /**\n   * @override\n   */\n  createRenderer() {\n    return new CanvasTileLayerRenderer(this, {\n      cacheSize: this.getCacheSize(),\n    });\n  }\n}\n\nexport default TileLayer;\n","/**\n * @module ol/renderer/canvas/VectorTileLayer\n */\nimport TileState from '../../TileState.js';\nimport ViewHint from '../../ViewHint.js';\nimport {ascending} from '../../array.js';\nimport {wrapX} from '../../coordinate.js';\nimport {\n  boundingExtent,\n  buffer,\n  containsExtent,\n  equals,\n  getIntersection,\n  getTopLeft,\n  intersects,\n} from '../../extent.js';\nimport {equivalent, getTransform, transformExtent} from '../../proj.js';\nimport CanvasBuilderGroup from '../../render/canvas/BuilderGroup.js';\nimport CanvasExecutorGroup, {\n  DECLUTTER,\n} from '../../render/canvas/ExecutorGroup.js';\nimport ZIndexContext from '../../render/canvas/ZIndexContext.js';\nimport {\n  HIT_DETECT_RESOLUTION,\n  createHitDetectionImageData,\n  hitDetect,\n} from '../../render/canvas/hitdetect.js';\nimport {toSize} from '../../size.js';\nimport {\n  apply as applyTransform,\n  create as createTransform,\n  multiply,\n  reset as resetTransform,\n  scale,\n  scale as scaleTransform,\n  translate as translateTransform,\n} from '../../transform.js';\nimport {getUid} from '../../util.js';\nimport {\n  getSquaredTolerance as getSquaredRenderTolerance,\n  renderFeature,\n} from '../vector.js';\nimport CanvasTileLayerRenderer from './TileLayer.js';\n\n/**\n * @type {!Object<string, Array<import(\"../../render/canvas.js\").BuilderType>>}\n */\nconst IMAGE_REPLAYS = {\n  'image': ['Polygon', 'Circle', 'LineString', 'Image', 'Text'],\n  'hybrid': ['Polygon', 'LineString'],\n  'vector': [],\n};\n\n/**\n * @type {!Object<string, Array<import(\"../../render/canvas.js\").BuilderType>>}\n */\nconst VECTOR_REPLAYS = {\n  'hybrid': ['Image', 'Text', 'Default'],\n  'vector': ['Polygon', 'Circle', 'LineString', 'Image', 'Text', 'Default'],\n};\n\n/**\n * @classdesc\n * Canvas renderer for vector tile layers.\n * @api\n * @extends {CanvasTileLayerRenderer<import(\"../../layer/VectorTile.js\").default<import('../../source/VectorTile.js').default<import('../../Feature.js').FeatureLike>>>}\n */\nclass CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {\n  /**\n   * @param {import(\"../../layer/VectorTile.js\").default} layer VectorTile layer.\n   * @param {import(\"./TileLayer.js\").Options} options Options.\n   */\n  constructor(layer, options) {\n    super(layer, options);\n\n    /** @private */\n    this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this);\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedLayerRevision_;\n\n    /**\n     * @private\n     * @type {import(\"../../transform\").Transform}\n     */\n    this.renderedPixelToCoordinateTransform_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedRotation_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.renderedOpacity_ = 1;\n\n    /**\n     * @private\n     * @type {import(\"../../transform.js\").Transform}\n     */\n    this.tmpTransform_ = createTransform();\n\n    /**\n     * @private\n     * @type {Array<ZIndexContext>}\n     */\n    this.tileClipContexts_ = null;\n  }\n\n  /**\n   * Determine whether tiles for next extent should be enqueued for rendering.\n   * @return {boolean} Rendering tiles for next extent is supported.\n   * @override\n   */\n  enqueueTilesForNextExtent() {\n    return this.getLayer().getRenderMode() !== 'vector';\n  }\n\n  /**\n   * @param {import(\"../../VectorRenderTile.js\").default} tile Tile.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {number} x Left of the tile.\n   * @param {number} y Top of the tile.\n   * @param {number} w Width of the tile.\n   * @param {number} h Height of the tile.\n   * @param {number} gutter Tile gutter.\n   * @param {boolean} transition Apply an alpha transition.\n   * @override\n   */\n  drawTile(tile, frameState, x, y, w, h, gutter, transition) {\n    this.updateExecutorGroup_(\n      tile,\n      frameState.pixelRatio,\n      frameState.viewState.projection,\n    );\n    if (this.tileImageNeedsRender_(tile)) {\n      this.renderTileImage_(tile, frameState);\n    }\n    super.drawTile(tile, frameState, x, y, w, h, gutter, transition);\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {import(\"../../Tile.js\").default|null} Tile (or null if outside source extent).\n   * @override\n   */\n  getTile(z, x, y, frameState) {\n    const tile = /** @type {import(\"../../VectorRenderTile.js\").default} */ (\n      this.getOrCreateTile(z, x, y, frameState)\n    );\n    if (!tile) {\n      return null;\n    }\n\n    const viewState = frameState.viewState;\n    const resolution = viewState.resolution;\n    const viewHints = frameState.viewHints;\n    const source = this.getLayer().getSource();\n    const tileGrid = source.getTileGridForProjection(viewState.projection);\n    const hifi = !(\n      viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]\n    );\n    const withinTileResolutionRange =\n      tileGrid.getZForResolution(resolution, source.zDirection) === z;\n    if (hifi && withinTileResolutionRange) {\n      tile.wantedResolution = resolution;\n    } else if (!tile.wantedResolution) {\n      tile.wantedResolution = tileGrid.getResolution(z);\n    }\n\n    return tile;\n  }\n\n  /**\n   * Determine whether render should be called.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @return {boolean} Layer is ready to be rendered.\n   * @override\n   */\n  prepareFrame(frameState) {\n    const layerRevision = this.getLayer().getRevision();\n    if (this.renderedLayerRevision_ !== layerRevision) {\n      this.renderedLayerRevision_ = layerRevision;\n      this.renderedTiles.length = 0;\n    }\n    return super.prepareFrame(frameState);\n  }\n\n  /**\n   * @param {import(\"../../VectorRenderTile.js\").default} tile Tile.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../../proj/Projection.js\").default} projection Projection.\n   * @private\n   */\n  updateExecutorGroup_(tile, pixelRatio, projection) {\n    const layer = /** @type {import(\"../../layer/VectorTile.js\").default} */ (\n      this.getLayer()\n    );\n    const revision = layer.getRevision();\n    const renderOrder = layer.getRenderOrder() || null;\n\n    const resolution = tile.wantedResolution;\n    const builderState = tile.getReplayState(layer);\n    if (\n      !builderState.dirty &&\n      builderState.renderedResolution === resolution &&\n      builderState.renderedRevision == revision &&\n      builderState.renderedPixelRatio === pixelRatio &&\n      builderState.renderedRenderOrder == renderOrder\n    ) {\n      return;\n    }\n\n    const source = layer.getSource();\n    const declutter = !!layer.getDeclutter();\n    const sourceTileGrid = source.getTileGrid();\n    const tileGrid = source.getTileGridForProjection(projection);\n    const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);\n\n    const sourceTiles = source.getSourceTiles(pixelRatio, projection, tile);\n    const layerUid = getUid(layer);\n    delete tile.hitDetectionImageData[layerUid];\n    tile.executorGroups[layerUid] = [];\n    builderState.dirty = false;\n    for (let t = 0, tt = sourceTiles.length; t < tt; ++t) {\n      const sourceTile = sourceTiles[t];\n      if (sourceTile.getState() != TileState.LOADED) {\n        continue;\n      }\n      const sourceProjection = source.getProjection();\n      const sourceTileCoord = sourceTile.tileCoord;\n      let sourceTileExtent = sourceTileGrid.getTileCoordExtent(sourceTileCoord);\n      if (\n        projection &&\n        sourceProjection &&\n        !equivalent(projection, sourceProjection)\n      ) {\n        sourceTileExtent = transformExtent(\n          sourceTileExtent,\n          sourceProjection,\n          projection,\n          32,\n        );\n      }\n\n      const sharedExtent = getIntersection(tileExtent, sourceTileExtent);\n      const builderExtent = buffer(\n        sharedExtent,\n        layer.getRenderBuffer() * resolution,\n        this.tempExtent,\n      );\n      const bufferedExtent = equals(sourceTileExtent, sharedExtent)\n        ? null\n        : builderExtent;\n      const builderGroup = new CanvasBuilderGroup(\n        0,\n        sharedExtent,\n        resolution,\n        pixelRatio,\n      );\n      const squaredTolerance = getSquaredRenderTolerance(\n        resolution,\n        pixelRatio,\n      );\n\n      /**\n       * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n       * @param {number} [index] Render order index.\n       * @this {CanvasVectorTileLayerRenderer}\n       */\n      const render = function (feature, index) {\n        let styles;\n        const styleFunction =\n          feature.getStyleFunction() || layer.getStyleFunction();\n        if (styleFunction) {\n          styles = styleFunction(feature, resolution);\n        }\n        if (styles) {\n          const dirty = this.renderFeature(\n            feature,\n            squaredTolerance,\n            styles,\n            builderGroup,\n            declutter,\n            index,\n          );\n          builderState.dirty = builderState.dirty || dirty;\n        }\n      };\n\n      const features = sourceTile.getFeatures();\n      if (renderOrder && renderOrder !== builderState.renderedRenderOrder) {\n        features.sort(renderOrder);\n      }\n      for (let i = 0, ii = features.length; i < ii; ++i) {\n        let feature = features[i];\n        if (\n          projection &&\n          sourceTile.projection &&\n          !equivalent(projection, sourceTile.projection)\n        ) {\n          feature = feature.clone();\n          feature\n            .getGeometry()\n            .applyTransform(getTransform(sourceTile.projection, projection));\n        }\n        if (\n          !bufferedExtent ||\n          intersects(bufferedExtent, feature.getGeometry().getExtent())\n        ) {\n          render.call(this, feature, i);\n        }\n      }\n      const executorGroupInstructions = builderGroup.finish();\n      // no need to clip when the render tile is covered by a single source tile\n      const replayExtent =\n        layer.getRenderMode() !== 'vector' &&\n        declutter &&\n        sourceTiles.length === 1\n          ? null\n          : sharedExtent;\n      const renderingReplayGroup = new CanvasExecutorGroup(\n        replayExtent,\n        resolution,\n        pixelRatio,\n        source.getOverlaps(),\n        executorGroupInstructions,\n        layer.getRenderBuffer(),\n        true,\n      );\n      tile.executorGroups[layerUid].push(renderingReplayGroup);\n    }\n    builderState.renderedRevision = revision;\n    builderState.renderedPixelRatio = pixelRatio;\n    builderState.renderedRenderOrder = renderOrder;\n    builderState.renderedResolution = resolution;\n  }\n\n  /**\n   * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {number} hitTolerance Hit tolerance in pixels.\n   * @param {import(\"../vector.js\").FeatureCallback<T>} callback Feature callback.\n   * @param {Array<import(\"../Map.js\").HitMatch<T>>} matches The hit detected matches with tolerance.\n   * @return {T|undefined} Callback result.\n   * @template T\n   * @override\n   */\n  forEachFeatureAtCoordinate(\n    coordinate,\n    frameState,\n    hitTolerance,\n    callback,\n    matches,\n  ) {\n    const resolution = frameState.viewState.resolution;\n    const rotation = frameState.viewState.rotation;\n    hitTolerance = hitTolerance == undefined ? 0 : hitTolerance;\n    const layer = this.getLayer();\n    const source = layer.getSource();\n    const tileGrid = source.getTileGridForProjection(\n      frameState.viewState.projection,\n    );\n\n    const hitExtent = boundingExtent([coordinate]);\n    buffer(hitExtent, resolution * hitTolerance, hitExtent);\n\n    /** @type {!Object<string, import(\"../Map.js\").HitMatch<T>|true>} */\n    const features = {};\n\n    /**\n     * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n     * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n     * @param {number} distanceSq The squared distance to the click position.\n     * @return {T|undefined} Callback result.\n     */\n    const featureCallback = function (feature, geometry, distanceSq) {\n      let key = feature.getId();\n      if (key === undefined) {\n        key = getUid(feature);\n      }\n      const match = features[key];\n      if (!match) {\n        if (distanceSq === 0) {\n          features[key] = true;\n          return callback(feature, layer, geometry);\n        }\n        matches.push(\n          (features[key] = {\n            feature: feature,\n            layer: layer,\n            geometry: geometry,\n            distanceSq: distanceSq,\n            callback: callback,\n          }),\n        );\n      } else if (match !== true && distanceSq < match.distanceSq) {\n        if (distanceSq === 0) {\n          features[key] = true;\n          matches.splice(matches.lastIndexOf(match), 1);\n          return callback(feature, layer, geometry);\n        }\n        match.geometry = geometry;\n        match.distanceSq = distanceSq;\n      }\n      return undefined;\n    };\n\n    const renderedTiles =\n      /** @type {Array<import(\"../../VectorRenderTile.js\").default>} */ (\n        this.renderedTiles\n      );\n    const layerUid = getUid(layer);\n    const declutter = layer.getDeclutter();\n    const declutteredFeatures = declutter\n      ? frameState.declutter?.[declutter]?.all().map((item) => item.value)\n      : null;\n    let found;\n    foundFeature: for (let i = 0, ii = renderedTiles.length; i < ii; ++i) {\n      const tile = renderedTiles[i];\n      const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);\n      if (!intersects(tileExtent, hitExtent)) {\n        continue;\n      }\n\n      const executorGroups = tile.executorGroups[layerUid];\n      for (let t = 0, tt = executorGroups.length; t < tt; ++t) {\n        found = executorGroups[t].forEachFeatureAtCoordinate(\n          coordinate,\n          resolution,\n          rotation,\n          hitTolerance,\n          featureCallback,\n          declutteredFeatures,\n        );\n        if (found) {\n          break foundFeature;\n        }\n      }\n    }\n    return found;\n  }\n\n  /**\n   * Asynchronous layer level hit detection.\n   * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../../Feature.js\").FeatureLike>>} Promise that resolves with an array of features.\n   * @override\n   */\n  getFeatures(pixel) {\n    if (this.renderedTiles.length === 0) {\n      return Promise.resolve([]);\n    }\n    return new Promise((resolve, reject) => {\n      const layer = this.getLayer();\n      const source = layer.getSource();\n      const projection = this.renderedProjection;\n      const projectionExtent = projection.getExtent();\n      const resolution = this.renderedResolution;\n      const tileGrid = source.getTileGridForProjection(projection);\n      const coordinate = applyTransform(\n        this.renderedPixelToCoordinateTransform_,\n        pixel.slice(),\n      );\n      const tileCoordString = tileGrid\n        .getTileCoordForCoordAndResolution(coordinate, resolution)\n        .toString();\n      const tile =\n        /** @type {Array<import(\"../../VectorRenderTile.js\").default>} */ (\n          this.renderedTiles\n        ).find(\n          (tile) =>\n            tile.tileCoord.toString() === tileCoordString &&\n            tile.getState() === TileState.LOADED,\n        );\n      if (!tile || tile.loadingSourceTiles > 0) {\n        resolve([]);\n        return;\n      }\n      if (\n        source.getWrapX() &&\n        projection.canWrapX() &&\n        !containsExtent(\n          projectionExtent,\n          tileGrid.getTileCoordExtent(tile.tileCoord),\n        )\n      ) {\n        wrapX(coordinate, projection);\n      }\n      const layerUid = getUid(layer);\n      const extent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);\n      const corner = getTopLeft(extent);\n      const tilePixel = [\n        (coordinate[0] - corner[0]) / resolution,\n        (corner[1] - coordinate[1]) / resolution,\n      ];\n      const features = tile\n        .getSourceTiles()\n        .reduce(\n          (accumulator, sourceTile) =>\n            accumulator.concat(sourceTile.getFeatures()),\n          /** @type {Array<import(\"../../Feature.js\").FeatureLike>} */ ([]),\n        );\n      let hitDetectionImageData = tile.hitDetectionImageData[layerUid];\n      if (!hitDetectionImageData) {\n        const tileSize = toSize(\n          tileGrid.getTileSize(\n            tileGrid.getZForResolution(resolution, source.zDirection),\n          ),\n        );\n        const rotation = this.renderedRotation_;\n        const transforms = [\n          this.getRenderTransform(\n            tileGrid.getTileCoordCenter(tile.wrappedTileCoord),\n            resolution,\n            0,\n            HIT_DETECT_RESOLUTION,\n            tileSize[0] * HIT_DETECT_RESOLUTION,\n            tileSize[1] * HIT_DETECT_RESOLUTION,\n            0,\n          ),\n        ];\n        hitDetectionImageData = createHitDetectionImageData(\n          tileSize,\n          transforms,\n          features,\n          layer.getStyleFunction(),\n          tileGrid.getTileCoordExtent(tile.wrappedTileCoord),\n          tile.getReplayState(layer).renderedResolution,\n          rotation,\n        );\n        tile.hitDetectionImageData[layerUid] = hitDetectionImageData;\n      }\n      resolve(hitDetect(tilePixel, features, hitDetectionImageData));\n    });\n  }\n\n  /**\n   * @param {import(\"../../extent.js\").Extent} extent Extent.\n   * @return {Array<import('../../Feature.js').FeatureLike>} Features.\n   */\n  getFeaturesInExtent(extent) {\n    /** @type {Array<import('../../Feature.js').FeatureLike>} */\n    const features = [];\n    const tileCache = this.getTileCache();\n    if (tileCache.getCount() === 0) {\n      return features;\n    }\n    const source = this.getLayer().getSource();\n    const tileGrid = source.getTileGridForProjection(\n      this.frameState.viewState.projection,\n    );\n    const z = tileGrid.getZForResolution(this.renderedResolution);\n    /** @type {Object<string, true>} */\n    const visitedSourceTiles = {};\n    tileCache.forEach((tile) => {\n      if (tile.tileCoord[0] !== z || tile.getState() !== TileState.LOADED) {\n        return;\n      }\n      const sourceTiles = tile.getSourceTiles();\n      for (let i = 0, ii = sourceTiles.length; i < ii; ++i) {\n        const sourceTile = sourceTiles[i];\n        const key = sourceTile.getKey();\n        if (key in visitedSourceTiles) {\n          continue;\n        }\n        visitedSourceTiles[key] = true;\n        const tileCoord = sourceTile.tileCoord;\n        if (intersects(extent, tileGrid.getTileCoordExtent(tileCoord))) {\n          const tileFeatures = sourceTile.getFeatures();\n          if (tileFeatures) {\n            for (let j = 0, jj = tileFeatures.length; j < jj; ++j) {\n              const candidate = tileFeatures[j];\n              const geometry = candidate.getGeometry();\n              if (intersects(extent, geometry.getExtent())) {\n                features.push(candidate);\n              }\n            }\n          }\n        }\n      }\n    });\n    return features;\n  }\n\n  /**\n   * Perform action necessary to get the layer rendered after new fonts have loaded\n   * @override\n   */\n  handleFontsChanged() {\n    const layer = this.getLayer();\n    if (layer.getVisible() && this.renderedLayerRevision_ !== undefined) {\n      layer.changed();\n    }\n  }\n\n  /**\n   * Handle changes in image style state.\n   * @param {import(\"../../events/Event.js\").default} event Image style change event.\n   * @private\n   */\n  handleStyleImageChange_(event) {\n    this.renderIfReadyAndVisible();\n  }\n\n  /**\n   * Render declutter items for this layer\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @param {import(\"../../layer/Layer.js\").State} layerState Layer state.\n   */\n  renderDeclutter(frameState, layerState) {\n    const context = this.context;\n    const alpha = context.globalAlpha;\n    context.globalAlpha = layerState.opacity;\n    const viewHints = frameState.viewHints;\n    const hifi = !(\n      viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]\n    );\n    const scaledCanvasSize = [\n      this.context.canvas.width,\n      this.context.canvas.height,\n    ];\n    const declutter = this.getLayer().getDeclutter();\n    const declutterTree = declutter\n      ? frameState.declutter?.[declutter]\n      : undefined;\n    const layerUid = getUid(this.getLayer());\n    const tiles =\n      /** @type {Array<import(\"../../VectorRenderTile.js\").default>} */ (\n        this.renderedTiles\n      );\n    for (let i = 0, ii = tiles.length; i < ii; ++i) {\n      const tile = tiles[i];\n      const executorGroups = tile.executorGroups[layerUid];\n      if (executorGroups) {\n        for (let j = executorGroups.length - 1; j >= 0; --j) {\n          executorGroups[j].execute(\n            this.context,\n            scaledCanvasSize,\n            this.getTileRenderTransform(tile, frameState),\n            frameState.viewState.rotation,\n            hifi,\n            DECLUTTER,\n            declutterTree,\n          );\n        }\n      }\n    }\n    context.globalAlpha = alpha;\n  }\n\n  /**\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @override\n   */\n  renderDeferredInternal(frameState) {\n    const tiles =\n      /** @type {Array<import(\"../../VectorRenderTile.js\").default>} */ (\n        this.renderedTiles\n      );\n    const layerUid = getUid(this.getLayer());\n    const executorGroups = tiles.reduce((acc, tile, index) => {\n      tile.executorGroups[layerUid].forEach((executorGroup) =>\n        acc.push({\n          executorGroup,\n          index,\n        }),\n      );\n      return acc;\n    }, /** @type {Array<{executorGroup: CanvasExecutorGroup, index: number}>} */ ([]));\n\n    const executorGroupZIndexContexts = executorGroups.map(({executorGroup}) =>\n      executorGroup.getDeferredZIndexContexts(),\n    );\n    /** @type {Object<number, true>} */\n    const usedZIndices = {};\n    for (let i = 0, ii = executorGroups.length; i < ii; ++i) {\n      const executorGroupZindexContext =\n        executorGroups[i].executorGroup.getDeferredZIndexContexts();\n      for (const key in executorGroupZindexContext) {\n        usedZIndices[key] = true;\n      }\n    }\n    const zIndexKeys = Object.keys(usedZIndices).map(Number).sort(ascending);\n    zIndexKeys.forEach((zIndex) => {\n      executorGroupZIndexContexts.forEach((zIndexContexts, i) => {\n        if (!zIndexContexts[zIndex]) {\n          return;\n        }\n        zIndexContexts[zIndex].forEach((zIndexContext) => {\n          const {executorGroup, index} = executorGroups[i];\n          const context = executorGroup.getRenderedContext();\n          const alpha = context.globalAlpha;\n          context.globalAlpha = this.renderedOpacity_;\n          const tileClipContext = this.tileClipContexts_[index];\n          if (tileClipContext) {\n            tileClipContext.draw(context);\n          }\n          zIndexContext.draw(context);\n          if (tileClipContext) {\n            context.restore();\n          }\n          context.globalAlpha = alpha;\n          zIndexContext.clear();\n        });\n        zIndexContexts[zIndex].length = 0;\n      });\n    });\n  }\n\n  /**\n   * @param {import(\"../../VectorRenderTile.js\").default} tile The tile\n   * @param {import('../../Map.js').FrameState} frameState Current frame state\n   * @return {import('../../transform.js').Transform} Transform to use to render this tile\n   */\n  getTileRenderTransform(tile, frameState) {\n    const pixelRatio = frameState.pixelRatio;\n    const viewState = frameState.viewState;\n    const center = viewState.center;\n    const resolution = viewState.resolution;\n    const rotation = viewState.rotation;\n    const size = frameState.size;\n    const width = Math.round(size[0] * pixelRatio);\n    const height = Math.round(size[1] * pixelRatio);\n\n    const source = this.getLayer().getSource();\n    const tileGrid = source.getTileGridForProjection(\n      frameState.viewState.projection,\n    );\n    const tileCoord = tile.tileCoord;\n    const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);\n    const worldOffset =\n      tileGrid.getTileCoordExtent(tileCoord, this.tempExtent)[0] -\n      tileExtent[0];\n    const transform = multiply(\n      scale(this.inversePixelTransform.slice(), 1 / pixelRatio, 1 / pixelRatio),\n      this.getRenderTransform(\n        center,\n        resolution,\n        rotation,\n        pixelRatio,\n        width,\n        height,\n        worldOffset,\n      ),\n    );\n    return transform;\n  }\n\n  /**\n   * Render the vectors for this layer.\n   * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context Target context.\n   * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n   * @override\n   */\n  postRender(context, frameState) {\n    const viewHints = frameState.viewHints;\n    const hifi = !(\n      viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]\n    );\n\n    this.renderedPixelToCoordinateTransform_ =\n      frameState.pixelToCoordinateTransform.slice();\n    this.renderedRotation_ = frameState.viewState.rotation;\n    this.renderedOpacity_ =\n      frameState.layerStatesArray[frameState.layerIndex].opacity;\n\n    const layer = /** @type {import(\"../../layer/VectorTile.js\").default} */ (\n      this.getLayer()\n    );\n    const renderMode = layer.getRenderMode();\n    const alpha = context.globalAlpha;\n    context.globalAlpha = this.renderedOpacity_;\n    const declutter = layer.getDeclutter();\n    const replayTypes = declutter\n      ? VECTOR_REPLAYS[renderMode].filter((type) => !DECLUTTER.includes(type))\n      : VECTOR_REPLAYS[renderMode];\n    const viewState = frameState.viewState;\n    const rotation = viewState.rotation;\n    const tileSource = layer.getSource();\n    const tileGrid = tileSource.getTileGridForProjection(viewState.projection);\n    const z = tileGrid.getZForResolution(\n      viewState.resolution,\n      tileSource.zDirection,\n    );\n\n    const tiles =\n      /** @type {Array<import(\"../../VectorRenderTile.js\").default>} */ (\n        this.renderedTiles\n      );\n    const clips = [];\n    const clipZs = [];\n    const tileClipContexts = [];\n    const layerUid = getUid(layer);\n    let ready = true;\n    for (let i = tiles.length - 1; i >= 0; --i) {\n      const tile = tiles[i];\n      ready = ready && !tile.getReplayState(layer).dirty;\n      const executorGroups = tile.executorGroups[layerUid].filter((group) =>\n        group.hasExecutors(replayTypes),\n      );\n      if (executorGroups.length === 0) {\n        continue;\n      }\n      const transform = this.getTileRenderTransform(tile, frameState);\n      const currentZ = tile.tileCoord[0];\n      let contextSaved = false;\n      // Clip mask for regions in this tile that already filled by a higher z tile\n      const currentClip = executorGroups[0].getClipCoords(transform);\n      let clipContext = context;\n      let tileClipContext;\n      if (currentClip) {\n        tileClipContext = new ZIndexContext();\n        clipContext = tileClipContext.getContext();\n        for (let j = 0, jj = clips.length; j < jj; ++j) {\n          if (z !== currentZ && currentZ < clipZs[j]) {\n            const clip = clips[j];\n            if (\n              intersects(\n                [\n                  currentClip[0],\n                  currentClip[3],\n                  currentClip[4],\n                  currentClip[7],\n                ],\n                [clip[0], clip[3], clip[4], clip[7]],\n              )\n            ) {\n              if (!contextSaved) {\n                clipContext.save();\n                contextSaved = true;\n              }\n              clipContext.beginPath();\n              // counter-clockwise (outer ring) for current tile\n              clipContext.moveTo(currentClip[0], currentClip[1]);\n              clipContext.lineTo(currentClip[2], currentClip[3]);\n              clipContext.lineTo(currentClip[4], currentClip[5]);\n              clipContext.lineTo(currentClip[6], currentClip[7]);\n              // clockwise (inner ring) for higher z tile\n              clipContext.moveTo(clip[6], clip[7]);\n              clipContext.lineTo(clip[4], clip[5]);\n              clipContext.lineTo(clip[2], clip[3]);\n              clipContext.lineTo(clip[0], clip[1]);\n              clipContext.clip();\n            }\n          }\n        }\n        clips.push(currentClip);\n        clipZs.push(currentZ);\n      }\n      for (let t = 0, tt = executorGroups.length; t < tt; ++t) {\n        const executorGroup = executorGroups[t];\n        executorGroup.execute(\n          context,\n          [context.canvas.width, context.canvas.height],\n          transform,\n          rotation,\n          hifi,\n          replayTypes,\n          frameState.declutter?.[declutter],\n        );\n      }\n      if (contextSaved) {\n        if (clipContext === context) {\n          clipContext.restore();\n        } else {\n          tileClipContexts[i] = tileClipContext;\n        }\n      }\n    }\n    context.globalAlpha = alpha;\n    this.ready = ready;\n    this.tileClipContexts_ = tileClipContexts;\n    if (!frameState.declutter) {\n      this.renderDeferredInternal(frameState);\n    }\n\n    super.postRender(context, frameState);\n  }\n\n  /**\n   * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n   * @param {number} squaredTolerance Squared tolerance.\n   * @param {import(\"../../style/Style.js\").default|Array<import(\"../../style/Style.js\").default>} styles The style or array of styles.\n   * @param {import(\"../../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n   * @param {boolean} [declutter] Enable decluttering.\n   * @param {number} [index] Render order index.\n   * @return {boolean} `true` if an image is loading.\n   */\n  renderFeature(\n    feature,\n    squaredTolerance,\n    styles,\n    builderGroup,\n    declutter,\n    index,\n  ) {\n    if (!styles) {\n      return false;\n    }\n    let loading = false;\n    if (Array.isArray(styles)) {\n      for (let i = 0, ii = styles.length; i < ii; ++i) {\n        loading =\n          renderFeature(\n            builderGroup,\n            feature,\n            styles[i],\n            squaredTolerance,\n            this.boundHandleStyleImageChange_,\n            undefined,\n            declutter,\n            index,\n          ) || loading;\n      }\n    } else {\n      loading = renderFeature(\n        builderGroup,\n        feature,\n        styles,\n        squaredTolerance,\n        this.boundHandleStyleImageChange_,\n        undefined,\n        declutter,\n        index,\n      );\n    }\n    return loading;\n  }\n\n  /**\n   * @param {import(\"../../VectorRenderTile.js\").default} tile Tile.\n   * @return {boolean} A new tile image was rendered.\n   * @private\n   */\n  tileImageNeedsRender_(tile) {\n    const layer = /** @type {import(\"../../layer/VectorTile.js\").default} */ (\n      this.getLayer()\n    );\n    if (layer.getRenderMode() === 'vector') {\n      return false;\n    }\n    const replayState = tile.getReplayState(layer);\n    const revision = layer.getRevision();\n    const resolution = tile.wantedResolution;\n    const tileImageNeedsRender =\n      replayState.renderedTileResolution !== resolution ||\n      replayState.renderedTileRevision !== revision;\n    return tileImageNeedsRender;\n  }\n\n  /**\n   * @param {import(\"../../VectorRenderTile.js\").default} tile Tile.\n   * @param {import(\"../../Map\").FrameState} frameState Frame state.\n   * @private\n   */\n  renderTileImage_(tile, frameState) {\n    const layer = /** @type {import(\"../../layer/VectorTile.js\").default} */ (\n      this.getLayer()\n    );\n    const replayState = tile.getReplayState(layer);\n    const revision = layer.getRevision();\n    const executorGroups = tile.executorGroups[getUid(layer)];\n    replayState.renderedTileRevision = revision;\n\n    const tileCoord = tile.wrappedTileCoord;\n    const z = tileCoord[0];\n    const source = layer.getSource();\n    let pixelRatio = frameState.pixelRatio;\n    const viewState = frameState.viewState;\n    const projection = viewState.projection;\n    const tileGrid = source.getTileGridForProjection(projection);\n    const tileResolution = tileGrid.getResolution(tile.tileCoord[0]);\n    const renderPixelRatio =\n      (frameState.pixelRatio / tile.wantedResolution) * tileResolution;\n    const resolution = tileGrid.getResolution(z);\n    const context = tile.getContext();\n\n    // Increase tile size when overzooming for low pixel ratio, to avoid blurry tiles\n    pixelRatio = Math.round(\n      Math.max(pixelRatio, renderPixelRatio / pixelRatio),\n    );\n    const size = source.getTilePixelSize(z, pixelRatio, projection);\n    context.canvas.width = size[0];\n    context.canvas.height = size[1];\n    const renderScale = pixelRatio / renderPixelRatio;\n    if (renderScale !== 1) {\n      const canvasTransform = resetTransform(this.tmpTransform_);\n      scaleTransform(canvasTransform, renderScale, renderScale);\n      context.setTransform.apply(context, canvasTransform);\n    }\n    const tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tempExtent);\n    const pixelScale = renderPixelRatio / resolution;\n    const transform = resetTransform(this.tmpTransform_);\n    scaleTransform(transform, pixelScale, -pixelScale);\n    translateTransform(transform, -tileExtent[0], -tileExtent[3]);\n    for (let i = 0, ii = executorGroups.length; i < ii; ++i) {\n      const executorGroup = executorGroups[i];\n      executorGroup.execute(\n        context,\n        [\n          context.canvas.width * renderScale,\n          context.canvas.height * renderScale,\n        ],\n        transform,\n        0,\n        true,\n        IMAGE_REPLAYS[layer.getRenderMode()],\n        null,\n      );\n    }\n    replayState.renderedTileResolution = tile.wantedResolution;\n  }\n}\n\nexport default CanvasVectorTileLayerRenderer;\n","/**\n * @module ol/layer/VectorTile\n */\nimport {assert} from '../asserts.js';\nimport CanvasVectorTileLayerRenderer from '../renderer/canvas/VectorTileLayer.js';\nimport BaseVectorLayer from './BaseVector.js';\nimport TileProperty from './TileProperty.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./Base\").BaseLayerObjectEventTypes|\n *     import(\"./Layer.js\").LayerEventType|'change:preload'|'change:useInterimTilesOnError', import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../render/EventType\").LayerRenderEventTypes, import(\"../render/Event\").default, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"./Base\").BaseLayerObjectEventTypes|\n *     import(\"./Layer.js\").LayerEventType|'change:preload'|'change:useInterimTilesOnError'|import(\"../render/EventType\").LayerRenderEventTypes, Return>} VectorTileLayerOnSignature\n */\n\n/**\n * @typedef {'hybrid' | 'vector'} VectorTileRenderType\n */\n\n/***\n * @template T\n * @typedef {T extends import(\"../source/VectorTile.js\").default<infer U extends import(\"../Feature.js\").FeatureLike> ? U : never} ExtractedFeatureType\n */\n\n/**\n * @template {import(\"../source/VectorTile.js\").default<FeatureType>} [VectorTileSourceType=import(\"../source/VectorTile.js\").default<*>]\n * @template {import(\"../Feature\").FeatureLike} [FeatureType=ExtractedFeatureType<VectorTileSourceType>]\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering.  The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering.  At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"../render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the tile extent used by the\n * renderer when getting features from the vector tile for the rendering or hit-detection.\n * Recommended value: Vector tiles are usually generated with a buffer, so this value should match\n * the largest possible buffer of the used tiles. It should be at least the size of the largest\n * point symbol or line width.\n * @property {VectorTileRenderType} [renderMode='hybrid'] Render mode for vector tiles:\n *  `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom\n *    animations. Point symbols and texts are accurately rendered as vectors and can stay upright on\n *    rotated views, but get lifted above all polygon and line elements.\n *  `'vector'`: Everything is rendered as vectors and the original render order is maintained. Use\n *    this mode for improved performance and visual epxerience on vector tile layers with not too many\n *    rendered features (e.g. for highlighting a subset of features of another layer with the same\n *    source).\n * @property {VectorTileSourceType} [source] Source.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * @property {boolean|string|number} [declutter=false] Declutter images and text. Any truthy value will enable\n * decluttering. Within a layer, a feature rendered before another has higher priority. All layers with the\n * same `declutter` value will be decluttered together. The priority is determined by the drawing order of the\n * layers with the same `declutter` value. Higher in the layer stack means higher priority. To declutter distinct\n * layers or groups of layers separately, use different truthy values for `declutter`.\n * @property {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer\n * style. When set to `null`, only\n * features that have their own style will be rendered. See {@link module:ol/style/Style~Style} for the default style\n * which will be used if this is not set.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no\n * background will be rendered.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will be\n * recreated during animations. This means that no vectors will be shown clipped, but the setting\n * will have a performance impact for large amounts of vector data. When set to `false`, batches\n * will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will be\n * recreated during interactions. See also `updateWhileAnimating`.\n * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`\n * means no preloading.\n * @property {boolean} [useInterimTilesOnError=true] Deprecated.  Use interim tiles on error.\n * @property {Object<string, *>} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n * @property {number} [cacheSize=0] The internal tile cache size.  If too small, this will auto-grow to hold\n * two zoom levels worth of tiles.\n */\n\n/**\n * @classdesc\n * Layer for vector tile data that is rendered client-side.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/VectorTile.js\").default<FeatureType>} [VectorTileSourceType=import(\"../source/VectorTile.js\").default<*>]\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=ExtractedFeatureType<VectorTileSourceType>]\n * @extends {BaseVectorLayer<FeatureType, VectorTileSourceType, CanvasVectorTileLayerRenderer>}\n * @api\n */\nclass VectorTileLayer extends BaseVectorLayer {\n  /**\n   * @param {Options<VectorTileSourceType, FeatureType>} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    const baseOptions = Object.assign({}, options);\n    delete baseOptions.preload;\n    const cacheSize = options.cacheSize === undefined ? 0 : options.cacheSize;\n    delete options.cacheSize;\n    delete baseOptions.useInterimTilesOnError;\n\n    super(baseOptions);\n\n    /***\n     * @type {VectorTileLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {VectorTileLayerOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {VectorTileLayerOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @type {number|undefined}\n     * @private\n     */\n    this.cacheSize_ = cacheSize;\n\n    const renderMode = options.renderMode || 'hybrid';\n    assert(\n      renderMode == 'hybrid' || renderMode == 'vector',\n      \"`renderMode` must be `'hybrid'` or `'vector'`\",\n    );\n\n    /**\n     * @private\n     * @type {VectorTileRenderType}\n     */\n    this.renderMode_ = renderMode;\n\n    this.setPreload(options.preload ? options.preload : 0);\n    this.setUseInterimTilesOnError(\n      options.useInterimTilesOnError !== undefined\n        ? options.useInterimTilesOnError\n        : true,\n    );\n\n    /**\n     * @return {import(\"./Base.js\").BackgroundColor} Background color.\n     * @function\n     * @api\n     */\n    this.getBackground;\n\n    /**\n     * @param {import(\"./Base.js\").BackgroundColor} background Background color.\n     * @function\n     * @api\n     */\n    this.setBackground;\n  }\n\n  /**\n   * @override\n   */\n  createRenderer() {\n    return new CanvasVectorTileLayerRenderer(this, {\n      cacheSize: this.cacheSize_,\n    });\n  }\n\n  /**\n   * Get the topmost feature that intersects the given pixel on the viewport. Returns a promise\n   * that resolves with an array of features. The array will either contain the topmost feature\n   * when a hit was detected, or it will be empty.\n   *\n   * The hit detection algorithm used for this method is optimized for performance, but is less\n   * accurate than the one used in [map.getFeaturesAtPixel()]{@link import(\"../Map.js\").default#getFeaturesAtPixel}.\n   * Text is not considered, and icons are only represented by their bounding box instead of the exact\n   * image.\n   *\n   * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n   * @return {Promise<Array<import(\"../Feature\").FeatureLike>>} Promise that resolves with an array of features.\n   * @api\n   * @override\n   */\n  getFeatures(pixel) {\n    return super.getFeatures(pixel);\n  }\n\n  /**\n   * Get features whose bounding box intersects the provided extent. Only features for cached\n   * tiles for the last rendered zoom level are available in the source. So this method is only\n   * suitable for requesting tiles for extents that are currently rendered.\n   *\n   * Features are returned in random tile order and as they are included in the tiles. This means\n   * they can be clipped, duplicated across tiles, and simplified to the render resolution.\n   *\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @return {Array<FeatureType>} Features.\n   * @api\n   */\n  getFeaturesInExtent(extent) {\n    return /** @type {Array<FeatureType>} */ (\n      /** @type {*} */ (this.getRenderer().getFeaturesInExtent(extent))\n    );\n  }\n\n  /**\n   * @return {VectorTileRenderType} The render mode.\n   */\n  getRenderMode() {\n    return this.renderMode_;\n  }\n\n  /**\n   * Return the level as number to which we will preload tiles up to.\n   * @return {number} The level to preload tiles up to.\n   * @observable\n   * @api\n   */\n  getPreload() {\n    return /** @type {number} */ (this.get(TileProperty.PRELOAD));\n  }\n\n  /**\n   * Deprecated.  Whether we use interim tiles on error.\n   * @return {boolean} Use interim tiles on error.\n   * @observable\n   * @api\n   */\n  getUseInterimTilesOnError() {\n    return /** @type {boolean} */ (\n      this.get(TileProperty.USE_INTERIM_TILES_ON_ERROR)\n    );\n  }\n\n  /**\n   * Set the level as number to which we will preload tiles up to.\n   * @param {number} preload The level to preload tiles up to.\n   * @observable\n   * @api\n   */\n  setPreload(preload) {\n    this.set(TileProperty.PRELOAD, preload);\n  }\n\n  /**\n   * Deprecated.  Set whether we use interim tiles on error.\n   * @param {boolean} useInterimTilesOnError Use interim tiles on error.\n   * @observable\n   * @api\n   */\n  setUseInterimTilesOnError(useInterimTilesOnError) {\n    this.set(TileProperty.USE_INTERIM_TILES_ON_ERROR, useInterimTilesOnError);\n  }\n}\n\nexport default VectorTileLayer;\n","/**\n * @module ol/resolution\n */\n\n/**\n * @typedef {number|Array<number>} ResolutionLike\n */\n\n/**\n * @param {ResolutionLike} resolution Resolution.\n * @return {number} Resolution.\n */\nexport function fromResolutionLike(resolution) {\n  if (Array.isArray(resolution)) {\n    return Math.min(...resolution);\n  }\n  return resolution;\n}\n","/**\n * @module ol/reproj/Image\n */\n\nimport ImageWrapper from '../Image.js';\nimport ImageState from '../ImageState.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {\n  getCenter,\n  getHeight,\n  getIntersection,\n  getWidth,\n  isEmpty,\n} from '../extent.js';\nimport {\n  calculateSourceResolution,\n  render as renderReprojected,\n} from '../reproj.js';\nimport {fromResolutionLike} from '../resolution.js';\nimport Triangulation from './Triangulation.js';\nimport {ERROR_THRESHOLD} from './common.js';\n\n/**\n * @typedef {function(import(\"../extent.js\").Extent, number, number) : import(\"../Image.js\").default} FunctionType\n */\n\n/**\n * @classdesc\n * Class encapsulating single reprojected image.\n * See {@link module:ol/source/Image~ImageSource}.\n */\nclass ReprojImage extends ImageWrapper {\n  /**\n   * @param {import(\"../proj/Projection.js\").default} sourceProj Source projection (of the data).\n   * @param {import(\"../proj/Projection.js\").default} targetProj Target projection.\n   * @param {import(\"../extent.js\").Extent} targetExtent Target extent.\n   * @param {number} targetResolution Target resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {FunctionType} getImageFunction\n   *     Function returning source images (extent, resolution, pixelRatio).\n   * @param {boolean} interpolate Use linear interpolation when resampling.\n   */\n  constructor(\n    sourceProj,\n    targetProj,\n    targetExtent,\n    targetResolution,\n    pixelRatio,\n    getImageFunction,\n    interpolate,\n  ) {\n    let maxSourceExtent = sourceProj.getExtent();\n    if (maxSourceExtent && sourceProj.canWrapX()) {\n      maxSourceExtent = maxSourceExtent.slice();\n      maxSourceExtent[0] = -Infinity;\n      maxSourceExtent[2] = Infinity;\n    }\n    let maxTargetExtent = targetProj.getExtent();\n    if (maxTargetExtent && targetProj.canWrapX()) {\n      maxTargetExtent = maxTargetExtent.slice();\n      maxTargetExtent[0] = -Infinity;\n      maxTargetExtent[2] = Infinity;\n    }\n\n    const limitedTargetExtent = maxTargetExtent\n      ? getIntersection(targetExtent, maxTargetExtent)\n      : targetExtent;\n\n    const targetCenter = getCenter(limitedTargetExtent);\n    const sourceResolution = calculateSourceResolution(\n      sourceProj,\n      targetProj,\n      targetCenter,\n      targetResolution,\n    );\n\n    const errorThresholdInPixels = ERROR_THRESHOLD;\n\n    const triangulation = new Triangulation(\n      sourceProj,\n      targetProj,\n      limitedTargetExtent,\n      maxSourceExtent,\n      sourceResolution * errorThresholdInPixels,\n      targetResolution,\n    );\n\n    const sourceExtent = triangulation.calculateSourceExtent();\n    const sourceImage = isEmpty(sourceExtent)\n      ? null\n      : getImageFunction(sourceExtent, sourceResolution, pixelRatio);\n    const state = sourceImage ? ImageState.IDLE : ImageState.EMPTY;\n    const sourcePixelRatio = sourceImage ? sourceImage.getPixelRatio() : 1;\n\n    super(targetExtent, targetResolution, sourcePixelRatio, state);\n\n    /**\n     * @private\n     * @type {import(\"../proj/Projection.js\").default}\n     */\n    this.targetProj_ = targetProj;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.maxSourceExtent_ = maxSourceExtent;\n\n    /**\n     * @private\n     * @type {!import(\"./Triangulation.js\").default}\n     */\n    this.triangulation_ = triangulation;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.targetResolution_ = targetResolution;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.targetExtent_ = targetExtent;\n\n    /**\n     * @private\n     * @type {import(\"../Image.js\").default}\n     */\n    this.sourceImage_ = sourceImage;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.sourcePixelRatio_ = sourcePixelRatio;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.interpolate_ = interpolate;\n\n    /**\n     * @private\n     * @type {HTMLCanvasElement|OffscreenCanvas}\n     */\n    this.canvas_ = null;\n\n    /**\n     * @private\n     * @type {?import(\"../events.js\").EventsKey}\n     */\n    this.sourceListenerKey_ = null;\n  }\n\n  /**\n   * Clean up.\n   * @override\n   */\n  disposeInternal() {\n    if (this.state == ImageState.LOADING) {\n      this.unlistenSource_();\n    }\n    super.disposeInternal();\n  }\n\n  /**\n   * @return {HTMLCanvasElement|OffscreenCanvas} Image.\n   * @override\n   */\n  getImage() {\n    return this.canvas_;\n  }\n\n  /**\n   * @return {import(\"../proj/Projection.js\").default} Projection.\n   */\n  getProjection() {\n    return this.targetProj_;\n  }\n\n  /**\n   * @private\n   */\n  reproject_() {\n    const sourceState = this.sourceImage_.getState();\n    if (sourceState == ImageState.LOADED) {\n      const width = getWidth(this.targetExtent_) / this.targetResolution_;\n      const height = getHeight(this.targetExtent_) / this.targetResolution_;\n      this.canvas_ = renderReprojected(\n        width,\n        height,\n        this.sourcePixelRatio_,\n        fromResolutionLike(this.sourceImage_.getResolution()),\n        this.maxSourceExtent_,\n        this.targetResolution_,\n        this.targetExtent_,\n        this.triangulation_,\n        [\n          {\n            extent: this.sourceImage_.getExtent(),\n            image: this.sourceImage_.getImage(),\n          },\n        ],\n        0,\n        undefined,\n        this.interpolate_,\n        true,\n      );\n    }\n    this.state = sourceState;\n    this.changed();\n  }\n\n  /**\n   * Load not yet loaded URI.\n   * @override\n   */\n  load() {\n    if (this.state == ImageState.IDLE) {\n      this.state = ImageState.LOADING;\n      this.changed();\n\n      const sourceState = this.sourceImage_.getState();\n      if (sourceState == ImageState.LOADED || sourceState == ImageState.ERROR) {\n        this.reproject_();\n      } else {\n        this.sourceListenerKey_ = listen(\n          this.sourceImage_,\n          EventType.CHANGE,\n          (e) => {\n            const sourceState = this.sourceImage_.getState();\n            if (\n              sourceState == ImageState.LOADED ||\n              sourceState == ImageState.ERROR\n            ) {\n              this.unlistenSource_();\n              this.reproject_();\n            }\n          },\n        );\n        this.sourceImage_.load();\n      }\n    }\n  }\n\n  /**\n   * @private\n   */\n  unlistenSource_() {\n    unlistenByKey(\n      /** @type {!import(\"../events.js\").EventsKey} */ (\n        this.sourceListenerKey_\n      ),\n    );\n    this.sourceListenerKey_ = null;\n  }\n}\n\nexport default ReprojImage;\n","/**\n * @module ol/source/common\n */\n\n/**\n * Default WMS version.\n * @type {string}\n */\nexport const DEFAULT_WMS_VERSION = '1.3.0';\n\n/**\n * Number of decimal digits to consider in integer values when rounding.\n * @type {number}\n */\nexport const DECIMALS = 4;\n","/**\n * @module ol/source/Image\n */\nimport ImageWrapper from '../Image.js';\nimport ImageState from '../ImageState.js';\nimport {linearFindNearest} from '../array.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {\n  containsExtent,\n  equals,\n  getCenter,\n  getForViewAndSize,\n  getHeight,\n  getWidth,\n} from '../extent.js';\nimport {ceil} from '../math.js';\nimport {equivalent} from '../proj.js';\nimport ReprojImage from '../reproj/Image.js';\nimport {fromResolutionLike} from '../resolution.js';\nimport Source from './Source.js';\nimport {DECIMALS} from './common.js';\n\n/**\n * @enum {string}\n */\nexport const ImageSourceEventType = {\n  /**\n   * Triggered when an image starts loading.\n   * @event module:ol/source/Image.ImageSourceEvent#imageloadstart\n   * @api\n   */\n  IMAGELOADSTART: 'imageloadstart',\n\n  /**\n   * Triggered when an image finishes loading.\n   * @event module:ol/source/Image.ImageSourceEvent#imageloadend\n   * @api\n   */\n  IMAGELOADEND: 'imageloadend',\n\n  /**\n   * Triggered if image loading results in an error.\n   * @event module:ol/source/Image.ImageSourceEvent#imageloaderror\n   * @api\n   */\n  IMAGELOADERROR: 'imageloaderror',\n};\n\n/**\n * @typedef {'imageloadend'|'imageloaderror'|'imageloadstart'} ImageSourceEventTypes\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Image~ImageSource} instances are instances of this\n * type.\n */\nexport class ImageSourceEvent extends Event {\n  /**\n   * @param {string} type Type.\n   * @param {import(\"../Image.js\").default} image The image.\n   */\n  constructor(type, image) {\n    super(type);\n\n    /**\n     * The image related to the event.\n     * @type {import(\"../Image.js\").default}\n     * @api\n     */\n    this.image = image;\n  }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<ImageSourceEventTypes, ImageSourceEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types\n *     |ImageSourceEventTypes, Return>} ImageSourceOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {import(\"../Image.js\").Loader} [loader] Loader. Can either be a custom loader, or one of the\n * loaders created with a `createLoader()` function ({@link module:ol/source/wms.createLoader wms},\n * {@link module:ol/source/arcgisRest.createLoader arcgisRest}, {@link module:ol/source/mapguide.createLoader mapguide},\n * {@link module:ol/source/static.createLoader static}).\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection.\n * @property {Array<number>} [resolutions] Resolutions.\n * @property {import(\"./Source.js\").State} [state] State.\n */\n\n/**\n * @classdesc\n * Base class for sources providing a single image.\n * @fires module:ol/source/Image.ImageSourceEvent\n * @api\n */\nclass ImageSource extends Source {\n  /**\n   * @param {Options} options Single image source options.\n   */\n  constructor(options) {\n    super({\n      attributions: options.attributions,\n      projection: options.projection,\n      state: options.state,\n      interpolate:\n        options.interpolate !== undefined ? options.interpolate : true,\n    });\n\n    /***\n     * @type {ImageSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {ImageSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {ImageSourceOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @protected\n     * @type {import(\"../Image.js\").Loader}\n     */\n    this.loader = options.loader || null;\n\n    /**\n     * @private\n     * @type {Array<number>|null}\n     */\n    this.resolutions_ =\n      options.resolutions !== undefined ? options.resolutions : null;\n\n    /**\n     * @private\n     * @type {import(\"../reproj/Image.js\").default}\n     */\n    this.reprojectedImage_ = null;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.reprojectedRevision_ = 0;\n\n    /**\n     * @protected\n     * @type {import(\"../Image.js\").default}\n     */\n    this.image = null;\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.wantedExtent_;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.wantedResolution_;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.static_ = options.loader ? options.loader.length === 0 : false;\n\n    /**\n     * @private\n     * @type {import(\"../proj/Projection.js\").default}\n     */\n    this.wantedProjection_ = null;\n  }\n\n  /**\n   * @return {Array<number>|null} Resolutions.\n   * @override\n   */\n  getResolutions() {\n    return this.resolutions_;\n  }\n\n  /**\n   * @param {Array<number>|null} resolutions Resolutions.\n   */\n  setResolutions(resolutions) {\n    this.resolutions_ = resolutions;\n  }\n\n  /**\n   * @protected\n   * @param {number} resolution Resolution.\n   * @return {number} Resolution.\n   */\n  findNearestResolution(resolution) {\n    const resolutions = this.getResolutions();\n    if (resolutions) {\n      const idx = linearFindNearest(resolutions, resolution, 0);\n      resolution = resolutions[idx];\n    }\n    return resolution;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../Image.js\").default} Single image.\n   */\n  getImage(extent, resolution, pixelRatio, projection) {\n    const sourceProjection = this.getProjection();\n    if (\n      !sourceProjection ||\n      !projection ||\n      equivalent(sourceProjection, projection)\n    ) {\n      if (sourceProjection) {\n        projection = sourceProjection;\n      }\n\n      return this.getImageInternal(extent, resolution, pixelRatio, projection);\n    }\n    if (this.reprojectedImage_) {\n      if (\n        this.reprojectedRevision_ == this.getRevision() &&\n        equivalent(this.reprojectedImage_.getProjection(), projection) &&\n        this.reprojectedImage_.getResolution() == resolution &&\n        equals(this.reprojectedImage_.getExtent(), extent)\n      ) {\n        return this.reprojectedImage_;\n      }\n      this.reprojectedImage_.dispose();\n      this.reprojectedImage_ = null;\n    }\n\n    this.reprojectedImage_ = new ReprojImage(\n      sourceProjection,\n      projection,\n      extent,\n      resolution,\n      pixelRatio,\n      (extent, resolution, pixelRatio) =>\n        this.getImageInternal(extent, resolution, pixelRatio, sourceProjection),\n      this.getInterpolate(),\n    );\n    this.reprojectedRevision_ = this.getRevision();\n\n    return this.reprojectedImage_;\n  }\n\n  /**\n   * @abstract\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../Image.js\").default} Single image.\n   * @protected\n   */\n  getImageInternal(extent, resolution, pixelRatio, projection) {\n    if (this.loader) {\n      const requestExtent = getRequestExtent(extent, resolution, pixelRatio, 1);\n      const requestResolution = this.findNearestResolution(resolution);\n      if (\n        this.image &&\n        (this.static_ ||\n          (this.wantedProjection_ === projection &&\n            ((this.wantedExtent_ &&\n              containsExtent(this.wantedExtent_, requestExtent)) ||\n              containsExtent(this.image.getExtent(), requestExtent)) &&\n            ((this.wantedResolution_ &&\n              fromResolutionLike(this.wantedResolution_) ===\n                requestResolution) ||\n              fromResolutionLike(this.image.getResolution()) ===\n                requestResolution)))\n      ) {\n        return this.image;\n      }\n      this.wantedProjection_ = projection;\n      this.wantedExtent_ = requestExtent;\n      this.wantedResolution_ = requestResolution;\n      this.image = new ImageWrapper(\n        requestExtent,\n        requestResolution,\n        pixelRatio,\n        this.loader,\n      );\n      this.image.addEventListener(\n        EventType.CHANGE,\n        this.handleImageChange.bind(this),\n      );\n    }\n    return this.image;\n  }\n\n  /**\n   * Handle image change events.\n   * @param {import(\"../events/Event.js\").default} event Event.\n   * @protected\n   */\n  handleImageChange(event) {\n    const image = /** @type {import(\"../Image.js\").default} */ (event.target);\n    let type;\n    switch (image.getState()) {\n      case ImageState.LOADING:\n        this.loading = true;\n        type = ImageSourceEventType.IMAGELOADSTART;\n        break;\n      case ImageState.LOADED:\n        this.loading = false;\n        type = ImageSourceEventType.IMAGELOADEND;\n        break;\n      case ImageState.ERROR:\n        this.loading = false;\n        type = ImageSourceEventType.IMAGELOADERROR;\n        break;\n      default:\n        return;\n    }\n    if (this.hasListener(type)) {\n      this.dispatchEvent(new ImageSourceEvent(type, image));\n    }\n  }\n}\n\n/**\n * Default image load function for image sources that use import(\"../Image.js\").Image image\n * instances.\n * @param {import(\"../Image.js\").default} image Image.\n * @param {string} src Source.\n */\nexport function defaultImageLoadFunction(image, src) {\n  /** @type {HTMLImageElement|HTMLVideoElement} */ (image.getImage()).src = src;\n}\n\n/**\n * Adjusts the extent so it aligns with pixel boundaries.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} resolution Reolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {number} ratio Ratio between request size and view size.\n * @return {import(\"../extent.js\").Extent} Request extent.\n */\nexport function getRequestExtent(extent, resolution, pixelRatio, ratio) {\n  const imageResolution = resolution / pixelRatio;\n  const center = getCenter(extent);\n  const viewWidth = ceil(getWidth(extent) / imageResolution, DECIMALS);\n  const viewHeight = ceil(getHeight(extent) / imageResolution, DECIMALS);\n  const marginWidth = ceil(((ratio - 1) * viewWidth) / 2, DECIMALS);\n  const requestWidth = viewWidth + 2 * marginWidth;\n  const marginHeight = ceil(((ratio - 1) * viewHeight) / 2, DECIMALS);\n  const requestHeight = viewHeight + 2 * marginHeight;\n  return getForViewAndSize(center, imageResolution, 0, [\n    requestWidth,\n    requestHeight,\n  ]);\n}\n\nexport default ImageSource;\n","/**\n * @module ol/tilegrid/TileGrid\n */\nimport TileRange, {\n  createOrUpdate as createOrUpdateTileRange,\n} from '../TileRange.js';\nimport {isSorted, linearFindNearest} from '../array.js';\nimport {assert} from '../asserts.js';\nimport {createOrUpdate, getTopLeft} from '../extent.js';\nimport {intersectsLinearRing} from '../geom/flat/intersectsextent.js';\nimport {ceil, clamp, floor} from '../math.js';\nimport {toSize} from '../size.js';\nimport {createOrUpdate as createOrUpdateTileCoord} from '../tilecoord.js';\nimport {DEFAULT_TILE_SIZE} from './common.js';\n\n/**\n * @private\n * @type {import(\"../tilecoord.js\").TileCoord}\n */\nconst tmpTileCoord = [0, 0, 0];\n\n/**\n * Number of decimal digits to consider in integer values when rounding.\n * @type {number}\n */\nconst DECIMALS = 5;\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../extent.js\").Extent} [extent] Extent for the tile grid. No tiles outside this\n * extent will be requested by {@link module:ol/source/Tile~TileSource} sources. When no `origin` or\n * `origins` are configured, the `origin` will be set to the top-left corner of the extent.\n * @property {number} [minZoom=0] Minimum zoom.\n * @property {import(\"../coordinate.js\").Coordinate} [origin] The tile grid origin, i.e. where the `x`\n * and `y` axes meet (`[z, 0, 0]`). Tile coordinates increase left to right and downwards. If not\n * specified, `extent` or `origins` must be provided.\n * @property {Array<import(\"../coordinate.js\").Coordinate>} [origins] Tile grid origins, i.e. where\n * the `x` and `y` axes meet (`[z, 0, 0]`), for each zoom level. If given, the array length\n * should match the length of the `resolutions` array, i.e. each resolution can have a different\n * origin. Tile coordinates increase left to right and downwards. If not specified, `extent` or\n * `origin` must be provided.\n * @property {!Array<number>} resolutions Resolutions. The array index of each resolution needs\n * to match the zoom level. This means that even if a `minZoom` is configured, the resolutions\n * array will have a length of `maxZoom + 1`.\n * @property {Array<import(\"../size.js\").Size>} [sizes] Number of tile rows and columns\n * of the grid for each zoom level. If specified the values\n * define each zoom level's extent together with the `origin` or `origins`.\n * A grid `extent` can be configured in addition, and will further limit the extent\n * for which tile requests are made by sources. If the bottom-left corner of\n * an extent is used as `origin` or `origins`, then the `y` value must be\n * negative because OpenLayers tile coordinates use the top left as the origin.\n * @property {number|import(\"../size.js\").Size} [tileSize] Tile size.\n * Default is `[256, 256]`.\n * @property {Array<number|import(\"../size.js\").Size>} [tileSizes] Tile sizes. If given, the array length\n * should match the length of the `resolutions` array, i.e. each resolution can have a different\n * tile size.\n */\n\n/**\n * @classdesc\n * Base class for setting the grid pattern for sources accessing tiled-image\n * servers.\n * @api\n */\nclass TileGrid {\n  /**\n   * @param {Options} options Tile grid options.\n   */\n  constructor(options) {\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.minZoom = options.minZoom !== undefined ? options.minZoom : 0;\n\n    /**\n     * @private\n     * @type {!Array<number>}\n     */\n    this.resolutions_ = options.resolutions;\n    assert(\n      isSorted(\n        this.resolutions_,\n        /**\n         * @param {number} a First resolution\n         * @param {number} b Second resolution\n         * @return {number} Comparison result\n         */\n        (a, b) => b - a,\n        true,\n      ),\n      '`resolutions` must be sorted in descending order',\n    );\n\n    // check if we've got a consistent zoom factor and origin\n    let zoomFactor;\n    if (!options.origins) {\n      for (let i = 0, ii = this.resolutions_.length - 1; i < ii; ++i) {\n        if (!zoomFactor) {\n          zoomFactor = this.resolutions_[i] / this.resolutions_[i + 1];\n        } else {\n          if (this.resolutions_[i] / this.resolutions_[i + 1] !== zoomFactor) {\n            zoomFactor = undefined;\n            break;\n          }\n        }\n      }\n    }\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.zoomFactor_ = zoomFactor;\n\n    /**\n     * @protected\n     * @type {number}\n     */\n    this.maxZoom = this.resolutions_.length - 1;\n\n    /**\n     * @private\n     * @type {import(\"../coordinate.js\").Coordinate|null}\n     */\n    this.origin_ = options.origin !== undefined ? options.origin : null;\n\n    /**\n     * @private\n     * @type {Array<import(\"../coordinate.js\").Coordinate>}\n     */\n    this.origins_ = null;\n    if (options.origins !== undefined) {\n      this.origins_ = options.origins;\n      assert(\n        this.origins_.length == this.resolutions_.length,\n        'Number of `origins` and `resolutions` must be equal',\n      );\n    }\n\n    const extent = options.extent;\n\n    if (extent !== undefined && !this.origin_ && !this.origins_) {\n      this.origin_ = getTopLeft(extent);\n    }\n\n    assert(\n      (!this.origin_ && this.origins_) || (this.origin_ && !this.origins_),\n      'Either `origin` or `origins` must be configured, never both',\n    );\n\n    /**\n     * @private\n     * @type {Array<number|import(\"../size.js\").Size>}\n     */\n    this.tileSizes_ = null;\n    if (options.tileSizes !== undefined) {\n      this.tileSizes_ = options.tileSizes;\n      assert(\n        this.tileSizes_.length == this.resolutions_.length,\n        'Number of `tileSizes` and `resolutions` must be equal',\n      );\n    }\n\n    /**\n     * @private\n     * @type {number|import(\"../size.js\").Size}\n     */\n    this.tileSize_ =\n      options.tileSize !== undefined\n        ? options.tileSize\n        : !this.tileSizes_\n          ? DEFAULT_TILE_SIZE\n          : null;\n    assert(\n      (!this.tileSize_ && this.tileSizes_) ||\n        (this.tileSize_ && !this.tileSizes_),\n      'Either `tileSize` or `tileSizes` must be configured, never both',\n    );\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.extent_ = extent !== undefined ? extent : null;\n\n    /**\n     * @private\n     * @type {Array<import(\"../TileRange.js\").default>}\n     */\n    this.fullTileRanges_ = null;\n\n    /**\n     * @private\n     * @type {import(\"../size.js\").Size}\n     */\n    this.tmpSize_ = [0, 0];\n\n    /**\n     * @private\n     * @type {import(\"../extent.js\").Extent}\n     */\n    this.tmpExtent_ = [0, 0, 0, 0];\n\n    if (options.sizes !== undefined) {\n      this.fullTileRanges_ = options.sizes.map((size, z) => {\n        const tileRange = new TileRange(\n          Math.min(0, size[0]),\n          Math.max(size[0] - 1, -1),\n          Math.min(0, size[1]),\n          Math.max(size[1] - 1, -1),\n        );\n        if (extent) {\n          const restrictedTileRange = this.getTileRangeForExtentAndZ(extent, z);\n          tileRange.minX = Math.max(restrictedTileRange.minX, tileRange.minX);\n          tileRange.maxX = Math.min(restrictedTileRange.maxX, tileRange.maxX);\n          tileRange.minY = Math.max(restrictedTileRange.minY, tileRange.minY);\n          tileRange.maxY = Math.min(restrictedTileRange.maxY, tileRange.maxY);\n        }\n        return tileRange;\n      });\n    } else if (extent) {\n      this.calculateTileRanges_(extent);\n    }\n  }\n\n  /**\n   * Call a function with each tile coordinate for a given extent and zoom level.\n   *\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} zoom Integer zoom level.\n   * @param {function(import(\"../tilecoord.js\").TileCoord): void} callback Function called with each tile coordinate.\n   * @api\n   */\n  forEachTileCoord(extent, zoom, callback) {\n    const tileRange = this.getTileRangeForExtentAndZ(extent, zoom);\n    for (let i = tileRange.minX, ii = tileRange.maxX; i <= ii; ++i) {\n      for (let j = tileRange.minY, jj = tileRange.maxY; j <= jj; ++j) {\n        callback([zoom, i, j]);\n      }\n    }\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {function(number, import(\"../TileRange.js\").default): boolean} callback Callback.\n   * @param {import(\"../TileRange.js\").default} [tempTileRange] Temporary import(\"../TileRange.js\").default object.\n   * @param {import(\"../extent.js\").Extent} [tempExtent] Temporary import(\"../extent.js\").Extent object.\n   * @return {boolean} Callback succeeded.\n   */\n  forEachTileCoordParentTileRange(\n    tileCoord,\n    callback,\n    tempTileRange,\n    tempExtent,\n  ) {\n    let tileRange, x, y;\n    let tileCoordExtent = null;\n    let z = tileCoord[0] - 1;\n    if (this.zoomFactor_ === 2) {\n      x = tileCoord[1];\n      y = tileCoord[2];\n    } else {\n      tileCoordExtent = this.getTileCoordExtent(tileCoord, tempExtent);\n    }\n    while (z >= this.minZoom) {\n      if (x !== undefined && y !== undefined) {\n        x = Math.floor(x / 2);\n        y = Math.floor(y / 2);\n        tileRange = createOrUpdateTileRange(x, x, y, y, tempTileRange);\n      } else {\n        tileRange = this.getTileRangeForExtentAndZ(\n          tileCoordExtent,\n          z,\n          tempTileRange,\n        );\n      }\n      if (callback(z, tileRange)) {\n        return true;\n      }\n      --z;\n    }\n    return false;\n  }\n\n  /**\n   * Get the extent for this tile grid, if it was configured.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   * @api\n   */\n  getExtent() {\n    return this.extent_;\n  }\n\n  /**\n   * Get the maximum zoom level for the grid.\n   * @return {number} Max zoom.\n   * @api\n   */\n  getMaxZoom() {\n    return this.maxZoom;\n  }\n\n  /**\n   * Get the minimum zoom level for the grid.\n   * @return {number} Min zoom.\n   * @api\n   */\n  getMinZoom() {\n    return this.minZoom;\n  }\n\n  /**\n   * Get the origin for the grid at the given zoom level.\n   * @param {number} z Integer zoom level.\n   * @return {import(\"../coordinate.js\").Coordinate} Origin.\n   * @api\n   */\n  getOrigin(z) {\n    if (this.origin_) {\n      return this.origin_;\n    }\n    return this.origins_[z];\n  }\n\n  /**\n   * Get the list of origins for the grid.\n   * @return {Array<import(\"../coordinate.js\").Coordinate>|null} Origin.\n   */\n  getOrigins() {\n    return this.origins_;\n  }\n\n  /**\n   * Get the resolution for the given zoom level.\n   * @param {number} z Integer zoom level.\n   * @return {number} Resolution.\n   * @api\n   */\n  getResolution(z) {\n    return this.resolutions_[z];\n  }\n\n  /**\n   * Get the list of resolutions for the tile grid.\n   * @return {Array<number>} Resolutions.\n   * @api\n   */\n  getResolutions() {\n    return this.resolutions_;\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"../TileRange.js\").default} [tempTileRange] Temporary import(\"../TileRange.js\").default object.\n   * @param {import(\"../extent.js\").Extent} [tempExtent] Temporary import(\"../extent.js\").Extent object.\n   * @return {import(\"../TileRange.js\").default|null} Tile range.\n   */\n  getTileCoordChildTileRange(tileCoord, tempTileRange, tempExtent) {\n    if (tileCoord[0] < this.maxZoom) {\n      if (this.zoomFactor_ === 2) {\n        const minX = tileCoord[1] * 2;\n        const minY = tileCoord[2] * 2;\n        return createOrUpdateTileRange(\n          minX,\n          minX + 1,\n          minY,\n          minY + 1,\n          tempTileRange,\n        );\n      }\n      const tileCoordExtent = this.getTileCoordExtent(\n        tileCoord,\n        tempExtent || this.tmpExtent_,\n      );\n      return this.getTileRangeForExtentAndZ(\n        tileCoordExtent,\n        tileCoord[0] + 1,\n        tempTileRange,\n      );\n    }\n    return null;\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {number} z Integer zoom level.\n   * @param {import(\"../TileRange.js\").default} [tempTileRange] Temporary import(\"../TileRange.js\").default object.\n   * @return {import(\"../TileRange.js\").default|null} Tile range.\n   */\n  getTileRangeForTileCoordAndZ(tileCoord, z, tempTileRange) {\n    if (z > this.maxZoom || z < this.minZoom) {\n      return null;\n    }\n\n    const tileCoordZ = tileCoord[0];\n    const tileCoordX = tileCoord[1];\n    const tileCoordY = tileCoord[2];\n\n    if (z === tileCoordZ) {\n      return createOrUpdateTileRange(\n        tileCoordX,\n        tileCoordY,\n        tileCoordX,\n        tileCoordY,\n        tempTileRange,\n      );\n    }\n\n    if (this.zoomFactor_) {\n      const factor = Math.pow(this.zoomFactor_, z - tileCoordZ);\n      const minX = Math.floor(tileCoordX * factor);\n      const minY = Math.floor(tileCoordY * factor);\n      if (z < tileCoordZ) {\n        return createOrUpdateTileRange(minX, minX, minY, minY, tempTileRange);\n      }\n\n      const maxX = Math.floor(factor * (tileCoordX + 1)) - 1;\n      const maxY = Math.floor(factor * (tileCoordY + 1)) - 1;\n      return createOrUpdateTileRange(minX, maxX, minY, maxY, tempTileRange);\n    }\n\n    const tileCoordExtent = this.getTileCoordExtent(tileCoord, this.tmpExtent_);\n    return this.getTileRangeForExtentAndZ(tileCoordExtent, z, tempTileRange);\n  }\n\n  /**\n   * Get a tile range for the given extent and integer zoom level.\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} z Integer zoom level.\n   * @param {import(\"../TileRange.js\").default} [tempTileRange] Temporary tile range object.\n   * @return {import(\"../TileRange.js\").default} Tile range.\n   */\n  getTileRangeForExtentAndZ(extent, z, tempTileRange) {\n    this.getTileCoordForXYAndZ_(extent[0], extent[3], z, false, tmpTileCoord);\n    const minX = tmpTileCoord[1];\n    const minY = tmpTileCoord[2];\n    this.getTileCoordForXYAndZ_(extent[2], extent[1], z, true, tmpTileCoord);\n    const maxX = tmpTileCoord[1];\n    const maxY = tmpTileCoord[2];\n    return createOrUpdateTileRange(minX, maxX, minY, maxY, tempTileRange);\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @return {import(\"../coordinate.js\").Coordinate} Tile center.\n   */\n  getTileCoordCenter(tileCoord) {\n    const origin = this.getOrigin(tileCoord[0]);\n    const resolution = this.getResolution(tileCoord[0]);\n    const tileSize = toSize(this.getTileSize(tileCoord[0]), this.tmpSize_);\n    return [\n      origin[0] + (tileCoord[1] + 0.5) * tileSize[0] * resolution,\n      origin[1] - (tileCoord[2] + 0.5) * tileSize[1] * resolution,\n    ];\n  }\n\n  /**\n   * Get the extent of a tile coordinate.\n   *\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"../extent.js\").Extent} [tempExtent] Temporary extent object.\n   * @return {import(\"../extent.js\").Extent} Extent.\n   * @api\n   */\n  getTileCoordExtent(tileCoord, tempExtent) {\n    const origin = this.getOrigin(tileCoord[0]);\n    const resolution = this.getResolution(tileCoord[0]);\n    const tileSize = toSize(this.getTileSize(tileCoord[0]), this.tmpSize_);\n    const minX = origin[0] + tileCoord[1] * tileSize[0] * resolution;\n    const minY = origin[1] - (tileCoord[2] + 1) * tileSize[1] * resolution;\n    const maxX = minX + tileSize[0] * resolution;\n    const maxY = minY + tileSize[1] * resolution;\n    return createOrUpdate(minX, minY, maxX, maxY, tempExtent);\n  }\n\n  /**\n   * Get the tile coordinate for the given map coordinate and resolution.  This\n   * method considers that coordinates that intersect tile boundaries should be\n   * assigned the higher tile coordinate.\n   *\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {number} resolution Resolution.\n   * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Destination import(\"../tilecoord.js\").TileCoord object.\n   * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n   * @api\n   */\n  getTileCoordForCoordAndResolution(coordinate, resolution, opt_tileCoord) {\n    return this.getTileCoordForXYAndResolution_(\n      coordinate[0],\n      coordinate[1],\n      resolution,\n      false,\n      opt_tileCoord,\n    );\n  }\n\n  /**\n   * Note that this method should not be called for resolutions that correspond\n   * to an integer zoom level.  Instead call the `getTileCoordForXYAndZ_` method.\n   * @param {number} x X.\n   * @param {number} y Y.\n   * @param {number} resolution Resolution (for a non-integer zoom level).\n   * @param {boolean} reverseIntersectionPolicy Instead of letting edge\n   *     intersections go to the higher tile coordinate, let edge intersections\n   *     go to the lower tile coordinate.\n   * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Temporary import(\"../tilecoord.js\").TileCoord object.\n   * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n   * @private\n   */\n  getTileCoordForXYAndResolution_(\n    x,\n    y,\n    resolution,\n    reverseIntersectionPolicy,\n    opt_tileCoord,\n  ) {\n    const z = this.getZForResolution(resolution);\n    const scale = resolution / this.getResolution(z);\n    const origin = this.getOrigin(z);\n    const tileSize = toSize(this.getTileSize(z), this.tmpSize_);\n\n    let tileCoordX = (scale * (x - origin[0])) / resolution / tileSize[0];\n    let tileCoordY = (scale * (origin[1] - y)) / resolution / tileSize[1];\n\n    if (reverseIntersectionPolicy) {\n      tileCoordX = ceil(tileCoordX, DECIMALS) - 1;\n      tileCoordY = ceil(tileCoordY, DECIMALS) - 1;\n    } else {\n      tileCoordX = floor(tileCoordX, DECIMALS);\n      tileCoordY = floor(tileCoordY, DECIMALS);\n    }\n\n    return createOrUpdateTileCoord(z, tileCoordX, tileCoordY, opt_tileCoord);\n  }\n\n  /**\n   * Although there is repetition between this method and `getTileCoordForXYAndResolution_`,\n   * they should have separate implementations.  This method is for integer zoom\n   * levels.  The other method should only be called for resolutions corresponding\n   * to non-integer zoom levels.\n   * @param {number} x Map x coordinate.\n   * @param {number} y Map y coordinate.\n   * @param {number} z Integer zoom level.\n   * @param {boolean} reverseIntersectionPolicy Instead of letting edge\n   *     intersections go to the higher tile coordinate, let edge intersections\n   *     go to the lower tile coordinate.\n   * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Temporary import(\"../tilecoord.js\").TileCoord object.\n   * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n   * @private\n   */\n  getTileCoordForXYAndZ_(x, y, z, reverseIntersectionPolicy, opt_tileCoord) {\n    const origin = this.getOrigin(z);\n    const resolution = this.getResolution(z);\n    const tileSize = toSize(this.getTileSize(z), this.tmpSize_);\n\n    let tileCoordX = (x - origin[0]) / resolution / tileSize[0];\n    let tileCoordY = (origin[1] - y) / resolution / tileSize[1];\n\n    if (reverseIntersectionPolicy) {\n      tileCoordX = ceil(tileCoordX, DECIMALS) - 1;\n      tileCoordY = ceil(tileCoordY, DECIMALS) - 1;\n    } else {\n      tileCoordX = floor(tileCoordX, DECIMALS);\n      tileCoordY = floor(tileCoordY, DECIMALS);\n    }\n\n    return createOrUpdateTileCoord(z, tileCoordX, tileCoordY, opt_tileCoord);\n  }\n\n  /**\n   * Get a tile coordinate given a map coordinate and zoom level.\n   * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n   * @param {number} z Integer zoom level, e.g. the result of a `getZForResolution()` method call\n   * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Destination import(\"../tilecoord.js\").TileCoord object.\n   * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n   * @api\n   */\n  getTileCoordForCoordAndZ(coordinate, z, opt_tileCoord) {\n    return this.getTileCoordForXYAndZ_(\n      coordinate[0],\n      coordinate[1],\n      z,\n      false,\n      opt_tileCoord,\n    );\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @return {number} Tile resolution.\n   */\n  getTileCoordResolution(tileCoord) {\n    return this.resolutions_[tileCoord[0]];\n  }\n\n  /**\n   * Get the tile size for a zoom level. The type of the return value matches the\n   * `tileSize` or `tileSizes` that the tile grid was configured with. To always\n   * get an {@link import(\"../size.js\").Size}, run the result through {@link module:ol/size.toSize}.\n   * @param {number} z Z.\n   * @return {number|import(\"../size.js\").Size} Tile size.\n   * @api\n   */\n  getTileSize(z) {\n    if (this.tileSize_) {\n      return this.tileSize_;\n    }\n    return this.tileSizes_[z];\n  }\n\n  /**\n   * @param {number} z Zoom level.\n   * @return {import(\"../TileRange.js\").default|null} Extent tile range for the specified zoom level.\n   */\n  getFullTileRange(z) {\n    if (!this.fullTileRanges_) {\n      return this.extent_\n        ? this.getTileRangeForExtentAndZ(this.extent_, z)\n        : null;\n    }\n    return this.fullTileRanges_[z];\n  }\n\n  /**\n   * @param {number} resolution Resolution.\n   * @param {number|import(\"../array.js\").NearestDirectionFunction} [opt_direction]\n   *     If 0, the nearest resolution will be used.\n   *     If 1, the nearest higher resolution (lower Z) will be used. If -1, the\n   *     nearest lower resolution (higher Z) will be used. Default is 0.\n   *     Use a {@link module:ol/array~NearestDirectionFunction} for more precise control.\n   *\n   * For example to change tile Z at the midpoint of zoom levels\n   * ```js\n   * function(value, high, low) {\n   *   return value - low * Math.sqrt(high / low);\n   * }\n   * ```\n   * @return {number} Z.\n   * @api\n   */\n  getZForResolution(resolution, opt_direction) {\n    const z = linearFindNearest(\n      this.resolutions_,\n      resolution,\n      opt_direction || 0,\n    );\n    return clamp(z, this.minZoom, this.maxZoom);\n  }\n\n  /**\n   * The tile with the provided tile coordinate intersects the given viewport.\n   * @param {import('../tilecoord.js').TileCoord} tileCoord Tile coordinate.\n   * @param {Array<number>} viewport Viewport as returned from {@link module:ol/extent.getRotatedViewport}.\n   * @return {boolean} The tile with the provided tile coordinate intersects the given viewport.\n   */\n  tileCoordIntersectsViewport(tileCoord, viewport) {\n    return intersectsLinearRing(\n      viewport,\n      0,\n      viewport.length,\n      2,\n      this.getTileCoordExtent(tileCoord),\n    );\n  }\n\n  /**\n   * @param {!import(\"../extent.js\").Extent} extent Extent for this tile grid.\n   * @private\n   */\n  calculateTileRanges_(extent) {\n    const length = this.resolutions_.length;\n    const fullTileRanges = new Array(length);\n    for (let z = this.minZoom; z < length; ++z) {\n      fullTileRanges[z] = this.getTileRangeForExtentAndZ(extent, z);\n    }\n    this.fullTileRanges_ = fullTileRanges;\n  }\n}\n\nexport default TileGrid;\n","/**\n * @module ol/tilegrid\n */\nimport {\n  containsCoordinate,\n  createOrUpdate,\n  getCorner,\n  getHeight,\n  getWidth,\n} from './extent.js';\nimport {METERS_PER_UNIT, get as getProjection} from './proj.js';\nimport {toSize} from './size.js';\nimport TileGrid from './tilegrid/TileGrid.js';\nimport {DEFAULT_MAX_ZOOM, DEFAULT_TILE_SIZE} from './tilegrid/common.js';\n\nexport {TileGrid};\nexport {default as WMTS} from './tilegrid/WMTS.js';\n\n/**\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {!TileGrid} Default tile grid for the\n * passed projection.\n */\nexport function getForProjection(projection) {\n  let tileGrid = projection.getDefaultTileGrid();\n  if (!tileGrid) {\n    tileGrid = createForProjection(projection);\n    projection.setDefaultTileGrid(tileGrid);\n  }\n  return tileGrid;\n}\n\n/**\n * @param {TileGrid} tileGrid Tile grid.\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {import(\"./tilecoord.js\").TileCoord} Tile coordinate.\n */\nexport function wrapX(tileGrid, tileCoord, projection) {\n  const z = tileCoord[0];\n  const center = tileGrid.getTileCoordCenter(tileCoord);\n  const projectionExtent = extentFromProjection(projection);\n  if (!containsCoordinate(projectionExtent, center)) {\n    const worldWidth = getWidth(projectionExtent);\n    const worldsAway = Math.ceil(\n      (projectionExtent[0] - center[0]) / worldWidth,\n    );\n    center[0] += worldWidth * worldsAway;\n    return tileGrid.getTileCoordForCoordAndZ(center, z);\n  }\n  return tileCoord;\n}\n\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} [maxZoom] Maximum zoom level (default is\n *     DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size} [tileSize] Tile size (default uses\n *     DEFAULT_TILE_SIZE).\n * @param {import(\"./extent.js\").Corner} [corner] Extent corner (default is `'top-left'`).\n * @return {!TileGrid} TileGrid instance.\n */\nexport function createForExtent(extent, maxZoom, tileSize, corner) {\n  corner = corner !== undefined ? corner : 'top-left';\n\n  const resolutions = resolutionsFromExtent(extent, maxZoom, tileSize);\n\n  return new TileGrid({\n    extent: extent,\n    origin: getCorner(extent, corner),\n    resolutions: resolutions,\n    tileSize: tileSize,\n  });\n}\n\n/**\n * @typedef {Object} XYZOptions\n * @property {import(\"./extent.js\").Extent} [extent] Extent for the tile grid. The origin for an XYZ tile grid is the\n * top-left corner of the extent. If `maxResolution` is not provided the zero level of the grid is defined by the resolution\n * at which one tile fits in the provided extent. If not provided, the extent of the EPSG:3857 projection is used.\n * @property {number} [maxResolution] Resolution at level zero.\n * @property {number} [maxZoom] Maximum zoom. The default is `42`. This determines the number of levels\n * in the grid set. For example, a `maxZoom` of 21 means there are 22 levels in the grid set.\n * @property {number} [minZoom=0] Minimum zoom.\n * @property {number|import(\"./size.js\").Size} [tileSize=[256, 256]] Tile size in pixels.\n */\n\n/**\n * Creates a tile grid with a standard XYZ tiling scheme.\n * @param {XYZOptions} [options] Tile grid options.\n * @return {!TileGrid} Tile grid instance.\n * @api\n */\nexport function createXYZ(options) {\n  const xyzOptions = options || {};\n\n  const extent = xyzOptions.extent || getProjection('EPSG:3857').getExtent();\n\n  const gridOptions = {\n    extent: extent,\n    minZoom: xyzOptions.minZoom,\n    tileSize: xyzOptions.tileSize,\n    resolutions: resolutionsFromExtent(\n      extent,\n      xyzOptions.maxZoom,\n      xyzOptions.tileSize,\n      xyzOptions.maxResolution,\n    ),\n  };\n  return new TileGrid(gridOptions);\n}\n\n/**\n * Create a resolutions array from an extent.  A zoom factor of 2 is assumed.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} [maxZoom] Maximum zoom level (default is\n *     DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size} [tileSize] Tile size (default uses\n *     DEFAULT_TILE_SIZE).\n * @param {number} [maxResolution] Resolution at level zero.\n * @return {!Array<number>} Resolutions array.\n */\nfunction resolutionsFromExtent(extent, maxZoom, tileSize, maxResolution) {\n  maxZoom = maxZoom !== undefined ? maxZoom : DEFAULT_MAX_ZOOM;\n  tileSize = toSize(tileSize !== undefined ? tileSize : DEFAULT_TILE_SIZE);\n\n  const height = getHeight(extent);\n  const width = getWidth(extent);\n\n  maxResolution =\n    maxResolution > 0\n      ? maxResolution\n      : Math.max(width / tileSize[0], height / tileSize[1]);\n\n  const length = maxZoom + 1;\n  const resolutions = new Array(length);\n  for (let z = 0; z < length; ++z) {\n    resolutions[z] = maxResolution / Math.pow(2, z);\n  }\n  return resolutions;\n}\n\n/**\n * @param {import(\"./proj.js\").ProjectionLike} projection Projection.\n * @param {number} [maxZoom] Maximum zoom level (default is\n *     DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size} [tileSize] Tile size (default uses\n *     DEFAULT_TILE_SIZE).\n * @param {import(\"./extent.js\").Corner} [corner] Extent corner (default is `'top-left'`).\n * @return {!TileGrid} TileGrid instance.\n */\nexport function createForProjection(projection, maxZoom, tileSize, corner) {\n  const extent = extentFromProjection(projection);\n  return createForExtent(extent, maxZoom, tileSize, corner);\n}\n\n/**\n * Generate a tile grid extent from a projection.  If the projection has an\n * extent, it is used.  If not, a global extent is assumed.\n * @param {import(\"./proj.js\").ProjectionLike} projection Projection.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\nexport function extentFromProjection(projection) {\n  projection = getProjection(projection);\n  let extent = projection.getExtent();\n  if (!extent) {\n    const half =\n      (180 * METERS_PER_UNIT.degrees) / projection.getMetersPerUnit();\n    extent = createOrUpdate(-half, -half, half, half);\n  }\n  return extent;\n}\n","/**\n * @module ol/source/Tile\n */\nimport Event from '../events/Event.js';\nimport {scale as scaleSize, toSize} from '../size.js';\nimport {withinExtentAndZ} from '../tilecoord.js';\nimport {\n  getForProjection as getTileGridForProjection,\n  wrapX,\n} from '../tilegrid.js';\nimport {abstract, getUid} from '../util.js';\nimport Source from './Source.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./TileEventType\").TileSourceEventTypes, TileSourceEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types|\n *     import(\"./TileEventType\").TileSourceEventTypes, Return>} TileSourceOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {number} [tilePixelRatio] TilePixelRatio.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection.\n * @property {import(\"./Source.js\").State} [state] State.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] TileGrid.\n * @property {boolean} [wrapX=false] WrapX.\n * @property {number} [transition] Transition.\n * @property {string} [key] Key.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0] ZDirection.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling.  By default,\n * the nearest neighbor is used when resampling.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for sources providing images divided into a tile grid.\n *\n * @template {import(\"../Tile.js\").default} [TileType=import(\"../Tile.js\").default]\n * @abstract\n * @api\n */\nclass TileSource extends Source {\n  /**\n   * @param {Options} options SourceTile source options.\n   */\n  constructor(options) {\n    super({\n      attributions: options.attributions,\n      attributionsCollapsible: options.attributionsCollapsible,\n      projection: options.projection,\n      state: options.state,\n      wrapX: options.wrapX,\n      interpolate: options.interpolate,\n    });\n\n    /***\n     * @type {TileSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {TileSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {TileSourceOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.tilePixelRatio_ =\n      options.tilePixelRatio !== undefined ? options.tilePixelRatio : 1;\n\n    /**\n     * @type {import(\"../tilegrid/TileGrid.js\").default|null}\n     * @protected\n     */\n    this.tileGrid = options.tileGrid !== undefined ? options.tileGrid : null;\n\n    const tileSize = [256, 256];\n    if (this.tileGrid) {\n      toSize(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()), tileSize);\n    }\n\n    /**\n     * @protected\n     * @type {import(\"../size.js\").Size}\n     */\n    this.tmpSize = [0, 0];\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.key_ = options.key || getUid(this);\n\n    /**\n     * @protected\n     * @type {import(\"../Tile.js\").Options}\n     */\n    this.tileOptions = {\n      transition: options.transition,\n      interpolate: options.interpolate,\n    };\n\n    /**\n     * zDirection hint, read by the renderer. Indicates which resolution should be used\n     * by a renderer if the views resolution does not match any resolution of the tile source.\n     * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n     * will be used. If -1, the nearest higher resolution will be used.\n     * @type {number|import(\"../array.js\").NearestDirectionFunction}\n     */\n    this.zDirection = options.zDirection ? options.zDirection : 0;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {number} Gutter.\n   */\n  getGutterForProjection(projection) {\n    return 0;\n  }\n\n  /**\n   * Return the key to be used for all tiles in the source.\n   * @return {string} The key for all tiles.\n   */\n  getKey() {\n    return this.key_;\n  }\n\n  /**\n   * Set the value to be used as the key for all tiles in the source.\n   * @param {string} key The key for tiles.\n   * @protected\n   */\n  setKey(key) {\n    if (this.key_ !== key) {\n      this.key_ = key;\n      this.changed();\n    }\n  }\n\n  /**\n   * @param {import(\"../proj/Projection\").default} [projection] Projection.\n   * @return {Array<number>|null} Resolutions.\n   * @override\n   */\n  getResolutions(projection) {\n    const tileGrid = projection\n      ? this.getTileGridForProjection(projection)\n      : this.tileGrid;\n    if (!tileGrid) {\n      return null;\n    }\n    return tileGrid.getResolutions();\n  }\n\n  /**\n   * @abstract\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @param {import(\"../structs/LRUCache.js\").default<import(\"../Tile.js\").default>} [tileCache] Tile cache.\n   * @return {TileType|null} Tile.\n   */\n  getTile(z, x, y, pixelRatio, projection, tileCache) {\n    return abstract();\n  }\n\n  /**\n   * Return the tile grid of the tile source.\n   * @return {import(\"../tilegrid/TileGrid.js\").default|null} Tile grid.\n   * @api\n   */\n  getTileGrid() {\n    return this.tileGrid;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {!import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n   */\n  getTileGridForProjection(projection) {\n    if (!this.tileGrid) {\n      return getTileGridForProjection(projection);\n    }\n    return this.tileGrid;\n  }\n\n  /**\n   * Get the tile pixel ratio for this source. Subclasses may override this\n   * method, which is meant to return a supported pixel ratio that matches the\n   * provided `pixelRatio` as close as possible.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Tile pixel ratio.\n   */\n  getTilePixelRatio(pixelRatio) {\n    return this.tilePixelRatio_;\n  }\n\n  /**\n   * @param {number} z Z.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../size.js\").Size} Tile size.\n   */\n  getTilePixelSize(z, pixelRatio, projection) {\n    const tileGrid = this.getTileGridForProjection(projection);\n    const tilePixelRatio = this.getTilePixelRatio(pixelRatio);\n    const tileSize = toSize(tileGrid.getTileSize(z), this.tmpSize);\n    if (tilePixelRatio == 1) {\n      return tileSize;\n    }\n    return scaleSize(tileSize, tilePixelRatio, this.tmpSize);\n  }\n\n  /**\n   * Returns a tile coordinate wrapped around the x-axis. When the tile coordinate\n   * is outside the resolution and extent range of the tile grid, `null` will be\n   * returned.\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {import(\"../proj/Projection.js\").default} [projection] Projection.\n   * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate to be passed to the tileUrlFunction or\n   *     null if no tile URL should be created for the passed `tileCoord`.\n   */\n  getTileCoordForTileUrlFunction(tileCoord, projection) {\n    const gridProjection =\n      projection !== undefined ? projection : this.getProjection();\n    const tileGrid =\n      projection !== undefined\n        ? this.getTileGridForProjection(gridProjection)\n        : this.tileGrid || this.getTileGridForProjection(gridProjection);\n    if (this.getWrapX() && gridProjection.isGlobal()) {\n      tileCoord = wrapX(tileGrid, tileCoord, gridProjection);\n    }\n    return withinExtentAndZ(tileCoord, tileGrid) ? tileCoord : null;\n  }\n\n  /**\n   * Remove all cached reprojected tiles from the source. The next render cycle will create new tiles.\n   * @api\n   */\n  clear() {}\n\n  /**\n   * @override\n   */\n  refresh() {\n    this.clear();\n    super.refresh();\n  }\n}\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Tile~TileSource} instances are instances of this\n * type.\n */\nexport class TileSourceEvent extends Event {\n  /**\n   * @param {string} type Type.\n   * @param {import(\"../Tile.js\").default} tile The tile.\n   */\n  constructor(type, tile) {\n    super(type);\n\n    /**\n     * The tile related to the event.\n     * @type {import(\"../Tile.js\").default}\n     * @api\n     */\n    this.tile = tile;\n  }\n}\n\nexport default TileSource;\n","/**\n * @module ol/source/Raster\n */\nimport Disposable from '../Disposable.js';\nimport ImageCanvas from '../ImageCanvas.js';\nimport TileQueue from '../TileQueue.js';\nimport {createCanvasContext2D} from '../dom.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {equals, getCenter, getHeight, getWidth} from '../extent.js';\nimport ImageLayer from '../layer/Image.js';\nimport TileLayer from '../layer/Tile.js';\nimport {create as createTransform} from '../transform.js';\nimport {getUid} from '../util.js';\nimport ImageSource from './Image.js';\nimport Source from './Source.js';\nimport TileSource from './Tile.js';\n\n/**\n * @typedef {Object} MinionData\n * @property {Array<ArrayBuffer>} buffers Array of buffers.\n * @property {Object} meta Operation metadata.\n * @property {boolean} imageOps The operation is an image operation.\n * @property {number} width The width of the image.\n * @property {number} height The height of the image.\n */\n\n/* istanbul ignore next */\n/**\n * Create a function for running operations.  This function is serialized for\n * use in a worker.\n * @param {function(Array, Object):*} operation The operation.\n * @return {function(MinionData):ArrayBuffer} A function that takes an object with\n * buffers, meta, imageOps, width, and height properties and returns an array\n * buffer.\n */\nfunction createMinion(operation) {\n  return function (data) {\n    // bracket notation for minification support\n    const buffers = data['buffers'];\n    const meta = data['meta'];\n    const imageOps = data['imageOps'];\n    const width = data['width'];\n    const height = data['height'];\n\n    const numBuffers = buffers.length;\n    const numBytes = buffers[0].byteLength;\n\n    if (imageOps) {\n      const images = new Array(numBuffers);\n      for (let b = 0; b < numBuffers; ++b) {\n        images[b] = new ImageData(\n          new Uint8ClampedArray(buffers[b]),\n          width,\n          height,\n        );\n      }\n      const output = operation(images, meta).data;\n      return output.buffer;\n    }\n\n    const output = new Uint8ClampedArray(numBytes);\n    const arrays = new Array(numBuffers);\n    const pixels = new Array(numBuffers);\n    for (let b = 0; b < numBuffers; ++b) {\n      arrays[b] = new Uint8ClampedArray(buffers[b]);\n      pixels[b] = [0, 0, 0, 0];\n    }\n    for (let i = 0; i < numBytes; i += 4) {\n      for (let j = 0; j < numBuffers; ++j) {\n        const array = arrays[j];\n        pixels[j][0] = array[i];\n        pixels[j][1] = array[i + 1];\n        pixels[j][2] = array[i + 2];\n        pixels[j][3] = array[i + 3];\n      }\n      const pixel = operation(pixels, meta);\n      output[i] = pixel[0];\n      output[i + 1] = pixel[1];\n      output[i + 2] = pixel[2];\n      output[i + 3] = pixel[3];\n    }\n    return output.buffer;\n  };\n}\n\n/**\n * Create a worker for running operations.\n * @param {ProcessorOptions} config Processor options.\n * @param {function(MessageEvent): void} onMessage Called with a message event.\n * @return {Worker} The worker.\n */\nfunction createWorker(config, onMessage) {\n  const lib = Object.keys(config.lib || {}).map(function (name) {\n    return 'const ' + name + ' = ' + config.lib[name].toString() + ';';\n  });\n\n  const lines = lib.concat([\n    'const __minion__ = (' + createMinion.toString() + ')(',\n    config.operation.toString(),\n    ');',\n    'self.addEventListener(\"message\", function(event) {',\n    '  const buffer = __minion__(event.data);',\n    '  self.postMessage({buffer: buffer, meta: event.data.meta}, [buffer]);',\n    '});',\n  ]);\n\n  const worker = new Worker(\n    typeof Blob === 'undefined'\n      ? 'data:text/javascript;base64,' +\n        Buffer.from(lines.join('\\n'), 'binary').toString('base64')\n      : URL.createObjectURL(new Blob(lines, {type: 'text/javascript'})),\n  );\n  worker.addEventListener('message', onMessage);\n  return worker;\n}\n\n/**\n * @typedef {Object} FauxMessageEvent\n * @property {Object} data Message data.\n */\n\n/**\n * Create a faux worker for running operations.\n * @param {ProcessorOptions} config Configuration.\n * @param {function(FauxMessageEvent): void} onMessage Called with a message event.\n * @return {Object} The faux worker.\n */\nfunction createFauxWorker(config, onMessage) {\n  const minion = createMinion(config.operation);\n  let terminated = false;\n  return {\n    postMessage: function (data) {\n      setTimeout(function () {\n        if (terminated) {\n          return;\n        }\n        onMessage({data: {buffer: minion(data), meta: data['meta']}});\n      }, 0);\n    },\n    terminate: function () {\n      terminated = true;\n    },\n  };\n}\n\n/**\n * @typedef {function(Error, ImageData, (Object|Array<Object>)): void} JobCallback\n */\n\n/**\n * @typedef {Object} Job\n * @property {Object} meta Job metadata.\n * @property {Array<ImageData>} inputs Array of input data.\n * @property {JobCallback} callback Called when the job is complete.\n */\n\n/**\n * @typedef {Object} ProcessorOptions\n * @property {number} threads Number of workers to spawn.\n * @property {Operation} operation The operation.\n * @property {Object<string, Function>} [lib] Functions that will be made available to operations run in a worker.\n * @property {number} queue The number of queued jobs to allow.\n * @property {boolean} [imageOps=false] Pass all the image data to the operation instead of a single pixel.\n */\n\n/**\n * @classdesc\n * A processor runs pixel or image operations in workers.\n */\nexport class Processor extends Disposable {\n  /**\n   * @param {ProcessorOptions} config Configuration.\n   */\n  constructor(config) {\n    super();\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.imageOps_ = !!config.imageOps;\n    let threads;\n    if (config.threads === 0) {\n      threads = 0;\n    } else if (this.imageOps_) {\n      threads = 1;\n    } else {\n      threads = config.threads || 1;\n    }\n\n    /**\n     * @type {Array<Worker>}\n     */\n    const workers = new Array(threads);\n    if (threads) {\n      for (let i = 0; i < threads; ++i) {\n        workers[i] = createWorker(config, this.onWorkerMessage_.bind(this, i));\n      }\n    } else {\n      workers[0] = createFauxWorker(\n        config,\n        this.onWorkerMessage_.bind(this, 0),\n      );\n    }\n    /**\n     * @type {Array<Worker>}\n     * @private\n     */\n    this.workers_ = workers;\n\n    /**\n     * @type {Array<Job>}\n     * @private\n     */\n    this.queue_ = [];\n\n    /**\n     * @type {number}\n     * @private\n     */\n    this.maxQueueLength_ = config.queue || Infinity;\n    /**\n     * @type {number}\n     * @private\n     */\n    this.running_ = 0;\n\n    /**\n     * @type {Object<number, any>}\n     * @private\n     */\n    this.dataLookup_ = {};\n\n    /**\n     * @type {Job|null}\n     * @private\n     */\n    this.job_ = null;\n  }\n\n  /**\n   * Run operation on input data.\n   * @param {Array<ImageData>} inputs Array of image data.\n   * @param {Object} meta A user data object.  This is passed to all operations\n   *     and must be serializable.\n   * @param {function(Error, ImageData, Object): void} callback Called when work\n   *     completes.  The first argument is any error.  The second is the ImageData\n   *     generated by operations.  The third is the user data object.\n   */\n  process(inputs, meta, callback) {\n    this.enqueue_({\n      inputs: inputs,\n      meta: meta,\n      callback: callback,\n    });\n    this.dispatch_();\n  }\n\n  /**\n   * Add a job to the queue.\n   * @param {Job} job The job.\n   */\n  enqueue_(job) {\n    this.queue_.push(job);\n    while (this.queue_.length > this.maxQueueLength_) {\n      this.queue_.shift().callback(null, null);\n    }\n  }\n\n  /**\n   * Dispatch a job.\n   */\n  dispatch_() {\n    if (this.running_ || this.queue_.length === 0) {\n      return;\n    }\n\n    const job = this.queue_.shift();\n    this.job_ = job;\n    const width = job.inputs[0].width;\n    const height = job.inputs[0].height;\n    const buffers = job.inputs.map(function (input) {\n      return input.data.buffer;\n    });\n    const threads = this.workers_.length;\n    this.running_ = threads;\n    if (threads === 1) {\n      this.workers_[0].postMessage(\n        {\n          buffers: buffers,\n          meta: job.meta,\n          imageOps: this.imageOps_,\n          width: width,\n          height: height,\n        },\n        buffers,\n      );\n      return;\n    }\n\n    const length = job.inputs[0].data.length;\n    const segmentLength = 4 * Math.ceil(length / 4 / threads);\n    for (let i = 0; i < threads; ++i) {\n      const offset = i * segmentLength;\n      const slices = [];\n      for (let j = 0, jj = buffers.length; j < jj; ++j) {\n        slices.push(buffers[j].slice(offset, offset + segmentLength));\n      }\n      this.workers_[i].postMessage(\n        {\n          buffers: slices,\n          meta: job.meta,\n          imageOps: this.imageOps_,\n          width: width,\n          height: height,\n        },\n        slices,\n      );\n    }\n  }\n\n  /**\n   * Handle messages from the worker.\n   * @param {number} index The worker index.\n   * @param {MessageEvent} event The message event.\n   */\n  onWorkerMessage_(index, event) {\n    if (this.disposed) {\n      return;\n    }\n    this.dataLookup_[index] = event.data;\n    --this.running_;\n    if (this.running_ === 0) {\n      this.resolveJob_();\n    }\n  }\n\n  /**\n   * Resolve a job.  If there are no more worker threads, the processor callback\n   * will be called.\n   */\n  resolveJob_() {\n    const job = this.job_;\n    const threads = this.workers_.length;\n    let data, meta;\n    if (threads === 1) {\n      data = new Uint8ClampedArray(this.dataLookup_[0]['buffer']);\n      meta = this.dataLookup_[0]['meta'];\n    } else {\n      const length = job.inputs[0].data.length;\n      data = new Uint8ClampedArray(length);\n      meta = new Array(threads);\n      const segmentLength = 4 * Math.ceil(length / 4 / threads);\n      for (let i = 0; i < threads; ++i) {\n        const buffer = this.dataLookup_[i]['buffer'];\n        const offset = i * segmentLength;\n        data.set(new Uint8ClampedArray(buffer), offset);\n        meta[i] = this.dataLookup_[i]['meta'];\n      }\n    }\n    this.job_ = null;\n    this.dataLookup_ = {};\n    job.callback(\n      null,\n      new ImageData(data, job.inputs[0].width, job.inputs[0].height),\n      meta,\n    );\n    this.dispatch_();\n  }\n\n  /**\n   * Terminate all workers associated with the processor.\n   * @override\n   */\n  disposeInternal() {\n    for (let i = 0; i < this.workers_.length; ++i) {\n      this.workers_[i].terminate();\n    }\n    this.workers_.length = 0;\n  }\n}\n\n/**\n * A function that takes an array of input data, performs some operation, and\n * returns an array of output data.\n * For `pixel` type operations, the function will be called with an array of\n * pixels, where each pixel is an array of four numbers (`[r, g, b, a]`) in the\n * range of 0 - 255. It should return a single pixel array.\n * For `'image'` type operations, functions will be called with an array of\n * [ImageData](https://developer.mozilla.org/en-US/docs/Web/API/ImageData)\n * and should return a single\n * [ImageData](https://developer.mozilla.org/en-US/docs/Web/API/ImageData).\n * The operations\n * are called with a second \"data\" argument, which can be used for storage.  The\n * data object is accessible from raster events, where it can be initialized in\n * \"beforeoperations\" and accessed again in \"afteroperations\".\n *\n * @typedef {function((Array<Array<number>>|Array<ImageData>), Object):\n *     (Array<number>|ImageData)} Operation\n */\n\n/**\n * @enum {string}\n */\nconst RasterEventType = {\n  /**\n   * Triggered before operations are run.  Listeners will receive an event object with\n   * a `data` property that can be used to make data available to operations.\n   * @event module:ol/source/Raster.RasterSourceEvent#beforeoperations\n   * @api\n   */\n  BEFOREOPERATIONS: 'beforeoperations',\n\n  /**\n   * Triggered after operations are run.  Listeners will receive an event object with\n   * a `data` property.  If more than one thread is used, `data` will be an array of\n   * objects.  If a single thread is used, `data` will be a single object.\n   * @event module:ol/source/Raster.RasterSourceEvent#afteroperations\n   * @api\n   */\n  AFTEROPERATIONS: 'afteroperations',\n};\n\n/**\n * @typedef {'pixel' | 'image'} RasterOperationType\n * Raster operation type. Supported values are `'pixel'` and `'image'`.\n */\n\n/**\n * @typedef {import(\"./Image.js\").ImageSourceEventTypes|'beforeoperations'|'afteroperations'} RasterSourceEventTypes\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Raster~RasterSource} instances are instances of this\n * type.\n */\nexport class RasterSourceEvent extends Event {\n  /**\n   * @param {string} type Type.\n   * @param {import(\"../Map.js\").FrameState} frameState The frame state.\n   * @param {Object|Array<Object>} data An object made available to operations.  For \"afteroperations\" evenets\n   * this will be an array of objects if more than one thread is used.\n   */\n  constructor(type, frameState, data) {\n    super(type);\n\n    /**\n     * The raster extent.\n     * @type {import(\"../extent.js\").Extent}\n     * @api\n     */\n    this.extent = frameState.extent;\n\n    /**\n     * The pixel resolution (map units per pixel).\n     * @type {number}\n     * @api\n     */\n    this.resolution = frameState.viewState.resolution / frameState.pixelRatio;\n\n    /**\n     * An object made available to all operations.  This can be used by operations\n     * as a storage object (e.g. for calculating statistics).\n     * @type {Object}\n     * @api\n     */\n    this.data = data;\n  }\n}\n\n/**\n * @typedef {Object} Options\n * @property {Array<import(\"./Source.js\").default|import(\"../layer/Layer.js\").default>} sources Input\n * sources or layers.  For vector data, use an VectorImage layer.\n * @property {Operation} [operation] Raster operation.\n * The operation will be called with data from input sources\n * and the output will be assigned to the raster source.\n * @property {Object} [lib] Functions that will be made available to operations run in a worker.\n * @property {number} [threads] By default, operations will be run in a single worker thread.\n * To avoid using workers altogether, set `threads: 0`.  For pixel operations, operations can\n * be run in multiple worker threads.  Note that there is additional overhead in\n * transferring data to multiple workers, and that depending on the user's\n * system, it may not be possible to parallelize the work.\n * @property {RasterOperationType} [operationType='pixel'] Operation type.\n * Supported values are `'pixel'` and `'image'`.  By default,\n * `'pixel'` operations are assumed, and operations will be called with an\n * array of pixels from input sources.  If set to `'image'`, operations will\n * be called with an array of ImageData objects from input sources.\n * @property {Array<number>|null} [resolutions] Resolutions. If specified, raster operations will only\n * be run at the given resolutions.  By default, the resolutions of the first source with resolutions\n * specified will be used, if any. Set to `null` to use any view resolution instead.\n */\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes, import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").OnSignature<import(\"./Image.js\").ImageSourceEventTypes, import(\"./Image.js\").ImageSourceEvent, Return> &\n *   import(\"../Observable\").OnSignature<RasterSourceEventTypes, RasterSourceEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|import(\"../ObjectEventType\").Types\n *     |RasterSourceEventTypes, Return>} RasterSourceOnSignature\n */\n\n/**\n * @classdesc\n * A source that transforms data from any number of input sources using an\n * {@link module:ol/source/Raster~Operation} function to transform input pixel values into\n * output pixel values.\n *\n * @fires module:ol/source/Raster.RasterSourceEvent\n * @api\n */\nclass RasterSource extends ImageSource {\n  /**\n   * @param {Options} options Options.\n   */\n  constructor(options) {\n    super({\n      projection: null,\n    });\n\n    /***\n     * @type {RasterSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {RasterSourceOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {RasterSourceOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {Processor}\n     */\n    this.processor_ = null;\n\n    /**\n     * @private\n     * @type {RasterOperationType}\n     */\n    this.operationType_ =\n      options.operationType !== undefined ? options.operationType : 'pixel';\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.threads_ = options.threads !== undefined ? options.threads : 1;\n\n    /**\n     * @private\n     * @type {Array<import(\"../layer/Layer.js\").default>}\n     */\n    this.layers_ = createLayers(options.sources);\n\n    const changed = this.changed.bind(this);\n    for (let i = 0, ii = this.layers_.length; i < ii; ++i) {\n      this.layers_[i].addEventListener(EventType.CHANGE, changed);\n    }\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.useResolutions_ = options.resolutions !== null;\n\n    /**\n     * @private\n     * @type {import(\"../TileQueue.js\").default}\n     */\n    this.tileQueue_ = new TileQueue(function () {\n      return 1;\n    }, this.processSources_.bind(this));\n\n    /**\n     * The most recently requested frame state.\n     * @type {import(\"../Map.js\").FrameState}\n     * @private\n     */\n    this.requestedFrameState_;\n\n    /**\n     * The most recently rendered image canvas.\n     * @type {import(\"../ImageCanvas.js\").default}\n     * @private\n     */\n    this.renderedImageCanvas_ = null;\n\n    /**\n     * The most recently rendered revision.\n     * @type {number}\n     * @private\n     */\n    this.renderedRevision_;\n\n    /**\n     * @private\n     * @type {import(\"../Map.js\").FrameState}\n     */\n    this.frameState_ = {\n      animate: false,\n      coordinateToPixelTransform: createTransform(),\n      declutter: null,\n      extent: null,\n      index: 0,\n      layerIndex: 0,\n      layerStatesArray: getLayerStatesArray(this.layers_),\n      pixelRatio: 1,\n      pixelToCoordinateTransform: createTransform(),\n      postRenderFunctions: [],\n      size: [0, 0],\n      tileQueue: this.tileQueue_,\n      time: Date.now(),\n      usedTiles: {},\n      viewState: /** @type {import(\"../View.js\").State} */ ({\n        rotation: 0,\n      }),\n      viewHints: [],\n      wantedTiles: {},\n      mapId: getUid(this),\n      renderTargets: {},\n    };\n\n    this.setAttributions(function (frameState) {\n      /** @type {Array<string>} */\n      const attributions = [];\n      for (let i = 0, iMax = options.sources.length; i < iMax; ++i) {\n        const sourceOrLayer = options.sources[i];\n        const source =\n          sourceOrLayer instanceof Source\n            ? sourceOrLayer\n            : sourceOrLayer.getSource();\n        if (!source) {\n          continue;\n        }\n        const sourceAttributions = source.getAttributions()?.(frameState);\n        if (typeof sourceAttributions === 'string') {\n          attributions.push(sourceAttributions);\n        } else if (sourceAttributions !== undefined) {\n          attributions.push(...sourceAttributions);\n        }\n      }\n      return attributions;\n    });\n\n    if (options.operation !== undefined) {\n      this.setOperation(options.operation, options.lib);\n    }\n  }\n\n  /**\n   * Set the operation.\n   * @param {Operation} operation New operation.\n   * @param {Object} [lib] Functions that will be available to operations run\n   *     in a worker.\n   * @api\n   */\n  setOperation(operation, lib) {\n    if (this.processor_) {\n      this.processor_.dispose();\n    }\n\n    this.processor_ = new Processor({\n      operation: operation,\n      imageOps: this.operationType_ === 'image',\n      queue: 1,\n      lib: lib,\n      threads: this.threads_,\n    });\n    this.changed();\n  }\n\n  /**\n   * Update the stored frame state.\n   * @param {import(\"../extent.js\").Extent} extent The view extent (in map units).\n   * @param {number} resolution The view resolution.\n   * @param {import(\"../proj/Projection.js\").default} projection The view projection.\n   * @return {import(\"../Map.js\").FrameState} The updated frame state.\n   * @private\n   */\n  updateFrameState_(extent, resolution, projection) {\n    const frameState = /** @type {import(\"../Map.js\").FrameState} */ (\n      Object.assign({}, this.frameState_)\n    );\n\n    frameState.viewState = /** @type {import(\"../View.js\").State} */ (\n      Object.assign({}, frameState.viewState)\n    );\n\n    const center = getCenter(extent);\n\n    frameState.size[0] = Math.ceil(getWidth(extent) / resolution);\n    frameState.size[1] = Math.ceil(getHeight(extent) / resolution);\n    frameState.extent = [\n      center[0] - (frameState.size[0] * resolution) / 2,\n      center[1] - (frameState.size[1] * resolution) / 2,\n      center[0] + (frameState.size[0] * resolution) / 2,\n      center[1] + (frameState.size[1] * resolution) / 2,\n    ];\n    frameState.time = Date.now();\n\n    const viewState = frameState.viewState;\n    viewState.center = center;\n    viewState.projection = projection;\n    viewState.resolution = resolution;\n    return frameState;\n  }\n\n  /**\n   * Determine if all sources are ready.\n   * @return {boolean} All sources are ready.\n   * @private\n   */\n  allSourcesReady_() {\n    let ready = true;\n    let source;\n    for (let i = 0, ii = this.layers_.length; i < ii; ++i) {\n      source = this.layers_[i].getSource();\n      if (!source || source.getState() !== 'ready') {\n        ready = false;\n        break;\n      }\n    }\n    return ready;\n  }\n\n  /**\n   * @param {import(\"../extent.js\").Extent} extent Extent.\n   * @param {number} resolution Resolution.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../ImageCanvas.js\").default} Single image.\n   * @override\n   */\n  getImage(extent, resolution, pixelRatio, projection) {\n    if (!this.allSourcesReady_()) {\n      return null;\n    }\n\n    this.tileQueue_.loadMoreTiles(16, 16);\n\n    resolution = this.findNearestResolution(resolution);\n    const frameState = this.updateFrameState_(extent, resolution, projection);\n    this.requestedFrameState_ = frameState;\n\n    // check if we can't reuse the existing ol/ImageCanvas\n    if (this.renderedImageCanvas_) {\n      const renderedResolution = this.renderedImageCanvas_.getResolution();\n      const renderedExtent = this.renderedImageCanvas_.getExtent();\n      if (\n        resolution !== renderedResolution ||\n        !equals(frameState.extent, renderedExtent)\n      ) {\n        this.renderedImageCanvas_ = null;\n      }\n    }\n\n    if (\n      !this.renderedImageCanvas_ ||\n      this.getRevision() !== this.renderedRevision_\n    ) {\n      this.processSources_();\n    }\n\n    if (frameState.animate) {\n      requestAnimationFrame(this.changed.bind(this));\n    }\n\n    return this.renderedImageCanvas_;\n  }\n\n  /**\n   * Start processing source data.\n   * @private\n   */\n  processSources_() {\n    const frameState = this.requestedFrameState_;\n    const len = this.layers_.length;\n    const imageDatas = new Array(len);\n    for (let i = 0; i < len; ++i) {\n      frameState.layerIndex = i;\n      frameState.renderTargets = {};\n      const imageData = getImageData(this.layers_[i], frameState);\n      if (imageData) {\n        imageDatas[i] = imageData;\n      } else {\n        return;\n      }\n    }\n\n    const data = {};\n    this.dispatchEvent(\n      new RasterSourceEvent(RasterEventType.BEFOREOPERATIONS, frameState, data),\n    );\n    this.processor_.process(\n      imageDatas,\n      data,\n      this.onWorkerComplete_.bind(this, frameState),\n    );\n  }\n\n  /**\n   * Called when pixel processing is complete.\n   * @param {import(\"../Map.js\").FrameState} frameState The frame state.\n   * @param {Error} err Any error during processing.\n   * @param {ImageData} output The output image data.\n   * @param {Object|Array<Object>} data The user data (or an array if more than one thread).\n   * @private\n   */\n  onWorkerComplete_(frameState, err, output, data) {\n    if (err || !output) {\n      return;\n    }\n\n    // do nothing if extent or resolution changed\n    const extent = frameState.extent;\n    const resolution = frameState.viewState.resolution;\n    if (\n      resolution !== this.requestedFrameState_.viewState.resolution ||\n      !equals(extent, this.requestedFrameState_.extent)\n    ) {\n      return;\n    }\n\n    let context;\n    if (this.renderedImageCanvas_) {\n      context =\n        /** @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} */ (\n          this.renderedImageCanvas_.getImage().getContext('2d')\n        );\n    } else {\n      const width = Math.round(getWidth(extent) / resolution);\n      const height = Math.round(getHeight(extent) / resolution);\n      context = createCanvasContext2D(width, height);\n      this.renderedImageCanvas_ = new ImageCanvas(\n        extent,\n        resolution,\n        1,\n        context.canvas,\n      );\n    }\n    context.putImageData(output, 0, 0);\n\n    if (frameState.animate) {\n      requestAnimationFrame(this.changed.bind(this));\n    } else {\n      this.changed();\n    }\n    this.renderedRevision_ = this.getRevision();\n\n    this.dispatchEvent(\n      new RasterSourceEvent(RasterEventType.AFTEROPERATIONS, frameState, data),\n    );\n  }\n\n  /**\n   * @param {import(\"../proj/Projection\").default} [projection] Projection.\n   * @return {Array<number>|null} Resolutions.\n   * @override\n   */\n  getResolutions(projection) {\n    if (!this.useResolutions_) {\n      return null;\n    }\n    let resolutions = super.getResolutions();\n    if (!resolutions) {\n      for (let i = 0, ii = this.layers_.length; i < ii; ++i) {\n        const source = this.layers_[i].getSource();\n        resolutions = source.getResolutions(projection);\n        if (resolutions) {\n          break;\n        }\n      }\n    }\n    return resolutions;\n  }\n\n  /**\n   * @override\n   */\n  disposeInternal() {\n    if (this.processor_) {\n      this.processor_.dispose();\n    }\n    super.disposeInternal();\n  }\n}\n\n/**\n * Clean up and unregister the worker.\n * @function\n * @api\n */\nRasterSource.prototype.dispose;\n\n/**\n * A reusable canvas context.\n * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}\n * @private\n */\nlet sharedContext = null;\n\n/**\n * Get image data from a layer.\n * @param {import(\"../layer/Layer.js\").default} layer Layer to render.\n * @param {import(\"../Map.js\").FrameState} frameState The frame state.\n * @return {ImageData} The image data.\n */\nfunction getImageData(layer, frameState) {\n  const renderer = layer.getRenderer();\n  if (!renderer) {\n    throw new Error('Unsupported layer type: ' + layer);\n  }\n\n  if (!renderer.prepareFrame(frameState)) {\n    return null;\n  }\n  const width = frameState.size[0];\n  const height = frameState.size[1];\n  if (width === 0 || height === 0) {\n    return null;\n  }\n  const container = renderer.renderFrame(frameState, null);\n  let element;\n  if (container instanceof HTMLCanvasElement) {\n    element = container;\n  } else {\n    if (container) {\n      element = container.firstElementChild;\n    }\n    if (!(element instanceof HTMLCanvasElement)) {\n      throw new Error('Unsupported rendered element: ' + element);\n    }\n    if (element.width === width && element.height === height) {\n      const context = element.getContext('2d');\n      return context.getImageData(0, 0, width, height);\n    }\n  }\n\n  if (!sharedContext) {\n    sharedContext = createCanvasContext2D(width, height, undefined, {\n      willReadFrequently: true,\n    });\n  } else {\n    const canvas = sharedContext.canvas;\n    if (canvas.width !== width || canvas.height !== height) {\n      sharedContext = createCanvasContext2D(width, height, undefined, {\n        willReadFrequently: true,\n      });\n    } else {\n      sharedContext.clearRect(0, 0, width, height);\n    }\n  }\n  sharedContext.drawImage(element, 0, 0, width, height);\n  return sharedContext.getImageData(0, 0, width, height);\n}\n\n/**\n * Get a list of layer states from a list of layers.\n * @param {Array<import(\"../layer/Layer.js\").default>} layers Layers.\n * @return {Array<import(\"../layer/Layer.js\").State>} The layer states.\n */\nfunction getLayerStatesArray(layers) {\n  return layers.map(function (layer) {\n    return layer.getLayerState();\n  });\n}\n\n/**\n * Create layers for all sources.\n * @param {Array<import(\"./Source.js\").default|import(\"../layer/Layer.js\").default>} sources The sources.\n * @return {Array<import(\"../layer/Layer.js\").default>} Array of layers.\n */\nfunction createLayers(sources) {\n  const len = sources.length;\n  const layers = new Array(len);\n  for (let i = 0; i < len; ++i) {\n    layers[i] = createLayer(sources[i]);\n  }\n  return layers;\n}\n\n/**\n * Create a layer for the provided source.\n * @param {import(\"./Source.js\").default|import(\"../layer/Layer.js\").default} layerOrSource The layer or source.\n * @return {import(\"../layer/Layer.js\").default} The layer.\n */\nfunction createLayer(layerOrSource) {\n  // @type {import(\"../layer/Layer.js\").default}\n  let layer;\n  if (layerOrSource instanceof Source) {\n    if (layerOrSource instanceof TileSource) {\n      layer = new TileLayer({source: layerOrSource});\n    } else if (layerOrSource instanceof ImageSource) {\n      layer = new ImageLayer({source: layerOrSource});\n    }\n  } else {\n    layer = layerOrSource;\n  }\n  return layer;\n}\n\nexport default RasterSource;\n","/**\n * @module ol/net\n */\nimport {getUid} from './util.js';\n\n/**\n * Simple JSONP helper. Supports error callbacks and a custom callback param.\n * The error callback will be called when no JSONP is executed after 10 seconds.\n *\n * @param {string} url Request url. A 'callback' query parameter will be\n *     appended.\n * @param {Function} callback Callback on success.\n * @param {Function} [errback] Callback on error.\n * @param {string} [callbackParam] Custom query parameter for the JSONP\n *     callback. Default is 'callback'.\n */\nexport function jsonp(url, callback, errback, callbackParam) {\n  const script = document.createElement('script');\n  const key = 'olc_' + getUid(callback);\n  function cleanup() {\n    delete window[key];\n    script.parentNode.removeChild(script);\n  }\n  script.async = true;\n  script.src =\n    url +\n    (url.includes('?') ? '&' : '?') +\n    (callbackParam || 'callback') +\n    '=' +\n    key;\n  const timer = setTimeout(function () {\n    cleanup();\n    if (errback) {\n      errback();\n    }\n  }, 10000);\n  window[key] = function (data) {\n    clearTimeout(timer);\n    cleanup();\n    callback(data);\n  };\n  document.head.appendChild(script);\n}\n\nexport class ResponseError extends Error {\n  /**\n   * @param {XMLHttpRequest} response The XHR object.\n   */\n  constructor(response) {\n    const message = 'Unexpected response status: ' + response.status;\n    super(message);\n\n    /**\n     * @type {string}\n     */\n    this.name = 'ResponseError';\n\n    /**\n     * @type {XMLHttpRequest}\n     */\n    this.response = response;\n  }\n}\n\nexport class ClientError extends Error {\n  /**\n   * @param {XMLHttpRequest} client The XHR object.\n   */\n  constructor(client) {\n    super('Failed to issue request');\n\n    /**\n     * @type {string}\n     */\n    this.name = 'ClientError';\n\n    /**\n     * @type {XMLHttpRequest}\n     */\n    this.client = client;\n  }\n}\n\n/**\n * @param {string} url The URL.\n * @return {Promise<Object>} A promise that resolves to the JSON response.\n */\nexport function getJSON(url) {\n  return new Promise(function (resolve, reject) {\n    /**\n     * @param {ProgressEvent<XMLHttpRequest>} event The load event.\n     */\n    function onLoad(event) {\n      const client = event.target;\n      // status will be 0 for file:// urls\n      if (!client.status || (client.status >= 200 && client.status < 300)) {\n        let data;\n        try {\n          data = JSON.parse(client.responseText);\n        } catch (err) {\n          const message = 'Error parsing response text as JSON: ' + err.message;\n          reject(new Error(message));\n          return;\n        }\n        resolve(data);\n        return;\n      }\n\n      reject(new ResponseError(client));\n    }\n\n    /**\n     * @param {ProgressEvent<XMLHttpRequest>} event The error event.\n     */\n    function onError(event) {\n      reject(new ClientError(event.target));\n    }\n\n    const client = new XMLHttpRequest();\n    client.addEventListener('load', onLoad);\n    client.addEventListener('error', onError);\n    client.open('GET', url);\n    client.setRequestHeader('Accept', 'application/json');\n    client.send();\n  });\n}\n\n/**\n * @param {string} base The base URL.\n * @param {string} url The potentially relative URL.\n * @return {string} The full URL.\n */\nexport function resolveUrl(base, url) {\n  if (url.includes('://')) {\n    return url;\n  }\n  return new URL(url, base).href;\n}\n\nlet originalXHR;\nexport function overrideXHR(xhr) {\n  if (typeof XMLHttpRequest !== 'undefined') {\n    originalXHR = XMLHttpRequest;\n  }\n  global.XMLHttpRequest = xhr;\n}\n\nexport function restoreXHR() {\n  global.XMLHttpRequest = originalXHR;\n}\n","/**\n * @module ol/uri\n */\n\nimport {modulo} from './math.js';\nimport {hashZXY} from './tilecoord.js';\n\n/**\n * Appends query parameters to a URI.\n *\n * @param {string} uri The original URI, which may already have query data.\n * @param {!Object} params An object where keys are URI-encoded parameter keys,\n *     and the values are arbitrary types or arrays.\n * @return {string} The new URI.\n */\nexport function appendParams(uri, params) {\n  /** @type {Array<string>} */\n  const keyParams = [];\n  // Skip any null or undefined parameter values\n  Object.keys(params).forEach(function (k) {\n    if (params[k] !== null && params[k] !== undefined) {\n      keyParams.push(k + '=' + encodeURIComponent(params[k]));\n    }\n  });\n  const qs = keyParams.join('&');\n  // remove any trailing ? or &\n  uri = uri.replace(/[?&]$/, '');\n  // append ? or & depending on whether uri has existing parameters\n  uri += uri.includes('?') ? '&' : '?';\n  return uri + qs;\n}\n\nconst zRegEx = /\\{z\\}/g;\nconst xRegEx = /\\{x\\}/g;\nconst yRegEx = /\\{y\\}/g;\nconst dashYRegEx = /\\{-y\\}/g;\n\n/**\n * @param {string} template The URL template.  Should have `{x}`, `{y}`, and `{z}` placeholders.  If\n * the template has a `{-y}` placeholder, the `maxY` parameter must be supplied.\n * @param {number} z The tile z coordinate.\n * @param {number} x The tile x coordinate.\n * @param {number} y The tile y coordinate.\n * @param {number} [maxY] The maximum y coordinate at the given z level.\n * @return {string} The URL.\n */\nexport function renderXYZTemplate(template, z, x, y, maxY) {\n  return template\n    .replace(zRegEx, z.toString())\n    .replace(xRegEx, x.toString())\n    .replace(yRegEx, y.toString())\n    .replace(dashYRegEx, function () {\n      if (maxY === undefined) {\n        throw new Error(\n          'If the URL template has a {-y} placeholder, the grid extent must be known',\n        );\n      }\n      return (maxY - y).toString();\n    });\n}\n\n/**\n * @param {Array<string>} urls List of URLs.\n * @param {number} z The tile z coordinate.\n * @param {number} x The tile x coordinate.\n * @param {number} y The tile y coordinate.\n * @return {string} The chosen URL.\n */\nexport function pickUrl(urls, z, x, y) {\n  const hash = hashZXY(z, x, y);\n  const index = modulo(hash, urls.length);\n  return urls[index];\n}\n\n/**\n * @param {string} url URL.\n * @return {Array<string>} Array of urls.\n */\nexport function expandUrl(url) {\n  const urls = [];\n  let match = /\\{([a-z])-([a-z])\\}/.exec(url);\n  if (match) {\n    // char range\n    const startCharCode = match[1].charCodeAt(0);\n    const stopCharCode = match[2].charCodeAt(0);\n    let charCode;\n    for (charCode = startCharCode; charCode <= stopCharCode; ++charCode) {\n      urls.push(url.replace(match[0], String.fromCharCode(charCode)));\n    }\n    return urls;\n  }\n  match = /\\{(\\d+)-(\\d+)\\}/.exec(url);\n  if (match) {\n    // number range\n    const stop = parseInt(match[2], 10);\n    for (let i = parseInt(match[1], 10); i <= stop; i++) {\n      urls.push(url.replace(match[0], i.toString()));\n    }\n    return urls;\n  }\n  urls.push(url);\n  return urls;\n}\n","/**\n * @module ol/tileurlfunction\n */\nimport {modulo} from './math.js';\nimport {hash as tileCoordHash} from './tilecoord.js';\nimport {renderXYZTemplate} from './uri.js';\n\n/**\n * @param {string} template Template.\n * @param {import(\"./tilegrid/TileGrid.js\").default|null} tileGrid Tile grid.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTemplate(template, tileGrid) {\n  return (\n    /**\n     * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile Coordinate.\n     * @param {number} pixelRatio Pixel ratio.\n     * @param {import(\"./proj/Projection.js\").default} projection Projection.\n     * @return {string|undefined} Tile URL.\n     */\n    function (tileCoord, pixelRatio, projection) {\n      if (!tileCoord) {\n        return undefined;\n      }\n      let maxY;\n      const z = tileCoord[0];\n      if (tileGrid) {\n        // The `{-y}` placeholder only works for sources that have a tile grid at construction\n        const range = tileGrid.getFullTileRange(z);\n        if (range) {\n          maxY = range.getHeight() - 1;\n        }\n      }\n      return renderXYZTemplate(template, z, tileCoord[1], tileCoord[2], maxY);\n    }\n  );\n}\n\n/**\n * @param {Array<string>} templates Templates.\n * @param {import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTemplates(templates, tileGrid) {\n  const len = templates.length;\n  const tileUrlFunctions = new Array(len);\n  for (let i = 0; i < len; ++i) {\n    tileUrlFunctions[i] = createFromTemplate(templates[i], tileGrid);\n  }\n  return createFromTileUrlFunctions(tileUrlFunctions);\n}\n\n/**\n * @param {Array<import(\"./Tile.js\").UrlFunction>} tileUrlFunctions Tile URL Functions.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTileUrlFunctions(tileUrlFunctions) {\n  if (tileUrlFunctions.length === 1) {\n    return tileUrlFunctions[0];\n  }\n  return (\n    /**\n     * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile Coordinate.\n     * @param {number} pixelRatio Pixel ratio.\n     * @param {import(\"./proj/Projection.js\").default} projection Projection.\n     * @return {string|undefined} Tile URL.\n     */\n    function (tileCoord, pixelRatio, projection) {\n      if (!tileCoord) {\n        return undefined;\n      }\n      const h = tileCoordHash(tileCoord);\n      const index = modulo(h, tileUrlFunctions.length);\n      return tileUrlFunctions[index](tileCoord, pixelRatio, projection);\n    }\n  );\n}\n\n/**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\nexport function nullTileUrlFunction(tileCoord, pixelRatio, projection) {\n  return undefined;\n}\n","/**\n * @module ol/source/TileEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n  /**\n   * Triggered when a tile starts loading.\n   * @event module:ol/source/Tile.TileSourceEvent#tileloadstart\n   * @api\n   */\n  TILELOADSTART: 'tileloadstart',\n\n  /**\n   * Triggered when a tile finishes loading, either when its data is loaded,\n   * or when loading was aborted because the tile is no longer needed.\n   * @event module:ol/source/Tile.TileSourceEvent#tileloadend\n   * @api\n   */\n  TILELOADEND: 'tileloadend',\n\n  /**\n   * Triggered if tile loading results in an error. Note that this is not the\n   * right place to re-fetch tiles. See {@link module:ol/ImageTile~ImageTile#load}\n   * for details.\n   * @event module:ol/source/Tile.TileSourceEvent#tileloaderror\n   * @api\n   */\n  TILELOADERROR: 'tileloaderror',\n};\n\n/**\n * @typedef {'tileloadstart'|'tileloadend'|'tileloaderror'} TileSourceEventTypes\n */\n","/**\n * @module ol/source/UrlTile\n */\nimport TileState from '../TileState.js';\nimport {createFromTemplates} from '../tileurlfunction.js';\nimport {expandUrl} from '../uri.js';\nimport {getUid} from '../util.js';\nimport TileSource, {TileSourceEvent} from './Tile.js';\nimport TileEventType from './TileEventType.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection.\n * @property {import(\"./Source.js\").State} [state] State.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] TileGrid.\n * @property {import(\"../Tile.js\").LoadFunction} tileLoadFunction TileLoadFunction.\n * @property {number} [tilePixelRatio] TilePixelRatio.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Deprecated.  Use an ImageTile source and provide a function\n * for the url option instead.\n * @property {string} [url] Url.\n * @property {Array<string>} [urls] Urls.\n * @property {boolean} [wrapX=true] WrapX.\n * @property {number} [transition] Transition.\n * @property {string} [key] Key.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0] ZDirection.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling.  By default,\n * the nearest neighbor is used when resampling.\n */\n\n/**\n * @deprecated Use the ol/source/ImageTile.js instead.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n */\nclass UrlTile extends TileSource {\n  /**\n   * @param {Options} options Image tile options.\n   */\n  constructor(options) {\n    super({\n      attributions: options.attributions,\n      cacheSize: options.cacheSize,\n      projection: options.projection,\n      state: options.state,\n      tileGrid: options.tileGrid,\n      tilePixelRatio: options.tilePixelRatio,\n      wrapX: options.wrapX,\n      transition: options.transition,\n      interpolate: options.interpolate,\n      key: options.key,\n      attributionsCollapsible: options.attributionsCollapsible,\n      zDirection: options.zDirection,\n    });\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.generateTileUrlFunction_ =\n      this.tileUrlFunction === UrlTile.prototype.tileUrlFunction;\n\n    /**\n     * @protected\n     * @type {import(\"../Tile.js\").LoadFunction}\n     */\n    this.tileLoadFunction = options.tileLoadFunction;\n\n    if (options.tileUrlFunction) {\n      this.tileUrlFunction = options.tileUrlFunction;\n    }\n\n    /**\n     * @protected\n     * @type {!Array<string>|null}\n     */\n    this.urls = null;\n\n    if (options.urls) {\n      this.setUrls(options.urls);\n    } else if (options.url) {\n      this.setUrl(options.url);\n    }\n\n    /**\n     * @private\n     * @type {!Object<string, boolean>}\n     */\n    this.tileLoadingKeys_ = {};\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Return the tile load function of the source.\n   * @return {import(\"../Tile.js\").LoadFunction} TileLoadFunction\n   * @api\n   */\n  getTileLoadFunction() {\n    return this.tileLoadFunction;\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Return the tile URL function of the source.\n   * @return {import(\"../Tile.js\").UrlFunction} TileUrlFunction\n   * @api\n   */\n  getTileUrlFunction() {\n    return Object.getPrototypeOf(this).tileUrlFunction === this.tileUrlFunction\n      ? this.tileUrlFunction.bind(this)\n      : this.tileUrlFunction;\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Return the URLs used for this source.\n   * When a tileUrlFunction is used instead of url or urls,\n   * null will be returned.\n   * @return {!Array<string>|null} URLs.\n   * @api\n   */\n  getUrls() {\n    return this.urls;\n  }\n\n  /**\n   * Handle tile change events.\n   * @param {import(\"../events/Event.js\").default} event Event.\n   * @protected\n   */\n  handleTileChange(event) {\n    const tile = /** @type {import(\"../Tile.js\").default} */ (event.target);\n    const uid = getUid(tile);\n    const tileState = tile.getState();\n    let type;\n    if (tileState == TileState.LOADING) {\n      this.tileLoadingKeys_[uid] = true;\n      type = TileEventType.TILELOADSTART;\n    } else if (uid in this.tileLoadingKeys_) {\n      delete this.tileLoadingKeys_[uid];\n      type =\n        tileState == TileState.ERROR\n          ? TileEventType.TILELOADERROR\n          : tileState == TileState.LOADED\n            ? TileEventType.TILELOADEND\n            : undefined;\n    }\n    if (type != undefined) {\n      this.dispatchEvent(new TileSourceEvent(type, tile));\n    }\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Set the tile load function of the source.\n   * @param {import(\"../Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n   * @api\n   */\n  setTileLoadFunction(tileLoadFunction) {\n    this.tileLoadFunction = tileLoadFunction;\n    this.changed();\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Set the tile URL function of the source.\n   * @param {import(\"../Tile.js\").UrlFunction} tileUrlFunction Tile URL function.\n   * @param {string} [key] Optional new tile key for the source.\n   * @api\n   */\n  setTileUrlFunction(tileUrlFunction, key) {\n    this.tileUrlFunction = tileUrlFunction;\n    if (typeof key !== 'undefined') {\n      this.setKey(key);\n    } else {\n      this.changed();\n    }\n  }\n\n  /**\n   * Set the URL to use for requests.\n   * @param {string} url URL.\n   * @api\n   */\n  setUrl(url) {\n    const urls = expandUrl(url);\n    this.urls = urls;\n    this.setUrls(urls);\n  }\n\n  /**\n   * Deprecated.  Use an ImageTile source instead.\n   * Set the URLs to use for requests.\n   * @param {Array<string>} urls URLs.\n   * @api\n   */\n  setUrls(urls) {\n    this.urls = urls;\n    const key = urls.join('\\n');\n    if (this.generateTileUrlFunction_) {\n      this.setTileUrlFunction(createFromTemplates(urls, this.tileGrid), key);\n    } else {\n      this.setKey(key);\n    }\n  }\n\n  /**\n   * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {string|undefined} Tile URL.\n   */\n  tileUrlFunction(tileCoord, pixelRatio, projection) {\n    return undefined;\n  }\n}\n\nexport default UrlTile;\n","/**\n * @module ol/source/TileImage\n */\nimport ImageTile from '../ImageTile.js';\nimport TileState from '../TileState.js';\nimport EventType from '../events/EventType.js';\nimport {WORKER_OFFSCREEN_CANVAS} from '../has.js';\nimport {equivalent, get as getProjection} from '../proj.js';\nimport ReprojTile from '../reproj/Tile.js';\nimport {getCacheKey} from '../tilecoord.js';\nimport {getForProjection as getTileGridForProjection} from '../tilegrid.js';\nimport {getUid} from '../util.js';\nimport UrlTile from './UrlTile.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {ReferrerPolicy} [referrerPolicy] The `referrerPolicy` property for loaded images.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {import(\"./Source.js\").State} [state] Source state.\n * @property {typeof import(\"../ImageTile.js\").default} [tileClass] Class used to instantiate image tiles.\n * Default is {@link module:ol/ImageTile~ImageTile}.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n *   imageTile.getImage().src = src;\n * };\n * ```\n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service. For example, if the tile\n * service advertizes 256px by 256px tiles but actually sends 512px\n * by 512px images (for retina/hidpi devices) then `tilePixelRatio`\n * should be set to `2`.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Deprecated.  Use an ImageTile source and provide a function\n * for the url option instead.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.\n * A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`, may be\n * used instead of defining each one separately in the `urls` option.\n * @property {Array<string>} [urls] An array of URL templates.\n * @property {boolean} [wrapX] Whether to wrap the world horizontally. The default, is to\n * request out-of-bounds tiles from the server. When set to `false`, only one\n * world will be rendered. When set to `true`, tiles will be requested for one\n * world only, but they will be wrapped horizontally to render multiple worlds.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {string} [key] Optional tile key for proper cache fetching\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n\n/**\n * @deprecated Use the ol/source/ImageTile.js instead.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n * @api\n */\nclass TileImage extends UrlTile {\n  /**\n   * @param {!Options} options Image tile options.\n   */\n  constructor(options) {\n    super({\n      attributions: options.attributions,\n      cacheSize: options.cacheSize,\n      projection: options.projection,\n      state: options.state,\n      tileGrid: options.tileGrid,\n      tileLoadFunction: options.tileLoadFunction\n        ? options.tileLoadFunction\n        : defaultTileLoadFunction,\n      tilePixelRatio: options.tilePixelRatio,\n      tileUrlFunction: options.tileUrlFunction,\n      url: options.url,\n      urls: options.urls,\n      wrapX: options.wrapX,\n      transition: options.transition,\n      interpolate:\n        options.interpolate !== undefined ? options.interpolate : true,\n      key: options.key,\n      attributionsCollapsible: options.attributionsCollapsible,\n      zDirection: options.zDirection,\n    });\n\n    /**\n     * @protected\n     * @type {?string}\n     */\n    this.crossOrigin =\n      options.crossOrigin !== undefined ? options.crossOrigin : null;\n\n    /**\n     * @protected\n     * @type {ReferrerPolicy}\n     */\n    this.referrerPolicy = options.referrerPolicy;\n\n    /**\n     * @protected\n     * @type {typeof ImageTile}\n     */\n    this.tileClass =\n      options.tileClass !== undefined ? options.tileClass : ImageTile;\n\n    /**\n     * @protected\n     * @type {!Object<string, import(\"../tilegrid/TileGrid.js\").default>}\n     */\n    this.tileGridForProjection = {};\n\n    /**\n     * @private\n     * @type {number|undefined}\n     */\n    this.reprojectionErrorThreshold_ = options.reprojectionErrorThreshold;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.renderReprojectionEdges_ = false;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {number} Gutter.\n   * @override\n   */\n  getGutterForProjection(projection) {\n    if (\n      this.getProjection() &&\n      projection &&\n      !equivalent(this.getProjection(), projection)\n    ) {\n      return 0;\n    }\n    return this.getGutter();\n  }\n\n  /**\n   * @return {number} Gutter.\n   */\n  getGutter() {\n    return 0;\n  }\n\n  /**\n   * Return the key to be used for all tiles in the source.\n   * @return {string} The key for all tiles.\n   * @override\n   */\n  getKey() {\n    let key = super.getKey();\n    if (!this.getInterpolate()) {\n      key += ':disable-interpolation';\n    }\n    return key;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {!import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n   * @override\n   */\n  getTileGridForProjection(projection) {\n    const thisProj = this.getProjection();\n    if (this.tileGrid && (!thisProj || equivalent(thisProj, projection))) {\n      return this.tileGrid;\n    }\n    const projKey = getUid(projection);\n    if (!(projKey in this.tileGridForProjection)) {\n      this.tileGridForProjection[projKey] =\n        getTileGridForProjection(projection);\n    }\n    return this.tileGridForProjection[projKey];\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @param {string} key The key set on the tile.\n   * @return {!ImageTile} Tile.\n   * @private\n   */\n  createTile_(z, x, y, pixelRatio, projection, key) {\n    const tileCoord = [z, x, y];\n    const urlTileCoord = this.getTileCoordForTileUrlFunction(\n      tileCoord,\n      projection,\n    );\n    const tileUrl = urlTileCoord\n      ? this.tileUrlFunction(urlTileCoord, pixelRatio, projection)\n      : undefined;\n    const tile = new this.tileClass(\n      tileCoord,\n      tileUrl !== undefined ? TileState.IDLE : TileState.EMPTY,\n      tileUrl !== undefined ? tileUrl : '',\n      {\n        crossOrigin: this.crossOrigin,\n        referrerPolicy: this.referrerPolicy,\n      },\n      this.tileLoadFunction,\n      this.tileOptions,\n    );\n    tile.key = key;\n    tile.addEventListener(EventType.CHANGE, this.handleTileChange.bind(this));\n    return tile;\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @param {import(\"../structs/LRUCache.js\").default<import(\"../Tile.js\").default>} [tileCache] Tile cache.\n   * @return {!(ImageTile|ReprojTile)} Tile.\n   * @override\n   */\n  getTile(z, x, y, pixelRatio, projection, tileCache) {\n    const sourceProjection = this.getProjection();\n    if (\n      !sourceProjection ||\n      !projection ||\n      equivalent(sourceProjection, projection)\n    ) {\n      return this.getTileInternal(\n        z,\n        x,\n        y,\n        pixelRatio,\n        sourceProjection || projection,\n      );\n    }\n    const tileCoord = [z, x, y];\n    const key = this.getKey();\n    const sourceTileGrid = this.getTileGridForProjection(sourceProjection);\n    const targetTileGrid = this.getTileGridForProjection(projection);\n    const wrappedTileCoord = this.getTileCoordForTileUrlFunction(\n      tileCoord,\n      projection,\n    );\n    const tile = new ReprojTile(\n      sourceProjection,\n      sourceTileGrid,\n      projection,\n      targetTileGrid,\n      tileCoord,\n      wrappedTileCoord,\n      this.getTilePixelRatio(pixelRatio),\n      this.getGutter(),\n      (z, x, y, pixelRatio) =>\n        this.getTileInternal(z, x, y, pixelRatio, sourceProjection, tileCache),\n      this.reprojectionErrorThreshold_,\n      this.renderReprojectionEdges_,\n      this.tileOptions,\n    );\n    tile.key = key;\n    return tile;\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {!import(\"../proj/Projection.js\").default} projection Projection.\n   * @param {import(\"../structs/LRUCache.js\").default<import(\"../Tile.js\").default>} [tileCache] Tile cache.\n   * @return {!ImageTile} Tile.\n   * @protected\n   */\n  getTileInternal(z, x, y, pixelRatio, projection, tileCache) {\n    const key = this.getKey();\n    const cacheKey = getCacheKey(this, key, z, x, y);\n    if (tileCache && tileCache.containsKey(cacheKey)) {\n      const tile = /** @type {!ImageTile} */ (tileCache.get(cacheKey));\n      return tile;\n    }\n    const tile = this.createTile_(z, x, y, pixelRatio, projection, key);\n    tileCache?.set(cacheKey, tile);\n    return tile;\n  }\n\n  /**\n   * Sets whether to render reprojection edges or not (usually for debugging).\n   * @param {boolean} render Render the edges.\n   * @api\n   */\n  setRenderReprojectionEdges(render) {\n    if (this.renderReprojectionEdges_ == render) {\n      return;\n    }\n    this.renderReprojectionEdges_ = render;\n    this.changed();\n  }\n\n  /**\n   * Sets the tile grid to use when reprojecting the tiles to the given\n   * projection instead of the default tile grid for the projection.\n   *\n   * This can be useful when the default tile grid cannot be created\n   * (e.g. projection has no extent defined) or\n   * for optimization reasons (custom tile size, resolutions, ...).\n   *\n   * @param {import(\"../proj.js\").ProjectionLike} projection Projection.\n   * @param {import(\"../tilegrid/TileGrid.js\").default} tilegrid Tile grid to use for the projection.\n   * @api\n   */\n  setTileGridForProjection(projection, tilegrid) {\n    const proj = getProjection(projection);\n    if (proj) {\n      const projKey = getUid(proj);\n      if (!(projKey in this.tileGridForProjection)) {\n        this.tileGridForProjection[projKey] = tilegrid;\n      }\n    }\n  }\n}\n\n/**\n * @param {ImageTile} imageTile Image tile.\n * @param {string} src Source.\n */\nexport function defaultTileLoadFunction(imageTile, src) {\n  if (WORKER_OFFSCREEN_CANVAS) {\n    // special treatment for offscreen canvas\n    const crossOrigin = imageTile.getCrossOrigin();\n\n    /** @type {RequestMode} */\n    let mode = 'same-origin';\n    /** @type {RequestCredentials} */\n    let credentials = 'same-origin';\n    if (crossOrigin === 'anonymous' || crossOrigin === '') {\n      mode = 'cors';\n      credentials = 'omit';\n    } else if (crossOrigin === 'use-credentials') {\n      mode = 'cors';\n      credentials = 'include';\n    }\n\n    const options = {\n      mode,\n      credentials,\n      referrerPolicy: imageTile.getReferrerPolicy(),\n    };\n\n    fetch(src, options)\n      .then((response) => {\n        if (!response.ok) {\n          throw new Error(`HTTP ${response.status}`);\n        }\n        return response.blob();\n      })\n      .then((blob) => {\n        return createImageBitmap(blob);\n      })\n      .then((imageBitmap) => {\n        const canvas = imageTile.getImage();\n        canvas.width = imageBitmap.width;\n        canvas.height = imageBitmap.height;\n        const ctx = /** @type {OffscreenCanvas} */ (canvas).getContext('2d');\n        ctx.drawImage(imageBitmap, 0, 0);\n        imageBitmap.close?.();\n        // mock the image 'load' event\n        canvas.dispatchEvent(new Event('load'));\n      })\n      .catch(() => {\n        const canvas = imageTile.getImage();\n        canvas.dispatchEvent(new Event('error'));\n      });\n    return;\n  }\n\n  /** @type {HTMLImageElement|HTMLVideoElement} */ (imageTile.getImage()).src =\n    src;\n}\n\nexport default TileImage;\n","/**\n * @module ol/source/TileJSON\n */\n// FIXME check order of async callbacks\n\n/**\n * See https://mapbox.com/developers/api/.\n */\n\nimport {applyTransform, intersects} from '../extent.js';\nimport {jsonp as requestJSONP} from '../net.js';\nimport {get as getProjection, getTransformFromProjections} from '../proj.js';\nimport {createXYZ, extentFromProjection} from '../tilegrid.js';\nimport {createFromTemplates} from '../tileurlfunction.js';\nimport TileImage from './TileImage.js';\n\n/**\n * @typedef {Object} Config\n * @property {string} [name] The name.\n * @property {string} [description] The description.\n * @property {string} [version] The version.\n * @property {string} [attribution] The attribution.\n * @property {string} [template] The template.\n * @property {string} [legend] The legend.\n * @property {string} [scheme] The scheme.\n * @property {Array<string>} tiles The tile URL templates.\n * @property {Array<string>} [grids] Optional grids.\n * @property {number} [minzoom] Minimum zoom level.\n * @property {number} [maxzoom] Maximum zoom level.\n * @property {Array<number>} [bounds] Optional bounds.\n * @property {Array<number>} [center] Optional center.\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {boolean} [jsonp=false] Use JSONP with callback to load the TileJSON.\n * Useful when the server does not support CORS..\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {Config} [tileJSON] TileJSON configuration for this source.\n * If not provided, `url` must be configured.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n *   imageTile.getImage().src = src;\n * };\n * ```\n * @property {number|import(\"../size.js\").Size} [tileSize=[256, 256]] The tile size used by the tile service.\n * Note: `tileSize` and other non-standard TileJSON properties are currently ignored.\n * @property {string} [url] URL to the TileJSON file. If not provided, `tileJSON` must be configured.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n\n/**\n * @classdesc\n * Layer source for tile data in TileJSON format.\n * @api\n */\nclass TileJSON extends TileImage {\n  /**\n   * @param {Options} options TileJSON options.\n   */\n  constructor(options) {\n    super({\n      attributions: options.attributions,\n      cacheSize: options.cacheSize,\n      crossOrigin: options.crossOrigin,\n      interpolate: options.interpolate,\n      projection: getProjection('EPSG:3857'),\n      reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n      state: 'loading',\n      tileLoadFunction: options.tileLoadFunction,\n      wrapX: options.wrapX !== undefined ? options.wrapX : true,\n      transition: options.transition,\n      zDirection: options.zDirection,\n    });\n\n    /**\n     * @type {Config}\n     * @private\n     */\n    this.tileJSON_ = null;\n\n    /**\n     * @type {number|import(\"../size.js\").Size}\n     * @private\n     */\n    this.tileSize_ = options.tileSize;\n\n    if (options.url) {\n      if (options.jsonp) {\n        requestJSONP(\n          options.url,\n          this.handleTileJSONResponse.bind(this),\n          this.handleTileJSONError.bind(this),\n        );\n      } else {\n        const client = new XMLHttpRequest();\n        client.addEventListener('load', this.onXHRLoad_.bind(this));\n        client.addEventListener('error', this.onXHRError_.bind(this));\n        client.open('GET', options.url);\n        client.send();\n      }\n    } else if (options.tileJSON) {\n      this.handleTileJSONResponse(options.tileJSON);\n    } else {\n      throw new Error('Either `url` or `tileJSON` options must be provided');\n    }\n  }\n\n  /**\n   * @private\n   * @param {Event} event The load event.\n   */\n  onXHRLoad_(event) {\n    const client = /** @type {XMLHttpRequest} */ (event.target);\n    // status will be 0 for file:// urls\n    if (!client.status || (client.status >= 200 && client.status < 300)) {\n      let response;\n      try {\n        response = /** @type {Config} */ (JSON.parse(client.responseText));\n      } catch {\n        this.handleTileJSONError();\n        return;\n      }\n      this.handleTileJSONResponse(response);\n    } else {\n      this.handleTileJSONError();\n    }\n  }\n\n  /**\n   * @private\n   * @param {Event} event The error event.\n   */\n  onXHRError_(event) {\n    this.handleTileJSONError();\n  }\n\n  /**\n   * @return {Config} The tilejson object.\n   * @api\n   */\n  getTileJSON() {\n    return this.tileJSON_;\n  }\n\n  /**\n   * @protected\n   * @param {Config} tileJSON Tile JSON.\n   */\n  handleTileJSONResponse(tileJSON) {\n    const epsg4326Projection = getProjection('EPSG:4326');\n\n    const sourceProjection = this.getProjection();\n    let extent;\n    if (tileJSON['bounds'] !== undefined) {\n      const transform = getTransformFromProjections(\n        epsg4326Projection,\n        sourceProjection,\n      );\n      extent = applyTransform(tileJSON['bounds'], transform);\n    }\n\n    const gridExtent = extentFromProjection(sourceProjection);\n    const minZoom = tileJSON['minzoom'] || 0;\n    const maxZoom = tileJSON['maxzoom'] || 22;\n    const tileGrid = createXYZ({\n      extent: gridExtent,\n      maxZoom: maxZoom,\n      minZoom: minZoom,\n      tileSize: this.tileSize_,\n    });\n    this.tileGrid = tileGrid;\n\n    this.tileUrlFunction = createFromTemplates(tileJSON['tiles'], tileGrid);\n\n    if (tileJSON['attribution'] && !this.getAttributions()) {\n      const attributionExtent = extent !== undefined ? extent : gridExtent;\n      this.setAttributions(function (frameState) {\n        if (intersects(attributionExtent, frameState.extent)) {\n          return [tileJSON['attribution']];\n        }\n        return null;\n      });\n    }\n    this.tileJSON_ = tileJSON;\n    this.setState('ready');\n  }\n\n  /**\n   * @protected\n   */\n  handleTileJSONError() {\n    this.setState('error');\n  }\n}\n\nexport default TileJSON;\n","/**\n * @module ol/source/VectorTile\n */\n\nimport TileState from '../TileState.js';\nimport VectorRenderTile from '../VectorRenderTile.js';\nimport Tile from '../VectorTile.js';\nimport EventType from '../events/EventType.js';\nimport {\n  buffer as bufferExtent,\n  getIntersection,\n  intersects,\n} from '../extent.js';\nimport {loadFeaturesXhr} from '../featureloader.js';\nimport {isEmpty} from '../obj.js';\nimport {equivalent, transformExtent} from '../proj.js';\nimport {toSize} from '../size.js';\nimport TileGrid from '../tilegrid/TileGrid.js';\nimport {DEFAULT_MAX_ZOOM} from '../tilegrid/common.js';\nimport {\n  createXYZ,\n  extentFromProjection,\n  getForProjection,\n} from '../tilegrid.js';\nimport UrlTile from './UrlTile.js';\n\n/**\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../render/Feature.js\").default]\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least twice the number of tiles in the viewport.\n * @property {import(\"../extent.js\").Extent} [extent] Extent.\n * @property {import(\"../format/Feature.js\").default<FeatureType>} [format] Feature format for tiles. Used and required by the default.\n * @property {boolean} [overlaps=true] This source may have overlapping geometries. Setting this\n * to `false` (e.g. for sources with polygons that represent administrative\n * boundaries or TopoJSON sources) allows the renderer to optimise fill and\n * stroke operations.\n * @property {import(\"../proj.js\").ProjectionLike} [projection='EPSG:3857'] Projection of the tile source.\n * @property {import(\"./Source.js\").State} [state] Source state.\n * @property {typeof import(\"../VectorTile.js\").default} [tileClass] Class used to instantiate tiles.\n * Default is {@link module:ol/VectorTile~VectorTile}.\n * @property {number} [maxZoom=22] Optional max zoom level. Not used if `tileGrid` is provided.\n * @property {number} [minZoom] Optional min zoom level. Not used if `tileGrid` is provided.\n * @property {number|import(\"../size.js\").Size} [tileSize=512] Optional tile size. Not used if `tileGrid` is provided.\n * @property {number} [maxResolution] Optional tile grid resolution at level zero. Not used if `tileGrid` is provided.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction]\n * Optional function to load a tile given a URL. Could look like this for pbf tiles:\n * ```js\n * function(tile, url) {\n *   tile.setLoader(function(extent, resolution, projection) {\n *     fetch(url).then(function(response) {\n *       response.arrayBuffer().then(function(data) {\n *         const format = tile.getFormat() // ol/format/MVT configured as source format\n *         const features = format.readFeatures(data, {\n *           extent: extent,\n *           featureProjection: projection\n *         });\n *         tile.setFeatures(features);\n *       });\n *     });\n *   });\n * }\n * ```\n * If you do not need extent, resolution and projection to get the features for a tile (e.g.\n * for GeoJSON tiles), your `tileLoadFunction` does not need a `setLoader()` call. Only make sure\n * to call `setFeatures()` on the tile:\n * ```js\n * const format = new GeoJSON({featureProjection: map.getView().getProjection()});\n * async function tileLoadFunction(tile, url) {\n *   const response = await fetch(url);\n *   const data = await response.json();\n *   tile.setFeatures(format.readFeatures(data));\n * }\n * ```\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Optional function to get tile URL given a tile coordinate and the projection.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.\n * A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`, may be\n * used instead of defining each one separately in the `urls` option.\n * @property {number} [transition] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {Array<string>} [urls] An array of URL templates.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * When set to `false`, only one world\n * will be rendered. When set to `true`, tiles will be wrapped horizontally to\n * render multiple worlds.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=1]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n\n/**\n * @classdesc\n * Class for layer sources providing vector data divided into a tile grid, to be\n * used with {@link module:ol/layer/VectorTile~VectorTileLayer}. Although this source receives tiles\n * with vector features from the server, it is not meant for feature editing.\n * Features are optimized for rendering, their geometries are clipped at or near\n * tile boundaries and simplified for a view resolution. See\n * {@link module:ol/source/Vector~VectorSource} for vector sources that are suitable for feature\n * editing.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n * @api\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../render/Feature.js\").default]\n */\nclass VectorTile extends UrlTile {\n  /**\n   * @param {!Options<FeatureType>} options Vector tile options.\n   */\n  constructor(options) {\n    const projection = options.projection || 'EPSG:3857';\n\n    const extent = options.extent || extentFromProjection(projection);\n\n    const tileGrid =\n      options.tileGrid ||\n      createXYZ({\n        extent: extent,\n        maxResolution: options.maxResolution,\n        maxZoom: options.maxZoom !== undefined ? options.maxZoom : 22,\n        minZoom: options.minZoom,\n        tileSize: options.tileSize || 512,\n      });\n\n    super({\n      attributions: options.attributions,\n      attributionsCollapsible: options.attributionsCollapsible,\n      cacheSize: options.cacheSize,\n      interpolate: true,\n      projection: projection,\n      state: options.state,\n      tileGrid: tileGrid,\n      tileLoadFunction: options.tileLoadFunction\n        ? options.tileLoadFunction\n        : defaultLoadFunction,\n      tileUrlFunction: options.tileUrlFunction,\n      url: options.url,\n      urls: options.urls,\n      wrapX: options.wrapX === undefined ? true : options.wrapX,\n      transition: options.transition,\n      zDirection: options.zDirection === undefined ? 1 : options.zDirection,\n    });\n\n    /**\n     * @private\n     * @type {import(\"../format/Feature.js\").default<FeatureType>|null}\n     */\n    this.format_ = options.format ? options.format : null;\n\n    /**\n     * @type {Object<string, Array<string>>}\n     * @private\n     */\n    this.tileKeysBySourceTileUrl_ = {};\n\n    /**\n     @type {Object<string, Tile<FeatureType>>}\n     */\n    this.sourceTiles_ = {};\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.overlaps_ = options.overlaps == undefined ? true : options.overlaps;\n\n    /**\n     * @protected\n     * @type {typeof import(\"../VectorTile.js\").default}\n     */\n    this.tileClass = options.tileClass ? options.tileClass : Tile;\n\n    /**\n     * @private\n     * @type {Object<string, import(\"../tilegrid/TileGrid.js\").default>}\n     */\n    this.tileGrids_ = {};\n  }\n\n  /**\n   * @return {boolean} The source can have overlapping geometries.\n   */\n  getOverlaps() {\n    return this.overlaps_;\n  }\n\n  /**\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection\").default} projection Projection.\n   * @param {VectorRenderTile} tile Vector render tile.\n   * @return {Array<import(\"../VectorTile\").default>} Tile keys.\n   */\n  getSourceTiles(pixelRatio, projection, tile) {\n    if (tile.getState() === TileState.IDLE) {\n      tile.setState(TileState.LOADING);\n      const urlTileCoord = tile.wrappedTileCoord;\n      const tileGrid = this.getTileGridForProjection(projection);\n      let extent = tileGrid.getTileCoordExtent(urlTileCoord);\n      const z = urlTileCoord[0];\n      const resolution = tileGrid.getResolution(z);\n      // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render space\n      bufferExtent(extent, -resolution, extent);\n      const sourceProjection = this.projection;\n      if (\n        projection &&\n        this.projection &&\n        !equivalent(projection, sourceProjection)\n      ) {\n        extent = transformExtent(extent, projection, sourceProjection);\n      }\n      const sourceTileGrid = this.tileGrid;\n      const sourceExtent = sourceTileGrid.getExtent();\n      if (sourceExtent) {\n        getIntersection(extent, sourceExtent, extent);\n      }\n      let sourceResolution = resolution;\n      if (\n        projection &&\n        sourceProjection &&\n        !equivalent(projection, sourceProjection)\n      ) {\n        sourceResolution =\n          resolution /\n          sourceProjection.getMetersPerUnit() /\n          projection.getMetersPerUnit();\n      }\n      const sourceZ = sourceTileGrid.getZForResolution(\n        sourceResolution,\n        this.zDirection,\n      );\n\n      sourceTileGrid.forEachTileCoord(extent, sourceZ, (sourceTileCoord) => {\n        const tileUrl = this.tileUrlFunction(\n          sourceTileCoord,\n          pixelRatio,\n          projection,\n        );\n        if (!this.sourceTiles_[tileUrl]) {\n          this.sourceTiles_[tileUrl] = new this.tileClass(\n            sourceTileCoord,\n            tileUrl ? TileState.IDLE : TileState.EMPTY,\n            tileUrl,\n            this.format_,\n            this.tileLoadFunction,\n          );\n        }\n        const sourceTile = this.sourceTiles_[tileUrl];\n        tile.sourceTiles.push(sourceTile);\n        if (!this.tileKeysBySourceTileUrl_[tileUrl]) {\n          this.tileKeysBySourceTileUrl_[tileUrl] = [];\n        }\n        this.tileKeysBySourceTileUrl_[tileUrl].push(tile.getKey());\n        const sourceTileState = sourceTile.getState();\n        if (sourceTileState < TileState.LOADED) {\n          const listenChange = (event) => {\n            this.handleTileChange(event);\n            const state = sourceTile.getState();\n            if (state === TileState.LOADED || state === TileState.ERROR) {\n              const sourceTileKey = sourceTile.getKey();\n              if (sourceTileKey in tile.errorTileKeys) {\n                if (sourceTile.getState() === TileState.LOADED) {\n                  delete tile.errorTileKeys[sourceTileKey];\n                }\n              } else {\n                tile.loadingSourceTiles--;\n              }\n              if (state === TileState.ERROR) {\n                tile.errorTileKeys[sourceTileKey] = true;\n              } else {\n                sourceTile.removeEventListener(EventType.CHANGE, listenChange);\n              }\n              if (tile.loadingSourceTiles === 0) {\n                tile.setState(\n                  isEmpty(tile.errorTileKeys)\n                    ? TileState.LOADED\n                    : TileState.ERROR,\n                );\n              }\n            }\n          };\n          sourceTile.addEventListener(EventType.CHANGE, listenChange);\n          tile.loadingSourceTiles++;\n        }\n        if (sourceTileState === TileState.IDLE) {\n          sourceTile.extent =\n            sourceTileGrid.getTileCoordExtent(sourceTileCoord);\n          sourceTile.projection = this.projection;\n          sourceTile.resolution = sourceTileGrid.getResolution(\n            sourceTileCoord[0],\n          );\n          sourceTile.load();\n        }\n      });\n      if (!tile.loadingSourceTiles) {\n        tile.setState(\n          tile.sourceTiles.some(\n            (sourceTile) => sourceTile.getState() === TileState.ERROR,\n          )\n            ? TileState.ERROR\n            : TileState.LOADED,\n        );\n      }\n    }\n\n    return tile.sourceTiles;\n  }\n\n  /**\n   * @param {VectorRenderTile} tile Vector render tile.\n   */\n  removeSourceTiles(tile) {\n    const tileKey = tile.getKey();\n    const sourceTiles = tile.sourceTiles;\n    for (let i = 0, ii = sourceTiles.length; i < ii; ++i) {\n      const sourceTileUrl = sourceTiles[i].getTileUrl();\n      if (!this.tileKeysBySourceTileUrl_[sourceTileUrl]) {\n        return;\n      }\n      const index =\n        this.tileKeysBySourceTileUrl_[sourceTileUrl].indexOf(tileKey);\n      if (index === -1) {\n        continue;\n      }\n      this.tileKeysBySourceTileUrl_[sourceTileUrl].splice(index, 1);\n      if (this.tileKeysBySourceTileUrl_[sourceTileUrl].length === 0) {\n        delete this.tileKeysBySourceTileUrl_[sourceTileUrl];\n        delete this.sourceTiles_[sourceTileUrl];\n      }\n    }\n  }\n\n  /**\n   * @param {number} z Tile coordinate z.\n   * @param {number} x Tile coordinate x.\n   * @param {number} y Tile coordinate y.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {!VectorRenderTile} Tile.\n   * @override\n   */\n  getTile(z, x, y, pixelRatio, projection) {\n    const tileCoord = [z, x, y];\n    let urlTileCoord = this.getTileCoordForTileUrlFunction(\n      tileCoord,\n      projection,\n    );\n    const sourceExtent = this.getTileGrid().getExtent();\n    const sourceProjection = this.projection;\n    const tileGrid = this.getTileGridForProjection(projection);\n    if (urlTileCoord && sourceExtent) {\n      const tileExtent = tileGrid.getTileCoordExtent(urlTileCoord);\n      // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render space\n      bufferExtent(tileExtent, -tileGrid.getResolution(z), tileExtent);\n      if (\n        !intersects(\n          sourceExtent,\n          !projection ||\n            !sourceProjection ||\n            equivalent(projection, sourceProjection)\n            ? tileExtent\n            : transformExtent(tileExtent, projection, sourceProjection),\n        )\n      ) {\n        urlTileCoord = null;\n      }\n    }\n    let empty = true;\n    if (urlTileCoord !== null) {\n      const sourceTileGrid = this.tileGrid;\n      const resolution = tileGrid.getResolution(z);\n      let sourceResolution = resolution;\n      if (\n        projection &&\n        sourceProjection &&\n        !equivalent(projection, sourceProjection)\n      ) {\n        sourceResolution =\n          resolution /\n          sourceProjection.getMetersPerUnit() /\n          projection.getMetersPerUnit();\n      }\n      const sourceZ = sourceTileGrid.getZForResolution(sourceResolution, 1);\n      // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render space\n      const extent = tileGrid.getTileCoordExtent(urlTileCoord);\n      bufferExtent(extent, -resolution, extent);\n      sourceTileGrid.forEachTileCoord(\n        !projection ||\n          !sourceProjection ||\n          equivalent(projection, sourceProjection)\n          ? extent\n          : transformExtent(extent, projection, sourceProjection),\n        sourceZ,\n        (sourceTileCoord) => {\n          empty =\n            empty &&\n            !this.tileUrlFunction(\n              sourceTileCoord,\n              pixelRatio,\n              sourceProjection,\n            );\n        },\n      );\n    }\n    const newTile = new VectorRenderTile(\n      tileCoord,\n      empty ? TileState.EMPTY : TileState.IDLE,\n      urlTileCoord,\n      this.getSourceTiles.bind(this, pixelRatio, projection),\n      this.removeSourceTiles.bind(this),\n    );\n    newTile.key = this.getKey();\n    return newTile;\n  }\n\n  /**\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {!import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n   * @override\n   */\n  getTileGridForProjection(projection) {\n    const code = projection.getCode();\n    let tileGrid = this.tileGrids_[code];\n    if (!tileGrid) {\n      const sourceProjection = this.projection;\n      if (\n        sourceProjection !== null &&\n        !equivalent(sourceProjection, projection)\n      ) {\n        return getForProjection(projection);\n      }\n\n      // A tile grid that matches the tile size of the source tile grid is more\n      // likely to have 1:1 relationships between source tiles and rendered tiles.\n      const sourceTileGrid = this.tileGrid;\n      const resolutions = sourceTileGrid.getResolutions().slice();\n      const origins = resolutions.map(function (resolution, z) {\n        return sourceTileGrid.getOrigin(z);\n      });\n      const tileSizes = resolutions.map(function (resolution, z) {\n        return sourceTileGrid.getTileSize(z);\n      });\n      const length = DEFAULT_MAX_ZOOM + 1;\n      for (let z = resolutions.length; z < length; ++z) {\n        resolutions.push(resolutions[z - 1] / 2);\n        origins.push(origins[z - 1]);\n        tileSizes.push(tileSizes[z - 1]);\n      }\n      tileGrid = new TileGrid({\n        extent: sourceTileGrid.getExtent(),\n        origins: origins,\n        resolutions: resolutions,\n        tileSizes: tileSizes,\n      });\n      this.tileGrids_[code] = tileGrid;\n    }\n    return tileGrid;\n  }\n\n  /**\n   * Get the tile pixel ratio for this source.\n   * @param {number} pixelRatio Pixel ratio.\n   * @return {number} Tile pixel ratio.\n   * @override\n   */\n  getTilePixelRatio(pixelRatio) {\n    return pixelRatio;\n  }\n\n  /**\n   * @param {number} z Z.\n   * @param {number} pixelRatio Pixel ratio.\n   * @param {import(\"../proj/Projection.js\").default} projection Projection.\n   * @return {import(\"../size.js\").Size} Tile size.\n   * @override\n   */\n  getTilePixelSize(z, pixelRatio, projection) {\n    const tileGrid = this.getTileGridForProjection(projection);\n    const tileSize = toSize(tileGrid.getTileSize(z), this.tmpSize);\n    return [\n      Math.round(tileSize[0] * pixelRatio),\n      Math.round(tileSize[1] * pixelRatio),\n    ];\n  }\n\n  /**\n   * @param {boolean} overlaps The source has overlapping geometries.\n   */\n  setOverlaps(overlaps) {\n    this.overlaps_ = overlaps;\n    this.changed();\n  }\n}\n\nexport default VectorTile;\n\n/**\n * Sets the loader for a tile.\n * @template {import(\"../Feature.js\").FeatureLike} [FeatureType=import(\"../render/Feature.js\").default]\n * @param {import(\"../VectorTile.js\").default<FeatureType>} tile Vector tile.\n * @param {string} url URL.\n */\nexport function defaultLoadFunction(tile, url) {\n  tile.setLoader(\n    /**\n     * @param {import(\"../extent.js\").Extent} extent Extent.\n     * @param {number} resolution Resolution.\n     * @param {import(\"../proj/Projection.js\").default} projection Projection.\n     */\n    function (extent, resolution, projection) {\n      loadFeaturesXhr(\n        url,\n        tile.getFormat(),\n        extent,\n        resolution,\n        projection,\n        tile.onLoad.bind(tile),\n        tile.onError.bind(tile),\n      );\n    },\n  );\n}\n","/**\n * Generates a shaded relief image given elevation data.  Uses a 3x3\n * neighborhood for determining slope and aspect.\n * @param {Array<ImageData>} inputs Array of input images.\n * @param {Object} data Data added in the \"beforeoperations\" event.\n * @return {ImageData} Output image.\n */\nexport function hillshade(inputs, data) {\n  const elevationImage = inputs[0];\n  const width = elevationImage.width;\n  const height = elevationImage.height;\n  const elevationData = elevationImage.data;\n  const shadeData = new Uint8ClampedArray(elevationData.length);\n  const dp = data.resolution * 2;\n  const maxX = width - 1;\n  const maxY = height - 1;\n  const pixel = [0, 0, 0, 0];\n  const twoPi = 2 * Math.PI;\n  const halfPi = Math.PI / 2;\n  const sunEl = (Math.PI * data.sunEl) / 180;\n  const sunAz = (Math.PI * data.sunAz) / 180;\n  const cosSunEl = Math.cos(sunEl);\n  const sinSunEl = Math.sin(sunEl);\n  const highlightColor = data.highlightColor;\n  const shadowColor = data.shadowColor;\n  const accentColor = data.accentColor;\n  const encoding = data.encoding;\n\n  let pixelX,\n    pixelY,\n    x0,\n    x1,\n    y0,\n    y1,\n    offset,\n    z0,\n    z1,\n    dzdx,\n    dzdy,\n    slope,\n    aspect,\n    accent,\n    scaled,\n    shade,\n    scaledAccentColor,\n    compositeShadeColor,\n    clamp,\n    slopeScaleBase,\n    scaledSlope,\n    cosIncidence;\n\n  function calculateElevation(pixel, encoding = 'mapbox') {\n    // The method used to extract elevations from the DEM.\n    //\n    // The supported methods are the Mapbox format\n    // (red * 256 * 256 + green * 256 + blue) * 0.1 - 10000\n    // and the Terrarium format\n    // (red * 256 + green + blue / 256) - 32768\n    //\n    if (encoding === 'mapbox') {\n      return (pixel[0] * 256 * 256 + pixel[1] * 256 + pixel[2]) * 0.1 - 10000;\n    }\n    if (encoding === 'terrarium') {\n      return pixel[0] * 256 + pixel[1] + pixel[2] / 256 - 32768;\n    }\n  }\n  for (pixelY = 0; pixelY <= maxY; ++pixelY) {\n    y0 = pixelY === 0 ? 0 : pixelY - 1;\n    y1 = pixelY === maxY ? maxY : pixelY + 1;\n    for (pixelX = 0; pixelX <= maxX; ++pixelX) {\n      x0 = pixelX === 0 ? 0 : pixelX - 1;\n      x1 = pixelX === maxX ? maxX : pixelX + 1;\n\n      // determine elevation for (x0, pixelY)\n      offset = (pixelY * width + x0) * 4;\n      pixel[0] = elevationData[offset];\n      pixel[1] = elevationData[offset + 1];\n      pixel[2] = elevationData[offset + 2];\n      pixel[3] = elevationData[offset + 3];\n      z0 = data.vert * calculateElevation(pixel, encoding);\n\n      // determine elevation for (x1, pixelY)\n      offset = (pixelY * width + x1) * 4;\n      pixel[0] = elevationData[offset];\n      pixel[1] = elevationData[offset + 1];\n      pixel[2] = elevationData[offset + 2];\n      pixel[3] = elevationData[offset + 3];\n      z1 = data.vert * calculateElevation(pixel, encoding);\n\n      dzdx = (z1 - z0) / dp;\n\n      // determine elevation for (pixelX, y0)\n      offset = (y0 * width + pixelX) * 4;\n      pixel[0] = elevationData[offset];\n      pixel[1] = elevationData[offset + 1];\n      pixel[2] = elevationData[offset + 2];\n      pixel[3] = elevationData[offset + 3];\n      z0 = data.vert * calculateElevation(pixel, encoding);\n\n      // determine elevation for (pixelX, y1)\n      offset = (y1 * width + pixelX) * 4;\n      pixel[0] = elevationData[offset];\n      pixel[1] = elevationData[offset + 1];\n      pixel[2] = elevationData[offset + 2];\n      pixel[3] = elevationData[offset + 3];\n      z1 = data.vert * calculateElevation(pixel, encoding);\n\n      dzdy = (z1 - z0) / dp;\n\n      aspect = Math.atan2(dzdy, -dzdx);\n      if (aspect < 0) {\n        aspect = halfPi - aspect;\n      } else if (aspect > halfPi) {\n        aspect = twoPi - aspect + halfPi;\n      } else {\n        aspect = halfPi - aspect;\n      }\n\n      // Bootstrap slope and corresponding incident values\n      slope = Math.atan(Math.sqrt(dzdx * dzdx + dzdy * dzdy));\n      cosIncidence =\n        sinSunEl * Math.cos(slope) +\n        cosSunEl * Math.sin(slope) * Math.cos(sunAz - aspect);\n      accent = Math.cos(slope);\n      // 255 for Hex colors\n      scaled = 255 * cosIncidence;\n\n      /*\n       * The following is heavily inspired\n       * by [Maplibre's equivalent WebGL shader](https://github.com/maplibre/maplibre-gl-js/blob/main/src/shaders/hillshade.fragment.glsl)\n       */\n\n      // Forces given value to stay between two given extremes\n      clamp = Math.min(Math.max(2 * data.sunEl, 0), 1);\n\n      // Intensity basis for hillshade opacity\n      slopeScaleBase = 1.875 - data.opacity * 1.75;\n      // Intensity interpolation so that higher intensity values create more opaque hillshading\n      scaledSlope =\n        data.opacity !== 0.5\n          ? halfPi *\n            ((Math.pow(slopeScaleBase, slope) - 1) /\n              (Math.pow(slopeScaleBase, halfPi) - 1))\n          : slope;\n\n      // Accent hillshade color with given accentColor to emphasize rougher terrain\n      scaledAccentColor = {\n        r: (1 - accent) * accentColor.r * clamp * 255,\n        g: (1 - accent) * accentColor.g * clamp * 255,\n        b: (1 - accent) * accentColor.b * clamp * 255,\n        a: (1 - accent) * accentColor.a * clamp * 255,\n      };\n\n      // Allows highlight vs shadow discrimination\n      shade = Math.abs((((aspect + sunAz) / Math.PI + 0.5) % 2) - 1);\n      // Creates a composite color mix between highlight & shadow colors to emphasize slopes\n      compositeShadeColor = {\n        r: (highlightColor.r * (1 - shade) + shadowColor.r * shade) * scaled,\n        g: (highlightColor.g * (1 - shade) + shadowColor.g * shade) * scaled,\n        b: (highlightColor.b * (1 - shade) + shadowColor.b * shade) * scaled,\n        a: (highlightColor.a * (1 - shade) + shadowColor.a * shade) * scaled,\n      };\n\n      // Fill in result color value\n      offset = (pixelY * width + pixelX) * 4;\n      shadeData[offset] =\n        scaledAccentColor.r * (1 - shade) + compositeShadeColor.r;\n      shadeData[offset + 1] =\n        scaledAccentColor.g * (1 - shade) + compositeShadeColor.g;\n      shadeData[offset + 2] =\n        scaledAccentColor.b * (1 - shade) + compositeShadeColor.b;\n      // Key opacity on the scaledSlope to improve legibility by increasing higher elevation rates' contrast\n      shadeData[offset + 3] =\n        elevationData[offset + 3] *\n        data.opacity *\n        clamp *\n        Math.sin(scaledSlope);\n    }\n  }\n\n  return new ImageData(shadeData, width, height);\n}\n","/*\nol-mapbox-style - Use Mapbox/MapLibre Style objects with OpenLayers\nCopyright 2016-present ol-mapbox-style contributors\nLicense: https://raw.githubusercontent.com/openlayers/ol-mapbox-style/master/LICENSE\n*/\n\nimport {derefLayers} from '@maplibre/maplibre-gl-style-spec';\nimport Map from 'ol/Map.js';\nimport View from 'ol/View.js';\nimport {getCenter, getTopLeft} from 'ol/extent.js';\nimport GeoJSON from 'ol/format/GeoJSON.js';\nimport MVT from 'ol/format/MVT.js';\nimport LayerGroup from 'ol/layer/Group.js';\nimport ImageLayer from 'ol/layer/Image.js';\nimport Layer from 'ol/layer/Layer.js';\nimport TileLayer from 'ol/layer/Tile.js';\nimport VectorLayer from 'ol/layer/Vector.js';\nimport VectorTileLayer from 'ol/layer/VectorTile.js';\nimport {bbox as bboxStrategy} from 'ol/loadingstrategy.js';\nimport {METERS_PER_UNIT} from 'ol/proj/Units.js';\nimport {\n  equivalent,\n  fromLonLat,\n  get as getProjection,\n  getPointResolution,\n  getUserProjection,\n} from 'ol/proj.js';\nimport Raster from 'ol/source/Raster.js';\nimport Source from 'ol/source/Source.js';\nimport TileJSON from 'ol/source/TileJSON.js';\nimport VectorSource from 'ol/source/Vector.js';\nimport VectorTileSource, {defaultLoadFunction} from 'ol/source/VectorTile.js';\nimport TileGrid from 'ol/tilegrid/TileGrid.js';\nimport {createXYZ} from 'ol/tilegrid.js';\nimport {\n  normalizeSourceUrl,\n  normalizeSpriteDefinition,\n  normalizeStyleUrl,\n} from './mapbox.js';\nimport {hillshade} from './shaders.js';\nimport {\n  _colorWithOpacity,\n  cameraObj,\n  getValue,\n  styleFunctionArgs,\n  stylefunction as applyStylefunction,\n} from './stylefunction.js';\nimport {getFonts} from './text.js';\nimport {\n  defaultResolutions,\n  emptyObj,\n  fetchResource,\n  getFilterCache,\n  getFunctionCache,\n  getGlStyle,\n  getResolutionForZoom,\n  getStyleFunctionKey,\n  getTileJson,\n  getZoomForResolution,\n} from './util.js';\n\n/**\n * @typedef {Object} FeatureIdentifier\n * @property {string|number} id The feature id.\n * @property {string} source The source id.\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [accessToken] Access token for 'mapbox://' urls.\n * @property {function(string, import(\"./util.js\").ResourceType): (Request|string|Response|Promise<Request|string|Response>|void)} [transformRequest]\n * Function for controlling how `ol-mapbox-style` fetches resources. Can be used for modifying\n * the url, adding headers or setting credentials options. Called with the url and the resource\n * type as arguments, this function is supposed to return a `Request`, a url `string` or a `Response`, or a promise tehereof.\n * Without a return value the original request will not be modified.\n * @property {string} [projection='EPSG:3857'] Only useful when working with non-standard projections.\n * Code of a projection registered with OpenLayers. All sources of the style must be provided in this\n * projection. The projection must also have a valid extent defined, which will be used to determine the\n * origin and resolutions of the tile grid for all tiled sources of the style. When provided, the bbox\n * placeholder in tile and geojson urls changes: the default is `{bbox-epsg-3857}`, when projection is e.g.\n * set to `EPSG:4326`, the bbox placeholder will be `{bbox-epsg-4326}`.\n * @property {Array<number>} [resolutions] Only useful when working with non-standard projections.\n * Resolutions for mapping resolution to the `zoom` used in the Mapbox/MapLibre style.\n * @property {string} [styleUrl] URL of the Mapbox GL style. Required for styles that were provided\n * as object, when they contain a relative sprite url, or sources referencing data by relative url.\n * @property {string} [webfonts] Template for resolving webfonts. Can be used to specify where to fetch\n * web fonts when no `ol:webfonts` metadata is set in the style object. See `getFonts()` and the\n * \"Font handling\" section in `README.md` for details.\n * @property {function(VectorLayer|VectorTileLayer, string):HTMLImageElement|HTMLCanvasElement|string|undefined} [getImage=undefined]\n * Function that returns an image for an icon name. If the result is an HTMLImageElement, it must already be\n * loaded. The layer can be used to call layer.changed() when the loading and processing of the image has finished.\n * This function be used for icons not in the sprite or to override sprite icons.\n * @property {string} [accessTokenParam='access_token'] Access token param. For internal use.\n */\n\n/**\n * @typedef {Object} ApplyStyleOptions\n * @property {string} [source=''] Source. Default is `''`, which causes the first source in the\n * style to be used.\n * @property {Array<string>} [layers] Layers. If no source is provided, the layers with the\n * provided ids will be used from the style's `layers` array. All layers need to use the same source.\n * @property {boolean} [updateSource=true] Update or create vector (tile) layer source with parameters\n * specified for the source in the mapbox style definition.\n */\n\n/**\n * @param {import(\"ol/proj/Projection.js\").default} projection Projection.\n * @param {number} [tileSize] Tile size.\n * @return {Array<number>} Resolutions.\n */\nfunction getTileResolutions(projection, tileSize = 512) {\n  return projection.getExtent()\n    ? createXYZ({\n        extent: projection.getExtent(),\n        tileSize: tileSize,\n        maxZoom: 22,\n      }).getResolutions()\n    : defaultResolutions;\n}\n\n/**\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {Options} Completed options with accessToken and accessTokenParam.\n */\nfunction completeOptions(styleUrl, options) {\n  if (!options.accessToken) {\n    options = Object.assign({}, options);\n    const searchParams = new URL(styleUrl).searchParams;\n    // The last search parameter is the access token\n    searchParams.forEach((value, key) => {\n      options.accessToken = value;\n      options.accessTokenParam = key;\n    });\n  }\n  return options;\n}\n\n/**\n * Applies a style function to an `ol/layer/VectorTile` or `ol/layer/Vector`\n * with an `ol/source/VectorTile` or an `ol/source/Vector`. If the layer does not have a source\n * yet, it will be created and populated from the information in the `glStyle` (unless `updateSource` is\n * set to `false`).\n *\n * **Example:**\n * ```js\n * import {applyStyle} from 'ol-mapbox-style';\n * import {VectorTile} from 'ol/layer.js';\n *\n * const layer = new VectorTile({declutter: true});\n * applyStyle(layer, 'https://api.maptiler.com/maps/basic/style.json?key=YOUR_OPENMAPTILES_TOKEN');\n * ```\n *\n * The style function will render all layers from the `glStyle` object that use the source\n * of the first layer, the specified `source`, or a subset of layers from the same source. The\n * source needs to be a `\"type\": \"vector\"` or `\"type\": \"geojson\"` source.\n *\n * Two additional properties will be set on the provided layer:\n *\n *  * `mapbox-source`: The `id` of the Mapbox/MapLibre Style document's source that the\n *    OpenLayers layer was created from. Usually `apply()` creates one\n *    OpenLayers layer per Mapbox/MapLibre Style source, unless the layer stack has\n *    layers from different sources in between.\n *  * `mapbox-layers`: The `id`s of the Mapbox/MapLibre Style document's layers that are\n *    included in the OpenLayers layer.\n *\n * @param {VectorTileLayer|VectorLayer} layer OpenLayers layer. When the layer has a source configured,\n * it will be modified to use the configuration from the glStyle's `source`. Options specified on the\n * layer's source will override those from the glStyle's `source`, except for `url` and\n * `tileUrlFunction`. When the source projection is the default (`EPSG:3857`), the `tileGrid` will\n * also be overridden. If you'd rather not have ol-mapbox-style modify the source, configure `applyStyle()`\n * with the `updateSource: false` option.\n * @param {string|Object} glStyle Mapbox/MapLibre Style object.\n * @param {string|Array<string>|Options&ApplyStyleOptions} [sourceOrLayersOrOptions] Options or\n * `source` key or an array of layer `id`s from the Mapbox/MapLibre Style object. When a `source` key is\n * provided, all layers for the specified source will be included in the style function. When layer\n * `id`s are provided, they must be from layers that use the same source. When not provided or a falsey\n * value, all layers using the same source as the first layer matching the provided `layer` type will be rendered.\n * @param {Options&ApplyStyleOptions|string} [optionsOrPath] **Deprecated**. Options. Alternatively the path of the style file\n * (only required when a relative path is used for the `\"sprite\"` property of the style).\n * @param {Array<number>} [resolutions] **Deprecated**. Resolutions for mapping resolution to zoom level.\n * Only needed when working with non-standard tile grids or projections, can also be supplied with\n * options.\n * @return {Promise} Promise which will be resolved when the style can be used\n * for rendering.\n */\nexport function applyStyle(\n  layer,\n  glStyle,\n  sourceOrLayersOrOptions = '',\n  optionsOrPath = {},\n  resolutions = undefined,\n) {\n  let styleUrl, sourceId;\n  /** @type {Options&ApplyStyleOptions} */\n  let options;\n  let sourceOrLayers;\n  let updateSource = true;\n  if (\n    typeof sourceOrLayersOrOptions !== 'string' &&\n    !Array.isArray(sourceOrLayersOrOptions)\n  ) {\n    options = sourceOrLayersOrOptions;\n    sourceOrLayers = options.source || options.layers;\n    optionsOrPath = options;\n  } else {\n    sourceOrLayers = sourceOrLayersOrOptions;\n  }\n  if (typeof optionsOrPath === 'string') {\n    styleUrl = optionsOrPath;\n    options = {};\n  } else {\n    styleUrl = optionsOrPath.styleUrl;\n    options = optionsOrPath;\n  }\n  if (options.updateSource === false) {\n    updateSource = false;\n  }\n  if (!resolutions) {\n    resolutions = options.resolutions;\n  }\n  if (\n    !styleUrl &&\n    typeof glStyle === 'string' &&\n    !glStyle.trim().startsWith('{')\n  ) {\n    styleUrl = glStyle;\n  }\n  if (styleUrl) {\n    styleUrl = styleUrl.startsWith('data:')\n      ? location.href\n      : normalizeStyleUrl(styleUrl, options.accessToken);\n    options = completeOptions(styleUrl, options);\n  }\n\n  return new Promise(function (resolve, reject) {\n    // TODO: figure out where best place to check source type is\n    // Note that the source arg is an array of gl layer ids and each must be\n    // dereferenced to get source type to validate\n    getGlStyle(glStyle, options)\n      .then(function (glStyle) {\n        if (glStyle.version != 8) {\n          return reject(new Error('glStyle version 8 required.'));\n        }\n        if (\n          !(layer instanceof VectorLayer || layer instanceof VectorTileLayer)\n        ) {\n          return reject(\n            new Error('Can only apply to VectorLayer or VectorTileLayer'),\n          );\n        }\n\n        const type = layer instanceof VectorTileLayer ? 'vector' : 'geojson';\n        if (!sourceOrLayers) {\n          sourceId = glStyle.layers.find(function (layer) {\n            return layer.source && glStyle.sources[layer.source].type === type;\n          }).source;\n\n          sourceOrLayers = sourceId;\n        } else if (Array.isArray(sourceOrLayers)) {\n          sourceId = glStyle.layers.find(function (layer) {\n            return layer.id === sourceOrLayers[0];\n          }).source;\n        } else {\n          sourceId = sourceOrLayers;\n        }\n        if (!sourceId) {\n          return reject(new Error(`No ${type} source found in the glStyle.`));\n        }\n\n        function assignSource() {\n          if (!updateSource) {\n            return Promise.resolve();\n          }\n          if (layer instanceof VectorTileLayer) {\n            return setupVectorSource(\n              glStyle.sources[sourceId],\n              styleUrl,\n              options,\n            ).then(function (source) {\n              const targetSource = layer.getSource();\n              if (!targetSource) {\n                layer.setSource(source);\n              } else if (source !== targetSource) {\n                targetSource.setTileUrlFunction(source.getTileUrlFunction());\n                if (\n                  typeof targetSource.setUrls === 'function' &&\n                  typeof source.getUrls === 'function'\n                ) {\n                  // to get correct keys for tile cache and queue\n                  targetSource.setUrls(source.getUrls());\n                }\n                //@ts-ignore\n                if (!targetSource.format_) {\n                  //@ts-ignore\n                  targetSource.format_ = source.format_;\n                }\n                if (!targetSource.getAttributions()) {\n                  targetSource.setAttributions(source.getAttributions());\n                }\n                if (\n                  targetSource.getTileLoadFunction() === defaultLoadFunction\n                ) {\n                  targetSource.setTileLoadFunction(\n                    source.getTileLoadFunction(),\n                  );\n                }\n                if (\n                  equivalent(\n                    targetSource.getProjection(),\n                    source.getProjection(),\n                  )\n                ) {\n                  //@ts-ignore\n                  targetSource.tileGrid = source.getTileGrid();\n                }\n              }\n              const tileGrid = layer.getSource().getTileGrid();\n              if (\n                !isFinite(layer.getMaxResolution()) &&\n                !isFinite(layer.getMinZoom()) &&\n                tileGrid.getMinZoom() > 0\n              ) {\n                layer.setMaxResolution(\n                  getResolutionForZoom(\n                    Math.max(0, tileGrid.getMinZoom() - 1e-12),\n                    tileGrid.getResolutions(),\n                  ),\n                );\n              }\n            });\n          }\n\n          const glSource = glStyle.sources[sourceId];\n          let source = layer.getSource();\n          if (!source || source.get('mapbox-source') !== glSource) {\n            source = setupGeoJSONSource(glSource, styleUrl, options);\n          }\n          const targetSource = /** @type {VectorSource} */ (layer.getSource());\n          if (!targetSource) {\n            layer.setSource(source);\n          } else if (source !== targetSource) {\n            if (!targetSource.getAttributions()) {\n              targetSource.setAttributions(source.getAttributions());\n            }\n            //@ts-ignore\n            if (!targetSource.format_) {\n              //@ts-ignore\n              targetSource.format_ = source.getFormat();\n            }\n            //@ts-ignore\n            targetSource.url_ = source.getUrl();\n          }\n          return Promise.resolve();\n        }\n\n        let spriteScale, style;\n        const spriteData = {};\n        /** @type {import('./stylefunction.js').SpriteImageUrl} */\n        const spriteImageUrl = {};\n        function onChange() {\n          if (!style && (!glStyle.sprite || spriteData)) {\n            if (options.projection && !resolutions) {\n              const projection = getProjection(options.projection);\n              const units = projection.getUnits();\n              if (units !== 'm') {\n                resolutions = defaultResolutions.map(\n                  (resolution) => resolution / METERS_PER_UNIT[units],\n                );\n              }\n            }\n            style = applyStylefunction(\n              layer,\n              glStyle,\n              sourceOrLayers,\n              resolutions,\n              spriteData,\n              spriteImageUrl,\n              (fonts, templateUrl = options.webfonts) =>\n                getFonts(fonts, templateUrl),\n              options.getImage,\n            );\n            if (!layer.getStyle()) {\n              reject(new Error(`Nothing to show for source [${sourceId}]`));\n            } else {\n              assignSource().then(resolve).catch(reject);\n            }\n          } else if (style) {\n            layer.setStyle(style);\n            assignSource().then(resolve).catch(reject);\n          } else {\n            reject(new Error('Something went wrong trying to apply style.'));\n          }\n        }\n\n        if (glStyle.sprite) {\n          const sprites = normalizeSpriteDefinition(\n            glStyle.sprite,\n            options.accessToken,\n            styleUrl || location.href,\n          );\n          spriteScale = window.devicePixelRatio >= 1.5 ? 0.5 : 1;\n          const sizeFactor = spriteScale == 0.5 ? '@2x' : '';\n\n          Promise.all(\n            sprites.map(function (sprite) {\n              const spriteBaseUrl = new URL(sprite.url);\n              let spriteUrl =\n                spriteBaseUrl.origin +\n                spriteBaseUrl.pathname +\n                sizeFactor +\n                '.json' +\n                spriteBaseUrl.search;\n\n              return new Promise(function (resolve, reject) {\n                fetchResource('Sprite', spriteUrl, options)\n                  .then(resolve)\n                  .catch(function (error) {\n                    spriteUrl =\n                      spriteBaseUrl.origin +\n                      spriteBaseUrl.pathname +\n                      '.json' +\n                      spriteBaseUrl.search;\n                    fetchResource('Sprite', spriteUrl, options)\n                      .then(resolve)\n                      .catch(reject);\n                  });\n              })\n                .then(function (spritesJson) {\n                  if (spritesJson === undefined) {\n                    reject(new Error('No sprites found.'));\n                  }\n\n                  let imageUrl;\n                  imageUrl =\n                    spriteBaseUrl.origin +\n                    spriteBaseUrl.pathname +\n                    sizeFactor +\n                    '.png' +\n                    spriteBaseUrl.search;\n\n                  if (options.transformRequest) {\n                    const transformed =\n                      options.transformRequest(imageUrl, 'SpriteImage') ||\n                      imageUrl;\n                    if (\n                      transformed instanceof Request ||\n                      transformed instanceof Promise\n                    ) {\n                      imageUrl = transformed;\n                    }\n                  }\n                  spriteImageUrl[sprite.id] = imageUrl;\n\n                  // add sprite data with prefix according to spec\n                  for (const spriteName in spritesJson) {\n                    const key =\n                      sprite.id == 'default'\n                        ? spriteName\n                        : `${sprite.id}:${spriteName}`;\n                    spriteData[key] = spritesJson[spriteName];\n                  }\n                })\n                .catch(function (err) {\n                  reject(\n                    new Error(\n                      `Sprites cannot be loaded: ${spriteUrl}: ${err.message}`,\n                    ),\n                  );\n                });\n            }),\n          )\n            .then(onChange)\n            .catch(reject);\n        } else {\n          onChange();\n        }\n      })\n      .catch(reject);\n  });\n}\n\nfunction setFirstBackground(mapOrLayer, glStyle, options) {\n  glStyle.layers.some(function (layer) {\n    if (layer.type === 'background') {\n      if (mapOrLayer instanceof Layer) {\n        mapOrLayer.setBackground(function (resolution) {\n          return getBackgroundColor(layer, resolution, options, {});\n        });\n        return true;\n      }\n      if (mapOrLayer instanceof Map || mapOrLayer instanceof LayerGroup) {\n        mapOrLayer\n          .getLayers()\n          .insertAt(0, setupBackgroundLayer(layer, options, {}));\n        return true;\n      }\n    }\n  });\n}\n\n/**\n * Applies properties of the Mapbox/MapLibre Style's first `background` layer to the\n * provided map or layer (group).\n *\n * **Example:**\n * ```js\n * import {applyBackground} from 'ol-mapbox-style';\n * import {Map} from 'ol';\n *\n * const map = new Map({target: 'map'});\n * applyBackground(map, 'https://api.maptiler.com/maps/basic/style.json?key=YOUR_OPENMAPTILES_TOKEN');\n * ```\n * @param {Map|import(\"ol/layer/Base.js\").default} mapOrLayer OpenLayers Map or layer (group).\n * @param {Object|string} glStyle Mapbox/MapLibre Style object or url.\n * @param {Options} options Options.\n * @return {Promise} Promise that resolves when the background is applied.\n */\nexport function applyBackground(mapOrLayer, glStyle, options = {}) {\n  return getGlStyle(glStyle, options).then(function (glStyle) {\n    setFirstBackground(mapOrLayer, glStyle, options);\n  });\n}\n\nfunction getSourceIdByRef(layers, ref) {\n  let sourceId;\n  layers.some(function (layer) {\n    if (layer.id == ref) {\n      sourceId = layer.source;\n      return true;\n    }\n  });\n  return sourceId;\n}\n\nfunction extentFromTileJSON(tileJSON, projection) {\n  const bounds = tileJSON.bounds;\n  if (bounds) {\n    const ll = fromLonLat([bounds[0], bounds[1]], projection);\n    const tr = fromLonLat([bounds[2], bounds[3]], projection);\n    return [ll[0], ll[1], tr[0], tr[1]];\n  }\n  return getProjection(projection).getExtent();\n}\n\nfunction sourceOptionsFromTileJSON(glSource, tileJSON, options) {\n  const tileJSONSource = new TileJSON({\n    tileJSON: tileJSON,\n    tileSize: glSource.tileSize || tileJSON.tileSize || 512,\n  });\n  const tileJSONDoc = tileJSONSource.getTileJSON();\n  const tileGrid = tileJSONSource.getTileGrid();\n  const projection = getProjection(options.projection || 'EPSG:3857');\n  const extent = extentFromTileJSON(tileJSONDoc, projection);\n  const projectionExtent = projection.getExtent();\n  const minZoom = tileJSONDoc.minzoom || 0;\n  const maxZoom = tileJSONDoc.maxzoom || 22;\n  /** @type {import(\"ol/source/VectorTile.js\").Options<import(\"ol/render/Feature.js\").default>} */\n  const sourceOptions = {\n    attributions: tileJSONSource.getAttributions(),\n    projection: projection,\n    tileGrid: new TileGrid({\n      origin: projectionExtent\n        ? getTopLeft(projectionExtent)\n        : tileGrid.getOrigin(0),\n      extent: extent || tileGrid.getExtent(),\n      minZoom: minZoom,\n      resolutions: getTileResolutions(projection, tileJSON.tileSize).slice(\n        0,\n        maxZoom + 1,\n      ),\n      tileSize: tileGrid.getTileSize(0),\n    }),\n  };\n  if (Array.isArray(tileJSONDoc.tiles)) {\n    sourceOptions.urls = tileJSONDoc.tiles;\n  } else {\n    sourceOptions.url = tileJSONDoc.tiles;\n  }\n  return sourceOptions;\n}\n\nfunction getBackgroundColor(glLayer, resolution, options, functionCache) {\n  const background = {\n    id: glLayer.id,\n    type: glLayer.type,\n  };\n  const layout = glLayer.layout || {};\n  const paint = glLayer.paint || {};\n  background['paint'] = paint;\n  cameraObj.zoom = getZoomForResolution(\n    resolution,\n    options.resolutions || defaultResolutions,\n  );\n  cameraObj.distanceFromCenter = 0;\n  let opacity;\n  const bg = getValue(\n    background,\n    'paint',\n    'background-color',\n    emptyObj,\n    functionCache,\n  );\n  if (paint['background-opacity'] !== undefined) {\n    opacity = getValue(\n      background,\n      'paint',\n      'background-opacity',\n      emptyObj,\n      functionCache,\n    );\n  }\n  return layout.visibility == 'none'\n    ? undefined\n    : _colorWithOpacity(bg, opacity);\n}\n\n/**\n * @param {Object} glLayer Mapbox/MapLibre Style layer object.\n * @param {Options} options Options.\n * @param {Object} functionCache Cache for functions.\n * @return {Layer} OpenLayers layer.\n */\nfunction setupBackgroundLayer(glLayer, options, functionCache) {\n  const div = document.createElement('div');\n  div.className = 'ol-mapbox-style-background';\n  div.style.position = 'absolute';\n  div.style.width = '100%';\n  div.style.height = '100%';\n  return new Layer({\n    source: new Source({}),\n    render(frameState) {\n      const color = getBackgroundColor(\n        glLayer,\n        frameState.viewState.resolution,\n        options,\n        functionCache,\n      );\n      div.style.backgroundColor = color;\n      return div;\n    },\n  });\n}\n\n/**\n * Creates an OpenLayers VectorTile source for a gl source entry.\n * @param {Object} glSource \"source\" entry from a Mapbox/MapLibre Style object.\n * @param {string|undefined} styleUrl URL to use for the source. This is expected to be the complete http(s) url,\n * with access key applied.\n * @param {Options} options Options.\n * @return {Promise<import(\"ol/source/VectorTile\").default>} Promise resolving to a VectorTile source.\n * @private\n */\nexport function setupVectorSource(glSource, styleUrl, options) {\n  return new Promise(function (resolve, reject) {\n    getTileJson(glSource, styleUrl, options)\n      .then(function ({tileJson, tileLoadFunction}) {\n        const sourceOptions = sourceOptionsFromTileJSON(\n          glSource,\n          tileJson,\n          options,\n        );\n        sourceOptions.tileLoadFunction = tileLoadFunction;\n        sourceOptions.format = new MVT();\n        const source = new VectorTileSource(sourceOptions);\n        source.set('mapbox-source', glSource);\n        resolve(source);\n      })\n      .catch(reject);\n  });\n}\n\nfunction setupVectorLayer(glSource, styleUrl, options) {\n  const layer = new VectorTileLayer({\n    declutter: true,\n    visible: false,\n  });\n  setupVectorSource(glSource, styleUrl, options)\n    .then(function (source) {\n      layer.setSource(source);\n    })\n    .catch(function (error) {\n      layer.setSource(undefined);\n    });\n  return layer;\n}\n\nfunction getBboxTemplate(projection) {\n  const projCode = projection ? projection.getCode() : 'EPSG:3857';\n  return `{bbox-${projCode.toLowerCase().replace(/[^a-z0-9]/g, '-')}}`;\n}\n\nfunction setupRasterSource(glSource, styleUrl, options) {\n  return new Promise(function (resolve, reject) {\n    getTileJson(glSource, styleUrl, options)\n      .then(function ({tileJson, tileLoadFunction}) {\n        const source = new TileJSON({\n          interpolate:\n            options.interpolate === undefined ? true : options.interpolate,\n          transition: 0,\n          crossOrigin: 'anonymous',\n          tileJSON: tileJson,\n        });\n        //@ts-ignore\n        source.tileGrid = sourceOptionsFromTileJSON(\n          glSource,\n          tileJson,\n          options,\n        ).tileGrid;\n        if (options.projection) {\n          //@ts-ignore\n          source.projection = getProjection(options.projection);\n        }\n        const getTileUrl = source.getTileUrlFunction();\n        if (tileLoadFunction) {\n          source.setTileLoadFunction(tileLoadFunction);\n        }\n        source.setTileUrlFunction(function (tileCoord, pixelRatio, projection) {\n          const bboxTemplate = getBboxTemplate(projection);\n          let src = getTileUrl(tileCoord, pixelRatio, projection);\n          if (src.indexOf(bboxTemplate) != -1) {\n            const bbox = source.getTileGrid().getTileCoordExtent(tileCoord);\n            src = src.replace(bboxTemplate, bbox.toString());\n          }\n          return src;\n        });\n        source.set('mapbox-source', glSource);\n        resolve(source);\n      })\n      .catch(function (error) {\n        reject(error);\n      });\n  });\n}\n\nfunction setupRasterLayer(glSource, styleUrl, options) {\n  const layer = new TileLayer();\n  setupRasterSource(glSource, styleUrl, options)\n    .then(function (source) {\n      layer.setSource(source);\n    })\n    .catch(function () {\n      layer.setSource(undefined);\n    });\n  return layer;\n}\n\n/**\n *\n * @param {Object} glSource \"source\" entry from a Mapbox/MapLibre Style object.\n * @param {string} styleUrl Style url\n * @param {Options} options ol-mapbox-style options.\n * @return {ImageLayer<Raster>} The raster layer\n */\nfunction setupHillshadeLayer(glSource, styleUrl, options) {\n  const tileLayer = setupRasterLayer(glSource, styleUrl, options);\n  /** @type {ImageLayer<Raster>} */\n  const layer = new ImageLayer({\n    source: new Raster({\n      operationType: 'image',\n      operation: hillshade,\n      sources: [tileLayer],\n    }),\n  });\n  return layer;\n}\n\n/**\n * @param {Object} glSource glStyle source.\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {VectorSource} Configured vector source.\n */\nfunction setupGeoJSONSource(glSource, styleUrl, options) {\n  const geoJsonFormat = options.projection\n    ? new GeoJSON({dataProjection: options.projection})\n    : new GeoJSON();\n  const data = glSource.data;\n  const sourceOptions = {};\n  if (typeof data == 'string') {\n    const [geoJsonUrl] = normalizeSourceUrl(\n      data,\n      options.accessToken,\n      options.accessTokenParam || 'access_token',\n      styleUrl || location.href,\n    );\n    if (/\\{bbox-[0-9a-z-]+\\}/.test(geoJsonUrl)) {\n      const extentUrl = (extent, resolution, projection) => {\n        const bboxTemplate = getBboxTemplate(projection);\n        return geoJsonUrl.replace(bboxTemplate, `${extent.join(',')}`);\n      };\n      const source = new VectorSource({\n        attributions: glSource.attribution,\n        format: geoJsonFormat,\n        loader: (extent, resolution, projection, success, failure) => {\n          const url =\n            typeof extentUrl === 'function'\n              ? extentUrl(extent, resolution, projection)\n              : extentUrl;\n          fetchResource('GeoJSON', url, options)\n            .then((json) => {\n              const features = /** @type {*} */ (\n                source\n                  .getFormat()\n                  .readFeatures(json, {featureProjection: projection})\n              );\n              source.addFeatures(features);\n              success(features);\n            })\n            .catch((response) => {\n              source.removeLoadedExtent(extent);\n              failure();\n            });\n        },\n        strategy: bboxStrategy,\n      });\n      source.set('mapbox-source', glSource);\n      return source;\n    }\n    const source = new VectorSource({\n      attributions: glSource.attribution,\n      format: geoJsonFormat,\n      url: geoJsonUrl,\n      loader: (extent, resolution, projection, success, failure) => {\n        fetchResource('GeoJSON', geoJsonUrl, options)\n          .then((json) => {\n            const features = /** @type {*} */ (\n              source\n                .getFormat()\n                .readFeatures(json, {featureProjection: projection})\n            );\n            source.addFeatures(features);\n            success(features);\n          })\n          .catch((response) => {\n            source.removeLoadedExtent(extent);\n            failure();\n          });\n      },\n    });\n    return source;\n  }\n  sourceOptions.features = geoJsonFormat.readFeatures(data, {\n    featureProjection: getUserProjection() || 'EPSG:3857',\n  });\n\n  const source = new VectorSource(\n    Object.assign(\n      {\n        attributions: glSource.attribution,\n        format: geoJsonFormat,\n      },\n      sourceOptions,\n    ),\n  );\n  source.set('mapbox-source', glSource);\n  return /** @type {VectorSource} */ (source);\n}\n\nfunction setupGeoJSONLayer(glSource, styleUrl, options) {\n  return new VectorLayer({\n    declutter: true,\n    source: setupGeoJSONSource(glSource, styleUrl, options),\n    visible: false,\n  });\n}\n\nfunction prerenderRasterLayer(glLayer, layer, functionCache) {\n  let zoom = null;\n  return function (event) {\n    if (\n      glLayer.paint &&\n      'raster-opacity' in glLayer.paint &&\n      event.frameState.viewState.zoom !== zoom\n    ) {\n      zoom = event.frameState.viewState.zoom;\n      delete functionCache[glLayer.id];\n      updateRasterLayerProperties(glLayer, layer, zoom, functionCache);\n    }\n  };\n}\n\nfunction updateRasterLayerProperties(glLayer, layer, zoom, functionCache) {\n  cameraObj.zoom = zoom;\n  cameraObj.distanceFromCenter = 0;\n  const opacity = getValue(\n    glLayer,\n    'paint',\n    'raster-opacity',\n    emptyObj,\n    functionCache,\n  );\n  layer.setOpacity(opacity);\n}\n\nfunction manageVisibility(layer, mapOrGroup) {\n  function onChange() {\n    const glStyle = mapOrGroup.get('mapbox-style');\n    if (!glStyle) {\n      return;\n    }\n    const mapboxLayers = derefLayers(glStyle.layers);\n    const layerMapboxLayerids = layer.get('mapbox-layers');\n    const visible = mapboxLayers\n      .filter(function (mapboxLayer) {\n        return layerMapboxLayerids.includes(mapboxLayer.id);\n      })\n      .some(function (mapboxLayer) {\n        return (\n          !mapboxLayer.layout ||\n          !mapboxLayer.layout.visibility ||\n          mapboxLayer.layout.visibility === 'visible'\n        );\n      });\n    if (layer.get('visible') !== visible) {\n      layer.setVisible(visible);\n    }\n  }\n  layer.on('change', onChange);\n  onChange();\n}\n\nexport function setupLayer(glStyle, styleUrl, glLayer, options) {\n  const functionCache = getFunctionCache(glStyle);\n  const glLayers = glStyle.layers;\n  const type = glLayer.type;\n\n  const id = glLayer.source || getSourceIdByRef(glLayers, glLayer.ref);\n  const glSource = glStyle.sources[id];\n  let layer;\n  if (type == 'background') {\n    layer = setupBackgroundLayer(glLayer, options, functionCache);\n  } else if (glSource.type == 'vector') {\n    layer = setupVectorLayer(glSource, styleUrl, options);\n  } else if (glSource.type == 'raster') {\n    layer = setupRasterLayer(glSource, styleUrl, options);\n    layer.setVisible(\n      glLayer.layout ? glLayer.layout.visibility !== 'none' : true,\n    );\n    layer.on('prerender', prerenderRasterLayer(glLayer, layer, functionCache));\n  } else if (glSource.type == 'geojson') {\n    layer = setupGeoJSONLayer(glSource, styleUrl, options);\n  } else if (glSource.type == 'raster-dem' && glLayer.type == 'hillshade') {\n    const hillshadeLayer = setupHillshadeLayer(glSource, styleUrl, options);\n    layer = hillshadeLayer;\n    hillshadeLayer.getSource().on('beforeoperations', function (event) {\n      const data = event.data;\n      data.resolution = getPointResolution(\n        options.projection || 'EPSG:3857',\n        event.resolution,\n        getCenter(event.extent),\n        'm',\n      );\n      cameraObj.zoom = getZoomForResolution(\n        event.resolution,\n        options.resolutions || defaultResolutions,\n      );\n      cameraObj.distanceFromCenter = 0;\n      data.encoding = glSource.encoding;\n      data.vert =\n        5 *\n        getValue(\n          glLayer,\n          'paint',\n          'hillshade-exaggeration',\n          emptyObj,\n          functionCache,\n        );\n      data.sunAz = getValue(\n        glLayer,\n        'paint',\n        'hillshade-illumination-direction',\n        emptyObj,\n        functionCache,\n      );\n      data.sunEl = 35;\n      data.opacity = 0.3;\n      data.highlightColor = getValue(\n        glLayer,\n        'paint',\n        'hillshade-highlight-color',\n        emptyObj,\n        functionCache,\n      );\n      data.shadowColor = getValue(\n        glLayer,\n        'paint',\n        'hillshade-shadow-color',\n        emptyObj,\n        functionCache,\n      );\n      data.accentColor = getValue(\n        glLayer,\n        'paint',\n        'hillshade-accent-color',\n        emptyObj,\n        functionCache,\n      );\n    });\n    layer.setVisible(\n      glLayer.layout ? glLayer.layout.visibility !== 'none' : true,\n    );\n  }\n  const glSourceId = id;\n  if (layer) {\n    layer.set('mapbox-source', glSourceId);\n  }\n  return layer;\n}\n\n/**\n * @param {*} glStyle Mapbox/MapLibre Style.\n * @param {Map|LayerGroup} mapOrGroup Map or layer group.\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {Promise} Promise that resolves when the style is loaded.\n */\nfunction processStyle(glStyle, mapOrGroup, styleUrl, options) {\n  const promises = [];\n\n  let view = null;\n  if (mapOrGroup instanceof Map) {\n    view = mapOrGroup.getView();\n    if (!view.isDef() && !view.getRotation() && !view.getResolutions()) {\n      const projection = options.projection\n        ? getProjection(options.projection)\n        : view.getProjection();\n      view = new View(\n        Object.assign(view.getProperties(), {\n          maxResolution:\n            defaultResolutions[0] / METERS_PER_UNIT[projection.getUnits()],\n          projection: options.projection || view.getProjection(),\n        }),\n      );\n      mapOrGroup.setView(view);\n    }\n\n    if ('center' in glStyle && !view.getCenter()) {\n      view.setCenter(fromLonLat(glStyle.center, view.getProjection()));\n    }\n    if ('zoom' in glStyle && view.getZoom() === undefined) {\n      view.setResolution(\n        defaultResolutions[0] /\n          METERS_PER_UNIT[view.getProjection().getUnits()] /\n          Math.pow(2, glStyle.zoom),\n      );\n    }\n    if (!view.getCenter() || view.getZoom() === undefined) {\n      view.fit(view.getProjection().getExtent(), {\n        nearest: true,\n        size: mapOrGroup.getSize(),\n      });\n    }\n  }\n  mapOrGroup.set('mapbox-style', glStyle);\n  mapOrGroup.set('mapbox-metadata', {styleUrl, options});\n\n  const glLayers = glStyle.layers;\n  let layerIds = [];\n\n  let layer, glSourceId, id;\n  for (let i = 0, ii = glLayers.length; i < ii; ++i) {\n    const glLayer = glLayers[i];\n    const type = glLayer.type;\n    if (type == 'heatmap') {\n      //FIXME Unsupported layer type\n      // eslint-disable-next-line no-console\n      console.debug(`layers[${i}].type \"${type}\" not supported`);\n      continue;\n    } else {\n      id = glLayer.source || getSourceIdByRef(glLayers, glLayer.ref);\n      // this technique assumes gl layers will be in a particular order\n      if (!id || id != glSourceId) {\n        if (layerIds.length) {\n          promises.push(\n            finalizeLayer(\n              layer,\n              layerIds,\n              glStyle,\n              styleUrl,\n              mapOrGroup,\n              options,\n            ),\n          );\n          layerIds = [];\n        }\n\n        layer = setupLayer(glStyle, styleUrl, glLayer, options);\n        if (\n          !(layer instanceof VectorLayer || layer instanceof VectorTileLayer)\n        ) {\n          layerIds = [];\n        }\n        glSourceId = layer.get('mapbox-source');\n      }\n      layerIds.push(glLayer.id);\n    }\n  }\n  promises.push(\n    finalizeLayer(layer, layerIds, glStyle, styleUrl, mapOrGroup, options),\n  );\n  return Promise.all(promises);\n}\n\n/**\n * Loads and applies a Mapbox/MapLibre Style object into an OpenLayers Map or LayerGroup.\n * This includes the map background, the layers, and for Map instances that did not\n * have a View defined yet also the center and the zoom.\n *\n * **Example:**\n * ```js\n * import apply from 'ol-mapbox-style';\n *\n * apply('map', 'mapbox://styles/mapbox/bright-v9', {accessToken: 'YOUR_MAPBOX_TOKEN'});\n * ```\n *\n * The center and zoom will only be set if present in the Mapbox/MapLibre Style document,\n * and if not already set on the OpenLayers map.\n *\n * Layers will be added to the OpenLayers map, without affecting any layers that\n * might already be set on the map.\n *\n * Layers added by `apply()` will have two additional properties:\n *\n *  * `mapbox-source`: The `id` of the Mapbox/MapLibre Style document's source that the\n *    OpenLayers layer was created from. Usually `apply()` creates one\n *    OpenLayers layer per Mapbox/MapLibre Style source, unless the layer stack has\n *    layers from different sources in between.\n *  * `mapbox-layers`: The `id`s of the Mapbox/MapLibre Style document's layers that are\n *    included in the OpenLayers layer.\n *\n * This function sets an additional `mapbox-style` property on the OpenLayers\n * Map or LayerGroup instance, which holds the Mapbox/MapLibre Style object.\n *\n * @param {Map|HTMLElement|string|LayerGroup} mapOrGroupOrElement Either an existing\n * OpenLayers Map instance, or a HTML element, or the id of a HTML element that will be\n * the target of a new OpenLayers Map, or a layer group. If layer group, styles\n * releated to the map and view will be ignored.\n * @param {string|Object} style JSON style object or style url pointing to a\n * Mapbox/MapLibre Style object. When using Mapbox APIs, the url is the `styleUrl`\n * shown in Mapbox Studio's \"share\" panel. In addition, the `accessToken` option\n * (see below) must be set.\n * When passed as JSON style object, all OpenLayers layers created by `apply()`\n * will be immediately available, but they may not have a source yet (i.e. when\n * they are defined by a TileJSON url in the Mapbox/MapLibre Style document). When passed\n * as style url, layers will be added to the map when the Mapbox/MapLibre Style document\n * is loaded and parsed.\n * @param {Options} options Options.\n * @return {Promise<Map|LayerGroup>} A promise that resolves after all layers have been added to\n * the OpenLayers Map instance or LayerGroup, their sources set, and their styles applied. The\n * `resolve` callback will be called with the OpenLayers Map instance or LayerGroup as\n * argument.\n */\nexport function apply(mapOrGroupOrElement, style, options = {}) {\n  let promise;\n  /** @type {Map|LayerGroup} */\n  let mapOrGroup;\n  if (\n    typeof mapOrGroupOrElement === 'string' ||\n    mapOrGroupOrElement instanceof HTMLElement\n  ) {\n    mapOrGroup = new Map({\n      target: mapOrGroupOrElement,\n    });\n  } else {\n    mapOrGroup = mapOrGroupOrElement;\n  }\n\n  if (typeof style === 'string') {\n    const styleUrl = style.startsWith('data:')\n      ? location.href\n      : normalizeStyleUrl(style, options.accessToken);\n    options = completeOptions(styleUrl, options);\n\n    promise = new Promise(function (resolve, reject) {\n      getGlStyle(style, options)\n        .then(function (glStyle) {\n          processStyle(glStyle, mapOrGroup, styleUrl, options)\n            .then(function () {\n              resolve(mapOrGroup);\n            })\n            .catch(reject);\n        })\n        .catch(function (err) {\n          reject(new Error(`Could not load ${style}: ${err.message}`));\n        });\n    });\n  } else {\n    promise = new Promise(function (resolve, reject) {\n      processStyle(\n        style,\n        mapOrGroup,\n        !options.styleUrl || options.styleUrl.startsWith('data:')\n          ? location.href\n          : normalizeStyleUrl(options.styleUrl, options.accessToken),\n        options,\n      )\n        .then(function () {\n          resolve(mapOrGroup);\n        })\n        .catch(reject);\n    });\n  }\n\n  return promise;\n}\n\n/**\n * If layerIds is not empty, applies the style specified in glStyle to the layer,\n * and adds the layer to the map.\n *\n * The layer may not yet have a source when the function is called.  If so, the style\n * is applied to the layer via a once listener on the 'change:source' event.\n *\n * @param {Layer} layer An OpenLayers layer instance.\n * @param {Array<string>} layerIds Array containing layer ids of already-processed layers.\n * @param {Object} glStyle Style as a JSON object.\n * @param {string|undefined} styleUrl The original style URL. Only required\n * when a relative path is used with the `\"sprite\"` property of the style.\n * @param {Map|LayerGroup} mapOrGroup OpenLayers Map.\n * @param {Options} options Options.\n * @return {Promise} Returns a promise that resolves after the source has\n * been set on the specified layer, and the style has been applied.\n */\nexport function finalizeLayer(\n  layer,\n  layerIds,\n  glStyle,\n  styleUrl,\n  mapOrGroup,\n  options = {},\n) {\n  let minZoom = 24;\n  let maxZoom = 0;\n  const glLayers = glStyle.layers;\n  for (let i = 0, ii = glLayers.length; i < ii; ++i) {\n    const glLayer = glLayers[i];\n    if (layerIds.indexOf(glLayer.id) !== -1) {\n      minZoom = Math.min('minzoom' in glLayer ? glLayer.minzoom : 0, minZoom);\n      maxZoom = Math.max('maxzoom' in glLayer ? glLayer.maxzoom : 24, maxZoom);\n    }\n  }\n  return new Promise(function (resolve, reject) {\n    const setStyle = function () {\n      const source = layer.getSource();\n      if (!source || source.getState() === 'error') {\n        reject(\n          new Error(\n            'Error accessing data for source ' + layer.get('mapbox-source'),\n          ),\n        );\n        return;\n      }\n      if ('getTileGrid' in source) {\n        const tileGrid =\n          /** @type {import(\"ol/source/Tile.js\").default|import(\"ol/source/VectorTile.js\").default} */ (\n            source\n          ).getTileGrid();\n        if (tileGrid) {\n          const sourceMinZoom = tileGrid.getMinZoom();\n          if (minZoom > 0 || sourceMinZoom > 0) {\n            layer.setMaxResolution(\n              Math.min(\n                getResolutionForZoom(\n                  Math.max(0, minZoom - 1e-12),\n                  defaultResolutions,\n                ),\n                getResolutionForZoom(\n                  Math.max(0, sourceMinZoom - 1e-12),\n                  tileGrid.getResolutions(),\n                ),\n              ),\n            );\n          }\n          if (maxZoom < 24) {\n            layer.setMinResolution(\n              getResolutionForZoom(maxZoom, defaultResolutions),\n            );\n          }\n        }\n      } else {\n        if (minZoom > 0) {\n          layer.setMaxResolution(\n            getResolutionForZoom(\n              Math.max(0, minZoom - 1e-12),\n              defaultResolutions,\n            ),\n          );\n        }\n      }\n      if (\n        source instanceof VectorSource ||\n        source instanceof VectorTileSource\n      ) {\n        applyStyle(\n          /** @type {import(\"ol/layer/Vector\").default|import(\"ol/layer/VectorTile\").default} */ (\n            layer\n          ),\n          glStyle,\n          layerIds,\n          Object.assign({styleUrl: styleUrl}, options),\n        )\n          .then(function () {\n            manageVisibility(layer, mapOrGroup);\n            resolve();\n          })\n          .catch(reject);\n      } else {\n        resolve();\n      }\n    };\n\n    layer.set('mapbox-layers', layerIds);\n    const layers = mapOrGroup.getLayers();\n    if (layers.getArray().indexOf(layer) === -1) {\n      layers.push(layer);\n    }\n\n    if (layer.getSource()) {\n      setStyle();\n    } else {\n      layer.once('change:source', setStyle);\n    }\n  });\n}\n\n/**\n * Get the Mapbox Layer object for the provided `layerId`.\n * @param {Map|LayerGroup} mapOrGroup Map or LayerGroup.\n * @param {string} layerId Mapbox Layer id.\n * @return {Object} Mapbox Layer object.\n */\nexport function getMapboxLayer(mapOrGroup, layerId) {\n  const style = mapOrGroup.get('mapbox-style');\n  const layerStyle = style.layers.find(function (layer) {\n    return layer.id === layerId;\n  });\n  return layerStyle;\n}\n\n/**\n * Add a new Mapbox Layer object to the style. The map will be re-rendered.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {Object} mapboxLayer Mapbox Layer object.\n * @param {string} [beforeLayerId] Optional id of the Mapbox Layer before the new layer that will be added.\n * @return {Promise<void>} Resolves when the added layer is available.\n */\nexport function addMapboxLayer(mapOrGroup, mapboxLayer, beforeLayerId) {\n  const glStyle = mapOrGroup.get('mapbox-style');\n  const mapboxLayers = glStyle.layers;\n  let spliceIndex;\n  let sourceIndex = -1;\n  if (beforeLayerId !== undefined) {\n    const beforeMapboxLayer = getMapboxLayer(mapOrGroup, beforeLayerId);\n    if (beforeMapboxLayer === undefined) {\n      throw new Error(`Layer with id \"${beforeLayerId}\" not found.`);\n    }\n    spliceIndex = mapboxLayers.indexOf(beforeMapboxLayer);\n  } else {\n    spliceIndex = mapboxLayers.length;\n  }\n  let sourceOffset;\n  if (\n    spliceIndex > 0 &&\n    mapboxLayers[spliceIndex - 1].source === mapboxLayer.source\n  ) {\n    sourceIndex = spliceIndex - 1;\n    sourceOffset = -1;\n  } else if (\n    spliceIndex < mapboxLayers.length &&\n    mapboxLayers[spliceIndex].source === mapboxLayer.source\n  ) {\n    sourceIndex = spliceIndex;\n    sourceOffset = 0;\n  }\n  if (sourceIndex === -1) {\n    const {options, styleUrl} = mapOrGroup.get('mapbox-metadata');\n    const layer = setupLayer(glStyle, styleUrl, mapboxLayer, options);\n    if (beforeLayerId) {\n      const beforeLayer = getLayer(mapOrGroup, beforeLayerId);\n      const beforeLayerIndex = mapOrGroup\n        .getLayers()\n        .getArray()\n        .indexOf(beforeLayer);\n      mapOrGroup.getLayers().insertAt(beforeLayerIndex, layer);\n    }\n    mapboxLayers.splice(spliceIndex, 0, mapboxLayer);\n    return finalizeLayer(\n      layer,\n      [mapboxLayer.id],\n      glStyle,\n      styleUrl,\n      mapOrGroup,\n      options,\n    );\n  }\n\n  if (mapboxLayers.some((layer) => layer.id === mapboxLayer.id)) {\n    throw new Error(`Layer with id \"${mapboxLayer.id}\" already exists.`);\n  }\n  const sourceLayerId = mapboxLayers[sourceIndex].id;\n  const args =\n    styleFunctionArgs[\n      getStyleFunctionKey(\n        mapOrGroup.get('mapbox-style'),\n        getLayer(mapOrGroup, sourceLayerId),\n      )\n    ];\n  mapboxLayers.splice(spliceIndex, 0, mapboxLayer);\n  if (args) {\n    const [\n      olLayer,\n      glStyle,\n      sourceOrLayers,\n      resolutions,\n      spriteData,\n      spriteImageUrl,\n      getFonts,\n      getImage,\n    ] = args;\n    if (Array.isArray(sourceOrLayers)) {\n      const layerIndex = sourceOrLayers.indexOf(sourceLayerId) + sourceOffset;\n      sourceOrLayers.splice(layerIndex, 0, mapboxLayer.id);\n    }\n    applyStylefunction(\n      olLayer,\n      glStyle,\n      sourceOrLayers,\n      resolutions,\n      spriteData,\n      spriteImageUrl,\n      getFonts,\n      getImage,\n    );\n  } else {\n    getLayer(mapOrGroup, mapboxLayers[sourceIndex].id).changed();\n  }\n  return Promise.resolve();\n}\n\n/**\n * Update a Mapbox Layer object in the style. The map will be re-rendered with the new style.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {Object} mapboxLayer Updated Mapbox Layer object.\n */\nexport function updateMapboxLayer(mapOrGroup, mapboxLayer) {\n  const glStyle = mapOrGroup.get('mapbox-style');\n  const mapboxLayers = glStyle.layers;\n  const index = mapboxLayers.findIndex(function (layer) {\n    return layer.id === mapboxLayer.id;\n  });\n  if (index === -1) {\n    throw new Error(`Layer with id \"${mapboxLayer.id}\" not found.`);\n  }\n  const oldLayer = mapboxLayers[index];\n  if (oldLayer.source !== mapboxLayer.source) {\n    throw new Error(\n      'Updated layer and previous version must use the same source.',\n    );\n  }\n  delete getFunctionCache(glStyle)[mapboxLayer.id];\n  delete getFilterCache(glStyle)[mapboxLayer.id];\n  mapboxLayers[index] = mapboxLayer;\n  const args =\n    styleFunctionArgs[\n      getStyleFunctionKey(\n        mapOrGroup.get('mapbox-style'),\n        getLayer(mapOrGroup, mapboxLayer.id),\n      )\n    ];\n  if (args) {\n    applyStylefunction.apply(undefined, args);\n  } else {\n    getLayer(mapOrGroup, mapboxLayer.id).changed();\n  }\n}\n\n/**\n * Updates a Mapbox source object in the style. The according OpenLayers source will be replaced\n * and the map will be re-rendered.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {string} id Key of the source in the `sources` object literal.\n * @param {Object} mapboxSource Mapbox source object.\n * @return {Promise<Source>} Promise that resolves when the source has been updated.\n */\nexport function updateMapboxSource(mapOrGroup, id, mapboxSource) {\n  const currentSource = getSource(mapOrGroup, id);\n  const layers = /** @type {Array<VectorLayer|TileLayer|VectorTileLayer>} */ (\n    mapOrGroup\n      .getLayers()\n      .getArray()\n      .filter(function (layer) {\n        return (\n          (layer instanceof VectorLayer ||\n            layer instanceof TileLayer ||\n            layer instanceof VectorTileLayer) &&\n          layer.getSource() === currentSource\n        );\n      })\n  );\n  const metadata = mapOrGroup.get('mapbox-metadata');\n  let newSourcePromise;\n  switch (mapboxSource.type) {\n    case 'vector':\n      newSourcePromise = setupVectorSource(\n        mapboxSource,\n        metadata.styleUrl,\n        metadata.options,\n      );\n      break;\n    case 'geojson':\n      newSourcePromise = Promise.resolve(\n        setupGeoJSONSource(mapboxSource, metadata.styleUrl, metadata.options),\n      );\n      break;\n    case 'raster':\n    case 'raster-dem':\n      newSourcePromise = setupRasterSource(\n        mapboxSource,\n        metadata.styleUrl,\n        metadata.options,\n      );\n      break;\n    default:\n      return Promise.reject(\n        new Error('Unsupported source type ' + mapboxSource.type),\n      );\n  }\n  newSourcePromise.then(function (newSource) {\n    layers.forEach(function (layer) {\n      layer.setSource(newSource);\n    });\n  });\n  return newSourcePromise;\n}\n\n/**\n * Remove a Mapbox Layer object from the style. The map will be re-rendered.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {string|Object} mapboxLayerIdOrLayer Mapbox Layer id or Mapbox Layer object.\n */\nexport function removeMapboxLayer(mapOrGroup, mapboxLayerIdOrLayer) {\n  const mapboxLayerId =\n    typeof mapboxLayerIdOrLayer === 'string'\n      ? mapboxLayerIdOrLayer\n      : mapboxLayerIdOrLayer.id;\n  const layer = getLayer(mapOrGroup, mapboxLayerId);\n  /** @type {Array<Object>} */\n  const layerMapboxLayers = layer.get('mapbox-layers');\n  if (layerMapboxLayers.length === 1) {\n    throw new Error(\n      'Cannot remove last Mapbox layer from an OpenLayers layer.',\n    );\n  }\n  layerMapboxLayers.splice(layerMapboxLayers.indexOf(mapboxLayerId), 1);\n  const glStyle = mapOrGroup.get('mapbox-style');\n  const layers = glStyle.layers;\n  layers.splice(\n    layers.findIndex((layer) => layer.id === mapboxLayerId),\n    1,\n  );\n  const args = styleFunctionArgs[getStyleFunctionKey(glStyle, layer)];\n  if (args) {\n    const [\n      olLayer,\n      glStyle,\n      sourceOrLayers,\n      resolutions,\n      spriteData,\n      spriteImageUrl,\n      getFonts,\n      getImage,\n    ] = args;\n    if (Array.isArray(sourceOrLayers)) {\n      sourceOrLayers.splice(\n        sourceOrLayers.findIndex((layer) => layer === mapboxLayerId),\n        1,\n      );\n    }\n    applyStylefunction(\n      olLayer,\n      glStyle,\n      sourceOrLayers,\n      resolutions,\n      spriteData,\n      spriteImageUrl,\n      getFonts,\n      getImage,\n    );\n  } else {\n    getLayer(mapOrGroup, mapboxLayerId).changed();\n  }\n}\n\n/**\n * Get the OpenLayers layer instance that contains the provided Mapbox/MapLibre Style\n * `layer`. Note that multiple Mapbox/MapLibre Style layers are combined in a single\n * OpenLayers layer instance when they use the same Mapbox/MapLibre Style `source`.\n * @param {Map|LayerGroup} map OpenLayers Map or LayerGroup.\n * @param {string} layerId Mapbox/MapLibre Style layer id.\n * @return {Layer} OpenLayers layer instance.\n */\nexport function getLayer(map, layerId) {\n  const layers = map.getLayers().getArray();\n  for (let i = 0, ii = layers.length; i < ii; ++i) {\n    const mapboxLayers = layers[i].get('mapbox-layers');\n    if (mapboxLayers && mapboxLayers.indexOf(layerId) !== -1) {\n      return /** @type {Layer} */ (layers[i]);\n    }\n  }\n  return undefined;\n}\n\n/**\n * Get the OpenLayers layer instances for the provided Mapbox/MapLibre Style `source`.\n * @param {Map|LayerGroup} map OpenLayers Map or LayerGroup.\n * @param {string} sourceId Mapbox/MapLibre Style source id.\n * @return {Array<Layer>} OpenLayers layer instances.\n */\nexport function getLayers(map, sourceId) {\n  const result = [];\n  const layers = map.getLayers().getArray();\n  for (let i = 0, ii = layers.length; i < ii; ++i) {\n    if (layers[i].get('mapbox-source') === sourceId) {\n      result.push(/** @type {Layer} */ (layers[i]));\n    }\n  }\n  return result;\n}\n\n/**\n * Get the OpenLayers source instance for the provided Mapbox/MapLibre Style `source`.\n * @param {Map|LayerGroup} map OpenLayers Map or LayerGroup.\n * @param {string} sourceId Mapbox/MapLibre Style source id.\n * @return {Source} OpenLayers source instance.\n */\nexport function getSource(map, sourceId) {\n  const layers = map.getLayers().getArray();\n  for (let i = 0, ii = layers.length; i < ii; ++i) {\n    const source = /** @type {Layer} */ (layers[i]).getSource();\n    if (layers[i].get('mapbox-source') === sourceId) {\n      return source;\n    }\n  }\n  return undefined;\n}\n\n/**\n * Sets or removes a feature state. The feature state is taken into account for styling,\n * just like the feature's properties, and can be used e.g. to conditionally render selected\n * features differently.\n *\n * The feature state will be stored on the OpenLayers layer matching the feature identifier, in the\n * `mapbox-featurestate` property.\n * @param {Map|LayerGroup|VectorLayer|VectorTileLayer} mapOrLayer OpenLayers Map or layer to set the feature\n * state on.\n * @param {FeatureIdentifier} feature Feature identifier.\n * @param {Object|null} state Feature state. Set to `null` to remove the feature state.\n */\nexport function setFeatureState(mapOrLayer, feature, state) {\n  const layers =\n    'getLayers' in mapOrLayer\n      ? getLayers(mapOrLayer, feature.source)\n      : [mapOrLayer];\n  for (let i = 0, ii = layers.length; i < ii; ++i) {\n    const featureState = layers[i].get('mapbox-featurestate');\n    if (featureState) {\n      if (state) {\n        featureState[feature.id] = state;\n      } else {\n        delete featureState[feature.id];\n      }\n      layers[i].changed();\n    } else {\n      throw new Error(`Map or layer for source \"${feature.source}\" not found.`);\n    }\n  }\n}\n\n/**\n * Sets or removes a feature state. The feature state is taken into account for styling,\n * just like the feature's properties, and can be used e.g. to conditionally render selected\n * features differently.\n * @param {Map|LayerGroup|VectorLayer|VectorTileLayer} mapOrLayer Map or layer to set the feature state on.\n * @param {FeatureIdentifier} feature Feature identifier.\n * @return {Object|null} Feature state or `null` when no feature state is set for the given\n * feature identifier.\n */\nexport function getFeatureState(mapOrLayer, feature) {\n  const layers =\n    'getLayers' in mapOrLayer\n      ? getLayers(mapOrLayer, feature.source)\n      : [mapOrLayer];\n  for (let i = 0, ii = layers.length; i < ii; ++i) {\n    const featureState = layers[i].get('mapbox-featurestate');\n    if (featureState && featureState[feature.id]) {\n      return featureState[feature.id];\n    }\n  }\n  return undefined;\n}\n","/**\n * @module ol/source/XYZ\n */\n\nimport {createXYZ, extentFromProjection} from '../tilegrid.js';\nimport TileImage from './TileImage.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Deprecated.  Use the cacheSize option on the layer instead.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images.  Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {ReferrerPolicy} [referrerPolicy] The `referrerPolicy` property for loaded images.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling.  By default,\n * linear interpolation is used when resampling.  Set to false to use the nearest neighbor instead.\n * @property {import(\"../proj.js\").ProjectionLike} [projection='EPSG:3857'] Projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {number} [maxZoom=42] Optional max zoom level. Not used if `tileGrid` is provided.\n * @property {number} [minZoom=0] Optional min zoom level. Not used if `tileGrid` is provided.\n * @property {number} [maxResolution] Optional tile grid resolution at level zero. Not used if `tileGrid` is provided.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Deprecated.  Use an ImageTile source with a loader\n * instead.  Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n *   imageTile.getImage().src = src;\n * };\n * ```\n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service.\n * For example, if the tile service advertizes 256px by 256px tiles but actually sends 512px\n * by 512px images (for retina/hidpi devices) then `tilePixelRatio`\n * should be set to `2`.\n * @property {number|import(\"../size.js\").Size} [tileSize=[256, 256]] The tile size used by the tile service.\n * Not used if `tileGrid` is provided.\n * @property {number} [gutter=0] The size in pixels of the gutter around image tiles to ignore.\n * This allows artifacts of rendering at tile edges to be ignored.\n * Supported images should be wider and taller than the tile size by a value of `2 x gutter`.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Deprecated.  Use an ImageTile source and provide a function\n * for the url option instead.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`,\n * and `{z}` placeholders. A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`,\n * may be used instead of defining each one separately in the `urls` option.\n * @property {Array<string>} [urls] Deprecated.  Use an ImageTile source and provide an array of URLs for the\n * url option instead.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * @property {number} [transition=250] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n\n/**\n * @classdesc\n * Layer source for tile data with URLs in a set XYZ format that are\n * defined in a URL template. By default, this follows the widely-used\n * Google grid where `x` 0 and `y` 0 are in the top left. Grids like\n * TMS where `x` 0 and `y` 0 are in the bottom left can be used by\n * using the `{-y}` placeholder in the URL template, so long as the\n * source does not have a custom tile grid. In this case\n * a `tileUrlFunction` can be used, such as:\n * ```js\n *  tileUrlFunction: function(coordinate) {\n *    return 'http://mapserver.com/' + coordinate[0] + '/' +\n *      coordinate[1] + '/' + (-coordinate[2] - 1) + '.png';\n *  }\n * ```\n * @api\n */\nclass XYZ extends TileImage {\n  /**\n   * @param {Options} [options] XYZ options.\n   */\n  constructor(options) {\n    options = options || {};\n\n    const projection =\n      options.projection !== undefined ? options.projection : 'EPSG:3857';\n\n    const tileGrid =\n      options.tileGrid !== undefined\n        ? options.tileGrid\n        : createXYZ({\n            extent: extentFromProjection(projection),\n            maxResolution: options.maxResolution,\n            maxZoom: options.maxZoom,\n            minZoom: options.minZoom,\n            tileSize: options.tileSize,\n          });\n\n    super({\n      attributions: options.attributions,\n      cacheSize: options.cacheSize,\n      crossOrigin: options.crossOrigin,\n      referrerPolicy: options.referrerPolicy,\n      interpolate: options.interpolate,\n      projection: projection,\n      reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n      tileGrid: tileGrid,\n      tileLoadFunction: options.tileLoadFunction,\n      tilePixelRatio: options.tilePixelRatio,\n      tileUrlFunction: options.tileUrlFunction,\n      url: options.url,\n      urls: options.urls,\n      wrapX: options.wrapX !== undefined ? options.wrapX : true,\n      transition: options.transition,\n      attributionsCollapsible: options.attributionsCollapsible,\n      zDirection: options.zDirection,\n    });\n\n    /**\n     * @private\n     * @type {number}\n     */\n    this.gutter_ = options.gutter !== undefined ? options.gutter : 0;\n  }\n\n  /**\n   * @return {number} Gutter.\n   * @override\n   */\n  getGutter() {\n    return this.gutter_;\n  }\n}\n\nexport default XYZ;\n","import apply, { applyStyle } from \"ol-mapbox-style\";\nimport VectorTileLayer from \"ol/layer/VectorTile\";\nimport VectorTileSource from \"ol/source/VectorTile\";\nimport BaseLayer from \"ol/layer/Base\";\nimport {\n  BaseRasterLayerConfig,\n  BaseVectorTileLayerConfig,\n  LayerMeta,\n  OverlayVectorLayerConfig,\n} from \"../types/layers\";\nimport VectorSource from \"ol/source/Vector\";\nimport { Point, Polygon } from \"ol/geom\";\nimport { fromLonLat, get as getProjection } from \"ol/proj\";\nimport Feature from \"ol/Feature\";\nimport VectorLayer from \"ol/layer/Vector\";\nimport { StyleLike } from \"ol/style/Style\";\nimport { Fill, Stroke, Style } from \"ol/style\";\nimport CircleStyle from \"ol/style/Circle\";\nimport LayerGroup from \"ol/layer/Group\";\nimport MVT from \"ol/format/MVT\";\nimport TileLayer from \"ol/layer/Tile\";\nimport { XYZ } from \"ol/source\";\nimport { OverlayFeatureConfig } from \"../types/overlays\";\nimport { createXYZ } from \"ol/tilegrid\";\nimport { Collection } from \"ol\";\n\nexport const getDefaultOverlayStyle = (): StyleLike => (feature) => {\n  const geomType = feature.getGeometry()?.getType();\n  if (geomType === \"Point\") {\n    return new Style({\n      image: new CircleStyle({\n        radius: 6,\n        fill: new Fill({ color: \"#FF6600\" }),\n        stroke: new Stroke({ color: \"#fff\", width: 2 }),\n      }),\n    });\n  }\n\n  return new Style({\n    stroke: new Stroke({ color: \"#FF6600\", width: 2 }),\n    fill: new Fill({ color: \"rgba(255, 102, 0, 0.2)\" }),\n  });\n};\n\nexport const getOverlayVectorLayer = (\n  config: OverlayVectorLayerConfig\n): VectorLayer => {\n  const source = new VectorSource({\n    features: (config.data ?? []).map((item: OverlayFeatureConfig) => {\n      let geometry;\n      if (item.type === \"Point\") {\n        // Ensure coordinates are [longitude, latitude] for fromLonLat\n        const coords = item.coordinates as [number, number];\n        geometry = new Point(fromLonLat(coords));\n      } else {\n        console.log(\"item\", item);\n        // Polygons: OL expects [ [ [lon, lat], ... ], ... ] in EPSG:4326\n        geometry = new Polygon(item.coordinates as number[][][]).transform(\n          \"EPSG:4326\",\n          \"EPSG:3857\"\n        );\n      }\n\n      const feature = new Feature({\n        geometry,\n        id: item.id,\n        ...item.meta,\n      });\n\n      if (item.label) feature.set(\"label\", item.label);\n\n      return feature;\n    }),\n  });\n\n  const layer = new VectorLayer({\n    source,\n    visible: config.visible ?? true,\n    style: config.style ?? getDefaultOverlayStyle(),\n    zIndex: config.zIndex ?? 10,\n  });\n\n  layer.set(\"id\", config.id);\n  layer.set(\"kind\", config.kind);\n\n  return layer;\n};\n\nexport const getBaseVectorTileLayer = async (\n  layerConfig: BaseVectorTileLayerConfig\n): Promise<BaseLayer> => {\n  switch (layerConfig.provider) {\n    case \"mapbox\":\n    case \"maptiler\":\n      // use ol-mapbox-style\n      const mapLayer = new LayerGroup({\n        visible: layerConfig.visible,\n      }); // container layer\n      apply(mapLayer, layerConfig.styleUrl || layerConfig.url, {\n        accessToken: layerConfig.accessToken,\n      });\n      mapLayer.set(\"id\", layerConfig.id);\n      mapLayer.set(\"kind\", layerConfig.kind);\n      mapLayer.set(\"label\", layerConfig.label);\n\n      return attachMeta(mapLayer, {\n        visible: Boolean(layerConfig.visible),\n        label: layerConfig.label,\n        image: layerConfig.previewImage,\n      });\n\n    case \"arcgis\":\n      // ArcGIS VectorTileServer uses z/y/x in EPSG:4326.\n      function tileUrlFunction(tileCoord: unknown[]) {\n        const z = tileCoord[0];\n        const x = tileCoord[1];\n        const y = tileCoord[2]; // ArcGIS expects standard XYZ origin at top\n        return `${layerConfig.url}/tile/${z}/${y}/${x}.pbf`;\n      }\n      const arcgisStyleUrl = `${layerConfig.url}/resources/styles/root.json`;\n      const sourceProjection = getProjection(layerConfig.projection);\n\n      // OL VectorTile layer for ArcGIS\n      const layer = new VectorTileLayer({\n        source: new VectorTileSource({\n          attributions:\n            '© <a href=\"https://www.openstreetmap.org/copyright\">' +\n            \"OpenStreetMap contributors</a>\",\n          projection: sourceProjection!,\n          format: new MVT(),\n          tileGrid: createXYZ({\n            extent: sourceProjection?.getExtent(),\n            tileSize: 512,\n            maxZoom: 15,\n          }),\n          tileUrlFunction: tileUrlFunction,\n        }),\n        visible: layerConfig.visible,\n      });\n\n      layer.set(\"id\", layerConfig.id);\n      layer.set(\"kind\", layerConfig.kind);\n      layer.set(\"label\", layerConfig.label);\n\n      const layerWithMeta = attachMeta(layer, {\n        visible: Boolean(layerConfig.visible),\n        label: layerConfig.label,\n        image: layerConfig.previewImage,\n      });\n\n      await applyStyle(layerWithMeta, arcgisStyleUrl, \"esri\");\n      return layerWithMeta;\n    case \"custom\":\n      // assume valid style JSON or MVT endpoint; user handles mapping\n      const customLayer = new LayerGroup({\n        visible: layerConfig.visible,\n      });\n      apply(customLayer, layerConfig.styleUrl || layerConfig.url, {\n        accessToken: layerConfig.accessToken,\n      });\n      customLayer.set(\"id\", layerConfig.id);\n      customLayer.set(\"kind\", layerConfig.kind);\n      customLayer.set(\"label\", layerConfig.label);\n      return attachMeta(customLayer, {\n        visible: Boolean(layerConfig.visible),\n        label: layerConfig.label,\n        image: layerConfig.previewImage,\n      });\n\n    default:\n      throw new Error(`Unknown vector tile provider: ${layerConfig.provider}`);\n  }\n};\n\nexport const getBaseRasterLayer = (layerConfig: BaseRasterLayerConfig) => {\n  const layer = new TileLayer({\n    visible: layerConfig.visible ?? true,\n    source: new XYZ({\n      url: layerConfig.url,\n    }),\n  });\n\n  layer.set(\"id\", layerConfig.id);\n  layer.set(\"kind\", layerConfig.kind);\n  layer.set(\"label\", layerConfig.label);\n\n  const { previewImage: image, label, visible } = layerConfig;\n\n  return attachMeta(layer, { image, label, visible: Boolean(visible) });\n};\n\nexport const attachMeta = <T extends BaseLayer>(\n  layer: T,\n  meta: LayerMeta\n): T => {\n  layer.set(\"meta\", meta);\n  return layer;\n};\n\nexport const getMeta = (layer: BaseLayer): LayerMeta => layer.get(\"meta\");\n\nexport const MARKER_LAYER_ID = \"marker-layer\";\nexport const POLYGON_LAYER_ID = \"polygon-layer\";\n\nexport const attachTileLoadErrorLogging = (\n  layers: Collection<BaseLayer>,\n  onError: (e: Error) => void = (e) => console.warn(\"Tile error\", e)\n): (() => void) => {\n  const detachers: Array<() => void> = [];\n\n  layers.forEach((layer) => {\n    if (\n      !(\"getSource\" in layer) ||\n      typeof (layer as any).getSource !== \"function\"\n    )\n      return;\n\n    const src = (layer as any).getSource?.();\n    if (!src) return;\n\n    if (typeof src.on === \"function\" && typeof src.un === \"function\") {\n      src.on(\"tileloaderror\", onError);\n      detachers.push(() => src.un(\"tileloaderror\", onError));\n    }\n  });\n\n  return () => detachers.forEach((d) => d());\n};\n","import { Coordinate } from \"ol/coordinate\";\nimport { fromLonLat } from \"ol/proj\";\nimport View from \"ol/View\";\n\nexport const ensureView = (zoom: number = 2, center: Coordinate = [0, 0]) => {\n  if (!center) {\n    console.info(\"Center coordinates not set, using default\");\n  }\n\n  return new View({\n    constrainResolution: false,\n    zoom: zoom,\n    center: fromLonLat(center),\n    projection: \"EPSG:3857\",\n    minZoom: 0,\n  });\n};\n","/**\n * @module ol/control/FullScreen\n */\nimport MapProperty from '../MapProperty.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_UNSUPPORTED} from '../css.js';\nimport {replaceNode} from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport Control from './Control.js';\n\nconst events = ['fullscreenchange', 'webkitfullscreenchange'];\n\n/**\n * @enum {string}\n */\nconst FullScreenEventType = {\n  /**\n   * Triggered after the map entered fullscreen.\n   * @event FullScreenEventType#enterfullscreen\n   * @api\n   */\n  ENTERFULLSCREEN: 'enterfullscreen',\n\n  /**\n   * Triggered after the map leave fullscreen.\n   * @event FullScreenEventType#leavefullscreen\n   * @api\n   */\n  LEAVEFULLSCREEN: 'leavefullscreen',\n};\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature<import(\"../Observable\").EventTypes|\n *     'enterfullscreen'|'leavefullscreen', import(\"../events/Event.js\").default, Return> &\n *   import(\"../Observable\").OnSignature<import(\"../ObjectEventType\").Types, import(\"../Object\").ObjectEvent, Return> &\n *   import(\"../Observable\").CombinedOnSignature<import(\"../Observable\").EventTypes|\n *     'enterfullscreen'|'leavefullscreen'|import(\"../ObjectEventType\").Types, Return>} FullScreenOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-full-screen'] CSS class name.\n * @property {string|Text|HTMLElement} [label='\\u2922'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|Text|HTMLElement} [labelActive='\\u00d7'] Text label to use for the\n * button when full-screen is active.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [activeClassName=className + '-true'] CSS class name for the button\n * when full-screen is active.\n * @property {string} [inactiveClassName=className + '-false'] CSS class name for the button\n * when full-screen is inactive.\n * @property {string} [tipLabel='Toggle full-screen'] Text label to use for the button tip.\n * @property {boolean} [keys=false] Full keyboard access.\n * @property {HTMLElement|string} [target] Specify a target if you want the\n * control to be rendered outside of the map's viewport.\n * @property {HTMLElement|string} [source] The element to be displayed\n * fullscreen. When not provided, the element containing the map viewport will\n * be displayed fullscreen.\n */\n\n/**\n * @classdesc\n * Provides a button that when clicked fills up the full screen with the map.\n * The full screen source element is by default the element containing the map viewport unless\n * overridden by providing the `source` option. In which case, the dom\n * element introduced using this parameter will be displayed in full screen.\n *\n * When in full screen mode, a close button is shown to exit full screen mode.\n * The [Fullscreen API](https://www.w3.org/TR/fullscreen/) is used to\n * toggle the map in full screen mode.\n *\n * @fires FullScreenEventType#enterfullscreen\n * @fires FullScreenEventType#leavefullscreen\n * @api\n */\nclass FullScreen extends Control {\n  /**\n   * @param {Options} [options] Options.\n   */\n  constructor(options) {\n    options = options ? options : {};\n\n    super({\n      element: document.createElement('div'),\n      target: options.target,\n    });\n\n    /***\n     * @type {FullScreenOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.on;\n\n    /***\n     * @type {FullScreenOnSignature<import(\"../events\").EventsKey>}\n     */\n    this.once;\n\n    /***\n     * @type {FullScreenOnSignature<void>}\n     */\n    this.un;\n\n    /**\n     * @private\n     * @type {boolean}\n     */\n    this.keys_ = options.keys !== undefined ? options.keys : false;\n\n    /**\n     * @private\n     * @type {HTMLElement|string|undefined}\n     */\n    this.source_ = options.source;\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.isInFullscreen_ = false;\n\n    /**\n     * @private\n     */\n    this.boundHandleMapTargetChange_ = this.handleMapTargetChange_.bind(this);\n\n    /**\n     * @private\n     * @type {string}\n     */\n    this.cssClassName_ =\n      options.className !== undefined ? options.className : 'ol-full-screen';\n\n    /**\n     * @private\n     * @type {Array<import(\"../events.js\").EventsKey>}\n     */\n    this.documentListeners_ = [];\n\n    /**\n     * @private\n     * @type {Array<string>}\n     */\n    this.activeClassName_ =\n      options.activeClassName !== undefined\n        ? options.activeClassName.split(' ')\n        : [this.cssClassName_ + '-true'];\n\n    /**\n     * @private\n     * @type {Array<string>}\n     */\n    this.inactiveClassName_ =\n      options.inactiveClassName !== undefined\n        ? options.inactiveClassName.split(' ')\n        : [this.cssClassName_ + '-false'];\n\n    const label = options.label !== undefined ? options.label : '\\u2922';\n\n    /**\n     * @private\n     * @type {Text|HTMLElement}\n     */\n    this.labelNode_ =\n      typeof label === 'string' ? document.createTextNode(label) : label;\n\n    const labelActive =\n      options.labelActive !== undefined ? options.labelActive : '\\u00d7';\n\n    /**\n     * @private\n     * @type {Text|HTMLElement}\n     */\n    this.labelActiveNode_ =\n      typeof labelActive === 'string'\n        ? document.createTextNode(labelActive)\n        : labelActive;\n\n    const tipLabel = options.tipLabel ? options.tipLabel : 'Toggle full-screen';\n\n    /**\n     * @private\n     * @type {HTMLElement}\n     */\n    this.button_ = document.createElement('button');\n    this.button_.title = tipLabel;\n    this.button_.setAttribute('type', 'button');\n    this.button_.appendChild(this.labelNode_);\n    this.button_.addEventListener(\n      EventType.CLICK,\n      this.handleClick_.bind(this),\n      false,\n    );\n    this.setClassName_(this.button_, this.isInFullscreen_);\n\n    this.element.className = `${this.cssClassName_} ${CLASS_UNSELECTABLE} ${CLASS_CONTROL}`;\n    this.element.appendChild(this.button_);\n  }\n\n  /**\n   * @param {MouseEvent} event The event to handle\n   * @private\n   */\n  handleClick_(event) {\n    event.preventDefault();\n    this.handleFullScreen_();\n  }\n\n  /**\n   * @private\n   */\n  handleFullScreen_() {\n    const map = this.getMap();\n    if (!map) {\n      return;\n    }\n    const doc = map.getOwnerDocument();\n    if (!isFullScreenSupported(doc)) {\n      return;\n    }\n    if (isFullScreen(doc)) {\n      exitFullScreen(doc);\n    } else {\n      let element;\n      if (this.source_) {\n        element =\n          typeof this.source_ === 'string'\n            ? doc.getElementById(this.source_)\n            : this.source_;\n      } else {\n        element = map.getTargetElement();\n      }\n      if (this.keys_) {\n        requestFullScreenWithKeys(element);\n      } else {\n        requestFullScreen(element);\n      }\n    }\n  }\n\n  /**\n   * @private\n   */\n  handleFullScreenChange_() {\n    const map = this.getMap();\n    if (!map) {\n      return;\n    }\n    const wasInFullscreen = this.isInFullscreen_;\n    this.isInFullscreen_ = isFullScreen(map.getOwnerDocument());\n    if (wasInFullscreen !== this.isInFullscreen_) {\n      this.setClassName_(this.button_, this.isInFullscreen_);\n      if (this.isInFullscreen_) {\n        replaceNode(this.labelActiveNode_, this.labelNode_);\n        this.dispatchEvent(FullScreenEventType.ENTERFULLSCREEN);\n      } else {\n        replaceNode(this.labelNode_, this.labelActiveNode_);\n        this.dispatchEvent(FullScreenEventType.LEAVEFULLSCREEN);\n      }\n      map.updateSize();\n    }\n  }\n\n  /**\n   * @param {HTMLElement} element Target element\n   * @param {boolean} fullscreen True if fullscreen class name should be active\n   * @private\n   */\n  setClassName_(element, fullscreen) {\n    if (fullscreen) {\n      element.classList.remove(...this.inactiveClassName_);\n      element.classList.add(...this.activeClassName_);\n    } else {\n      element.classList.remove(...this.activeClassName_);\n      element.classList.add(...this.inactiveClassName_);\n    }\n  }\n\n  /**\n   * Remove the control from its current map and attach it to the new map.\n   * Pass `null` to just remove the control from the current map.\n   * Subclasses may set up event handlers to get notified about changes to\n   * the map here.\n   * @param {import(\"../Map.js\").default|null} map Map.\n   * @api\n   * @override\n   */\n  setMap(map) {\n    const oldMap = this.getMap();\n    if (oldMap) {\n      oldMap.removeChangeListener(\n        MapProperty.TARGET,\n        this.boundHandleMapTargetChange_,\n      );\n    }\n\n    super.setMap(map);\n\n    this.handleMapTargetChange_();\n    if (map) {\n      map.addChangeListener(\n        MapProperty.TARGET,\n        this.boundHandleMapTargetChange_,\n      );\n    }\n  }\n\n  /**\n   * @private\n   */\n  handleMapTargetChange_() {\n    const listeners = this.documentListeners_;\n    for (let i = 0, ii = listeners.length; i < ii; ++i) {\n      unlistenByKey(listeners[i]);\n    }\n    listeners.length = 0;\n\n    const map = this.getMap();\n    if (map) {\n      const doc = map.getOwnerDocument();\n      if (isFullScreenSupported(doc)) {\n        this.element.classList.remove(CLASS_UNSUPPORTED);\n      } else {\n        this.element.classList.add(CLASS_UNSUPPORTED);\n      }\n\n      for (let i = 0, ii = events.length; i < ii; ++i) {\n        listeners.push(\n          listen(doc, events[i], this.handleFullScreenChange_, this),\n        );\n      }\n      this.handleFullScreenChange_();\n    }\n  }\n}\n\n/**\n * @param {Document} doc The root document to check.\n * @return {boolean} Fullscreen is supported by the current platform.\n */\nfunction isFullScreenSupported(doc) {\n  const body = doc.body;\n  return !!(\n    body['webkitRequestFullscreen'] ||\n    (body.requestFullscreen && doc.fullscreenEnabled)\n  );\n}\n\n/**\n * @param {Document} doc The root document to check.\n * @return {boolean} Element is currently in fullscreen.\n */\nfunction isFullScreen(doc) {\n  return !!(doc['webkitIsFullScreen'] || doc.fullscreenElement);\n}\n\n/**\n * Request to fullscreen an element.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreen(element) {\n  if (element.requestFullscreen) {\n    element.requestFullscreen();\n  } else if (element['webkitRequestFullscreen']) {\n    element['webkitRequestFullscreen']();\n  }\n}\n\n/**\n * Request to fullscreen an element with keyboard input.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreenWithKeys(element) {\n  if (element['webkitRequestFullscreen']) {\n    element['webkitRequestFullscreen']();\n  } else {\n    requestFullScreen(element);\n  }\n}\n\n/**\n * Exit fullscreen.\n * @param {Document} doc The document to exit fullscren from\n */\nfunction exitFullScreen(doc) {\n  if (doc.exitFullscreen) {\n    doc.exitFullscreen();\n  } else if (doc['webkitExitFullscreen']) {\n    doc['webkitExitFullscreen']();\n  }\n}\n\nexport default FullScreen;\n","import {\n  defaults as olDefaultControls,\n  Zoom,\n  Rotate,\n  FullScreen,\n} from \"ol/control\";\n\nimport { MapControlsConfig } from \"../types\";\n\nconst createDefaultControls = () =>\n  olDefaultControls({\n    zoom: false,\n    rotate: false,\n    attribution: true,\n  });\n\nexport const buildControls = (\n  controls?: Partial<MapControlsConfig>,\n  createControls = createDefaultControls\n) => {\n  const olControls = createControls();\n\n  if (controls?.showZoom) olControls.push(new Zoom());\n  if (controls?.showRotate) olControls.push(new Rotate());\n  if (controls?.showFullScreen) olControls.push(new FullScreen());\n\n  return olControls;\n};\n","import OlMap from \"ol/Map\";\nimport View from \"ol/View\";\nimport BaseLayer from \"ol/layer/Base\";\nimport { Collection } from \"ol\";\nimport { Control } from \"ol/control\";\n\nexport const createMap = ({\n  target,\n  layers,\n  view,\n  controls,\n}: {\n  target: HTMLElement;\n  layers: BaseLayer[];\n  view: View;\n  controls?: Collection<Control>;\n}) => {\n  console.log({ layers, view });\n  return new OlMap({\n    target,\n    layers,\n    view,\n    controls,\n  });\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport Feature from \"ol/Feature\";\nimport View from \"ol/View\";\nimport { MapCanvasV2Props } from \"../../types/map-types\";\nimport { fitToFeature, fitToFeatures } from \"../../composites/BasicMap/interactions/addPanToFeature\";\nimport { addSelectInteraction } from \"../../composites/BasicMap/interactions/addSelectInteraction\";\nimport { findVectorLayerById } from \"../../utils/feature\";\nimport { attachTileLoadErrorLogging, MARKER_LAYER_ID } from \"../../utils/layers\";\nimport { ensureView } from \"../../utils/ensureView\";\nimport \"ol/ol.css\";\nimport { buildControls } from \"../../utils/buildControls\";\nimport { createMap } from \"../../utils/mapFactory\";\nimport Collection from \"ol/Collection\";\n\nexport const MapCanvasV2: React.FC<MapCanvasV2Props> = ({\n\tzoom,\n\tcenter,\n\tonFeatureClick,\n\tlayers,\n\tmapInstanceRef,\n\tcontrols\n}) => {\n\tconst [mapReady, setMapReady] = useState(false);\n\tconst mapRef = useRef<HTMLDivElement>(null);\n\tconst viewRef = useRef<View>(ensureView(zoom, center));\n\n\tuseEffect(() => {\n\t\tif (!mapRef.current || mapInstanceRef.current) return;\n\t\tmapInstanceRef.current = createMap({\n\t\t\ttarget: mapRef.current,\n\t\t\tcontrols: buildControls(controls),\n\t\t\tlayers,\n\t\t\tview: viewRef.current\n\t\t})\n\n\t\tsetMapReady(true);\n\t\treturn () => {\n\t\t\tmapInstanceRef.current?.setTarget(undefined);\n\t\t\tmapInstanceRef.current = null;\n\t\t\tsetMapReady(false);\n\t\t}\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (!mapReady) return;\n\t\tconst map = mapInstanceRef.current;\n\t\tif (!map) return;\n\n\t\tmap.getLayerGroup().setLayers(new Collection(layers));\n\t}, [layers, mapReady]);\n\n\tuseEffect(() => {\n\t\tconst map = mapInstanceRef.current;\n\t\tif (!map || layers.length === 0) return;\n\n\t\tconst detach = attachTileLoadErrorLogging(\n\t\t\tmap.getLayers(),\n\t\t\t(e: Error) => console.warn(\"Tile error\", e)\n\t\t);\n\n\t\treturn detach;\n\t}, [layers, mapReady]);\n\n\tuseEffect(() => {\n\t\tconst map = mapInstanceRef.current;\n\t\tif (!map || layers.length === 0) return;\n\n\t\tattachTileLoadErrorLogging(\n\t\t\tmap.getLayers(),\n\t\t\t(e: Error) => console.warn(\"Tile error\", e)\n\t\t);\n\n\t\tconst markerLayer = findVectorLayerById(layers, MARKER_LAYER_ID);\n\t\tif (!markerLayer) {\n\t\t\tconsole.debug(\"No marker layer configured\");\n\t\t\treturn\n\t\t}\n\n\t\tconst select = addSelectInteraction({\n\t\t\tmap,\n\t\t\tlayer: markerLayer,\n\t\t\tonSelect: (features: Feature[]) => {\n\t\t\t\tconst ids = features\n\t\t\t\t\t.map(f => f.getId?.())\n\t\t\t\t\t.filter((id): id is string => typeof id === \"string\");\n\t\t\t\tif (features.length === 1) {\n\t\t\t\t\tfitToFeature(mapInstanceRef.current!, features[0]);\n\t\t\t\t} else {\n\t\t\t\t\tfitToFeatures(mapInstanceRef.current!, features);\n\t\t\t\t}\n\n\t\t\t\tif (onFeatureClick) {\n\t\t\t\t\tonFeatureClick(ids);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\n\t\treturn () => {\n\t\t\tmapInstanceRef.current?.removeInteraction(select);\n\t\t};\n\t}, [layers]);\n\n\treturn <div id=\"TelicentMap\" className=\"map-container\" style={{\n\t\twidth: \"100%\", height: \"100%\", background: \"#f8f4f0\"\n\t}} ref={mapRef}></div>\n}\n","import * as React from \"react\";\nimport MUIMenu from \"@mui/material/Menu\";\nimport MUIMenuItem from \"@mui/material/MenuItem\";\nimport MUIDivider from \"@mui/material/Divider\";\nimport MUIListItemIcon from \"@mui/material/ListItemIcon\";\nimport MUIListItemText from \"@mui/material/ListItemText\";\nimport { SxProps } from \"@mui/material\";\nimport { Theme } from \"@emotion/react\";\n\nexport type MenuOption = {\n  id: string;\n  label: React.ReactNode;\n  onClick?: () => void;\n\n  disabled?: boolean;\n  icon?: React.ReactNode;\n\n  href?: string;\n  target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\";\n  dividerAbove?: boolean;\n  selected?: boolean;\n};\n\ntype MenuProps = {\n  \"aria-label\"?: string;\n\n  button: (props: {\n    onClick: (e: React.MouseEvent<HTMLElement>) => void;\n    \"aria-controls\": string | undefined;\n    \"aria-haspopup\": true;\n    \"aria-expanded\": boolean | undefined;\n  }) => React.ReactNode;\n\n  options: MenuOption[];\n\n  onSelect?: (option: MenuOption) => void;\n  onOpenChange?: (open: boolean) => void;\n\n  menuId?: string;\n  anchorOrigin?: React.ComponentProps<typeof MUIMenu>[\"anchorOrigin\"];\n  transformOrigin?: React.ComponentProps<typeof MUIMenu>[\"transformOrigin\"];\n  autoFocusSelected?: boolean;\n\n  sx?: SxProps<Theme>;\n};\n\nexport const Menu: React.FC<MenuProps> = ({\n  \"aria-label\": ariaLabel,\n  button,\n  options,\n  onSelect,\n  onOpenChange,\n  menuId = \"menu\",\n  anchorOrigin = { vertical: \"bottom\", horizontal: \"right\" },\n  transformOrigin = { vertical: \"top\", horizontal: \"right\" },\n  autoFocusSelected = true,\n  sx,\n}) => {\n  const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\n  const open = Boolean(anchorEl);\n\n  const selectedIndex = React.useMemo(() => options.findIndex((o) => o.selected), [options]);\n\n  const handleOpen = (e: React.MouseEvent<HTMLElement>) => {\n    setAnchorEl(e.currentTarget);\n    onOpenChange?.(true);\n  };\n\n  const handleClose = () => {\n    setAnchorEl(null);\n    onOpenChange?.(false);\n  };\n\n  const ariaControls = open ? menuId : undefined;\n\n  return (\n    <>\n      {button({\n        onClick: handleOpen,\n        \"aria-controls\": ariaControls,\n        \"aria-haspopup\": true,\n        \"aria-expanded\": open ? true : undefined,\n      })}\n\n      <MUIMenu\n        id={menuId}\n        anchorEl={anchorEl}\n        open={open}\n        onClose={handleClose}\n        anchorOrigin={anchorOrigin}\n        transformOrigin={transformOrigin}\n        MenuListProps={{\n          \"aria-label\": ariaLabel,\n          ...(autoFocusSelected && selectedIndex >= 0 ? { autoFocusItem: true } : {}),\n        }}\n        sx={sx}\n      >\n        {options.map((opt, idx) => (\n          <React.Fragment key={opt.id}>\n            {opt.dividerAbove && <MUIDivider />}\n            <MUIMenuItem\n              disabled={opt.disabled}\n              selected={Boolean(opt.selected)}\n              autoFocus={autoFocusSelected && idx === selectedIndex}\n              aria-selected={opt.selected ? \"true\" : undefined}\n              onClick={() => {\n                if (opt.href) window.open(opt.href, opt.target ?? \"_self\");\n\n                opt.onClick?.();\n                onSelect?.(opt);\n                handleClose();\n              }}\n            >\n              {opt.icon ? <MUIListItemIcon>{opt.icon}</MUIListItemIcon> : null}\n              <MUIListItemText>{opt.label}</MUIListItemText>\n            </MUIMenuItem>\n          </React.Fragment>\n        ))}\n      </MUIMenu>\n    </>\n  );\n};\n","import React, { useMemo, useEffect, useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faAngleDown, faAngleUp } from \"@fortawesome/free-solid-svg-icons\";\nimport type BaseLayer from \"ol/layer/Base\";\n\nimport { Button, Text, useExtendedTheme } from \"../../../../../export\";\nimport { Image } from \"../../../primitives/LayerSelector/primitives/Image\";\nimport type { LayerSelectorProps } from \"../../types/map-types\";\nimport { getMeta } from \"../../utils/layers\";\n\nimport { Menu, type MenuOption } from \"../../../../../components/Navigation/Menu/Menu\";\n\nconst resolveVisibleBaseLayerIndex = (layers: BaseLayer[]): number => {\n  const storedLabel = localStorage.getItem(\"map.baselayer\");\n  const baseLayers = layers.filter((l) => l.get(\"kind\") !== \"overlay-vector\");\n\n  if (storedLabel) {\n    const storedIndex = baseLayers.findIndex((l) => getMeta(l)?.label === storedLabel);\n    if (storedIndex !== -1) return storedIndex;\n  }\n\n  const configIndex = baseLayers.findIndex((l) => getMeta(l)?.visible);\n  if (configIndex !== -1) return configIndex;\n\n  return 0;\n};\n\nexport const LayerSelectorV2: React.FC<LayerSelectorProps> = ({ layers, style = {} }) => {\n  const theme = useExtendedTheme();\n\n  const initialIndex = resolveVisibleBaseLayerIndex(layers);\n  const [selectedIndex, setSelectedIndex] = useState(initialIndex !== -1 ? initialIndex : 0);\n\n  const baseLayers = useMemo(() => layers.filter((l) => l.get(\"kind\")?.startsWith(\"base\")), [layers]);\n\n  const selectedMeta = useMemo(() => getMeta(baseLayers[selectedIndex]), [baseLayers, selectedIndex]);\n\n  const handleSelect = (label: string) => {\n    localStorage.setItem(\"map.baselayer\", label);\n\n    layers.forEach((layer) => {\n      const meta = getMeta(layer);\n      if (layer.get(\"kind\") === \"overlay-vector\") return;\n\n      const visible = meta?.label === label;\n      layer.setVisible(visible);\n\n      if (visible) {\n        const idx = baseLayers.findIndex((bl) => getMeta(bl)?.label === label);\n        if (idx !== -1) setSelectedIndex(idx);\n      }\n    });\n  };\n\n  useEffect(() => {\n    const storedLabel = localStorage.getItem(\"map.baselayer\");\n\n    if (storedLabel) {\n      handleSelect(storedLabel);\n      return;\n    }\n\n    // If nothing stored, align selector with any layer marked visible in config\n    const idx = baseLayers.findIndex((l) => getMeta(l)?.visible);\n    setSelectedIndex(idx !== -1 ? idx : 0);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [layers]);\n\n  if (baseLayers.length <= 1 || selectedIndex == null) return null;\n\n  const options: MenuOption[] = baseLayers.map((layer, index) => {\n    const meta = getMeta(layer);\n    const isSelected = index === selectedIndex;\n\n    return {\n      id: meta.label,\n      onClick: () => handleSelect(meta.label),\n      selected: isSelected,\n\n      icon: <Image src={meta.image} role=\"presentation\" title={meta.label} />,\n      label: (\n        <Text textTransform=\"capitalize\" variant=\"body2\">\n          {meta.label}\n        </Text>\n      ),\n    };\n  });\n\n  return (\n    <div id=\"layer-selector\" style={{ ...style }}>\n      <Menu\n        aria-label=\"layer selector\"\n        menuId=\"layer-selector-menu\"\n        options={options}\n        anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n        transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\n        button={(btnProps) => (\n          <Button\n            {...btnProps}\n            id=\"layer-selector\"\n            variant=\"text\"\n            sx={{\n              p: 1,\n              display: \"flex\",\n              alignItems: \"center\",\n              gap: \"6px\",\n              backgroundColor: \"#1D1D1D\",\n              color: \"white\",\n              \"&:hover\": { color: theme.palette.primary.main, backgroundColor: \"#1D1D1D\" },\n            }}\n          >\n            {selectedMeta?.image ? (\n              <Image src={selectedMeta.image} alt={selectedMeta.label} title={selectedMeta.label} />\n            ) : null}\n\n            <FontAwesomeIcon icon={btnProps[\"aria-expanded\"] ? faAngleUp : faAngleDown} />\n          </Button>\n        )}\n      />\n    </div>\n  );\n};\n","import type { IconDefinition } from \"@fortawesome/fontawesome-common-types\";\n\ntype ResolveStatus = \"ready\" | \"missing\" | \"loading\" | \"invalid\";\n\ninterface ResolveResult {\n  path?: string;\n  status: ResolveStatus;\n}\n\ntype FaIconLoader = (faIcon: string) => Promise<IconDefinition | undefined>;\n\n/* ------------------------------------------------------------------ */\n/* Cache                                                              */\n/* ------------------------------------------------------------------ */\n\nconst svgPathCache = new Map<string, string | undefined>();\nconst inflightLoads = new Map<string, Promise<string | undefined>>();\n\n/* ------------------------------------------------------------------ */\n/* Loader registry                                                    */\n/* ------------------------------------------------------------------ */\n\nconst loaders: FaIconLoader[] = [];\n\n/**\n * Register an icon loader (app or library).\n * Loaders are tried in registration order.\n */\nexport const registerFaIconLoader = (loader: FaIconLoader): void => {\n  loaders.unshift(loader); // app loaders take precedence\n};\n\n/* ------------------------------------------------------------------ */\n/* Default FREE icon loader (library safe)                            */\n/* ------------------------------------------------------------------ */\n\nconst classToIconName = (faClass: string): string => {\n  const parts = faClass.trim().split(/\\s+/);\n  const name = parts[1] ?? \"\";\n\n  return (\n    \"fa\" +\n    name\n      .replace(\"fa-\", \"\")\n      .replace(/^-/, \"\")\n      .replace(/-./g, (x) => x[1].toUpperCase())\n      .replace(/^./, (x) => x.toUpperCase())\n  );\n};\n\nconst isIconDefinition = (value: unknown): value is IconDefinition => {\n  return (\n    !!value &&\n    typeof value === \"object\" &&\n    \"icon\" in value &&\n    Array.isArray((value as IconDefinition).icon)\n  );\n};\n\nconst freeLoader: FaIconLoader = async (faClass) => {\n  const [prefix] = faClass.trim().split(/\\s+/);\n  const iconName = classToIconName(faClass);\n\n  try {\n    const mod =\n      prefix === \"fa-solid\"\n        ? await import(\"@fortawesome/free-solid-svg-icons\")\n        : await import(\"@fortawesome/free-regular-svg-icons\");\n\n    const candidate = (mod as Record<string, unknown>)[iconName];\n\n    return isIconDefinition(candidate) ? candidate : undefined;\n  } catch {\n    return undefined;\n  }\n};\n\n/* register default loader LAST (lowest priority) */\nloaders.push(freeLoader);\n\n/* ------------------------------------------------------------------ */\n/* Resolution                                                         */\n/* ------------------------------------------------------------------ */\n\nexport const resolveFaIconPath = (\n  faIcon?: string | IconDefinition\n): ResolveResult => {\n  if (!faIcon) return { status: \"missing\" };\n\n  if (typeof faIcon !== \"string\") {\n    const path = faIcon.icon?.[4] as string | undefined;\n    return { path, status: path ? \"ready\" : \"invalid\" };\n  }\n\n  if (svgPathCache.has(faIcon)) {\n    const path = svgPathCache.get(faIcon);\n    return { path, status: path ? \"ready\" : \"invalid\" };\n  }\n\n  if (inflightLoads.has(faIcon)) {\n    return { status: \"loading\" };\n  }\n\n  return { status: \"missing\" };\n};\n\n/**\n * Ensure an icon is loaded using the loader chain.\n */\nexport const ensureFaIconPath = async (\n  faIcon: string\n): Promise<string | undefined> => {\n  if (svgPathCache.has(faIcon)) {\n    return svgPathCache.get(faIcon);\n  }\n\n  if (inflightLoads.has(faIcon)) {\n    return inflightLoads.get(faIcon)!;\n  }\n\n  const promise = (async () => {\n    try {\n      for (const loader of loaders) {\n        const def = await loader(faIcon);\n        if (def?.icon?.[4]) {\n          const path = def.icon[4] as string;\n          svgPathCache.set(faIcon, path);\n          return path;\n        }\n      }\n\n      svgPathCache.set(faIcon, undefined);\n      return undefined;\n    } finally {\n      inflightLoads.delete(faIcon);\n    }\n  })();\n\n  inflightLoads.set(faIcon, promise);\n  return promise;\n};\n","/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n  function ctor() { this.constructor = child; }\n  ctor.prototype = parent.prototype;\n  child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n  this.message  = message;\n  this.expected = expected;\n  this.found    = found;\n  this.location = location;\n  this.name     = \"SyntaxError\";\n\n  if (typeof Error.captureStackTrace === \"function\") {\n    Error.captureStackTrace(this, peg$SyntaxError);\n  }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n  var DESCRIBE_EXPECTATION_FNS = {\n        literal: function(expectation) {\n          return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n        },\n\n        \"class\": function(expectation) {\n          var escapedParts = \"\",\n              i;\n\n          for (i = 0; i < expectation.parts.length; i++) {\n            escapedParts += expectation.parts[i] instanceof Array\n              ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n              : classEscape(expectation.parts[i]);\n          }\n\n          return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n        },\n\n        any: function(expectation) {\n          return \"any character\";\n        },\n\n        end: function(expectation) {\n          return \"end of input\";\n        },\n\n        other: function(expectation) {\n          return expectation.description;\n        }\n      };\n\n  function hex(ch) {\n    return ch.charCodeAt(0).toString(16).toUpperCase();\n  }\n\n  function literalEscape(s) {\n    return s\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\"/g,  '\\\\\"')\n      .replace(/\\0/g, '\\\\0')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\n/g, '\\\\n')\n      .replace(/\\r/g, '\\\\r')\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n  }\n\n  function classEscape(s) {\n    return s\n      .replace(/\\\\/g, '\\\\\\\\')\n      .replace(/\\]/g, '\\\\]')\n      .replace(/\\^/g, '\\\\^')\n      .replace(/-/g,  '\\\\-')\n      .replace(/\\0/g, '\\\\0')\n      .replace(/\\t/g, '\\\\t')\n      .replace(/\\n/g, '\\\\n')\n      .replace(/\\r/g, '\\\\r')\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return '\\\\x0' + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x'  + hex(ch); });\n  }\n\n  function describeExpectation(expectation) {\n    return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n  }\n\n  function describeExpected(expected) {\n    var descriptions = new Array(expected.length),\n        i, j;\n\n    for (i = 0; i < expected.length; i++) {\n      descriptions[i] = describeExpectation(expected[i]);\n    }\n\n    descriptions.sort();\n\n    if (descriptions.length > 0) {\n      for (i = 1, j = 1; i < descriptions.length; i++) {\n        if (descriptions[i - 1] !== descriptions[i]) {\n          descriptions[j] = descriptions[i];\n          j++;\n        }\n      }\n      descriptions.length = j;\n    }\n\n    switch (descriptions.length) {\n      case 1:\n        return descriptions[0];\n\n      case 2:\n        return descriptions[0] + \" or \" + descriptions[1];\n\n      default:\n        return descriptions.slice(0, -1).join(\", \")\n          + \", or \"\n          + descriptions[descriptions.length - 1];\n    }\n  }\n\n  function describeFound(found) {\n    return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n  }\n\n  return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n  options = options !== void 0 ? options : {};\n\n  var peg$FAILED = {},\n\n      peg$startRuleFunctions = { svg_path: peg$parsesvg_path },\n      peg$startRuleFunction  = peg$parsesvg_path,\n\n      peg$c0 = function(data) {\n          if (!data) return [];\n          for (var cmds=[],i=0;i<data.length;i++) cmds=cmds.concat.apply(cmds,data[i]);\n          var first=cmds[0];\n          if (first && first.code=='m'){ // Per spec, first moveto is never relative\n            delete first.relative;\n            first.code = 'M';\n          }\n          return cmds;\n        },\n      peg$c1 = function(first, more) { return merge(first,more) },\n      peg$c2 = /^[Mm]/,\n      peg$c3 = peg$classExpectation([\"M\", \"m\"], false, false),\n      peg$c4 = function(c, first, more) {\n          var move = commands(c,[first]);\n          if (more) move = move.concat(commands(c=='M' ? 'L' : 'l',more[1]));\n          return move;\n        },\n      peg$c5 = /^[Zz]/,\n      peg$c6 = peg$classExpectation([\"Z\", \"z\"], false, false),\n      peg$c7 = function() { return commands('Z') },\n      peg$c8 = /^[Ll]/,\n      peg$c9 = peg$classExpectation([\"L\", \"l\"], false, false),\n      peg$c10 = function(c, args) { return commands(c,args) },\n      peg$c11 = /^[Hh]/,\n      peg$c12 = peg$classExpectation([\"H\", \"h\"], false, false),\n      peg$c13 = function(c, args) { return commands(c,args.map(function(x){ return {x:x}})) },\n      peg$c14 = /^[Vv]/,\n      peg$c15 = peg$classExpectation([\"V\", \"v\"], false, false),\n      peg$c16 = function(c, args) { return commands(c,args.map(function(y){ return {y:y}})) },\n      peg$c17 = /^[Cc]/,\n      peg$c18 = peg$classExpectation([\"C\", \"c\"], false, false),\n      peg$c19 = function(a, b, c) { return { x1:a.x, y1:a.y, x2:b.x, y2:b.y, x:c.x, y:c.y } },\n      peg$c20 = /^[Ss]/,\n      peg$c21 = peg$classExpectation([\"S\", \"s\"], false, false),\n      peg$c22 = function(b, c) { return { x2:b.x, y2:b.y, x:c.x, y:c.y } },\n      peg$c23 = /^[Qq]/,\n      peg$c24 = peg$classExpectation([\"Q\", \"q\"], false, false),\n      peg$c25 = function(a, b) { return { x1:a.x, y1:a.y, x:b.x, y:b.y } },\n      peg$c26 = /^[Tt]/,\n      peg$c27 = peg$classExpectation([\"T\", \"t\"], false, false),\n      peg$c28 = /^[Aa]/,\n      peg$c29 = peg$classExpectation([\"A\", \"a\"], false, false),\n      peg$c30 = function(rx, ry, xrot, large, sweep, xy) { return { rx:rx, ry:ry, xAxisRotation:xrot, largeArc:large, sweep:sweep, x:xy.x, y:xy.y } },\n      peg$c31 = function(x, y) { return { x:x, y:y } },\n      peg$c32 = function(n) { return n*1 },\n      peg$c33 = function(parts) { return parts.join('')*1 },\n      peg$c34 = /^[01]/,\n      peg$c35 = peg$classExpectation([\"0\", \"1\"], false, false),\n      peg$c36 = function(bit) { return bit=='1' },\n      peg$c37 = function() { return '' },\n      peg$c38 = \",\",\n      peg$c39 = peg$literalExpectation(\",\", false),\n      peg$c40 = function(parts) { return parts.join('') },\n      peg$c41 = \".\",\n      peg$c42 = peg$literalExpectation(\".\", false),\n      peg$c43 = /^[eE]/,\n      peg$c44 = peg$classExpectation([\"e\", \"E\"], false, false),\n      peg$c45 = /^[+\\-]/,\n      peg$c46 = peg$classExpectation([\"+\", \"-\"], false, false),\n      peg$c47 = /^[0-9]/,\n      peg$c48 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n      peg$c49 = function(digits) { return digits.join('') },\n      peg$c50 = /^[ \\t\\n\\r]/,\n      peg$c51 = peg$classExpectation([\" \", \"\\t\", \"\\n\", \"\\r\"], false, false),\n\n      peg$currPos          = 0,\n      peg$savedPos         = 0,\n      peg$posDetailsCache  = [{ line: 1, column: 1 }],\n      peg$maxFailPos       = 0,\n      peg$maxFailExpected  = [],\n      peg$silentFails      = 0,\n\n      peg$result;\n\n  if (\"startRule\" in options) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text() {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function location() {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description, location) {\n    location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location\n    );\n  }\n\n  function error(message, location) {\n    location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n    throw peg$buildSimpleError(message, location);\n  }\n\n  function peg$literalExpectation(text, ignoreCase) {\n    return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts, inverted, ignoreCase) {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation() {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation() {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description) {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos) {\n    var details = peg$posDetailsCache[pos], p;\n\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line:   details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos, endPos) {\n    var startPosDetails = peg$computePosDetails(startPos),\n        endPosDetails   = peg$computePosDetails(endPos);\n\n    return {\n      start: {\n        offset: startPos,\n        line:   startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line:   endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n  }\n\n  function peg$fail(expected) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected);\n  }\n\n  function peg$buildSimpleError(message, location) {\n    return new peg$SyntaxError(message, null, null, location);\n  }\n\n  function peg$buildStructuredError(expected, found, location) {\n    return new peg$SyntaxError(\n      peg$SyntaxError.buildMessage(expected, found),\n      expected,\n      found,\n      location\n    );\n  }\n\n  function peg$parsesvg_path() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parsewsp();\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$parsewsp();\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsemoveTo_drawTo_commandGroups();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$parsewsp();\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$parsewsp();\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsemoveTo_drawTo_commandGroups() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsemoveTo_drawTo_commandGroup();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = [];\n      s5 = peg$parsewsp();\n      while (s5 !== peg$FAILED) {\n        s4.push(s5);\n        s5 = peg$parsewsp();\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parsemoveTo_drawTo_commandGroup();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = peg$parsewsp();\n        while (s5 !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$parsewsp();\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsemoveTo_drawTo_commandGroup();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsemoveTo_drawTo_commandGroup() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsemoveto();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = [];\n      s5 = peg$parsewsp();\n      while (s5 !== peg$FAILED) {\n        s4.push(s5);\n        s5 = peg$parsewsp();\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parsedrawto_command();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = peg$parsewsp();\n        while (s5 !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$parsewsp();\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsedrawto_command();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsedrawto_command() {\n    var s0;\n\n    s0 = peg$parseclosepath();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parselineto();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parsehorizontal_lineto();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parsevertical_lineto();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parsecurveto();\n            if (s0 === peg$FAILED) {\n              s0 = peg$parsesmooth_curveto();\n              if (s0 === peg$FAILED) {\n                s0 = peg$parsequadratic_bezier_curveto();\n                if (s0 === peg$FAILED) {\n                  s0 = peg$parsesmooth_quadratic_bezier_curveto();\n                  if (s0 === peg$FAILED) {\n                    s0 = peg$parseelliptical_arc();\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsemoveto() {\n    var s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    if (peg$c2.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c3); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsewsp();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsewsp();\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsecoordinate_pair();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$currPos;\n          s5 = peg$parsecomma_wsp();\n          if (s5 === peg$FAILED) {\n            s5 = null;\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parselineto_argument_sequence();\n            if (s6 !== peg$FAILED) {\n              s5 = [s5, s6];\n              s4 = s5;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c4(s1, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseclosepath() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    if (peg$c5.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c6); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c7();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parselineto() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (peg$c8.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c9); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsewsp();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsewsp();\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parselineto_argument_sequence();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c10(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parselineto_argument_sequence() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsecoordinate_pair();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parsecomma_wsp();\n      if (s4 === peg$FAILED) {\n        s4 = null;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parsecoordinate_pair();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parsecomma_wsp();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsecoordinate_pair();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsehorizontal_lineto() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (peg$c11.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c12); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsewsp();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsewsp();\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsecoordinate_sequence();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c13(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecoordinate_sequence() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsenumber();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parsecomma_wsp();\n      if (s4 === peg$FAILED) {\n        s4 = null;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parsenumber();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parsecomma_wsp();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsenumber();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsevertical_lineto() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (peg$c14.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c15); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsewsp();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsewsp();\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsecoordinate_sequence();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c16(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecurveto() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (peg$c17.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c18); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsewsp();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsewsp();\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsecurveto_argument_sequence();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c10(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecurveto_argument_sequence() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsecurveto_argument();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parsecomma_wsp();\n      if (s4 === peg$FAILED) {\n        s4 = null;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parsecurveto_argument();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parsecomma_wsp();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsecurveto_argument();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecurveto_argument() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsecoordinate_pair();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsecomma_wsp();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsecoordinate_pair();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parsecomma_wsp();\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsecoordinate_pair();\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c19(s1, s3, s5);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsesmooth_curveto() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (peg$c20.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c21); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsewsp();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsewsp();\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsesmooth_curveto_argument_sequence();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c10(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsesmooth_curveto_argument_sequence() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsesmooth_curveto_argument();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parsecomma_wsp();\n      if (s4 === peg$FAILED) {\n        s4 = null;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parsesmooth_curveto_argument();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parsecomma_wsp();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsesmooth_curveto_argument();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsesmooth_curveto_argument() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parsecoordinate_pair();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsecomma_wsp();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsecoordinate_pair();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c22(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsequadratic_bezier_curveto() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (peg$c23.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c24); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsewsp();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsewsp();\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsequadratic_bezier_curveto_argument_sequence();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c10(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsequadratic_bezier_curveto_argument_sequence() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsequadratic_bezier_curveto_argument();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parsecomma_wsp();\n      if (s4 === peg$FAILED) {\n        s4 = null;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parsequadratic_bezier_curveto_argument();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parsecomma_wsp();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsequadratic_bezier_curveto_argument();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsequadratic_bezier_curveto_argument() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parsecoordinate_pair();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsecomma_wsp();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsecoordinate_pair();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c25(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsesmooth_quadratic_bezier_curveto() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (peg$c26.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c27); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsewsp();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsewsp();\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsesmooth_quadratic_bezier_curveto_argument_sequence();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c10(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsesmooth_quadratic_bezier_curveto_argument_sequence() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsecoordinate_pair();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parsecomma_wsp();\n      if (s4 === peg$FAILED) {\n        s4 = null;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parsecoordinate_pair();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parsecomma_wsp();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsecoordinate_pair();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseelliptical_arc() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (peg$c28.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c29); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsewsp();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsewsp();\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseelliptical_arc_argument_sequence();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c10(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseelliptical_arc_argument_sequence() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseelliptical_arc_argument();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parsecomma_wsp();\n      if (s4 === peg$FAILED) {\n        s4 = null;\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseelliptical_arc_argument();\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parsecomma_wsp();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseelliptical_arc_argument();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseelliptical_arc_argument() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n    s0 = peg$currPos;\n    s1 = peg$parsenonnegative_number();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsecomma_wsp();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsenonnegative_number();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parsecomma_wsp();\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsenumber();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parsecomma_wsp();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parseflag();\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parsecomma_wsp();\n                  if (s8 === peg$FAILED) {\n                    s8 = null;\n                  }\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parseflag();\n                    if (s9 !== peg$FAILED) {\n                      s10 = peg$parsecomma_wsp();\n                      if (s10 === peg$FAILED) {\n                        s10 = null;\n                      }\n                      if (s10 !== peg$FAILED) {\n                        s11 = peg$parsecoordinate_pair();\n                        if (s11 !== peg$FAILED) {\n                          peg$savedPos = s0;\n                          s1 = peg$c30(s1, s3, s5, s7, s9, s11);\n                          s0 = s1;\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecoordinate_pair() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parsenumber();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsecomma_wsp();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsenumber();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c31(s1, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsenonnegative_number() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    s1 = peg$parsefloating_point_constant();\n    if (s1 === peg$FAILED) {\n      s1 = peg$parsedigit_sequence();\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c32(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsenumber() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parsesign();\n    if (s2 === peg$FAILED) {\n      s2 = null;\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parsefloating_point_constant();\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 === peg$FAILED) {\n      s1 = peg$currPos;\n      s2 = peg$parsesign();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsedigit_sequence();\n        if (s3 !== peg$FAILED) {\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c33(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseflag() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    if (peg$c34.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c35); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c36(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsecomma_wsp() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parsewsp();\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parsewsp();\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsecomma();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$parsewsp();\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$parsewsp();\n        }\n        if (s3 !== peg$FAILED) {\n          s1 = [s1, s2, s3];\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$currPos;\n      s2 = peg$parsecomma();\n      if (s2 !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$parsewsp();\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$parsewsp();\n        }\n        if (s3 !== peg$FAILED) {\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c37();\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecomma() {\n    var s0;\n\n    if (input.charCodeAt(peg$currPos) === 44) {\n      s0 = peg$c38;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c39); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsefloating_point_constant() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parsefractional_constant();\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parseexponent();\n      if (s3 === peg$FAILED) {\n        s3 = null;\n      }\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 === peg$FAILED) {\n      s1 = peg$currPos;\n      s2 = peg$parsedigit_sequence();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseexponent();\n        if (s3 !== peg$FAILED) {\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c40(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsefractional_constant() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parsedigit_sequence();\n    if (s2 === peg$FAILED) {\n      s2 = null;\n    }\n    if (s2 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 46) {\n        s3 = peg$c41;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c42); }\n      }\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parsedigit_sequence();\n        if (s4 !== peg$FAILED) {\n          s2 = [s2, s3, s4];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 === peg$FAILED) {\n      s1 = peg$currPos;\n      s2 = peg$parsedigit_sequence();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 46) {\n          s3 = peg$c41;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c42); }\n        }\n        if (s3 !== peg$FAILED) {\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c40(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseexponent() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    if (peg$c43.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parsesign();\n      if (s3 === peg$FAILED) {\n        s3 = null;\n      }\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parsedigit_sequence();\n        if (s4 !== peg$FAILED) {\n          s2 = [s2, s3, s4];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c40(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsesign() {\n    var s0;\n\n    if (peg$c45.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c46); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsedigit_sequence() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    if (peg$c47.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c48); }\n    }\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        if (peg$c47.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c48); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c49(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsewsp() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    if (peg$c50.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c51); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c37();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n\n    function merge(first,more){\n      if (!more) return [first];\n      for (var a=[first],i=0,l=more.length;i<l;i++) a[i+1]=more[i][1];\n      return a;\n    }\n\n    var cmds = {m:'moveto',l:'lineto',h:'horizontal lineto',v:'vertical lineto',c:'curveto',s:'smooth curveto',q:'quadratic curveto',t:'smooth quadratic curveto',a:'elliptical arc',z:'closepath'};\n    for (var code in cmds) cmds[code.toUpperCase()]=cmds[code];\n    function commands(code,args){\n      if (!args) args=[{}];\n      for (var i=args.length;i--;){\n        var cmd={code:code,command:cmds[code]};\n        if (code==code.toLowerCase()) cmd.relative=true;\n        for (var k in args[i]) cmd[k]=args[i][k];\n        args[i] = cmd;\n      }\n      return args;\n    }\n\n\n  peg$result = peg$startRuleFunction();\n\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nmodule.exports = {\n  SyntaxError: peg$SyntaxError,\n  parse:       peg$parse\n};\n","// v1.0 exported just the parser function. To maintain backwards compatibility,\n// we export additional named features as properties of that function.\nvar parserFunction = require('./parser.js').parse;\nparserFunction.parseSVG = parserFunction;\nparserFunction.makeAbsolute = makeSVGPathCommandsAbsolute;\nmodule.exports = parserFunction;\n\nfunction makeSVGPathCommandsAbsolute(commands) {\n\tvar subpathStart, prevCmd={x:0,y:0};\n\tvar attr = {x:'x0',y:'y0',x1:'x0',y1:'y0',x2:'x0',y2:'y0'};\n\tcommands.forEach(function(cmd) {\n\t\tif (cmd.command==='moveto') subpathStart=cmd;\n\t\tcmd.x0=prevCmd.x; cmd.y0=prevCmd.y;\n\t\tfor (var a in attr) if (a in cmd) cmd[a] += cmd.relative ? cmd[attr[a]] : 0;\n\t\tif (!('x' in cmd)) cmd.x = prevCmd.x; // V\n\t\tif (!('y' in cmd)) cmd.y = prevCmd.y; // X\n\t\tcmd.relative = false;\n\t\tcmd.code = cmd.code.toUpperCase();\n\t\tif (cmd.command=='closepath') {\n\t\t\tcmd.x = subpathStart.x;\n\t\t\tcmd.y = subpathStart.y;\n\t\t}\n\t\tprevCmd = cmd;\n\t});\n\treturn commands;\n}\n","import { resolveFaIconPath } from \"../utils/faIconResolver\";\nimport { parseSVG, makeAbsolute } from \"svg-path-parser\";\nimport { MarkerStyle, MarkerType } from \"../types/markers\";\nimport Style from \"ol/style/Style\";\nimport Icon from \"ol/style/Icon\";\nimport Feature from \"ol/Feature\";\nimport Point from \"ol/geom/Point\";\n\nconst iconCache = new Map<string, string>();\n\ntype InternalMarkerStyle = MarkerStyle & {\n    innerSvg?: string;\n};\ntype IconPlacement = {\n    cx: number;\n    cy: number;\n    size: number;\n};\n\nconst ICON_PLACEMENT: IconPlacement = {\n    cx: 12,\n    cy: 12,\n    size: 12,\n};\n\n// Convert SVG string to data URL\nconst svgToDataUrl = (svg: string) =>\n    `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`;\n\nconst makePinSvg = ({\n    size = 28,\n    backgroundColor = \"#FF6600\",\n    color = \"#fff\",\n    innerSvg,\n}: InternalMarkerStyle): string => {\n    const icon = innerSvg\n        ? scaleAndCenterPath(innerSvg, color, {\n              cx: 12,\n              cy: 9,\n              size: 9,\n          })\n        : \"\";\n\n    return `\n<svg\n  xmlns=\"http://www.w3.org/2000/svg\"\n  width=\"${size}\"\n  height=\"${size * (28 / 24)}\"\n  viewBox=\"0 0 24 28\"\n>\n  <g transform=\"translate(0 2)\">\n    <path\n      d=\"M12 2C8 2 5 5 5 9c0 5 7 13 7 13s7-8 7-13c0-4-3-7-7-7z\"\n      fill=\"${backgroundColor}\"\n      stroke=\"${color}\"\n      stroke-width=\"1\"\n      stroke-linejoin=\"round\"\n    />\n\n    <circle\n      fill=\"${backgroundColor}\"\n      cx=\"12\"\n      cy=\"9\"\n      r=\"6\"\n    />\n\n    ${icon}\n  </g>\n</svg>\n`;\n};\n\nexport const extractPathD = (rawSvg: string): string => {\n    const cleanSvg = rawSvg.trim();\n\n    // 1. If it already looks like raw path commands (starts with M)\n    if (cleanSvg.startsWith(\"M\")) {\n        return cleanSvg;\n    }\n\n    // 2. Safely extract the 'd' attribute using string indices (O(n), ReDoS impossible)\n    const pathTagStart = cleanSvg.indexOf(\"<path\");\n\n    if (pathTagStart !== -1) {\n        // Look for the d attribute AFTER the <path tag\n        const dAttrStart = cleanSvg.indexOf('d=\"', pathTagStart);\n\n        if (dAttrStart !== -1) {\n            // The actual path data starts 3 characters after the 'd'\n            const dataStart = dAttrStart + 3;\n            // Find the closing quote\n            const dataEnd = cleanSvg.indexOf('\"', dataStart);\n\n            if (dataEnd !== -1) {\n                return cleanSvg.slice(dataStart, dataEnd);\n            }\n        }\n    }\n\n    throw new Error(\"No path data found in SVG\");\n};\n\n/**\n * Compute the bounding box of a path `d` string.\n */\nexport const getPathBBox = (d: string) => {\n    const commands = makeAbsolute(parseSVG(d));\n    let minX = Infinity,\n        minY = Infinity,\n        maxX = -Infinity,\n        maxY = -Infinity;\n\n    commands.forEach((c) => {\n        const points: [number, number][] = [];\n        if (\"x\" in c && \"y\" in c) points.push([c.x, c.y]);\n        if (\"x1\" in c && \"y1\" in c) points.push([c.x1, c.y1]);\n        if (\"x2\" in c && \"y2\" in c) points.push([c.x2, c.y2]);\n        points.forEach(([x, y]) => {\n            if (x != null && y != null) {\n                minX = Math.min(minX, x);\n                minY = Math.min(minY, y);\n                maxX = Math.max(maxX, x);\n                maxY = Math.max(maxY, y);\n            }\n        });\n    });\n\n    return { minX, minY, maxX, maxY, width: maxX - minX, height: maxY - minY };\n};\n\n/**\n * Scale, center, and color the inner path into a target viewBox.\n */\nconst scaleAndCenterPath = (\n    rawSvg: string,\n    color = \"#F092D5\",\n    placement: IconPlacement\n) => {\n    const d = extractPathD(rawSvg);\n    const bbox = getPathBBox(d);\n\n    // scale to fit inside targetSize\n    const scale = Math.min(\n        placement.size / bbox.width,\n        placement.size / bbox.height\n    );\n\n    const cx = bbox.minX + bbox.width / 2;\n    const cy = bbox.minY + bbox.height / 2;\n\n    return `\n    <g\n      transform=\"\n        translate(${placement.cx}, ${placement.cy})\n        scale(${scale})\n        translate(${-cx}, ${-cy})\n      \"\n      fill=\"${color}\"\n    >\n      <path d=\"${d}\" />\n    </g>\n  `;\n};\n\nexport const makeCircleSvg = ({\n    size = 28,\n    backgroundColor = \"#FF6600\",\n    color = \"#fff\",\n    strokeWidth = 2,\n    innerSvg,\n}: InternalMarkerStyle): string => {\n    const inner = innerSvg\n        ? scaleAndCenterPath(innerSvg, color, ICON_PLACEMENT)\n        : \"\";\n\n    return `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 24 24\">\n  <circle cx=\"12\" cy=\"12\" r=\"10\"\n          fill=\"${backgroundColor}\" stroke=\"${color}\" stroke-width=\"${strokeWidth}\"/>\n  ${inner}\n</svg>\n`;\n};\n\nconst makeIconOnlySvg = ({\n    size = 28,\n    innerSvg,\n    color = \"#FF6600\",\n}: InternalMarkerStyle): string => {\n    const inner = innerSvg\n        ? scaleAndCenterPath(innerSvg, color, ICON_PLACEMENT)\n        : \"\";\n\n    return `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 24 24\" fill=\"${color}\">\n    ${inner}\n</svg>\n`;\n};\n\nconst iconGenerators: Record<MarkerType, (s: MarkerStyle) => string> = {\n    pin: makePinSvg,\n    circle: makeCircleSvg,\n    icon: makeIconOnlySvg,\n};\n\nconst MARKER_SCALE: Record<MarkerType, number> = {\n    pin: 1.5,\n    circle: 1.0,\n    icon: 1.0,\n};\n\nconst getMarkerScale = (type?: unknown): number => {\n    if (typeof type === \"string\" && type in MARKER_SCALE) {\n        return MARKER_SCALE[type as MarkerType];\n    }\n    return MARKER_SCALE.pin; // safe default\n};\n\nconst getIconGenerator = (\n    type?: unknown\n): ((s: InternalMarkerStyle) => string) => {\n    if (typeof type === \"string\" && type in iconGenerators) {\n        return iconGenerators[type as MarkerType];\n    }\n    return iconGenerators.pin;\n};\n\nexport const getGeneratedOlIcon = (\n    style: MarkerStyle = {},\n    feature?: Feature\n): Style => {\n    // The markerType are for ontology app, not anything to do with maps.\n    const type = \"pin\";\n\n    let inner: string | undefined;\n\n    if (style.faIcon) {\n        const result = resolveFaIconPath(style.faIcon);\n        if (result.status === \"ready\") {\n            inner = result.path;\n        }\n    }\n    const useFallback = !inner && style.fallbackText;\n\n    let svg: string;\n\n    if (useFallback) {\n        // fallback text inside a circle\n        svg = `\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 28 28\">\n        <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"${\n            style.backgroundColor ?? \"#FF6600\"\n        }\" stroke=\"${style.color ?? \"#fff\"}\" stroke-width=\"2\"/>\n        <text x=\"12\" y=\"13\" text-anchor=\"middle\" dominant-baseline=\"middle\" font-size=\"8\" font-weight=\"600\" fill=\"${\n            style.color ?? \"#fff\"\n        }\">${style.fallbackText}</text>\n      </svg>\n    `;\n    } else {\n        // pin/circle/icon SVG with HTML inside\n        const generator = getIconGenerator(type);\n        svg = generator({ ...style, innerSvg: inner });\n    }\n\n    const key = `${type}|${inner}|${JSON.stringify(style)}`;\n    let url = iconCache.get(key);\n    if (!url) {\n        url = svgToDataUrl(svg);\n        iconCache.set(key, url);\n    }\n\n    return new Style({\n        image: new Icon({ src: url, scale: getMarkerScale(type) }),\n    });\n};\n\n// Create OL Feature with style\nexport const createOlMarker = (\n    id: string,\n    coords: [number, number],\n    style: MarkerStyle\n): Feature<Point> => {\n    const feature = new Feature({\n        geometry: new Point(coords),\n        id,\n    });\n    feature.setStyle(getGeneratedOlIcon(style));\n    return feature;\n};\n","import geohash from \"../../utils/geohash/geohash\";\nimport Feature from \"ol/Feature\";\nimport Point from \"ol/geom/Point\";\nimport { fromLonLat } from \"ol/proj\";\nimport { MarkerFeature, MarkerStyle } from \"../types/markers\";\nimport { getGeneratedOlIcon } from \"../styles/markers\";\n\nexport enum MarkerAnchor {\n  BOTTOM_MIDDLE,\n  TOP_MIDDLE,\n  CENTER,\n}\n\n/**\n * Convert MarkerFeature to OL Feature\n */\nexport const markerToOLFeature = (marker: MarkerFeature): Feature<Point> => {\n  // Decode geohash (strip \"http://geohash.org/\" if present)\n  const gh = marker.geohash.includes(\"http\")\n    ? marker.geohash.split(\"http://geohash.org/\")[1]\n    : marker.geohash;\n\n  const { latitude, longitude } = geohash.decode(gh);\n\n  const feature = new Feature({\n    geometry: new Point(fromLonLat([longitude, latitude])),\n    ...marker.meta,\n  });\n  feature.setId(marker.id);\n\n  // Use the new OL marker helper for style\n  const markerStyle: MarkerStyle = marker.style ?? { markerType: \"pin\" };\n  const style = getGeneratedOlIcon(markerStyle, feature);\n\n  feature.set(\"originalStyle\", style); // This is needed when selecting Features\n  feature.setStyle(style);\n\n  return feature;\n};\n\n/**\n * Convert MarkerAnchor enum to OL anchor fractions\n */\nexport const getAnchorFraction = (anchor: MarkerAnchor): [number, number] => {\n  switch (anchor) {\n    case MarkerAnchor.BOTTOM_MIDDLE:\n      return [0.5, 1];\n    case MarkerAnchor.TOP_MIDDLE:\n      return [0.5, 0];\n    case MarkerAnchor.CENTER:\n    default:\n      return [0.5, 0.5];\n  }\n};\n","import BaseLayer from \"ol/layer/Base\";\nimport { LayerConfig } from \"../types/layers\";\nimport {\n  getBaseRasterLayer,\n  getBaseVectorTileLayer,\n  getOverlayVectorLayer,\n} from \"./layers\";\n\nexport const ensureLayers = async (\n  layerConfigs: LayerConfig[]\n): Promise<BaseLayer[]> => {\n  const layerPromises = layerConfigs.map(async (layerConfig, index) => {\n    switch (layerConfig.kind) {\n      case \"base-raster\":\n        const baseRasterLayer = getBaseRasterLayer(layerConfig);\n        baseRasterLayer.setZIndex(index);\n        return baseRasterLayer;\n\n      case \"base-vector-tiles\":\n        const baseVectorTileLayer = await getBaseVectorTileLayer(layerConfig);\n        baseVectorTileLayer.setZIndex(index);\n        return baseVectorTileLayer;\n\n      case \"overlay-vector\":\n        const overlayVectorLayer = getOverlayVectorLayer(layerConfig);\n        overlayVectorLayer.setZIndex(index);\n        overlayVectorLayer.setDeclutter(false);\n        return overlayVectorLayer;\n\n      default:\n        throw new Error(`Unknown layer kind: ${JSON.stringify(layerConfig)}`);\n    }\n  });\n\n  return Promise.all(layerPromises);\n};\n","import Feature from \"ol/Feature\";\nimport Polygon from \"ol/geom/Polygon\";\nimport { PolygonFeature } from \"../types/polygons\";\nimport { MultiPolygon } from \"ol/geom\";\n\nexport const polygonToOLFeature = (\n  polygon: PolygonFeature\n): Feature<Polygon | MultiPolygon> => {\n  const { type, coordinates, id, meta } = polygon;\n\n  const geometry =\n    type === \"MultiPolygon\"\n      ? new MultiPolygon(coordinates)\n      : new Polygon(coordinates);\n\n  geometry.transform(\"EPSG:4326\", \"EPSG:3857\");\n\n  const feature = new Feature({\n    geometry,\n    ...meta,\n  });\n\n  if (id) feature.setId(id);\n\n  return feature;\n};\n","import { LayerConfig } from \"../types/layers\";\nimport { LegacyMapConfig } from \"../types/map-types\";\n\nexport const mapLegacyConfigToLayers = (\n  legacy: LegacyMapConfig\n): LayerConfig[] => {\n  const layers: LayerConfig[] = [];\n\n  if (legacy.vectorStyles) {\n    layers.push({\n      id: legacy.vectorStyles.label,\n      kind: \"base-vector-tiles\",\n      provider: \"custom\",\n      url: legacy.vectorStyles.uri,\n      styleUrl: legacy.vectorStyles.uri,\n      visible: false,\n      previewImage: legacy.vectorStyles.image,\n      label: legacy.vectorStyles.label,\n    });\n  }\n\n  if (legacy.tileSets && Array.isArray(legacy.tileSets)) {\n    legacy.tileSets.forEach((tileset) => {\n      layers.push({\n        id: tileset.label,\n        kind: \"base-raster\",\n        url: tileset.uri,\n        attribution: tileset.attribution,\n        visible: false,\n        previewImage: tileset.image,\n        label: tileset.label,\n      });\n    });\n  }\n\n  return layers.map((layer, idx) => ({\n    ...layer,\n    visible: idx === 0, // set the first layer to be visible\n  }));\n};\n","import { ensureFaIconPath } from \"./faIconResolver\";\nimport { MarkerFeature } from \"../types/markers\";\n\n/**\n * Extract unique FontAwesome icons used by markers\n */\nexport const extractMarkerIcons = (markers: MarkerFeature[]): string[] => {\n  const icons = new Set<string>();\n\n  for (const marker of markers) {\n    const icon = marker.style?.faIcon;\n\n    if (typeof icon === \"string\") {\n      icons.add(icon);\n    }\n  }\n\n  return [...icons];\n};\n\n/**\n * Ensure all marker icons are loaded before rendering\n */\nexport const ensureMarkerIconsLoaded = async (markers: MarkerFeature[]): Promise<void> => {\n  const icons = extractMarkerIcons(markers);\n\n  if (icons.length === 0) return;\n\n  await Promise.all(icons.map((icon) => ensureFaIconPath(icon)));\n};\n","import { MapCanvasV2 } from \"../../primitives/MapCanvas/MapCanvas\";\nimport { LayerSelectorV2 } from \"../../primitives/LayerSelector/LayerSelector\";\nimport React, {\n  useRef,\n  useMemo,\n  useEffect,\n  useState,\n  useImperativeHandle,\n} from \"react\";\n\nimport { Map } from \"ol\";\nimport BaseLayer from \"ol/layer/Base\";\nimport { BasicMapProperties, BasicMapV2Handle } from \"../../types/map-types\";\nimport { LayerConfig } from \"../../types/layers\";\nimport { markerToOLFeature } from \"../../utils/markers\";\nimport { ensureLayers } from \"../../utils/ensureLayers\";\nimport { MARKER_LAYER_ID, POLYGON_LAYER_ID } from \"../../utils/layers\";\nimport { findVectorLayerById } from \"../../utils/feature\";\nimport {\n  getFeaturesById,\n  fitToFeature,\n  fitToFeatures,\n} from \"./interactions/addPanToFeature\";\nimport { polygonToOLFeature } from \"../../utils/polygons\";\nimport { mapLegacyConfigToLayers } from \"../../utils/legacy\";\nimport { ensureMarkerIconsLoaded } from \"../../utils/markerIconLoader\";\n\nexport const BasicMapV2 = React.forwardRef<\n  BasicMapV2Handle,\n  BasicMapProperties\n>((props, ref) => {\n  const [layers, setLayers] = useState<BaseLayer[]>([]);\n  const mapInstance = useRef<Map | null>(null);\n\n  const showLayerSelector = props.controls?.showLayerSelector ?? true;\n\n  const effectiveLayers = useMemo(() => {\n    const baseLayers =\n      Array.isArray(props.layers) && props.layers.length > 0\n        ? props.layers\n        : props.mapStyleOptions && Object.keys(props.mapStyleOptions).length > 0\n        ? mapLegacyConfigToLayers(props.mapStyleOptions)\n        : [];\n\n    const overlayVectorLayers: LayerConfig[] = [\n      // Marker layer\n      {\n        kind: \"overlay-vector\",\n        id: MARKER_LAYER_ID,\n        data: [],\n        visible: true,\n      },\n      // Polygon layer\n      {\n        kind: \"overlay-vector\",\n        id: POLYGON_LAYER_ID,\n        data: [],\n        visible: true,\n      },\n    ];\n    return [...baseLayers, ...overlayVectorLayers];\n  }, [props.layers]);\n\n  useEffect(() => {\n    let cancelled = false;\n\n    (async () => {\n      try {\n        const layers = await ensureLayers(effectiveLayers);\n        if (!cancelled) {\n          setLayers(layers);\n        }\n      } catch (e) {\n        console.error(\"ensureLayers failed\", e);\n        return;\n      }\n    })();\n\n    return () => {\n      cancelled = true;\n    };\n  }, [effectiveLayers]);\n\n  useEffect(() => {\n    if (layers.length < 1) return;\n    props?.onLayersReady?.(true);\n  }, [layers]);\n\n  useEffect(() => {\n    return () => {\n      props.onLayersReady?.(false);\n    };\n  }, []);\n\n  useEffect(() => {\n    if (!mapInstance.current) return;\n    const markerLayer = findVectorLayerById(layers, MARKER_LAYER_ID);\n    if (!markerLayer) {\n      console.debug(\"No marker layer found\");\n      return;\n    }\n\n    const source = markerLayer.getSource();\n    if (!source) {\n      console.debug(\"Could not find layer source\");\n      return;\n    }\n\n    /* source.clear(); */\n    /* const markerFeatures = props.markers.map(markerToOLFeature); */\n    /* source.addFeatures(markerFeatures); */\n    let cancelled = false;\n\n    (async () => {\n      await ensureMarkerIconsLoaded(props.markers);\n\n      if (cancelled) return;\n\n      source.clear();\n\n      const markerFeatures = props.markers.map(markerToOLFeature);\n      source.addFeatures(markerFeatures);\n\n      const polygonFeatures = props.polygons.map(polygonToOLFeature);\n      source.addFeatures(polygonFeatures);\n\n      const features = [...markerFeatures, ...polygonFeatures];\n\n      if (features.length === 1) {\n        fitToFeature(mapInstance.current!, features[0]);\n      } else {\n        fitToFeatures(mapInstance.current!, features);\n      }\n    })();\n\n    return () => {\n      cancelled = true;\n    };\n  }, [props.markers, props.polygons, layers]);\n\n  useEffect(() => {\n    const map = mapInstance.current;\n    if (!map) return;\n\n    const markerLayer = findVectorLayerById(layers, MARKER_LAYER_ID);\n    const polygonLayer = findVectorLayerById(layers, POLYGON_LAYER_ID);\n\n    const markerFeatures = markerLayer?.getSource()?.getFeatures() ?? [];\n    const polygonFeatures = polygonLayer?.getSource()?.getFeatures() ?? [];\n\n    const features = [...markerFeatures, ...polygonFeatures];\n    if (!features.length) return;\n\n    if (features.length === 1) {\n      fitToFeature(map, features[0]);\n    } else {\n      fitToFeatures(map, features);\n    }\n  }, [props.markers, props.polygons, layers]);\n\n  useImperativeHandle(\n    ref,\n    () => ({\n      zoomIn: () => {\n        const view = mapInstance.current?.getView();\n        if (!view) {\n          console.warn(\"Map view is not ready yet\");\n          return;\n        }\n\n        const currentZoom = view.getZoom() ?? 0;\n        view.setZoom(currentZoom + 1);\n      },\n      zoomOut: () => {\n        const view = mapInstance.current?.getView();\n        if (!view) {\n          console.warn(\"Map view is not ready yet\");\n          return;\n        }\n\n        const currentZoom = view.getZoom() ?? 0;\n        view.setZoom(currentZoom - 1);\n      },\n      panToFeature: (id: string) => {\n        if (!mapInstance.current) {\n          console.warn(\"Map is not ready yet\");\n          return;\n        }\n\n        const features = getFeaturesById(layers, [id]);\n        if (features.length === 0) return;\n        fitToFeature(mapInstance.current, features[0]);\n      },\n      panToFeatures: (ids: string[]) => {\n        if (!mapInstance.current) {\n          console.warn(\"Map is not ready yet\");\n          return;\n        }\n\n        const features = getFeaturesById(layers, ids);\n        if (features.length === 0) return;\n        fitToFeature(mapInstance.current, features[0]);\n      },\n      layers,\n    }),\n    [mapInstance.current, layers]\n  );\n\n  const { layers: _ignored, ...restProps } = props;\n  return (\n    <>\n      <MapCanvasV2\n        layers={layers}\n        mapInstanceRef={mapInstance}\n        {...restProps}\n      />\n      {showLayerSelector && <LayerSelectorV2 layers={layers} />}\n    </>\n  );\n});\n","export enum MarkerAnchor {\n  CENTER = \"center\",\n  BOTTOM_MIDDLE = \"bottom-middle\",\n  TOP_MIDDLE = \"top-middle\",\n  // add more if needed\n}\n\nexport const anchorMap: Record<MarkerType, MarkerAnchor> = {\n  pin: MarkerAnchor.BOTTOM_MIDDLE,\n  circle: MarkerAnchor.CENTER,\n  icon: MarkerAnchor.CENTER,\n};\n\n// types/MarkerFeature.ts\nexport type MarkerType = \"pin\" | \"circle\" | \"icon\" | string;\n\nexport interface MarkerStyle {\n  fallbackText?: string;\n  markerType?: MarkerType;\n  color?: string; // e.g. \"#ff6600\"\n  strokeWidth?: number;\n  backgroundColor?: string; // e.g. \"#ffffff\"\n  faIcon?: string;\n  borderColor?: string;\n  size?: number; // in px (for reference scale)\n  zIndex?: number;\n}\n\nexport interface MarkerFeature {\n  id: string;\n  geohash: string;\n  type?: string; // semantic type, e.g. vandalism / accident\n  name?: string;\n  uri?: string;\n  meta?: Record<string, any>;\n  style?: MarkerStyle;\n}\n","export enum AuthEvent {\n  AUTHENTICATED = \"authenticated\",\n  REAUTHENTICATED = \"reauthenticated\",\n  USER_CHANGED = \"user-changed\",\n  UNAUTHORIZED = \"unauthorized\",\n}\n\nconst listeners = new Set<(event: AuthEvent) => void>();\nlet lastMessage: AuthEvent | null = null;\n\nconst bc = new BroadcastChannel(\"auth-events\");\n\nbc.onmessage = (event: MessageEvent) => {\n  lastMessage = event.data;\n  listeners.forEach((listener) => listener(event.data));\n};\n\nexport function onAuthEvent(callback: (event: AuthEvent) => void): () => void {\n  listeners.add(callback);\n\n  // Immediately fire last known message (StrictMode-safe)\n  if (lastMessage !== null) {\n    callback(lastMessage);\n  }\n\n  return () => {\n    listeners.delete(callback);\n  };\n}\n\nexport function broadcastAuthEvent(event: AuthEvent): void {\n  // Broadcast channels instances will not detect messages that they have posted\n  const b = new BroadcastChannel(\"auth-events\");\n  b.postMessage(event);\n  b.close();\n}\n","// Import zod for runtime validation (handle both Node.js and browser environments)\nlet z;\nlet GetUserInfoSchema;\nlet AuthServerOAuth2ClientConfigSchema;\n\ntry {\n  if (typeof require !== \"undefined\") {\n    z = require(\"zod\").z;\n  }\n} catch (e) {\n  console.warn(\n    \"Zod not available in this environment, schema validation will be disabled\"\n  );\n}\n\n/**\n * Zod schema for getUserInfo return type\n * Based on JWTConfig.java and OAuth2 standard claims\n */\nif (z) {\n  GetUserInfoSchema = z.object({\n    // Core user identity (from JWTConfig.java:169-171)\n    sub: z.string(),                    // Always present\n    email: z.string().email(),          // NOT NULL in DB\n    preferred_name: z.string(),         // NOT NULL in DB\n    isActive: z.boolean().optional(),   // Custom claim from ID token\n\n    // Standard OIDC claims (always present)\n    iss: z.string(), // Issuer URL\n    aud: z.string(), // Audience (client ID)\n    exp: z.number(), // Expiration timestamp\n    iat: z.number(), // Issued at timestamp\n    jti: z.string(), // JWT ID\n\n    // Optional OIDC claims (conditional)\n    nonce: z.string().optional(), // Only if sent in auth request\n    auth_time: z.number().optional(), // Authentication timestamp\n    sid: z.string().optional(), // Session ID\n    azp: z.string().optional(), // Authorized party\n\n    // FE client additions (check your oauth2Client implementation)\n    name: z.string().optional(),\n    token_expired: z.boolean().optional(),\n    token_expires_at: z.string().optional(),\n    source: z.string().optional(),\n    externalProvider: z.record(z.unknown()).optional(),\n  });\n\n  /**\n   * Zod schema for AuthServerOAuth2Client constructor config\n   */\n  AuthServerOAuth2ClientConfigSchema = z\n    .object({\n      // OAuth2 client identifier\n      clientId: z.string(),\n      authServerUrl: z.string().url(),\n      redirectUri: z.string().url(),\n      popupRedirectUri: z.string().url(),\n      scope: z.string(),\n      onLogout: z.function(),\n    })\n    .strict();\n}\n\n// ES module and CommonJS exports\nif (typeof module !== \"undefined\" && module.exports) {\n  module.exports = {\n    GetUserInfoSchema,\n    AuthServerOAuth2ClientConfigSchema,\n  };\n  module.exports.default = {\n    GetUserInfoSchema,\n    AuthServerOAuth2ClientConfigSchema,\n  };\n}\n\nif (typeof exports !== \"undefined\" && typeof module === \"undefined\") {\n  exports.GetUserInfoSchema = GetUserInfoSchema;\n  exports.AuthServerOAuth2ClientConfigSchema =\n    AuthServerOAuth2ClientConfigSchema;\n  exports.default = {\n    GetUserInfoSchema,\n    AuthServerOAuth2ClientConfigSchema,\n  };\n}\n","// Import schemas for validation (Node.js/bundler environments)\nlet GetUserInfoSchema;\nlet AuthServerOAuth2ClientConfigSchema;\nif (typeof require !== \"undefined\") {\n  try {\n    const schemas = require(\"./schemas.js\");\n    GetUserInfoSchema = schemas.GetUserInfoSchema;\n    AuthServerOAuth2ClientConfigSchema =\n      schemas.AuthServerOAuth2ClientConfigSchema;\n  } catch (e) {\n    console.warn(\n      \"Zod schema not available, validation will be skipped:\",\n      e.message\n    );\n  }\n}\n\n// Unified OAuth2 Client Implementation using Auth Server Session Management\n// Works for both same-domain and cross-domain scenarios with automatic detection\nclass AuthServerOAuth2Client {\n  // Event constants for popup communication\n  static OAUTH_SUCCESS = \"oauth-success\";\n  static OAUTH_ERROR = \"oauth-error\";\n  constructor(config) {\n    if (AuthServerOAuth2ClientConfigSchema && config) {\n      try {\n        AuthServerOAuth2ClientConfigSchema.parse(config);\n      } catch (error) {\n        console.error(\n          \"❌ Invalid AuthServerOAuth2Client configuration:\",\n          error.errors || error.message\n        );\n        throw new Error(\n          `Invalid AuthServerOAuth2Client configuration: ${error.message}`\n        );\n      }\n    } else {\n      console.warn(\n        \"⚠️ AuthServerOAuth2Client instantiated with undefined config\"\n      );\n      return;\n    }\n\n    this.config = {\n      ...config,\n    };\n    this.derived = {\n      accountInactive: `${this.config.authServerUrl}/account-inactive`,\n    }\n\n    // Auto-detect if this is a cross-domain client\n    this.isCrossDomain = this.detectCrossDomain();\n    console.log(\n      `🔧 Initialized ${\n        this.isCrossDomain ? \"cross-domain\" : \"same-domain\"\n      } OAuth2 client`\n    );\n    console.log(`🔧 Client config:`, {\n      clientId: this.config.clientId,\n      redirectUri: this.config.redirectUri,\n      authServerUrl: this.config.authServerUrl,\n      currentOrigin: window.location.origin,\n    });\n  }\n\n  // Detect if this is a cross-domain client based on current origin vs auth server URL\n  detectCrossDomain() {\n    try {\n      const currentOrigin = window.location.origin;\n      const authServerUrl = new URL(this.config.authServerUrl);\n      const authServerOrigin = authServerUrl.origin;\n\n      const currentHost = new URL(currentOrigin).hostname;\n      const authServerHost = authServerUrl.hostname;\n\n      // Check if domains are different or if they don't share a common parent domain\n      const isSameDomain =\n        currentHost === authServerHost ||\n        (currentHost.endsWith(\".telicent.localhost\") &&\n          authServerHost.endsWith(\".telicent.localhost\"));\n\n      console.log(\n        `🌐 Domain detection: current=${currentHost}, auth=${authServerHost}, sameDomain=${isSameDomain}`\n      );\n      return !isSameDomain;\n    } catch (error) {\n      console.warn(\n        \"Error detecting domain context, defaulting to cross-domain:\",\n        error\n      );\n      return true; // Default to cross-domain for safety\n    }\n  }\n\n  // Generate code verifier for PKCE\n  generateCodeVerifier() {\n    const array = new Uint8Array(32);\n    crypto.getRandomValues(array);\n    return this.base64URLEncode(array);\n  }\n\n  // Generate code challenge from verifier\n  async generateCodeChallenge(codeVerifier) {\n    const encoder = new TextEncoder();\n    const data = encoder.encode(codeVerifier);\n    const digest = await crypto.subtle.digest(\"SHA-256\", data);\n    return this.base64URLEncode(new Uint8Array(digest));\n  }\n\n  // Base64 URL encoding\n  base64URLEncode(array) {\n    return this.base64URLEncodeString(String.fromCharCode.apply(null, array));\n  }\n\n  base64URLEncodeString(str) {\n    return btoa(str).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n  }\n\n  // Generate random state\n  generateState() {\n    const array = new Uint8Array(16);\n    crypto.getRandomValues(array);\n    return this.base64URLEncode(array);\n  }\n\n  // Generate random nonce for ID token binding\n  generateNonce() {\n    const array = new Uint8Array(16);\n    crypto.getRandomValues(array);\n    return this.base64URLEncode(array);\n  }\n\n  // Start OAuth2 login flow (redirects current window)\n  async login(redirectUri = null) {\n    const state = this.generateState();\n    const nonce = this.generateNonce();\n    const codeVerifier = this.generateCodeVerifier();\n    const codeChallenge = await this.generateCodeChallenge(codeVerifier);\n\n    // Use provided redirectUri or fall back to config default\n    const finalRedirectUri = redirectUri || this.config.redirectUri;\n\n    // Store PKCE values, nonce, and redirectUri in sessionStorage (temporary)\n    sessionStorage.setItem(\"oauth_state\", state);\n    sessionStorage.setItem(\"oauth_nonce\", nonce);\n    sessionStorage.setItem(\"oauth_code_verifier\", codeVerifier);\n    sessionStorage.setItem(\"oauth_redirect_uri\", finalRedirectUri);\n\n    // Build authorization URL\n    const params = new URLSearchParams({\n      response_type: \"code\",\n      client_id: this.config.clientId,\n      redirect_uri: finalRedirectUri,\n      scope: this.config.scope,\n      state: `${state}.${this.base64URLEncodeString(window.location.href)}`,\n      nonce: nonce,\n      code_challenge: codeChallenge,\n      code_challenge_method: \"S256\",\n    });\n\n    console.log({ params });\n\n    const authUrl = `${\n      this.config.authServerUrl\n    }/oauth2/authorize?${params.toString()}`;\n    console.log(\"Redirecting current window to:\", authUrl);\n\n    // Always redirect current window\n    window.location.href = authUrl;\n  }\n\n  // Start OAuth2 login flow in popup window\n  async loginWithPopup(\n    redirectUri = null,\n    features = \"width=600,height=700,scrollbars=yes,resizable=yes\"\n  ) {\n    // Use provided redirectUri or fall back to config popupRedirectUri\n    const finalRedirectUri = redirectUri || this.config.popupRedirectUri;\n\n    if (!finalRedirectUri) {\n      throw new Error(\n        \"redirectUri is required for popup login. Either provide it as a parameter or configure popupRedirectUri in the client config.\"\n      );\n    }\n\n    const state = this.generateState();\n    const nonce = this.generateNonce();\n    const codeVerifier = this.generateCodeVerifier();\n    const codeChallenge = await this.generateCodeChallenge(codeVerifier);\n\n    // Store PKCE values, nonce, and redirectUri in sessionStorage (temporary)\n    sessionStorage.setItem(\"oauth_state\", state);\n    sessionStorage.setItem(\"oauth_nonce\", nonce);\n    sessionStorage.setItem(\"oauth_code_verifier\", codeVerifier);\n    sessionStorage.setItem(\"oauth_redirect_uri\", finalRedirectUri);\n\n    // Build authorization URL\n    const params = new URLSearchParams({\n      response_type: \"code\",\n      client_id: this.config.clientId,\n      redirect_uri: finalRedirectUri,\n      scope: this.config.scope,\n      state: state,\n      nonce: nonce,\n      code_challenge: codeChallenge,\n      code_challenge_method: \"S256\",\n    });\n\n    const authUrl = `${\n      this.config.authServerUrl\n    }/oauth2/authorize?${params.toString()}`;\n    console.log(\"Opening popup with URL:\", authUrl);\n    console.log(\"Popup features:\", features);\n\n    // Use window.top to break out of iframe context (e.g., Storybook)\n    const targetWindow = window.top || window;\n    const popup = targetWindow.open(authUrl, \"_blank\", features);\n    console.log(\"Popup opened:\", popup ? \"Success\" : \"Blocked or failed\");\n\n    // Start popup flow and listen for messages\n    if (popup) {\n      this.startPopupFlow(popup);\n    }\n  }\n\n  // Handle callback after authorization - creates session via auth-server\n  async handleCallback(callbackParams = null) {\n    let urlParams;\n    if (callbackParams) {\n      // Use provided parameters directly\n      urlParams = new URLSearchParams(callbackParams);\n    } else {\n      // Fall back to reading from current URL\n      urlParams = new URLSearchParams(window.location.search);\n    }\n    const code = urlParams.get(\"code\");\n    const state = urlParams.get(\"state\");\n    const error = urlParams.get(\"error\");\n\n    if (error) {\n      throw new Error(`OAuth error: ${error}`);\n    }\n\n    if (!code || !state) {\n      throw new Error(\"Missing code or state parameter\");\n    }\n\n    const storedState = sessionStorage.getItem(\"oauth_state\");\n    if (state !== storedState) {\n      throw new Error(\"Invalid state parameter\");\n    }\n\n    const codeVerifier = sessionStorage.getItem(\"oauth_code_verifier\");\n    if (!codeVerifier) {\n      throw new Error(\"Missing code verifier\");\n    }\n\n    const redirectUri = sessionStorage.getItem(\"oauth_redirect_uri\");\n    if (!redirectUri) {\n      throw new Error(\"Missing redirect URI\");\n    }\n\n    // Exchange authorization code for session (secure - access token never exposed to client)\n    const tokenResponse = await fetch(\n      `${this.config.authServerUrl}/oauth2/token`,\n      {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/x-www-form-urlencoded\",\n          Accept: \"application/json\",\n        },\n        credentials: \"include\", // Include cookies for session\n        body: new URLSearchParams({\n          grant_type: \"authorization_code\",\n          client_id: this.config.clientId,\n          code: code,\n          redirect_uri: redirectUri,\n          code_verifier: codeVerifier,\n        }),\n      }\n    );\n\n    if (!tokenResponse.ok) {\n      let errorMessage = \"Unknown error\";\n      const authUrl = `${this.config.authServerUrl}/oauth2/authorize`;\n      let errorDetails;\n      try {\n        // Try to parse JSON error response first\n        errorDetails = await tokenResponse.json();\n      } catch (e) {\n        // Fallback to text if not JSON\n        const errorText = await tokenResponse.text();\n        errorDetails = { error: \"unknown\", error_description: errorText };\n      }\n\n      errorMessage =\n        errorDetails.error_description || errorDetails.error || \"Unknown error\";\n\n      // Handle specific consent_required error\n      if (errorDetails.error === \"consent_required\") {\n        console.log(\"Consent required - redirecting to proper OAuth2 flow\");\n\n        // The SPA should not directly call /oauth2/session without consent\n        // Instead, redirect to start the proper OAuth2 authorization flow\n        // which will handle consent properly through OAuth2AuthenticationSuccessHandler\n        console.log(\"Redirecting to OAuth2 authorization flow:\", authUrl);\n        this.clearLocalStorage();\n        window.location.href = `${authUrl}/access-denied`;\n        \n        return; // Don't throw error, we're redirecting\n      }\n\n      if (errorDetails.error === \"access_denied\" && tokenResponse.status === 400) {\n        console.log(`${errorMessage}`);\n        this.clearLocalStorage();\n\n        window.location.href = this.derived.accountInactive;\n        \n        throw new Error(`${errorMessage} redirecting to ${this.derived.accountInactive}`);\n      }\n\n      // For other errors, throw as before\n      this.clearLocalStorage();\n      throw new Error(\n        `Token exchange and session creation failed: ${errorMessage}`\n      );\n    }\n\n    const sessionData = await tokenResponse.json();\n    console.log(\n      \"🎉 Session created securely via domain cookies (access token never exposed)\"\n    );\n    console.log(\"📊 Session data:\", sessionData);\n\n    // For cross-domain clients, store session ID for Authorization header use\n    // since cookies won't work across different domains\n    console.log(\"🔍 Cross-domain check:\", {\n      isCrossDomain: this.isCrossDomain,\n      sessionIsCrossDomain: sessionData.isCrossDomain,\n      hasSessionToken: !!sessionData.sessionToken,\n      sessionToken: sessionData.sessionToken,\n    });\n    if (\n      this.isCrossDomain &&\n      sessionData.isCrossDomain &&\n      sessionData.sessionToken\n    ) {\n      sessionStorage.setItem(\"auth_session_id\", sessionData.sessionToken);\n      console.log(\n        \"🔑 Cross-domain client: Session ID stored for Authorization header use\"\n      );\n    } else {\n      console.log(\n        \"❌ Cross-domain session storage skipped - conditions not met\"\n      );\n    }\n\n    // Step 2: Retrieve ID token separately for enhanced security\n    // All clients now use session-based authentication for maximum security\n    try {\n      // Add a small delay to ensure session is fully propagated\n      await new Promise((resolve) => setTimeout(resolve, 100));\n\n      const idTokenResponse = await this.makeAuthenticatedRequest(\n        `${this.config.authServerUrl}/session/idtoken`,\n        { skipAutoLogout: true }\n      );\n\n      if (!idTokenResponse.ok) {\n        console.warn(\n          \"Failed to retrieve ID token, but continuing with callback completion\"\n        );\n        // Don't throw - allow callback to complete without ID token\n      } else {\n        const idTokenData = await idTokenResponse.json();\n        console.log(\n          \"ID token retrieved in separate call for enhanced security\"\n        );\n\n        // Store ID token for offline user information access\n        if (idTokenData.id_token) {\n          // Validate ID token with nonce before storing\n          if (!this.validateIdToken(idTokenData.id_token)) {\n            console.warn(\n              \"ID token validation failed, but continuing with callback\"\n            );\n          } else {\n            sessionStorage.setItem(\"auth_id_token\", idTokenData.id_token);\n            console.log(\"ID token validated and stored in sessionStorage\");\n          }\n        }\n      }\n    } catch (error) {\n      console.warn(\n        \"Error retrieving ID token during callback, but continuing:\",\n        error\n      );\n      // Don't throw - allow callback to complete even if ID token retrieval fails\n    }\n\n    // Clean up PKCE values\n    sessionStorage.removeItem(\"oauth_state\");\n    sessionStorage.removeItem(\"oauth_code_verifier\");\n    // Note: oauth_nonce is removed in validateIdToken after successful validation\n\n    return sessionData;\n  }\n\n  // Check if user is authenticated by checking session via auth-server\n  async isAuthenticated() {\n    try {\n      const headers = {\n        Accept: \"application/json\",\n      };\n\n      // For cross-domain clients, include session ID in Authorization header\n      // For same-domain clients, cookies are included automatically\n      const sessionId = sessionStorage.getItem(\"auth_session_id\");\n      if (this.isCrossDomain && sessionId) {\n        headers[\"Authorization\"] = `Bearer ${sessionId}`;\n        console.log(\n          \"🔍 Using session ID in Authorization header for authentication check\"\n        );\n      }\n\n      const response = await fetch(\n        `${this.config.authServerUrl}/session/check`,\n        {\n          method: \"GET\",\n          headers: headers,\n          credentials: \"include\", // Include cookies for same-domain fallback\n        }\n      );\n\n      if (response.ok) {\n        const result = await response.json();\n        // set auth_session_id if user is already signed in\n        sessionStorage.setItem(\"auth_id_token\", result.id_token);\n        return true;\n      }\n\n      return false;\n    } catch (error) {\n      console.error(\"Authentication check error:\", error);\n      return false;\n    }\n  }\n\n  // Helper function to decode JWT token payload\n  decodeJWT(token) {\n    try {\n      const base64Url = token.split(\".\")[1];\n      const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n      const jsonPayload = decodeURIComponent(\n        atob(base64)\n          .split(\"\")\n          .map(function (c) {\n            return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n          })\n          .join(\"\")\n      );\n      return JSON.parse(jsonPayload);\n    } catch (error) {\n      console.error(\"Error decoding JWT:\", error);\n      return null;\n    }\n  }\n\n  // Validate ID token for session recovery (without nonce)\n  validateIdTokenForRecovery(idToken) {\n    try {\n      const payload = this.decodeJWT(idToken);\n      if (!payload) {\n        console.error(\"Failed to decode ID token payload\");\n        return false;\n      }\n\n      // Validate audience (client ID)\n      if (payload.aud !== this.config.clientId) {\n        console.error(\"Audience validation failed\", {\n          expected: this.config.clientId,\n          actual: payload.aud,\n        });\n        return false;\n      }\n\n      // Validate expiration\n      if (!payload.exp || payload.exp * 1000 < Date.now()) {\n        console.error(\"Token expired\", {\n          exp: payload.exp,\n          now: Math.floor(Date.now() / 1000),\n        });\n        return false;\n      }\n\n      // Validate issued at time (not too old)\n      if (payload.iat && payload.iat * 1000 < Date.now() - 60 * 60 * 1000) {\n        // 1 hour max age\n        console.error(\"Token issued too long ago\", {\n          iat: payload.iat,\n          maxAge: \"1 hour\",\n        });\n        return false;\n      }\n\n      console.log(\n        \"ID token validation for recovery successful (no nonce check)\"\n      );\n      return true;\n    } catch (error) {\n      console.error(\"ID token validation error:\", error);\n      return false;\n    }\n  }\n\n  // Validate ID token with nonce and other security checks\n  validateIdToken(idToken) {\n    try {\n      const payload = this.decodeJWT(idToken);\n      if (!payload) {\n        console.error(\"Failed to decode ID token payload\");\n        return false;\n      }\n\n      // Validate nonce\n      const storedNonce = sessionStorage.getItem(\"oauth_nonce\");\n      if (!storedNonce) {\n        console.error(\"No stored nonce found for validation\");\n        return false;\n      }\n\n      if (!payload.nonce || payload.nonce !== storedNonce) {\n        console.error(\"Nonce validation failed\", {\n          stored: storedNonce,\n          token: payload.nonce,\n        });\n        return false;\n      }\n\n      // Validate audience (client ID)\n      if (payload.aud !== this.config.clientId) {\n        console.error(\"Audience validation failed\", {\n          expected: this.config.clientId,\n          actual: payload.aud,\n        });\n        return false;\n      }\n\n      // Validate expiration\n      if (!payload.exp || payload.exp * 1000 < Date.now()) {\n        console.error(\"Token expired\", {\n          exp: payload.exp,\n          now: Math.floor(Date.now() / 1000),\n        });\n        return false;\n      }\n\n      // Validate issued at time (not too old)\n      if (payload.iat && payload.iat * 1000 < Date.now() - 5 * 60 * 1000) {\n        console.error(\"Token issued too long ago\", {\n          iat: payload.iat,\n          maxAge: \"5 minutes\",\n        });\n        return false;\n      }\n\n      // Clean up nonce after successful validation\n      sessionStorage.removeItem(\"oauth_nonce\");\n      console.log(\"ID token validation successful\");\n      return true;\n    } catch (error) {\n      console.error(\"ID token validation error:\", error);\n      return false;\n    }\n  }\n\n  // Check if ID token is expired\n  isIdTokenExpired() {\n    try {\n      const idToken = sessionStorage.getItem(\"auth_id_token\");\n      if (!idToken) return true;\n\n      const payload = this.decodeJWT(idToken);\n      if (!payload || !payload.exp) return true;\n\n      // Check if token is expired (with 30 second buffer)\n      const now = Math.floor(Date.now() / 1000);\n      return payload.exp < now + 30;\n    } catch (error) {\n      console.error(\"Error checking ID token expiration:\", error);\n      return true;\n    }\n  }\n\n  // Get user info from ID token (offline method)\n  getUserInfo() {\n    try {\n      const idToken = sessionStorage.getItem(\"auth_id_token\");\n      if (!idToken) {\n        console.log(\"No ID token found in storage\");\n        return null;\n      }\n\n      const payload = this.decodeJWT(idToken);\n      if (!payload) {\n        console.log(\"Failed to decode ID token\");\n        return null;\n      }\n\n      // Check if token is expired\n      if (this.isIdTokenExpired()) {\n        console.log(\"ID token is expired\");\n        return null;\n      }\n\n      // Build user info object from token payload\n      const userInfo = {\n        sub: payload.sub,\n        email: payload.email,\n        preferred_name: payload.preferred_name,\n        isActive: payload.isActive,\n        iss: payload.iss,\n        aud: payload.aud,\n        exp: payload.exp,\n        iat: payload.iat,\n        jti: payload.jti,\n        // Optional OIDC claims\n        nonce: payload.nonce,\n        auth_time: payload.auth_time,\n        sid: payload.sid,\n        azp: payload.azp,\n        // FE client additions\n        name: payload.preferred_name || payload.name || payload.sub,\n        token_expired: false,\n        token_expires_at: new Date(payload.exp * 1000).toISOString(),\n        source: \"id_token\",\n        externalProvider: payload,\n      };\n\n      // Validate against schema if available\n      if (GetUserInfoSchema) {\n        try {\n          const validated = GetUserInfoSchema.parse(userInfo);\n          console.log(\"User info validated successfully against schema\");\n          return validated;\n        } catch (validationError) {\n          console.error(\"User info validation failed:\", validationError);\n          // Return unvalidated data but log the error\n          console.warn(\n            \"Returning unvalidated user info. Validation errors:\",\n            validationError.errors\n          );\n          return userInfo;\n        }\n      }\n\n      // Return without validation if schema not available\n      return userInfo;\n    } catch (error) {\n      console.error(\"Error getting user info from ID token:\", error);\n      return null;\n    }\n  }\n\n  // Get fresh user info from OAuth2 userinfo endpoint (UNIFIED ENDPOINT)\n  async getUserInfoFromAPI() {\n    console.warn(\n      \"getUserInfoFromAPI: /userinfo has been removed; returning ID token claims instead.\"\n    );\n    return this.getUserInfo();\n  }\n\n  // Get raw ID token from storage\n  getRawIdToken() {\n    return sessionStorage.getItem(\"auth_id_token\");\n  }\n\n  // Get CSRF token from cookie (same-domain only)\n  getCsrfToken() {\n    if (this.isCrossDomain) {\n      return null; // Cross-domain clients don't use CSRF tokens\n    }\n\n    const cookies = document.cookie.split(\";\");\n    for (let cookie of cookies) {\n      const [name, value] = cookie.trim().split(\"=\");\n      if (name === \"XSRF-TOKEN\") {\n        return decodeURIComponent(value);\n      }\n    }\n    return null;\n  }\n\n  // Make authenticated API request using appropriate authentication method\n  async makeAuthenticatedRequest(url, options = {}) {\n    const headers = {\n      Accept: \"application/json\",\n      ...options.headers,\n    };\n\n    // Choose authentication method based on domain context\n    if (this.isCrossDomain) {\n      // Cross-domain: Use session ID in Authorization header\n      const sessionId = sessionStorage.getItem(\"auth_session_id\");\n      if (sessionId) {\n        headers[\"Authorization\"] = `Bearer ${sessionId}`;\n        console.log(\n          \"Using session ID in Authorization header for cross-domain request to:\",\n          url\n        );\n      }\n    } else {\n      // Same-domain: Add CSRF token for state-changing requests\n      if (\n        options.method &&\n        [\"POST\", \"PUT\", \"DELETE\"].includes(options.method.toUpperCase())\n      ) {\n        const csrfToken = this.getCsrfToken();\n        if (csrfToken) {\n          headers[\"X-XSRF-TOKEN\"] = csrfToken;\n        }\n      }\n    }\n\n    const requestOptions = {\n      ...options,\n      headers: headers,\n      credentials: \"include\", // Always include cookies for same-domain fallback\n    };\n\n    const response = await fetch(url, requestOptions);\n\n    if (response.status === 401) {\n      // Don't auto-logout during callback flow or logout operations to prevent infinite loops\n      const isCallbackFlow =\n        options.skipAutoLogout || url.includes(\"/session/idtoken\");\n      const isLogoutOperation = url.includes(\"/session/logout\");\n      const isSessionCheck = url.includes(\"/session/check\");\n      const isUserInfoOperation = url.includes(\"/userinfo\");\n\n      if (\n        !isCallbackFlow &&\n        !isLogoutOperation &&\n        !isSessionCheck &&\n        !isUserInfoOperation\n      ) {\n        console.log(\"Session expired, redirecting to login\");\n        // Clear expired session data\n        this.clearLocalStorage();\n        // Redirect to login instead of logout\n        this.login();\n        throw new Error(\"Session expired\");\n      } else {\n        console.warn(\n          \"401 response during protected operation, not auto-logging out to prevent loops\"\n        );\n      }\n    }\n\n    return response;\n  }\n\n  // Prepare request options with authentication\n  beforeRequest(options = {}) {\n    const headers = {\n      Accept: \"application/json\", // Exact match with original\n      ...options.headers,\n    };\n\n    // Choose authentication method based on domain context\n    if (this.isCrossDomain) {\n      // Cross-domain: Use session ID in Authorization header\n      const sessionId = sessionStorage.getItem(\"auth_session_id\");\n      if (sessionId) {\n        headers[\"Authorization\"] = `Bearer ${sessionId}`;\n      }\n    } else {\n      // Same-domain: Add CSRF token for state-changing requests\n      if (\n        options.method &&\n        [\"POST\", \"PUT\", \"DELETE\"].includes(options.method.toUpperCase())\n      ) {\n        const csrfToken = this.getCsrfToken();\n        if (csrfToken) {\n          headers[\"X-XSRF-TOKEN\"] = csrfToken;\n        }\n      }\n    }\n\n    return {\n      ...options,\n      headers,\n      credentials: \"include\", // Always include cookies for same-domain fallback\n    };\n  }\n\n  // Handle response and authentication errors\n  afterRequest(response, url, options = {}) {\n    if (response.status === 401) {\n      // Don't auto-logout during callback flow or logout operations to prevent infinite loops\n      const isCallbackFlow =\n        options.skipAutoLogout || url.includes(\"/session/idtoken\");\n      const isLogoutOperation = url.includes(\"/session/logout\");\n      const isSessionCheck = url.includes(\"/session/check\");\n      const isUserInfoOperation = url.includes(\"/userinfo\");\n\n      if (\n        !isCallbackFlow &&\n        !isLogoutOperation &&\n        !isSessionCheck &&\n        !isUserInfoOperation\n      ) {\n        console.log(\"Session expired, redirecting to login\");\n        // Clear expired session data\n        this.clearLocalStorage();\n        // Redirect to login instead of logout\n        this.login();\n        throw new Error(\"Session expired\");\n      } else {\n        console.warn(\n          \"401 response during protected operation, not auto-logging out to prevent loops\"\n        );\n      }\n    }\n\n    return response;\n  }\n\n  // Finish popup flow - sends callback URL to parent for processing\n  finishPopupFlow() {\n    // Send callback URL to parent with clientId for disambiguation\n    if (window.opener) {\n      window.opener.postMessage(\n        {\n          type: \"oauth-callback\",\n          clientId: this.config.clientId,\n          callbackUrl: window.location.href,\n        },\n        \"*\"\n      );\n    }\n  }\n\n  // Logout - destroys session via auth-server with external IDP Single Logout support\n  async logout() {\n    try {\n      const headers = {\n        Accept: \"application/json\",\n      };\n\n      // For cross-domain clients, include session ID in Authorization header\n      const sessionId = sessionStorage.getItem(\"auth_session_id\");\n      if (this.isCrossDomain && sessionId) {\n        headers[\"Authorization\"] = `Bearer ${sessionId}`;\n        console.log(\"🚪 Using session ID in Authorization header for logout\");\n      }\n\n      const response = await fetch(\n        `${this.config.authServerUrl}/session/logout`,\n        {\n          method: \"POST\",\n          headers: headers,\n          credentials: \"include\", // Include cookies for same-domain fallback\n        }\n      );\n\n      // Check if auth server returned external logout redirect\n      if (response.ok) {\n        try {\n          const logoutData = await response.json();\n\n          if (logoutData.external_logout && logoutData.logout_url) {\n            console.log(\n              \"🔗 External IDP logout required, redirecting to:\",\n              logoutData.logout_url\n            );\n\n            // Clear local storage before external redirect\n            this.clearLocalStorage();\n\n            // Redirect to external IDP logout (e.g., Keycloak)\n            window.location.href = logoutData.logout_url;\n            return; // Don't proceed with local redirect\n          }\n        } catch (jsonError) {\n          console.warn(\n            \"Logout response is not JSON, continuing with standard logout\"\n          );\n        }\n      }\n    } catch (error) {\n      console.error(\"Logout error (ignoring):\", error);\n      // Ignore logout errors - we're logging out anyway\n    }\n\n    // Standard logout flow - clear storage and redirect locally\n    this.clearLocalStorage();\n\n    this.config.onLogout();\n  }\n\n  // Start popup flow - track popup window and listen for OAuth callback messages\n  startPopupFlow(popup) {\n    console.log(\"Starting popup tracking...\");\n\n    const handleMessage = (event) => {\n      console.log(\"Popup message received:\", event.data);\n\n      // Only respond to messages from our client\n      if (event.data.clientId !== this.config.clientId) {\n        console.log(\n          \"Ignoring message from different client:\",\n          event.data.clientId\n        );\n        return;\n      }\n\n      if (event.data.type === \"oauth-success\") {\n        console.log(\"OAuth success received from popup\");\n        popup.close();\n        window.removeEventListener(\"message\", handleMessage);\n        // Notify parent that auth completed\n        window.dispatchEvent(\n          new CustomEvent(AuthServerOAuth2Client.OAUTH_SUCCESS, {\n            detail: event.data,\n          })\n        );\n      } else if (event.data.type === \"oauth-error\") {\n        console.log(\"OAuth error received from popup\");\n        popup.close();\n        window.removeEventListener(\"message\", handleMessage);\n        // Notify parent that auth failed\n        window.dispatchEvent(\n          new CustomEvent(AuthServerOAuth2Client.OAUTH_ERROR, {\n            detail: event.data,\n          })\n        );\n      } else if (event.data.type === \"oauth-callback\") {\n        console.log(\"OAuth callback received from popup\");\n        popup.close();\n        window.removeEventListener(\"message\", handleMessage);\n        // Notify parent that callback is ready\n        window.dispatchEvent(\n          new CustomEvent(\"oauth-callback\", { detail: event.data })\n        );\n      }\n    };\n\n    window.addEventListener(\"message\", handleMessage);\n    console.log(\"Added message listener for popup\");\n\n    // Also check if popup is closed manually\n    const checkClosed = setInterval(() => {\n      if (popup.closed) {\n        clearInterval(checkClosed);\n        window.removeEventListener(\"message\", handleMessage);\n        console.log(\"Popup closed manually - cleaning up listeners\");\n      }\n    }, 1000);\n  }\n\n  // Helper method to clear all auth-related storage\n  clearLocalStorage() {\n    sessionStorage.removeItem(\"auth_id_token\");\n    sessionStorage.removeItem(\"auth_session_id\"); // Clear cross-domain session ID\n    sessionStorage.removeItem(\"oauth_state\"); // cleanup in case of incomplete flows\n    sessionStorage.removeItem(\"oauth_code_verifier\"); // cleanup in case of incomplete flows\n    sessionStorage.removeItem(\"oauth_nonce\"); // cleanup in case of incomplete flows\n    console.log(\"🧹 Cleared all auth-related storage\");\n  }\n}\n\n// ES module exports (for modern bundlers) - only when not in browser global context\nif (typeof module !== \"undefined\" && module.exports) {\n  // CommonJS (Node.js)\n  module.exports = AuthServerOAuth2Client;\n  module.exports.default = AuthServerOAuth2Client;\n  module.exports.AuthServerOAuth2Client = AuthServerOAuth2Client;\n} else if (typeof exports !== \"undefined\") {\n  // ES modules\n  exports.default = AuthServerOAuth2Client;\n  exports.AuthServerOAuth2Client = AuthServerOAuth2Client;\n}\n","import AuthServerOAuth2Client, { UserInfo } from \"@telicent-oss/fe-auth-lib\";\nimport { AxiosInstance } from \"axios\";\nimport { createContext } from \"react\";\n\nexport interface AuthContextProps {\n  user: UserInfo | null;\n  error: Error | null;\n  loading: boolean;\n  authClient: AuthServerOAuth2Client;\n  api: AxiosInstance;\n  login: () => Promise<void>;\n  logout: () => Promise<void>;\n}\n\nexport const AuthContext = createContext<AuthContextProps | null>(null);\n","import AuthServerOAuth2Client from \"@telicent-oss/fe-auth-lib\";\n\nexport const extractRedirectFromState = (url: URL) => {\n  const rawState = new URLSearchParams(url.search).get(\"state\");\n  if (!rawState) return { redirect: undefined, url };\n\n  const [csrf, encodedUrl] = rawState.split(\".\");\n  url.searchParams.set(\"state\", csrf);\n  let redirectUrl: URL | undefined;\n  if (encodedUrl) {\n    redirectUrl = new URL(\n      atob(encodedUrl.replace(/-/g, \"+\").replace(/_/g, \"/\"))\n    );\n  }\n\n  return { redirect: redirectUrl, url };\n};\n\nexport const setupOAuthEventListeners = (\n  OAuth2Client: AuthServerOAuth2Client,\n  onAuthSuccess?: (redirect?: URL) => void,\n  onAuthError?: (error?: Error) => void\n): (() => void) => {\n  const handleOAuthSuccess = () => {\n    console.log(\"OAuth success event received\");\n    onAuthSuccess?.();\n  };\n\n  const handleOAuthError = () => {\n    console.log(\"OAuth error event received\");\n    onAuthError?.();\n  };\n\n  const handleOAuthCallback = async (event: Event) => {\n    const customEvent = event as CustomEvent;\n    console.log(\"OAuth callback event received\", customEvent.detail);\n\n    try {\n      const callbackUrl = customEvent.detail.callbackUrl;\n      console.log(\"Processing callback URL:\", callbackUrl);\n\n      const { redirect, url } = extractRedirectFromState(new URL(callbackUrl));\n\n      const callbackResult = await OAuth2Client.handleCallback(\n        new URL(url).search\n      );\n      console.log(\"Callback processed successfully:\", callbackResult);\n      onAuthSuccess?.(redirect);\n    } catch (error) {\n      console.error(\"Callback processing failed:\", error);\n      onAuthError?.(error instanceof Error ? error : new Error(String(error)));\n    }\n  };\n\n  window.addEventListener(\n    AuthServerOAuth2Client.OAUTH_SUCCESS,\n    handleOAuthSuccess\n  );\n  window.addEventListener(AuthServerOAuth2Client.OAUTH_ERROR, handleOAuthError);\n  window.addEventListener(\"oauth-callback\", handleOAuthCallback); // Move into client?\n\n  return function cleanup() {\n    window.removeEventListener(\n      AuthServerOAuth2Client.OAUTH_SUCCESS,\n      handleOAuthSuccess\n    );\n    window.removeEventListener(\n      AuthServerOAuth2Client.OAUTH_ERROR,\n      handleOAuthError\n    );\n    window.removeEventListener(\"oauth-callback\", handleOAuthCallback);\n  };\n};\n","export const normalizePathname = (pathname: string): string => {\n  if (!pathname) return \"/\";\n\n  let end = pathname.length;\n  // Remove trailing slashes, but keep a single leading slash.\n  while (end > 1 && pathname[end - 1] === \"/\") {\n    end -= 1;\n  }\n\n  const normalized = pathname.slice(0, end);\n  return normalized || \"/\";\n};\n","export const parseAbsoluteUrl = (value: string | URL): URL => {\n  if (value instanceof URL) return value;\n\n  const trimmed = String(value).trim();\n  try {\n    return new URL(trimmed);\n  } catch {\n    throw new Error(`Invalid absolute URL: \"${trimmed}\"`);\n  }\n};\n","import { normalizePathname } from \"./normalizePathname\";\nimport { parseAbsoluteUrl } from \"./parseAbsoluteUrl\";\n\nexport const matchCurrentUri = (\n  target?: string | URL,\n  current?: string | URL\n): boolean => {\n  if (typeof window === \"undefined\") return false;\n  if (!target) {\n    console.error(\"[AuthProvider] redirectUri missing; cannot identify callback safely\");\n    return false;\n  }\n\n  try {\n    const targetUrl = parseAbsoluteUrl(target);\n\n    if (!targetUrl.origin || !targetUrl.pathname) {\n      console.error(\n        \"[AuthProvider] redirectUri must be absolute for OAuth web flows\"\n      );\n      return false;\n    }\n\n    if (targetUrl.hash) {\n      console.warn(\n        \"[AuthProvider] detected hash: Hash routing is not supported in callback detection\"\n      );\n    }\n\n    const currentUrl = current\n      ? parseAbsoluteUrl(current)\n      : new URL(window.location.href);\n\n    const currentPath = normalizePathname(currentUrl.pathname);\n    const targetPath = normalizePathname(targetUrl.pathname);\n\n    return currentUrl.origin === targetUrl.origin && currentPath === targetPath;\n  } catch (err) {\n    console.error(\n      \"[AuthProvider] Failed to parse redirectUri for comparison\",\n      err\n    );\n    return false;\n  }\n};","import { AuthServerOAuth2ClientConfig } from \"@telicent-oss/fe-auth-lib\";\nimport { matchCurrentUri } from \"./matchCurrentUrl\";\n\nexport type IsAuthRedirectArgs = {\n  config: AuthServerOAuth2ClientConfig;\n  url: string | URL;\n};\n\nexport const isAuthRedirect = ({\n  config,\n  url,\n}: IsAuthRedirectArgs): boolean => {\n  const needles = [config.redirectUri, config.popupRedirectUri];\n  return needles.some((needle) => matchCurrentUri(needle, url));\n};\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { AuthEvent, onAuthEvent } from \"../services/broadcastChannelService\";\n\nexport * from \"./isAuthRedirectUri\";\nexport * from \"./normalizePathname\";\nexport * from \"./parseAbsoluteUrl\";\n\nexport const registerAuthSync = (\n  queryClient: QueryClient,\n  baseUrl: string = \"\"\n) =>\n  onAuthEvent((event) => {\n    switch (event) {\n      case AuthEvent.AUTHENTICATED:\n      case AuthEvent.REAUTHENTICATED:\n        queryClient.refetchQueries({ stale: true });\n        break;\n      case AuthEvent.USER_CHANGED:\n        window.location.replace(baseUrl);\n        break;\n    }\n  });\n","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n","\"use strict\";\n\nimport bind from \"./helpers/bind.js\";\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n  const str = toString.call(thing);\n  return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest(\"undefined\");\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return (\n    val !== null &&\n    !isUndefined(val) &&\n    val.constructor !== null &&\n    !isUndefined(val.constructor) &&\n    isFunction(val.constructor.isBuffer) &&\n    val.constructor.isBuffer(val)\n  );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest(\"ArrayBuffer\");\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if (typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = val && val.buffer && isArrayBuffer(val.buffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest(\"string\");\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest(\"function\");\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest(\"number\");\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === \"object\";\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (kindOf(val) !== \"object\") {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (\n    (prototype === null ||\n      prototype === Object.prototype ||\n      Object.getPrototypeOf(prototype) === null) &&\n    !(toStringTag in val) &&\n    !(iterator in val)\n  );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n  // Early return for non-objects or Buffers to prevent RangeError\n  if (!isObject(val) || isBuffer(val)) {\n    return false;\n  }\n\n  try {\n    return (\n      Object.keys(val).length === 0 &&\n      Object.getPrototypeOf(val) === Object.prototype\n    );\n  } catch (e) {\n    // Fallback for any other objects that might cause RangeError with Object.keys()\n    return false;\n  }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest(\"Date\");\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest(\"File\");\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest(\"Blob\");\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest(\"FileList\");\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n  let kind;\n  return (\n    thing &&\n    ((typeof FormData === \"function\" && thing instanceof FormData) ||\n      (isFunction(thing.append) &&\n        ((kind = kindOf(thing)) === \"formdata\" ||\n          // detect form-data instance\n          (kind === \"object\" &&\n            isFunction(thing.toString) &&\n            thing.toString() === \"[object FormData]\"))))\n  );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest(\"URLSearchParams\");\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n  \"ReadableStream\",\n  \"Request\",\n  \"Response\",\n  \"Headers\",\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) =>\n  str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array<unknown>} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === \"undefined\") {\n    return;\n  }\n\n  let i;\n  let l;\n\n  // Force an array if not already something iterable\n  if (typeof obj !== \"object\") {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Buffer check\n    if (isBuffer(obj)) {\n      return;\n    }\n\n    // Iterate over object keys\n    const keys = allOwnKeys\n      ? Object.getOwnPropertyNames(obj)\n      : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\nfunction findKey(obj, key) {\n  if (isBuffer(obj)) {\n    return null;\n  }\n\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== \"undefined\") return globalThis;\n  return typeof self !== \"undefined\"\n    ? self\n    : typeof window !== \"undefined\"\n      ? window\n      : global;\n})();\n\nconst isContextDefined = (context) =>\n  !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n  const result = {};\n  const assignValue = (val, key) => {\n    // Skip dangerous property names to prevent prototype pollution\n    if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") {\n      return;\n    }\n\n    const targetKey = (caseless && findKey(result, key)) || key;\n    if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n      result[targetKey] = merge(result[targetKey], val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else if (!skipUndefined || !isUndefined(val)) {\n      result[targetKey] = val;\n    }\n  };\n\n  for (let i = 0, l = arguments.length; i < l; i++) {\n    arguments[i] && forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n  forEach(\n    b,\n    (val, key) => {\n      if (thisArg && isFunction(val)) {\n        Object.defineProperty(a, key, {\n          value: bind(val, thisArg),\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      } else {\n        Object.defineProperty(a, key, {\n          value: val,\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      }\n    },\n    { allOwnKeys },\n  );\n  return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xfeff) {\n    content = content.slice(1);\n  }\n  return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(\n    superConstructor.prototype,\n    descriptors,\n  );\n  Object.defineProperty(constructor.prototype, \"constructor\", {\n    value: constructor,\n    writable: true,\n    enumerable: false,\n    configurable: true,\n  });\n  Object.defineProperty(constructor, \"super\", {\n    value: superConstructor.prototype,\n  });\n  props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if (\n        (!propFilter || propFilter(prop, sourceObj, destObj)) &&\n        !merged[prop]\n      ) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (\n    sourceObj &&\n    (!filter || filter(sourceObj, destObj)) &&\n    sourceObj !== Object.prototype\n  );\n\n  return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!isNumber(i)) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n  // eslint-disable-next-line func-names\n  return (thing) => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== \"undefined\" && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[iterator];\n\n  const _iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = _iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest(\"HTMLFormElement\");\n\nconst toCamelCase = (str) => {\n  return str\n    .toLowerCase()\n    .replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n      return p1.toUpperCase() + p2;\n    });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n  ({ hasOwnProperty }) =>\n  (obj, prop) =>\n    hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest(\"RegExp\");\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (\n      isFunction(obj) &&\n      [\"arguments\", \"caller\", \"callee\"].indexOf(name) !== -1\n    ) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if (\"writable\" in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n      };\n    }\n  });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach((value) => {\n      obj[value] = true;\n    });\n  };\n\n  isArray(arrayOrString)\n    ? define(arrayOrString)\n    : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n  return value != null && Number.isFinite((value = +value))\n    ? value\n    : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(\n    thing &&\n    isFunction(thing.append) &&\n    thing[toStringTag] === \"FormData\" &&\n    thing[iterator]\n  );\n}\n\nconst toJSONObject = (obj) => {\n  const stack = new Array(10);\n\n  const visit = (source, i) => {\n    if (isObject(source)) {\n      if (stack.indexOf(source) >= 0) {\n        return;\n      }\n\n      //Buffer check\n      if (isBuffer(source)) {\n        return source;\n      }\n\n      if (!(\"toJSON\" in source)) {\n        stack[i] = source;\n        const target = isArray(source) ? [] : {};\n\n        forEach(source, (value, key) => {\n          const reducedValue = visit(value, i + 1);\n          !isUndefined(reducedValue) && (target[key] = reducedValue);\n        });\n\n        stack[i] = undefined;\n\n        return target;\n      }\n    }\n\n    return source;\n  };\n\n  return visit(obj, 0);\n};\n\nconst isAsyncFn = kindOfTest(\"AsyncFunction\");\n\nconst isThenable = (thing) =>\n  thing &&\n  (isObject(thing) || isFunction(thing)) &&\n  isFunction(thing.then) &&\n  isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n  if (setImmediateSupported) {\n    return setImmediate;\n  }\n\n  return postMessageSupported\n    ? ((token, callbacks) => {\n        _global.addEventListener(\n          \"message\",\n          ({ source, data }) => {\n            if (source === _global && data === token) {\n              callbacks.length && callbacks.shift()();\n            }\n          },\n          false,\n        );\n\n        return (cb) => {\n          callbacks.push(cb);\n          _global.postMessage(token, \"*\");\n        };\n      })(`axios@${Math.random()}`, [])\n    : (cb) => setTimeout(cb);\n})(typeof setImmediate === \"function\", isFunction(_global.postMessage));\n\nconst asap =\n  typeof queueMicrotask !== \"undefined\"\n    ? queueMicrotask.bind(_global)\n    : (typeof process !== \"undefined\" && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isEmptyObject,\n  isReadableStream,\n  isRequest,\n  isResponse,\n  isHeaders,\n  isUndefined,\n  isDate,\n  isFile,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable,\n  setImmediate: _setImmediate,\n  asap,\n  isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n    static from(error, code, config, request, response, customProps) {\n        const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n        axiosError.cause = error;\n        axiosError.name = error.name;\n        customProps && Object.assign(axiosError, customProps);\n        return axiosError;\n    }\n\n    /**\n     * Create an Error with the specified message, config, error code, request and response.\n     *\n     * @param {string} message The error message.\n     * @param {string} [code] The error code (for example, 'ECONNABORTED').\n     * @param {Object} [config] The config.\n     * @param {Object} [request] The request.\n     * @param {Object} [response] The response.\n     *\n     * @returns {Error} The created error.\n     */\n    constructor(message, code, config, request, response) {\n        super(message);\n        this.name = 'AxiosError';\n        this.isAxiosError = true;\n        code && (this.code = code);\n        config && (this.config = config);\n        request && (this.request = request);\n        if (response) {\n            this.response = response;\n            this.status = response.status;\n        }\n    }\n\n    toJSON() {\n        return {\n            // Standard\n            message: this.message,\n            name: this.name,\n            // Microsoft\n            description: this.description,\n            number: this.number,\n            // Mozilla\n            fileName: this.fileName,\n            lineNumber: this.lineNumber,\n            columnNumber: this.columnNumber,\n            stack: this.stack,\n            // Axios\n            config: utils.toJSONObject(this.config),\n            code: this.code,\n            status: this.status,\n        };\n    }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path.concat(key).map(function each(token, i) {\n    // eslint-disable-next-line no-param-reassign\n    token = removeBrackets(token);\n    return !dots && i ? '[' + token + ']' : token;\n  }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  // eslint-disable-next-line no-param-reassign\n  options = utils.toFlatObject(options, {\n    metaTokens: true,\n    dots: false,\n    indexes: false\n  }, false, function defined(option, source) {\n    // eslint-disable-next-line no-eq-null,eqeqeq\n    return !utils.isUndefined(source[option]);\n  });\n\n  const metaTokens = options.metaTokens;\n  // eslint-disable-next-line no-use-before-define\n  const visitor = options.visitor || defaultVisitor;\n  const dots = options.dots;\n  const indexes = options.indexes;\n  const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (utils.isBoolean(value)) {\n      return value.toString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = JSON.stringify(value);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n        )) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) && formData.append(\n            // eslint-disable-next-line no-nested-ternary\n            indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n            convertValue(el)\n          );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const stack = [];\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable\n  });\n\n  function build(value, path) {\n    if (utils.isUndefined(value)) return;\n\n    if (stack.indexOf(value) !== -1) {\n      throw Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n        formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n      );\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key]);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n    '%00': '\\x00'\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder ? function(value) {\n    return encoder.call(this, value, encode);\n  } : encode;\n\n  return this._pairs.map(function each(pair) {\n    return _encode(pair[0]) + '=' + _encode(pair[1]);\n  }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  if (!params) {\n    return url;\n  }\n\n  const _encode = options && options.encode || encode;\n\n  const _options = utils.isFunction(options) ? {\n    serialize: options\n  } : options;\n\n  const serializeFn = _options && _options.serialize;\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, _options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params) ?\n      params.toString() :\n      new AxiosURLSearchParams(params, _options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf(\"#\");\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n  constructor() {\n    this.handlers = [];\n  }\n\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   * @param {Object} options The options for the interceptor, synchronous and runWhen\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    this.handlers.push({\n      fulfilled,\n      rejected,\n      synchronous: options ? options.synchronous : false,\n      runWhen: options ? options.runWhen : null\n    });\n    return this.handlers.length - 1;\n  }\n\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {void}\n   */\n  eject(id) {\n    if (this.handlers[id]) {\n      this.handlers[id] = null;\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\n    }\n  }\n\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    utils.forEach(this.handlers, function forEachHandler(h) {\n      if (h !== null) {\n        fn(h);\n      }\n    });\n  }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false,\n  legacyInterceptorReqResOrdering: true\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob\n  },\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n  (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n  hasBrowserEnv,\n  hasStandardBrowserWebWorkerEnv,\n  hasStandardBrowserEnv,\n  _navigator as navigator,\n  origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n  ...utils,\n  ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), {\n    visitor: function(value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    },\n    ...options\n  });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z]\n  // foo.x.y.z\n  // foo-x-y-z\n  // foo x y z\n  return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n    return match[0] === '[]' ? '' : match[1] || match[0];\n  });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    let name = path[index++];\n\n    if (name === '__proto__') return true;\n\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!target[name] || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return obj;\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n  transitional: transitionalDefaults,\n\n  adapter: ['xhr', 'http', 'fetch'],\n\n  transformRequest: [function transformRequest(data, headers) {\n    const contentType = headers.getContentType() || '';\n    const hasJSONContentType = contentType.indexOf('application/json') > -1;\n    const isObjectPayload = utils.isObject(data);\n\n    if (isObjectPayload && utils.isHTMLForm(data)) {\n      data = new FormData(data);\n    }\n\n    const isFormData = utils.isFormData(data);\n\n    if (isFormData) {\n      return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n    }\n\n    if (utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data) ||\n      utils.isReadableStream(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n      return data.toString();\n    }\n\n    let isFileList;\n\n    if (isObjectPayload) {\n      if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n        return toURLEncodedForm(data, this.formSerializer).toString();\n      }\n\n      if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n        const _FormData = this.env && this.env.FormData;\n\n        return toFormData(\n          isFileList ? {'files[]': data} : data,\n          _FormData && new _FormData(),\n          this.formSerializer\n        );\n      }\n    }\n\n    if (isObjectPayload || hasJSONContentType ) {\n      headers.setContentType('application/json', false);\n      return stringifySafely(data);\n    }\n\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    const transitional = this.transitional || defaults.transitional;\n    const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    const JSONRequested = this.responseType === 'json';\n\n    if (utils.isResponse(data) || utils.isReadableStream(data)) {\n      return data;\n    }\n\n    if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n      const silentJSONParsing = transitional && transitional.silentJSONParsing;\n      const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n      try {\n        return JSON.parse(data, this.parseReviver);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      'Accept': 'application/json, text/plain, */*',\n      'Content-Type': undefined\n    }\n  }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n  const parsed = {};\n  let key;\n  let val;\n  let i;\n\n  rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n    i = line.indexOf(':');\n    key = line.substring(0, i).trim().toLowerCase();\n    val = line.substring(i + 1).trim();\n\n    if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n      return;\n    }\n\n    if (key === 'set-cookie') {\n      if (parsed[key]) {\n        parsed[key].push(val);\n      } else {\n        parsed[key] = [val];\n      }\n    } else {\n      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(this, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header.trim()\n    .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach(methodName => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      value: function(arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        throw new Error('header name must be a non-empty string');\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n        self[key || _header] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite)\n    } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else if (utils.isObject(header) && utils.isIterable(header)) {\n      let obj = {}, dest, key;\n      for (const entry of header) {\n        if (!utils.isArray(entry)) {\n          throw TypeError('Object iterator must return a key-value pair');\n        }\n\n        obj[key = entry[0]] = (dest = obj[key]) ?\n          (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n      }\n\n      setHeaders(obj, valueOrRewrite)\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = {};\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = format ? formatHeader(header) : String(header).trim();\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n  }\n\n  getSetCookie() {\n    return this.get(\"set-cookie\") || [];\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals = this[$internals] = (this[$internals] = {\n      accessors: {}\n    });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    }\n  }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n  /**\n   * A `CanceledError` is an object that is thrown when an operation is canceled.\n   *\n   * @param {string=} message The message.\n   * @param {Object=} config The config.\n   * @param {Object=} request The request.\n   *\n   * @returns {CanceledError} The created error.\n   */\n  constructor(message, config, request) {\n    super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n    this.name = 'CanceledError';\n    this.__CANCEL__ = true;\n  }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n      response.config,\n      response.request,\n      response\n    ));\n  }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n  let timestamp = 0;\n  let threshold = 1000 / freq;\n  let lastArgs;\n  let timer;\n\n  const invoke = (args, now = Date.now()) => {\n    timestamp = now;\n    lastArgs = null;\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    fn(...args);\n  }\n\n  const throttled = (...args) => {\n    const now = Date.now();\n    const passed = now - timestamp;\n    if ( passed >= threshold) {\n      invoke(args, now);\n    } else {\n      lastArgs = args;\n      if (!timer) {\n        timer = setTimeout(() => {\n          timer = null;\n          invoke(lastArgs)\n        }, threshold - passed);\n      }\n    }\n  }\n\n  const flush = () => lastArgs && invoke(lastArgs);\n\n  return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return throttle(e => {\n    const loaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const progressBytes = loaded - bytesNotified;\n    const rate = _speedometer(progressBytes);\n    const inRange = loaded <= total;\n\n    bytesNotified = loaded;\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? (loaded / total) : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n      event: e,\n      lengthComputable: total != null,\n      [isDownloadStream ? 'download' : 'upload']: true\n    };\n\n    listener(data);\n  }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n  const lengthComputable = total != null;\n\n  return [(loaded) => throttled[0]({\n    lengthComputable,\n    total,\n    loaded\n  }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n  url = new URL(url, platform.origin);\n\n  return (\n    origin.protocol === url.protocol &&\n    origin.host === url.host &&\n    (isMSIE || origin.port === url.port)\n  );\n})(\n  new URL(platform.origin),\n  platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n  // Standard browser envs support document.cookie\n  {\n    write(name, value, expires, path, domain, secure, sameSite) {\n      if (typeof document === 'undefined') return;\n\n      const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n      if (utils.isNumber(expires)) {\n        cookie.push(`expires=${new Date(expires).toUTCString()}`);\n      }\n      if (utils.isString(path)) {\n        cookie.push(`path=${path}`);\n      }\n      if (utils.isString(domain)) {\n        cookie.push(`domain=${domain}`);\n      }\n      if (secure === true) {\n        cookie.push('secure');\n      }\n      if (utils.isString(sameSite)) {\n        cookie.push(`SameSite=${sameSite}`);\n      }\n\n      document.cookie = cookie.join('; ');\n    },\n\n    read(name) {\n      if (typeof document === 'undefined') return null;\n      const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n      return match ? decodeURIComponent(match[1]) : null;\n    },\n\n    remove(name) {\n      this.write(name, '', Date.now() - 86400000, '/');\n    }\n  }\n\n  :\n\n  // Non-standard browser env (web workers, react-native) lack needed support.\n  {\n    write() {},\n    read() {\n      return null;\n    },\n    remove() {}\n  };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  if (typeof url !== 'string') {\n    return false;\n  }\n\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n  let isRelativeUrl = !isAbsoluteURL(requestedURL);\n  if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n","\"use strict\";\n\nimport utils from \"../utils.js\";\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) =>\n  thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  const config = {};\n\n  function getMergedValue(target, source, prop, caseless) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge.call({ caseless }, target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  function mergeDeepProperties(a, b, prop, caseless) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(a, b, prop, caseless);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a, prop, caseless);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(a, b, prop) {\n    if (prop in config2) {\n      return getMergedValue(a, b);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  const mergeMap = {\n    url: valueFromConfig2,\n    method: valueFromConfig2,\n    data: valueFromConfig2,\n    baseURL: defaultToConfig2,\n    transformRequest: defaultToConfig2,\n    transformResponse: defaultToConfig2,\n    paramsSerializer: defaultToConfig2,\n    timeout: defaultToConfig2,\n    timeoutMessage: defaultToConfig2,\n    withCredentials: defaultToConfig2,\n    withXSRFToken: defaultToConfig2,\n    adapter: defaultToConfig2,\n    responseType: defaultToConfig2,\n    xsrfCookieName: defaultToConfig2,\n    xsrfHeaderName: defaultToConfig2,\n    onUploadProgress: defaultToConfig2,\n    onDownloadProgress: defaultToConfig2,\n    decompress: defaultToConfig2,\n    maxContentLength: defaultToConfig2,\n    maxBodyLength: defaultToConfig2,\n    beforeRedirect: defaultToConfig2,\n    transport: defaultToConfig2,\n    httpAgent: defaultToConfig2,\n    httpsAgent: defaultToConfig2,\n    cancelToken: defaultToConfig2,\n    socketPath: defaultToConfig2,\n    responseEncoding: defaultToConfig2,\n    validateStatus: mergeDirectKeys,\n    headers: (a, b, prop) =>\n      mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n  };\n\n  utils.forEach(\n    Object.keys({ ...config1, ...config2 }),\n    function computeConfigValue(prop) {\n      if (\n        prop === \"__proto__\" ||\n        prop === \"constructor\" ||\n        prop === \"prototype\"\n      )\n        return;\n      const merge = utils.hasOwnProp(mergeMap, prop)\n        ? mergeMap[prop]\n        : mergeDeepProperties;\n      const configValue = merge(config1[prop], config2[prop], prop);\n      (utils.isUndefined(configValue) && merge !== mergeDirectKeys) ||\n        (config[prop] = configValue);\n    },\n  );\n\n  return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n  const newConfig = mergeConfig({}, config);\n\n  let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n  newConfig.headers = headers = AxiosHeaders.from(headers);\n\n  newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n  // HTTP basic authentication\n  if (auth) {\n    headers.set('Authorization', 'Basic ' +\n      btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n    );\n  }\n\n  if (utils.isFormData(data)) {\n    if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n      headers.setContentType(undefined); // browser handles it\n    } else if (utils.isFunction(data.getHeaders)) {\n      // Node.js FormData (like form-data package)\n      const formHeaders = data.getHeaders();\n      // Only set safe headers to avoid overwriting security headers\n      const allowedHeaders = ['content-type', 'content-length'];\n      Object.entries(formHeaders).forEach(([key, val]) => {\n        if (allowedHeaders.includes(key.toLowerCase())) {\n          headers.set(key, val);\n        }\n      });\n    }\n  }  \n\n  // Add xsrf header\n  // This is only done if running in a standard browser environment.\n  // Specifically not if we're in a web worker, or react-native.\n\n  if (platform.hasStandardBrowserEnv) {\n    withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n    if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n      // Add xsrf header\n      const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n      if (xsrfValue) {\n        headers.set(xsrfHeaderName, xsrfValue);\n      }\n    }\n  }\n\n  return newConfig;\n}\n\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    const _config = resolveConfig(config);\n    let requestData = _config.data;\n    const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n    let {responseType, onUploadProgress, onDownloadProgress} = _config;\n    let onCanceled;\n    let uploadThrottled, downloadThrottled;\n    let flushUpload, flushDownload;\n\n    function done() {\n      flushUpload && flushUpload(); // flush events\n      flushDownload && flushDownload(); // flush events\n\n      _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n      _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n    }\n\n    let request = new XMLHttpRequest();\n\n    request.open(_config.method.toUpperCase(), _config.url, true);\n\n    // Set the request timeout in MS\n    request.timeout = _config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      const responseHeaders = AxiosHeaders.from(\n        'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n      );\n      const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n        request.responseText : request.response;\n      const response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config,\n        request\n      };\n\n      settle(function _resolve(value) {\n        resolve(value);\n        done();\n      }, function _reject(err) {\n        reject(err);\n        done();\n      }, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n  request.onerror = function handleError(event) {\n       // Browsers deliver a ProgressEvent in XHR onerror\n       // (message may be empty; when present, surface it)\n       // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n       const msg = event && event.message ? event.message : 'Network Error';\n       const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n       // attach the underlying event for consumers who want details\n       err.event = event || null;\n       reject(err);\n       request = null;\n    };\n    \n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n      const transitional = _config.transitional || transitionalDefaults;\n      if (_config.timeoutErrorMessage) {\n        timeoutErrorMessage = _config.timeoutErrorMessage;\n      }\n      reject(new AxiosError(\n        timeoutErrorMessage,\n        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n        config,\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Remove Content-Type if data is undefined\n    requestData === undefined && requestHeaders.setContentType(null);\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n        request.setRequestHeader(key, val);\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(_config.withCredentials)) {\n      request.withCredentials = !!_config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = _config.responseType;\n    }\n\n    // Handle progress if needed\n    if (onDownloadProgress) {\n      ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n      request.addEventListener('progress', downloadThrottled);\n    }\n\n    // Not all browsers support upload events\n    if (onUploadProgress && request.upload) {\n      ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n      request.upload.addEventListener('progress', uploadThrottled);\n\n      request.upload.addEventListener('loadend', flushUpload);\n    }\n\n    if (_config.cancelToken || _config.signal) {\n      // Handle cancellation\n      // eslint-disable-next-line func-names\n      onCanceled = cancel => {\n        if (!request) {\n          return;\n        }\n        reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n        request.abort();\n        request = null;\n      };\n\n      _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n      if (_config.signal) {\n        _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n      }\n    }\n\n    const protocol = parseProtocol(_config.url);\n\n    if (protocol && platform.protocols.indexOf(protocol) === -1) {\n      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n      return;\n    }\n\n\n    // Send the request\n    request.send(requestData || null);\n  });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n  const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n  if (timeout || length) {\n    let controller = new AbortController();\n\n    let aborted;\n\n    const onabort = function (reason) {\n      if (!aborted) {\n        aborted = true;\n        unsubscribe();\n        const err = reason instanceof Error ? reason : this.reason;\n        controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n      }\n    }\n\n    let timer = timeout && setTimeout(() => {\n      timer = null;\n      onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT))\n    }, timeout)\n\n    const unsubscribe = () => {\n      if (signals) {\n        timer && clearTimeout(timer);\n        timer = null;\n        signals.forEach(signal => {\n          signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n        });\n        signals = null;\n      }\n    }\n\n    signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n    const {signal} = controller;\n\n    signal.unsubscribe = () => utils.asap(unsubscribe);\n\n    return signal;\n  }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n  let len = chunk.byteLength;\n\n  if (!chunkSize || len < chunkSize) {\n    yield chunk;\n    return;\n  }\n\n  let pos = 0;\n  let end;\n\n  while (pos < len) {\n    end = pos + chunkSize;\n    yield chunk.slice(pos, end);\n    pos = end;\n  }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n  for await (const chunk of readStream(iterable)) {\n    yield* streamChunk(chunk, chunkSize);\n  }\n}\n\nconst readStream = async function* (stream) {\n  if (stream[Symbol.asyncIterator]) {\n    yield* stream;\n    return;\n  }\n\n  const reader = stream.getReader();\n  try {\n    for (;;) {\n      const {done, value} = await reader.read();\n      if (done) {\n        break;\n      }\n      yield value;\n    }\n  } finally {\n    await reader.cancel();\n  }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n  const iterator = readBytes(stream, chunkSize);\n\n  let bytes = 0;\n  let done;\n  let _onFinish = (e) => {\n    if (!done) {\n      done = true;\n      onFinish && onFinish(e);\n    }\n  }\n\n  return new ReadableStream({\n    async pull(controller) {\n      try {\n        const {done, value} = await iterator.next();\n\n        if (done) {\n         _onFinish();\n          controller.close();\n          return;\n        }\n\n        let len = value.byteLength;\n        if (onProgress) {\n          let loadedBytes = bytes += len;\n          onProgress(loadedBytes);\n        }\n        controller.enqueue(new Uint8Array(value));\n      } catch (err) {\n        _onFinish(err);\n        throw err;\n      }\n    },\n    cancel(reason) {\n      _onFinish(reason);\n      return iterator.return();\n    }\n  }, {\n    highWaterMark: 2\n  })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n  Request, Response\n}))(utils.global);\n\nconst {\n  ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n  try {\n    return !!fn(...args);\n  } catch (e) {\n    return false\n  }\n}\n\nconst factory = (env) => {\n  env = utils.merge.call({\n    skipUndefined: true\n  }, globalFetchAPI, env);\n\n  const {fetch: envFetch, Request, Response} = env;\n  const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n  const isRequestSupported = isFunction(Request);\n  const isResponseSupported = isFunction(Response);\n\n  if (!isFetchSupported) {\n    return false;\n  }\n\n  const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n  const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n      ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n      async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n  );\n\n  const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n    let duplexAccessed = false;\n\n    const hasContentType = new Request(platform.origin, {\n      body: new ReadableStream(),\n      method: 'POST',\n      get duplex() {\n        duplexAccessed = true;\n        return 'half';\n      },\n    }).headers.has('Content-Type');\n\n    return duplexAccessed && !hasContentType;\n  });\n\n  const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n    test(() => utils.isReadableStream(new Response('').body));\n\n  const resolvers = {\n    stream: supportsResponseStream && ((res) => res.body)\n  };\n\n  isFetchSupported && ((() => {\n    ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n      !resolvers[type] && (resolvers[type] = (res, config) => {\n        let method = res && res[type];\n\n        if (method) {\n          return method.call(res);\n        }\n\n        throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n      })\n    });\n  })());\n\n  const getBodyLength = async (body) => {\n    if (body == null) {\n      return 0;\n    }\n\n    if (utils.isBlob(body)) {\n      return body.size;\n    }\n\n    if (utils.isSpecCompliantForm(body)) {\n      const _request = new Request(platform.origin, {\n        method: 'POST',\n        body,\n      });\n      return (await _request.arrayBuffer()).byteLength;\n    }\n\n    if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n      return body.byteLength;\n    }\n\n    if (utils.isURLSearchParams(body)) {\n      body = body + '';\n    }\n\n    if (utils.isString(body)) {\n      return (await encodeText(body)).byteLength;\n    }\n  }\n\n  const resolveBodyLength = async (headers, body) => {\n    const length = utils.toFiniteNumber(headers.getContentLength());\n\n    return length == null ? getBodyLength(body) : length;\n  }\n\n  return async (config) => {\n    let {\n      url,\n      method,\n      data,\n      signal,\n      cancelToken,\n      timeout,\n      onDownloadProgress,\n      onUploadProgress,\n      responseType,\n      headers,\n      withCredentials = 'same-origin',\n      fetchOptions\n    } = resolveConfig(config);\n\n    let _fetch = envFetch || fetch;\n\n    responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n    let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n    let request = null;\n\n    const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n      composedSignal.unsubscribe();\n    });\n\n    let requestContentLength;\n\n    try {\n      if (\n        onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n        (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n      ) {\n        let _request = new Request(url, {\n          method: 'POST',\n          body: data,\n          duplex: \"half\"\n        });\n\n        let contentTypeHeader;\n\n        if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n          headers.setContentType(contentTypeHeader)\n        }\n\n        if (_request.body) {\n          const [onProgress, flush] = progressEventDecorator(\n            requestContentLength,\n            progressEventReducer(asyncDecorator(onUploadProgress))\n          );\n\n          data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n        }\n      }\n\n      if (!utils.isString(withCredentials)) {\n        withCredentials = withCredentials ? 'include' : 'omit';\n      }\n\n      // Cloudflare Workers throws when credentials are defined\n      // see https://github.com/cloudflare/workerd/issues/902\n      const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n      const resolvedOptions = {\n        ...fetchOptions,\n        signal: composedSignal,\n        method: method.toUpperCase(),\n        headers: headers.normalize().toJSON(),\n        body: data,\n        duplex: \"half\",\n        credentials: isCredentialsSupported ? withCredentials : undefined\n      };\n\n      request = isRequestSupported && new Request(url, resolvedOptions);\n\n      let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n      const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n      if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n        const options = {};\n\n        ['status', 'statusText', 'headers'].forEach(prop => {\n          options[prop] = response[prop];\n        });\n\n        const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n        const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n          responseContentLength,\n          progressEventReducer(asyncDecorator(onDownloadProgress), true)\n        ) || [];\n\n        response = new Response(\n          trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n            flush && flush();\n            unsubscribe && unsubscribe();\n          }),\n          options\n        );\n      }\n\n      responseType = responseType || 'text';\n\n      let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n      !isStreamResponse && unsubscribe && unsubscribe();\n\n      return await new Promise((resolve, reject) => {\n        settle(resolve, reject, {\n          data: responseData,\n          headers: AxiosHeaders.from(response.headers),\n          status: response.status,\n          statusText: response.statusText,\n          config,\n          request\n        })\n      })\n    } catch (err) {\n      unsubscribe && unsubscribe();\n\n      if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n        throw Object.assign(\n          new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, err && err.response),\n          {\n            cause: err.cause || err\n          }\n        )\n      }\n\n      throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n    }\n  }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n  let env = (config && config.env) || {};\n  const {fetch, Request, Response} = env;\n  const seeds = [\n    Request, Response, fetch\n  ];\n\n  let len = seeds.length, i = len,\n    seed, target, map = seedCache;\n\n  while (i--) {\n    seed = seeds[i];\n    target = map.get(seed);\n\n    target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n    map = target;\n  }\n\n  return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n * \n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter,\n  fetch: {\n    get: fetchAdapter.getFetch,\n  }\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n  if (fn) {\n    try {\n      Object.defineProperty(fn, 'name', { value });\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', { value });\n  }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n * \n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n * \n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n * \n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n  adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n  const { length } = adapters;\n  let nameOrAdapter;\n  let adapter;\n\n  const rejectedReasons = {};\n\n  for (let i = 0; i < length; i++) {\n    nameOrAdapter = adapters[i];\n    let id;\n\n    adapter = nameOrAdapter;\n\n    if (!isResolvedHandle(nameOrAdapter)) {\n      adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n      if (adapter === undefined) {\n        throw new AxiosError(`Unknown adapter '${id}'`);\n      }\n    }\n\n    if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n      break;\n    }\n\n    rejectedReasons[id || '#' + i] = adapter;\n  }\n\n  if (!adapter) {\n    const reasons = Object.entries(rejectedReasons)\n      .map(([id, state]) => `adapter ${id} ` +\n        (state === false ? 'is not supported by the environment' : 'is not available in the build')\n      );\n\n    let s = length ?\n      (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n      'as no adapter specified';\n\n    throw new AxiosError(\n      `There is no suitable adapter to dispatch the request ` + s,\n      'ERR_NOT_SUPPORT'\n    );\n  }\n\n  return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n  /**\n   * Resolve an adapter from a list of adapter names or functions.\n   * @type {Function}\n   */\n  getAdapter,\n\n  /**\n   * Exposes all known adapters\n   * @type {Object<string, Function|Object>}\n   */\n  adapters: knownAdapters\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(config.headers);\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.transformRequest\n  );\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      config.transformResponse,\n      response\n    );\n\n    response.headers = AxiosHeaders.from(response.headers);\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          config.transformResponse,\n          reason.response\n        );\n        reason.response.headers = AxiosHeaders.from(reason.response.headers);\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n}\n","export const VERSION = \"1.13.5\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n  return (value, opt) => {\n    // eslint-disable-next-line no-console\n    console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n    return true;\n  }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    const validator = schema[opt];\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(instanceConfig) {\n    this.defaults = instanceConfig || {};\n    this.interceptors = {\n      request: new InterceptorManager(),\n      response: new InterceptorManager()\n    };\n  }\n\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(configOrUrl, config) {\n    try {\n      return await this._request(configOrUrl, config);\n    } catch (err) {\n      if (err instanceof Error) {\n        let dummy = {};\n\n        Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n        // slice off the Error: ... line\n        const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n        try {\n          if (!err.stack) {\n            err.stack = stack;\n            // match without the 2 top stack lines\n          } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n            err.stack += '\\n' + stack\n          }\n        } catch (e) {\n          // ignore the case where \"stack\" is an un-writable property\n        }\n      }\n\n      throw err;\n    }\n  }\n\n  _request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const {transitional, paramsSerializer, headers} = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(transitional, {\n        silentJSONParsing: validators.transitional(validators.boolean),\n        forcedJSONParsing: validators.transitional(validators.boolean),\n        clarifyTimeoutError: validators.transitional(validators.boolean),\n        legacyInterceptorReqResOrdering: validators.transitional(validators.boolean)\n      }, false);\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer\n        }\n      } else {\n        validator.assertOptions(paramsSerializer, {\n          encode: validators.function,\n          serialize: validators.function\n        }, true);\n      }\n    }\n\n    // Set config.allowAbsoluteUrls\n    if (config.allowAbsoluteUrls !== undefined) {\n      // do nothing\n    } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n      config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n    } else {\n      config.allowAbsoluteUrls = true;\n    }\n\n    validator.assertOptions(config, {\n      baseUrl: validators.spelling('baseURL'),\n      withXsrfToken: validators.spelling('withXSRFToken')\n    }, true);\n\n    // Set config.method\n    config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n    // Flatten headers\n    let contextHeaders = headers && utils.merge(\n      headers.common,\n      headers[config.method]\n    );\n\n    headers && utils.forEach(\n      ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n      (method) => {\n        delete headers[method];\n      }\n    );\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let synchronousRequestInterceptors = true;\n    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n        return;\n      }\n\n      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n      const transitional = config.transitional || transitionalDefaults;\n      const legacyInterceptorReqResOrdering = transitional && transitional.legacyInterceptorReqResOrdering;\n\n      if (legacyInterceptorReqResOrdering) {\n        requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n      } else {\n        requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n      }\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift(...requestInterceptorChain);\n      chain.push(...responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled(newConfig);\n      } catch (error) {\n        onRejected.call(this, error);\n        break;\n      }\n    }\n\n    try {\n      promise = dispatchRequest.call(this, newConfig);\n    } catch (error) {\n      return Promise.reject(error);\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method,\n      url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(mergeConfig(config || {}, {\n        method,\n        headers: isForm ? {\n          'Content-Type': 'multipart/form-data'\n        } : {},\n        url,\n        data\n      }));\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then(cancel => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = onfulfilled => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise(resolve => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  toAbortSignal() {\n    const controller = new AbortController();\n\n    const abort = (err) => {\n      controller.abort(err);\n    };\n\n    this.subscribe(abort);\n\n    controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n    return controller.signal;\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel\n    };\n  }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  const args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n  WebServerIsDown: 521,\n  ConnectionTimedOut: 522,\n  OriginIsUnreachable: 523,\n  TimeoutOccurred: 524,\n  SslHandshakeFailed: 525,\n  InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n  // Copy context to instance\n  utils.extend(instance, context, null, {allOwnKeys: true});\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig\n} = axios;\n\nexport {\n  axios as default,\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig\n}\n","import { AxiosInstance, AxiosRequestHeaders, AxiosHeaders } from \"axios\";\nimport { SessionHandlingConfig } from \"../types\";\nimport {\n  AuthEvent,\n  broadcastAuthEvent,\n  onAuthEvent,\n} from \"./broadcastChannelService\";\nimport AuthServerOAuth2Client from \"@telicent-oss/fe-auth-lib\";\n\nconst formatPayload = (headers: AxiosRequestHeaders, data: unknown) => {\n  const ct = new AxiosHeaders(headers).get(\"Content-Type\")?.toString().toLowerCase();\n\n  switch (ct) {\n    case \"application/json\":\n      if (data === undefined || data === null) return data;\n      if (typeof data === \"string\") {\n        // If Axios already serialized, do not stringify again\n        return data;\n      }\n      return JSON.stringify(data);\n\n    case \"application/x-www-form-urlencoded\":\n      return new URLSearchParams(data as Record<string, string>).toString();\n\n    case \"multipart/form-data\":\n      return data; // FormData must pass through untouched\n\n    case \"application/octet-stream\":\n      return data; // binary types must not be stringified\n\n    case \"text/plain\":\n      return String(data);\n\n    case \"application/xml\":\n    case \"text/xml\":\n      if (typeof data !== \"string\") {\n        throw new Error(\"XML payload must be a string\");\n      }\n      return data;\n\n    default:\n      return data; // fallback\n  }\n};\n\nexport { formatPayload };\n\n\nexport function withSessionHandling(\n  instance: AxiosInstance,\n  { queryClient, keysToInvalidate = [] }: SessionHandlingConfig,\n  authClient?: AuthServerOAuth2Client\n) {\n  if (authClient) {\n    instance.defaults.adapter = async (config) => {\n      const fullUrl = config.url?.startsWith(\"http\")\n        ? config.url\n        : `${config.baseURL || \"\"}${config.url || \"\"}`;\n\n      try {\n        const sendOnce = () =>\n          authClient.makeAuthenticatedRequest(fullUrl, {\n            body: formatPayload(config.headers, config.data),\n            headers: new AxiosHeaders(config.headers).toJSON() as Record<\n              string,\n              string\n            >,\n            method: config.method,\n            skipAutoLogout: true,\n          });\n\n        const response = await sendOnce();\n\n        if (response.status === 401) {\n          if (!fullUrl.includes(\"/session/check\")) {\n            broadcastAuthEvent(AuthEvent.UNAUTHORIZED);\n          }\n\n          return new Promise((resolve, reject) => {\n            let unsubscribe: (() => void) | null = null;\n\n            const retryAfterAuth = () => {\n              sendOnce()\n                .then((retryResponse: Response) => {\n                  return retryResponse.text().then((retryText: string) => {\n                    const retryData = retryText ? JSON.parse(retryText) : null;\n                    resolve({\n                      data: retryData,\n                      status: retryResponse.status,\n                      statusText: retryResponse.statusText,\n                      headers: Object.fromEntries(\n                        retryResponse.headers.entries()\n                      ),\n                      config,\n                      request: {},\n                    });\n                  });\n                })\n                .catch(reject);\n            };\n\n            unsubscribe = onAuthEvent((event) => {\n              if (event === AuthEvent.AUTHENTICATED) {\n                if (unsubscribe) unsubscribe();\n                retryAfterAuth();\n              }\n            });\n          });\n        }\n\n        const responseText = await response.text();\n        const data = responseText ? JSON.parse(responseText) : null;\n\n        if (response.status >= 400 && response.status !== 401) {\n          return Promise.reject({\n            message: `Request failed with status ${response.status}`,\n            config,\n            request: {},\n            response: {\n              status: response.status,\n              statusText: response.statusText,\n              data,\n              headers: Object.fromEntries(response.headers.entries()),\n            },\n          });\n        }\n\n        return Promise.resolve({\n          data,\n          status: response.status,\n          statusText: response.statusText,\n          headers: Object.fromEntries(response.headers.entries()),\n          config,\n          request: {},\n        });\n      } catch (error) {\n        const message =\n          error &&\n          typeof error === \"object\" &&\n          \"message\" in error &&\n          typeof error.message === \"string\"\n            ? error.message\n            : `Unknown error ${error}`;\n        return Promise.reject({\n          message,\n          config,\n          request: {},\n          response: {\n            status: 500,\n            data: { error: message },\n          },\n        });\n      }\n    };\n  } else {\n    instance.interceptors.response.use(\n      (res) => res,\n      (err) => {\n        if (err.response?.status === 401) {\n          if (queryClient) {\n            keysToInvalidate.forEach((key) =>\n              queryClient.invalidateQueries({ queryKey: key, exact: true })\n            );\n          }\n          broadcastAuthEvent(AuthEvent.UNAUTHORIZED);\n        }\n        return Promise.reject(err);\n      }\n    );\n  }\n\n  return { instance };\n}","import axios from \"axios\";\nimport { RequestApi, SessionHandlingConfig } from \"./types\";\nimport { withSessionHandling } from \"./services/withSessionHandling\";\nimport AuthServerOAuth2Client from \"@telicent-oss/fe-auth-lib\";\nexport { setupOAuthEventListeners } from \"./services/setupOAuthEventListeners\";\n\nexport const createRequestApi = (\n  baseURL?: string,\n  authClient?: AuthServerOAuth2Client\n): RequestApi => {\n  const instance = axios.create({\n    baseURL,\n    withCredentials: true, // Ensure cookies are always sent\n  });\n\n  const requestApi: RequestApi = {\n    instance,\n    withSessionHandling: (config: SessionHandlingConfig) => {\n      withSessionHandling(instance, config, authClient);\n      return requestApi;\n    },\n    build: () => ({ instance }),\n  };\n\n  return requestApi;\n};\n\n// Backward compatibility alias\nexport const createApi = createRequestApi;\n","import AuthServerOAuth2Client, { AuthServerOAuth2ClientConfig, UserInfo } from \"@telicent-oss/fe-auth-lib\";\nimport React, { useEffect, useMemo, useState } from \"react\"\nimport { AuthContext } from \"./AuthContext\";\nimport { setupOAuthEventListeners } from \"../services/setupOAuthEventListeners\";\nimport { registerAuthSync } from \"../utils\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport { createApi } from \"../index\";\nimport { AuthEvent, broadcastAuthEvent } from \"../exports\";\nimport { matchCurrentUri } from \"../utils/matchCurrentUrl\";\n\ninterface AuthProviderProps {\n  apiUrl: string;\n  config: AuthServerOAuth2ClientConfig;\n  queryClient: QueryClient;\n  children: React.ReactNode;\n}\n\nconst createAuthHandlers = (\n  client: AuthServerOAuth2Client,\n  setUser: Function,\n  setError: Function,\n  locationPath: string\n) => {\n\n  const onError = (err: unknown) => {\n    setUser(null);\n    setError(err instanceof Error ? err : new Error(String(err)));\n  };\n\n  const onSuccess = async (redirect?: URL) => {\n    const profile = client.getUserInfo();\n    setUser(profile);\n    setError(null);\n    broadcastAuthEvent(AuthEvent.AUTHENTICATED)\n    const isPopupFlow = !!window.opener\n    if (!isPopupFlow && redirect) window.location.replace(redirect)\n  };\n\n  return { onError, onSuccess };\n};\n\nconst runAsync = (asyncFn: () => Promise<void>, setLoading: (b: boolean) => void) => {\n  let mounted = true;\n\n  const wrapped = async () => {\n    setLoading(true);\n    try {\n      await asyncFn();\n    } finally {\n      if (mounted) setLoading(false);\n    }\n  };\n\n  wrapped();\n\n  return () => {\n    mounted = false;\n  };\n};\n\nexport const AuthProvider: React.FC<AuthProviderProps> = ({ apiUrl, config, queryClient, children }) => {\n  const [user, setUser] = useState<UserInfo | null>(null);\n  const [error, setError] = useState<Error | null>(null);\n  const [loading, setLoading] = useState(false);\n  const [client, setClient] = useState<AuthServerOAuth2Client | null>(null);\n  const [initialised, setInitialised] = useState(false);\n\n  useEffect(() => {\n    if (!config || Object.values(config).length === 0) return;\n    setClient(new AuthServerOAuth2Client(config));\n  }, [config]);\n\n  useEffect(() => {\n    if (!client) return;\n\n    const { onError, onSuccess } = createAuthHandlers(client, setUser, setError, location.pathname);\n    const cleanupAuth = setupOAuthEventListeners(client, onSuccess, onError);\n    const cleanupSync = registerAuthSync(queryClient);\n\n    const cleanupCheck = runAsync(async () => {\n      try {\n        const isStandardCallback = matchCurrentUri(client.config.redirectUri);\n        const isPopupCallback = matchCurrentUri(client.config.popupRedirectUri);\n\n        // In popup callback windows, rely on finishPopupFlow to complete auth; avoid isAuthenticated/login\n        if (!isPopupCallback && !isStandardCallback) {\n        const authenticated = await client.isAuthenticated();\n        if (!authenticated) client.login();\n\n        const profile = client.getUserInfo();\n        setUser(profile);\n        setError(null);\n      }\n      } catch (err) {\n        console.error(\"[AuthProvider] Auth check failed\", err);\n        setError(err instanceof Error ? err : new Error(String(err)));\n      } finally {\n      setInitialised(true);\n      }\n    }, setLoading);\n\n    return () => {\n      cleanupAuth();\n      cleanupSync();\n      cleanupCheck();\n    };\n  }, [client, queryClient, location.pathname]);\n\n  const api = useMemo(() => {\n    if (!client) return;\n    const factory = createApi(apiUrl, client);\n    factory.withSessionHandling({\n      keysToInvalidate: [],\n      queryClient,\n    });\n    return factory.build().instance;\n  }, [client, queryClient, apiUrl]);\n\n  // Block until client is fully configured + initialised\n  if (!client || !initialised || !api) return null;\n\n  const value = {\n    user,\n    error,\n    loading,\n    api,\n    authClient: client,\n    login: () => client.loginWithPopup(client.config.popupRedirectUri),\n    logout: () => client.logout(),\n  };\n\n  return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n};\n","import { useContext } from \"react\";\nimport { AuthContext, AuthContextProps } from \"./AuthContext\";\n\nexport const useAuth = (): AuthContextProps => {\n  const ctx = useContext(AuthContext);\n  if (!ctx) throw new Error(\"useAuth must be used within an AuthProvider\");\n  return ctx;\n};\n","import React, { FC } from \"react\";\nimport AuthServerOAuth2Client, { AuthServerOAuth2ClientConfig } from \"@telicent-oss/fe-auth-lib\";\nimport { FlexBox, Text } from \"../../../export\";\n\ninterface AuthRedirectUriProps {\n  config: AuthServerOAuth2ClientConfig\n}\n\nexport const AuthRedirectUri: FC<AuthRedirectUriProps> = ({ config }) => {\n  React.useEffect(() => {\n    if (!config || Object.values(config).length === 0) {\n      console.log(\n        \"[auth-popup] Missing OAuth config on callback page, skipping finishPopupFlow\"\n      );\n      return;\n    }\n\n    const hasOpener = typeof window !== \"undefined\" && !!window.opener;\n    const isPopup =\n      hasOpener || (typeof window !== \"undefined\" && window.parent !== window);\n\n    if (typeof window !== \"undefined\") {\n      console.log(\"[auth-popup] Callback loaded\", {\n        href: window.location.href,\n        search: window.location.search,\n        hasOpener,\n        isPopup,\n      });\n    }\n\n    try {\n      const client = new AuthServerOAuth2Client(config);\n      console.log(\"[auth-popup] Calling finishPopupFlow\");\n      client.finishPopupFlow();\n      console.log(\"[auth-popup] finishPopupFlow returned\");\n    } catch (err) {\n      console.error(\"[auth-popup] finishPopupFlow threw\", err);\n    }\n  }, [config]);\n\n  return (\n    <FlexBox gap={2} sx={{ marginX: 5 }}>\n      <FlexBox>\n        <Text variant=\"body1\">Processing login...</Text>\n      </FlexBox>\n    </FlexBox>\n  );\n};\n","import { FC, useEffect } from \"react\";\nimport { Spinner } from \"../../../export\";\n\ninterface CallbackProps {\n  clientId: string;\n}\nexport const Callback: FC<CallbackProps> = ({ clientId }) => {\n  useEffect(() => {\n    setTimeout(() => {\n      const event = new CustomEvent(\"oauth-callback\", {\n        detail: {\n          callbackUrl: window.location.href,\n          clientId: clientId,\n        },\n      });\n      window.dispatchEvent(event);\n    }, 0);\n  }, [clientId]);\n\n  return (\n    <div\n      style={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        height: \"100vh\",\n        gap: \"0.5rem\",\n      }}\n    >\n      <Spinner size={64} style={{ color: \"rgba(255,255,255,0.5)\" }} />\n      <p>Logging you in. You'll be redirected shortly.</p>\n    </div>\n  );\n};\n","import { useState, useRef, useEffect } from \"react\";\nimport { H3, Text } from \"../../../components/data-display/Text/Text\";\nimport { FlexBox, Button, Modal } from \"../../../export\";\nimport { AuthEvent, onAuthEvent } from \"../services/broadcastChannelService\";\nimport { useAuth } from \"../context/useAuth\";\n\ninterface AuthRedirectModalProps {\n  debounceMs?: number;\n}\n\nexport const AuthModal: React.FC<AuthRedirectModalProps> = ({ debounceMs = 5000 }) => {\n  const { login } = useAuth();\n  const alreadyTriggered = useRef(false);\n  const [isOpen, setIsOpen] = useState(false);\n\n  const handleLoginClick = () => {\n    login();\n  };\n\n  useEffect(() => {\n    const unsubscribe = onAuthEvent((event) => {\n      if (event === AuthEvent.UNAUTHORIZED && !alreadyTriggered.current) {\n        setIsOpen(true);\n        alreadyTriggered.current = true;\n        setTimeout(() => {\n          alreadyTriggered.current = false;\n        }, debounceMs);\n      } else if (event === AuthEvent.AUTHENTICATED || event === AuthEvent.REAUTHENTICATED) {\n        setIsOpen(false);\n        alreadyTriggered.current = false;\n      }\n    });\n\n    return unsubscribe;\n  }, []);\n\n  const handleCloseClick = () => {\n    setIsOpen(false);\n  };\n\n  return (\n    <Modal hideCloseButton onClose={() => {}} sx={{ m: 2, p: 2 }} open={isOpen}>\n      <FlexBox sx={{ p: 2, overflowY: \"auto\" }}>\n        <H3>You are not signed in</H3>\n        <Text sx={{ pt: 4 }}>\n          Your session may have expired, you may have signed out, or your account isn&apos;t active.\n        </Text>\n        <Text>Please login to continue.</Text>\n        <Text sx={{ pt: 4 }}>If you continue to have issues, contact your system administrator.</Text>\n        <FlexBox ml=\"auto\" mt={2} gap={1} direction=\"row\">\n          <Button variant=\"secondary\" disableElevation onClick={handleCloseClick} size=\"large\">\n            Close\n          </Button>\n          <Button variant=\"primary\" onClick={handleLoginClick} size=\"large\">\n            Login\n          </Button>\n        </FlexBox>\n      </FlexBox>\n    </Modal>\n  );\n};\n","/**\n * Splits a URI into its base and terminal segment.\n *\n * Handles both hash (`#`) and slash (`/`) based URIs.\n * For example:\n * - \"http://example.com/foo#Bar\" → [\"http://example.com/foo\", \"Bar\"]\n * - \"http://example.com/foo/Bar\" → [\"http://example.com/foo\", \"Bar\"]\n *\n * If the URI is invalid, returns the original string as the base and an empty term.\n *\n * @param {string} rawString - The URI to split.\n * @returns {[string, string]} A tuple where the first element is the base and the second is the term.\n */\nexport const splitURIBaseAndTerm = (rawString: string) => {\n  try {\n    const input = rawString.trim();\n    const url = new URL(input);\n    let [base, term] = [input, \"\"];\n    if (url.hash !== \"\") {\n      [base, term] = [`${url.origin}${url.pathname}`, url.hash.substring(1)];\n    } else if (url.pathname !== \"\") {\n      const split = url.pathname.split(\"/\");\n      [term, base] = [split.pop() ?? \"\", `${url.origin}${split.join(\"/\")}`];\n    }\n    return [base, term];\n  } catch (e) {\n    // eslint-disable-next-line no-console\n    console.error(`URI '${rawString}' is not valid, ${e}`);\n    return [rawString, \"\"];\n  }\n};\n","import { OntologyService } from \"@telicent-oss/ontologyservice\";\nimport { splitURIBaseAndTerm } from \"../split-uri-base-and-term\";\nconst addSpaces = (str: string) => str.replace(/(?!^)([A-Z])/g, \" $1\");\nexport const PreferredLabelCache = (function () {\n  let cache: Record<string, string> | null = null;\n  let initPromise: Promise<void> | null = null;\n  /**\n   * Initializes the preferred label cache using data fetched from the provided ontology service.\n   *\n   * @param {OntologyService} ontologyService - The service used to fetch preferred labels.\n   *\n   * @returns {Promise<void>} A promise that resolves when the cache initialization is complete.\n   *\n   * @async\n   */\n  const init = async (ontologyService: OntologyService): Promise<void> => {\n    if (cache !== null) return;\n\n    if (!initPromise) {\n      initPromise = (async () => {\n        const res = await ontologyService.getAllPreferredLabels();\n\n        const preferredLabelLookup =\n          res?.reduce((acc, item) => {\n            const key = item.name.value;\n            const value = item?.label?.value;\n            acc[key] = value ?? \"\";\n            return acc;\n          }, {} as Record<string, string>) ?? {};\n\n        cache = Object.freeze(preferredLabelLookup);\n      })();\n    }\n\n    await initPromise;\n  };\n\n  /**\n   * Retrieves a preferred label from the cache for a given value.\n   *\n   * If the cache has not been populated, a warning is logged.\n   * If a label is not found, returns a human-friendly type derived\n   * from the URI.\n   *\n   * @param {string} val - The value to retrieve the preferred label for.\n   * @returns {string} - The preferred label or a human-friendly type if not found.\n   */\n  const get = (val: string) => {\n    if (!val) return \"\";\n\n    if (!cache) {\n      console.warn(\"The cache has not been popuplated. Please run `preferredLabels.init(<ontologyservice> first\");\n      return \"\";\n    }\n\n    const label = cache[val];\n    const [, humanFriendlyType] = splitURIBaseAndTerm(val);\n    return !label || label === \"\" ? addSpaces(humanFriendlyType) : label;\n  };\n\n  return {\n    init,\n    get,\n  };\n})();\n","import { ENCODE_SEARCH_PARAMS_MODES_Type } from \"./schemaAndTypes\";\n\n/**\n * TODO make codec work on URLSearchParams - not just strings\n * WHY\n *  As-is we rely on URLSearchParams constructor to be in\n *  the round-trip of any decoding.\n *  This means the decode fn only partially does the decoding;\n *  it relies on the external use of URLSearchParams.\n *\n * WHEN\n *  A.S.A.P — its a simple refactor - unfortunately I had to\n *  abandon due to ruthless prioritization.\n *\n * HOW\n *  https://telicent.atlassian.net/browse/TELFE-1073\n *\n */\nexport type Codec = {\n  param: string;\n  encode: (str: string) => string;\n  decode: (str: string) => string;\n};\n\nexport const base64Codec: Codec = {\n  param: \"safeB64\",\n  encode: (str) => btoa(str),\n  decode: (str) => atob(str),\n};\n\nexport const uriComponentCodec: Codec = {\n  param: \"safe\",\n  encode: encodeURIComponent,\n  /**\n   * No-op: In all (current) scenarios, the output of this fn is passed\n   * to URLSearchParam.constructor which does the \"decoding\"\n   *\n   * WARNING: putting decodeURIComponent here will cause double decoding\n   *  which will cause `&` within param values to be treated as a param delimited\n   * @param val\n   * @returns\n   */\n  decode: (val) => val,\n};\n\nexport const getCodec = (mode?: ENCODE_SEARCH_PARAMS_MODES_Type) => {\n  switch (mode) {\n    case \"as base64\":\n      return base64Codec;\n    case \"as uri component\":\n    default:\n      return uriComponentCodec;\n  }\n};\n","import { z } from \"zod\";\n\nexport const ENCODE_SEARCH_PARAMS_MODES_Schema = z.union([\n  z.literal(\"as base64\"),\n  z.literal(\"as uri component\"),\n]);\n\nexport type ENCODE_SEARCH_PARAMS_MODES_Type = z.infer<\n  typeof ENCODE_SEARCH_PARAMS_MODES_Schema\n>;\n","/**\n * @remix-run/router v1.23.2\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n(function (Action) {\n  /**\n   * A POP indicates a change to an arbitrary index in the history stack, such\n   * as a back or forward navigation. It does not describe the direction of the\n   * navigation, only that the current index changed.\n   *\n   * Note: This is the default action for newly created history objects.\n   */\n  Action[\"Pop\"] = \"POP\";\n  /**\n   * A PUSH indicates a new entry being added to the history stack, such as when\n   * a link is clicked and a new page loads. When this happens, all subsequent\n   * entries in the stack are lost.\n   */\n  Action[\"Push\"] = \"PUSH\";\n  /**\n   * A REPLACE indicates the entry at the current index in the history stack\n   * being replaced by a new one.\n   */\n  Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nfunction createMemoryHistory(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  let {\n    initialEntries = [\"/\"],\n    initialIndex,\n    v5Compat = false\n  } = options;\n  let entries; // Declare so we can access from createMemoryLocation\n  entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n  let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n  let action = Action.Pop;\n  let listener = null;\n  function clampIndex(n) {\n    return Math.min(Math.max(n, 0), entries.length - 1);\n  }\n  function getCurrentLocation() {\n    return entries[index];\n  }\n  function createMemoryLocation(to, state, key) {\n    if (state === void 0) {\n      state = null;\n    }\n    let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n    warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n    return location;\n  }\n  function createHref(to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n  let history = {\n    get index() {\n      return index;\n    },\n    get action() {\n      return action;\n    },\n    get location() {\n      return getCurrentLocation();\n    },\n    createHref,\n    createURL(to) {\n      return new URL(createHref(to), \"http://localhost\");\n    },\n    encodeLocation(to) {\n      let path = typeof to === \"string\" ? parsePath(to) : to;\n      return {\n        pathname: path.pathname || \"\",\n        search: path.search || \"\",\n        hash: path.hash || \"\"\n      };\n    },\n    push(to, state) {\n      action = Action.Push;\n      let nextLocation = createMemoryLocation(to, state);\n      index += 1;\n      entries.splice(index, entries.length, nextLocation);\n      if (v5Compat && listener) {\n        listener({\n          action,\n          location: nextLocation,\n          delta: 1\n        });\n      }\n    },\n    replace(to, state) {\n      action = Action.Replace;\n      let nextLocation = createMemoryLocation(to, state);\n      entries[index] = nextLocation;\n      if (v5Compat && listener) {\n        listener({\n          action,\n          location: nextLocation,\n          delta: 0\n        });\n      }\n    },\n    go(delta) {\n      action = Action.Pop;\n      let nextIndex = clampIndex(index + delta);\n      let nextLocation = entries[nextIndex];\n      index = nextIndex;\n      if (listener) {\n        listener({\n          action,\n          location: nextLocation,\n          delta\n        });\n      }\n    },\n    listen(fn) {\n      listener = fn;\n      return () => {\n        listener = null;\n      };\n    }\n  };\n  return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nfunction createBrowserHistory(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  function createBrowserLocation(window, globalHistory) {\n    let {\n      pathname,\n      search,\n      hash\n    } = window.location;\n    return createLocation(\"\", {\n      pathname,\n      search,\n      hash\n    },\n    // state defaults to `null` because `window.history.state` does\n    globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n  }\n  function createBrowserHref(window, to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n  return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nfunction createHashHistory(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  function createHashLocation(window, globalHistory) {\n    let {\n      pathname = \"/\",\n      search = \"\",\n      hash = \"\"\n    } = parsePath(window.location.hash.substr(1));\n    // Hash URL should always have a leading / just like window.location.pathname\n    // does, so if an app ends up at a route like /#something then we add a\n    // leading slash so all of our path-matching behaves the same as if it would\n    // in a browser router.  This is particularly important when there exists a\n    // root splat route (<Route path=\"*\">) since that matches internally against\n    // \"/*\" and we'd expect /#something to 404 in a hash router app.\n    if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n      pathname = \"/\" + pathname;\n    }\n    return createLocation(\"\", {\n      pathname,\n      search,\n      hash\n    },\n    // state defaults to `null` because `window.history.state` does\n    globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n  }\n  function createHashHref(window, to) {\n    let base = window.document.querySelector(\"base\");\n    let href = \"\";\n    if (base && base.getAttribute(\"href\")) {\n      let url = window.location.href;\n      let hashIndex = url.indexOf(\"#\");\n      href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n    }\n    return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n  }\n  function validateHashLocation(location, to) {\n    warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n  }\n  return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\nfunction warning(cond, message) {\n  if (!cond) {\n    // eslint-disable-next-line no-console\n    if (typeof console !== \"undefined\") console.warn(message);\n    try {\n      // Welcome to debugging history!\n      //\n      // This error is thrown as a convenience, so you can more easily\n      // find the source for a warning that appears in the console by\n      // enabling \"pause on exceptions\" in your JavaScript debugger.\n      throw new Error(message);\n      // eslint-disable-next-line no-empty\n    } catch (e) {}\n  }\n}\nfunction createKey() {\n  return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location, index) {\n  return {\n    usr: location.state,\n    key: location.key,\n    idx: index\n  };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\nfunction createLocation(current, to, state, key) {\n  if (state === void 0) {\n    state = null;\n  }\n  let location = _extends({\n    pathname: typeof current === \"string\" ? current : current.pathname,\n    search: \"\",\n    hash: \"\"\n  }, typeof to === \"string\" ? parsePath(to) : to, {\n    state,\n    // TODO: This could be cleaned up.  push/replace should probably just take\n    // full Locations now and avoid the need to run through this flow at all\n    // But that's a pretty big refactor to the current test suite so going to\n    // keep as is for the time being and just let any incoming keys take precedence\n    key: to && to.key || key || createKey()\n  });\n  return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nfunction createPath(_ref) {\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\"\n  } = _ref;\n  if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n  if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n  return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nfunction parsePath(path) {\n  let parsedPath = {};\n  if (path) {\n    let hashIndex = path.indexOf(\"#\");\n    if (hashIndex >= 0) {\n      parsedPath.hash = path.substr(hashIndex);\n      path = path.substr(0, hashIndex);\n    }\n    let searchIndex = path.indexOf(\"?\");\n    if (searchIndex >= 0) {\n      parsedPath.search = path.substr(searchIndex);\n      path = path.substr(0, searchIndex);\n    }\n    if (path) {\n      parsedPath.pathname = path;\n    }\n  }\n  return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  let {\n    window = document.defaultView,\n    v5Compat = false\n  } = options;\n  let globalHistory = window.history;\n  let action = Action.Pop;\n  let listener = null;\n  let index = getIndex();\n  // Index should only be null when we initialize. If not, it's because the\n  // user called history.pushState or history.replaceState directly, in which\n  // case we should log a warning as it will result in bugs.\n  if (index == null) {\n    index = 0;\n    globalHistory.replaceState(_extends({}, globalHistory.state, {\n      idx: index\n    }), \"\");\n  }\n  function getIndex() {\n    let state = globalHistory.state || {\n      idx: null\n    };\n    return state.idx;\n  }\n  function handlePop() {\n    action = Action.Pop;\n    let nextIndex = getIndex();\n    let delta = nextIndex == null ? null : nextIndex - index;\n    index = nextIndex;\n    if (listener) {\n      listener({\n        action,\n        location: history.location,\n        delta\n      });\n    }\n  }\n  function push(to, state) {\n    action = Action.Push;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n    index = getIndex() + 1;\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location);\n    // try...catch because iOS limits us to 100 pushState calls :/\n    try {\n      globalHistory.pushState(historyState, \"\", url);\n    } catch (error) {\n      // If the exception is because `state` can't be serialized, let that throw\n      // outwards just like a replace call would so the dev knows the cause\n      // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n      // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n      if (error instanceof DOMException && error.name === \"DataCloneError\") {\n        throw error;\n      }\n      // They are going to lose state here, but there is no real\n      // way to warn them about it since the page will refresh...\n      window.location.assign(url);\n    }\n    if (v5Compat && listener) {\n      listener({\n        action,\n        location: history.location,\n        delta: 1\n      });\n    }\n  }\n  function replace(to, state) {\n    action = Action.Replace;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n    index = getIndex();\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location);\n    globalHistory.replaceState(historyState, \"\", url);\n    if (v5Compat && listener) {\n      listener({\n        action,\n        location: history.location,\n        delta: 0\n      });\n    }\n  }\n  function createURL(to) {\n    // window.location.origin is \"null\" (the literal string value) in Firefox\n    // under certain conditions, notably when serving from a local HTML file\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n    let base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n    let href = typeof to === \"string\" ? to : createPath(to);\n    // Treating this as a full URL will strip any trailing spaces so we need to\n    // pre-encode them since they might be part of a matching splat param from\n    // an ancestor route\n    href = href.replace(/ $/, \"%20\");\n    invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n    return new URL(href, base);\n  }\n  let history = {\n    get action() {\n      return action;\n    },\n    get location() {\n      return getLocation(window, globalHistory);\n    },\n    listen(fn) {\n      if (listener) {\n        throw new Error(\"A history only accepts one active listener\");\n      }\n      window.addEventListener(PopStateEventType, handlePop);\n      listener = fn;\n      return () => {\n        window.removeEventListener(PopStateEventType, handlePop);\n        listener = null;\n      };\n    },\n    createHref(to) {\n      return createHref(window, to);\n    },\n    createURL,\n    encodeLocation(to) {\n      // Encode a Location the same way window.location would\n      let url = createURL(to);\n      return {\n        pathname: url.pathname,\n        search: url.search,\n        hash: url.hash\n      };\n    },\n    push,\n    replace,\n    go(n) {\n      return globalHistory.go(n);\n    }\n  };\n  return history;\n}\n//#endregion\n\nvar ResultType;\n(function (ResultType) {\n  ResultType[\"data\"] = \"data\";\n  ResultType[\"deferred\"] = \"deferred\";\n  ResultType[\"redirect\"] = \"redirect\";\n  ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nconst immutableRouteKeys = new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n  return route.index === true;\n}\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {\n  if (parentPath === void 0) {\n    parentPath = [];\n  }\n  if (manifest === void 0) {\n    manifest = {};\n  }\n  return routes.map((route, index) => {\n    let treePath = [...parentPath, String(index)];\n    let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n    invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n    invariant(!manifest[id], \"Found a route id collision on id \\\"\" + id + \"\\\".  Route \" + \"id's must be globally unique within Data Router usages\");\n    if (isIndexRoute(route)) {\n      let indexRoute = _extends({}, route, mapRouteProperties(route), {\n        id\n      });\n      manifest[id] = indexRoute;\n      return indexRoute;\n    } else {\n      let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {\n        id,\n        children: undefined\n      });\n      manifest[id] = pathOrLayoutRoute;\n      if (route.children) {\n        pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);\n      }\n      return pathOrLayoutRoute;\n    }\n  });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/v6/utils/match-routes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n  if (basename === void 0) {\n    basename = \"/\";\n  }\n  return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial) {\n  let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n  let pathname = stripBasename(location.pathname || \"/\", basename);\n  if (pathname == null) {\n    return null;\n  }\n  let branches = flattenRoutes(routes);\n  rankRouteBranches(branches);\n  let matches = null;\n  for (let i = 0; matches == null && i < branches.length; ++i) {\n    // Incoming pathnames are generally encoded from either window.location\n    // or from router.navigate, but we want to match against the unencoded\n    // paths in the route definitions.  Memory router locations won't be\n    // encoded here but there also shouldn't be anything to decode so this\n    // should be a safe operation.  This avoids needing matchRoutes to be\n    // history-aware.\n    let decoded = decodePath(pathname);\n    matches = matchRouteBranch(branches[i], decoded, allowPartial);\n  }\n  return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n  let {\n    route,\n    pathname,\n    params\n  } = match;\n  return {\n    id: route.id,\n    pathname,\n    params,\n    data: loaderData[route.id],\n    handle: route.handle\n  };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n  if (branches === void 0) {\n    branches = [];\n  }\n  if (parentsMeta === void 0) {\n    parentsMeta = [];\n  }\n  if (parentPath === void 0) {\n    parentPath = \"\";\n  }\n  let flattenRoute = (route, index, relativePath) => {\n    let meta = {\n      relativePath: relativePath === undefined ? route.path || \"\" : relativePath,\n      caseSensitive: route.caseSensitive === true,\n      childrenIndex: index,\n      route\n    };\n    if (meta.relativePath.startsWith(\"/\")) {\n      invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n      meta.relativePath = meta.relativePath.slice(parentPath.length);\n    }\n    let path = joinPaths([parentPath, meta.relativePath]);\n    let routesMeta = parentsMeta.concat(meta);\n    // Add the children before adding this route to the array, so we traverse the\n    // route tree depth-first and child routes appear before their parents in\n    // the \"flattened\" version.\n    if (route.children && route.children.length > 0) {\n      invariant(\n      // Our types know better, but runtime JS may not!\n      // @ts-expect-error\n      route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n      flattenRoutes(route.children, branches, routesMeta, path);\n    }\n    // Routes without a path shouldn't ever match by themselves unless they are\n    // index routes, so don't add them to the list of possible branches.\n    if (route.path == null && !route.index) {\n      return;\n    }\n    branches.push({\n      path,\n      score: computeScore(path, route.index),\n      routesMeta\n    });\n  };\n  routes.forEach((route, index) => {\n    var _route$path;\n    // coarse-grain check for optional params\n    if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n      flattenRoute(route, index);\n    } else {\n      for (let exploded of explodeOptionalSegments(route.path)) {\n        flattenRoute(route, index, exploded);\n      }\n    }\n  });\n  return branches;\n}\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path) {\n  let segments = path.split(\"/\");\n  if (segments.length === 0) return [];\n  let [first, ...rest] = segments;\n  // Optional path segments are denoted by a trailing `?`\n  let isOptional = first.endsWith(\"?\");\n  // Compute the corresponding required segment: `foo?` -> `foo`\n  let required = first.replace(/\\?$/, \"\");\n  if (rest.length === 0) {\n    // Intepret empty string as omitting an optional segment\n    // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n    return isOptional ? [required, \"\"] : [required];\n  }\n  let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n  let result = [];\n  // All child paths with the prefix.  Do this for all children before the\n  // optional version for all children, so we get consistent ordering where the\n  // parent optional aspect is preferred as required.  Otherwise, we can get\n  // child sections interspersed where deeper optional segments are higher than\n  // parent optional segments, where for example, /:two would explode _earlier_\n  // then /:one.  By always including the parent as required _for all children_\n  // first, we avoid this issue\n  result.push(...restExploded.map(subpath => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n  // Then, if this is an optional value, add all child versions without\n  if (isOptional) {\n    result.push(...restExploded);\n  }\n  // for absolute paths, ensure `/` instead of empty segment\n  return result.map(exploded => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n  branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n  : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = s => s === \"*\";\nfunction computeScore(path, index) {\n  let segments = path.split(\"/\");\n  let initialScore = segments.length;\n  if (segments.some(isSplat)) {\n    initialScore += splatPenalty;\n  }\n  if (index) {\n    initialScore += indexRouteValue;\n  }\n  return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n  let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n  return siblings ?\n  // If two routes are siblings, we should try to match the earlier sibling\n  // first. This allows people to have fine-grained control over the matching\n  // behavior by simply putting routes with identical paths in the order they\n  // want them tried.\n  a[a.length - 1] - b[b.length - 1] :\n  // Otherwise, it doesn't really make sense to rank non-siblings by index,\n  // so they sort equally.\n  0;\n}\nfunction matchRouteBranch(branch, pathname, allowPartial) {\n  if (allowPartial === void 0) {\n    allowPartial = false;\n  }\n  let {\n    routesMeta\n  } = branch;\n  let matchedParams = {};\n  let matchedPathname = \"/\";\n  let matches = [];\n  for (let i = 0; i < routesMeta.length; ++i) {\n    let meta = routesMeta[i];\n    let end = i === routesMeta.length - 1;\n    let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n    let match = matchPath({\n      path: meta.relativePath,\n      caseSensitive: meta.caseSensitive,\n      end\n    }, remainingPathname);\n    let route = meta.route;\n    if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n      match = matchPath({\n        path: meta.relativePath,\n        caseSensitive: meta.caseSensitive,\n        end: false\n      }, remainingPathname);\n    }\n    if (!match) {\n      return null;\n    }\n    Object.assign(matchedParams, match.params);\n    matches.push({\n      // TODO: Can this as be avoided?\n      params: matchedParams,\n      pathname: joinPaths([matchedPathname, match.pathname]),\n      pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n      route\n    });\n    if (match.pathnameBase !== \"/\") {\n      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n    }\n  }\n  return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/v6/utils/generate-path\n */\nfunction generatePath(originalPath, params) {\n  if (params === void 0) {\n    params = {};\n  }\n  let path = originalPath;\n  if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n    warning(false, \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n    path = path.replace(/\\*$/, \"/*\");\n  }\n  // ensure `/` is added at the beginning if the path is absolute\n  const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n  const stringify = p => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n  const segments = path.split(/\\/+/).map((segment, index, array) => {\n    const isLastSegment = index === array.length - 1;\n    // only apply the splat if it's the last segment\n    if (isLastSegment && segment === \"*\") {\n      const star = \"*\";\n      // Apply the splat\n      return stringify(params[star]);\n    }\n    const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n    if (keyMatch) {\n      const [, key, optional] = keyMatch;\n      let param = params[key];\n      invariant(optional === \"?\" || param != null, \"Missing \\\":\" + key + \"\\\" param\");\n      return stringify(param);\n    }\n    // Remove any optional markers from optional static segments\n    return segment.replace(/\\?$/g, \"\");\n  })\n  // Remove empty segments\n  .filter(segment => !!segment);\n  return prefix + segments.join(\"/\");\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/v6/utils/match-path\n */\nfunction matchPath(pattern, pathname) {\n  if (typeof pattern === \"string\") {\n    pattern = {\n      path: pattern,\n      caseSensitive: false,\n      end: true\n    };\n  }\n  let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n  let match = pathname.match(matcher);\n  if (!match) return null;\n  let matchedPathname = match[0];\n  let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n  let captureGroups = match.slice(1);\n  let params = compiledParams.reduce((memo, _ref, index) => {\n    let {\n      paramName,\n      isOptional\n    } = _ref;\n    // We need to compute the pathnameBase here using the raw splat value\n    // instead of using params[\"*\"] later because it will be decoded then\n    if (paramName === \"*\") {\n      let splatValue = captureGroups[index] || \"\";\n      pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n    }\n    const value = captureGroups[index];\n    if (isOptional && !value) {\n      memo[paramName] = undefined;\n    } else {\n      memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n    }\n    return memo;\n  }, {});\n  return {\n    params,\n    pathname: matchedPathname,\n    pathnameBase,\n    pattern\n  };\n}\nfunction compilePath(path, caseSensitive, end) {\n  if (caseSensitive === void 0) {\n    caseSensitive = false;\n  }\n  if (end === void 0) {\n    end = true;\n  }\n  warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n  let params = [];\n  let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n  .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n  .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n  .replace(/\\/:([\\w-]+)(\\?)?/g, (_, paramName, isOptional) => {\n    params.push({\n      paramName,\n      isOptional: isOptional != null\n    });\n    return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n  });\n  if (path.endsWith(\"*\")) {\n    params.push({\n      paramName: \"*\"\n    });\n    regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n    : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n  } else if (end) {\n    // When matching to the end, ignore trailing slashes\n    regexpSource += \"\\\\/*$\";\n  } else if (path !== \"\" && path !== \"/\") {\n    // If our path is non-empty and contains anything beyond an initial slash,\n    // then we have _some_ form of path in our regex, so we should expect to\n    // match only if we find the end of this path segment.  Look for an optional\n    // non-captured trailing slash (to match a portion of the URL) or the end\n    // of the path (if we've matched to the end).  We used to do this with a\n    // word boundary but that gives false positives on routes like\n    // /user-preferences since `-` counts as a word boundary.\n    regexpSource += \"(?:(?=\\\\/|$))\";\n  } else ;\n  let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n  return [matcher, params];\n}\nfunction decodePath(value) {\n  try {\n    return value.split(\"/\").map(v => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n  } catch (error) {\n    warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n    return value;\n  }\n}\n/**\n * @private\n */\nfunction stripBasename(pathname, basename) {\n  if (basename === \"/\") return pathname;\n  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n    return null;\n  }\n  // We want to leave trailing slash behavior in the user's control, so if they\n  // specify a basename with a trailing slash, we should support it\n  let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n  let nextChar = pathname.charAt(startIndex);\n  if (nextChar && nextChar !== \"/\") {\n    // pathname does not start with basename/\n    return null;\n  }\n  return pathname.slice(startIndex) || \"/\";\n}\nconst ABSOLUTE_URL_REGEX$1 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst isAbsoluteUrl = url => ABSOLUTE_URL_REGEX$1.test(url);\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/v6/utils/resolve-path\n */\nfunction resolvePath(to, fromPathname) {\n  if (fromPathname === void 0) {\n    fromPathname = \"/\";\n  }\n  let {\n    pathname: toPathname,\n    search = \"\",\n    hash = \"\"\n  } = typeof to === \"string\" ? parsePath(to) : to;\n  let pathname;\n  if (toPathname) {\n    if (isAbsoluteUrl(toPathname)) {\n      pathname = toPathname;\n    } else {\n      if (toPathname.includes(\"//\")) {\n        let oldPathname = toPathname;\n        toPathname = toPathname.replace(/\\/\\/+/g, \"/\");\n        warning(false, \"Pathnames cannot have embedded double slashes - normalizing \" + (oldPathname + \" -> \" + toPathname));\n      }\n      if (toPathname.startsWith(\"/\")) {\n        pathname = resolvePathname(toPathname.substring(1), \"/\");\n      } else {\n        pathname = resolvePathname(toPathname, fromPathname);\n      }\n    }\n  } else {\n    pathname = fromPathname;\n  }\n  return {\n    pathname,\n    search: normalizeSearch(search),\n    hash: normalizeHash(hash)\n  };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n  let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n  let relativeSegments = relativePath.split(\"/\");\n  relativeSegments.forEach(segment => {\n    if (segment === \"..\") {\n      // Keep the root \"\" segment so the pathname starts at /\n      if (segments.length > 1) segments.pop();\n    } else if (segment !== \".\") {\n      segments.push(segment);\n    }\n  });\n  return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n  return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"].  Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in <Link to=\\\"...\\\"> and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same.  Both of the following examples should link back to the root:\n *\n *   <Route path=\"/\">\n *     <Route path=\"accounts\" element={<Link to=\"..\"}>\n *   </Route>\n *\n *   <Route path=\"/\">\n *     <Route path=\"accounts\">\n *       <Route element={<AccountsLayout />}>       // <-- Does not contribute\n *         <Route index element={<Link to=\"..\"} />  // <-- Does not contribute\n *       </Route\n *     </Route>\n *   </Route>\n */\nfunction getPathContributingMatches(matches) {\n  return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nfunction getResolveToMatches(matches, v7_relativeSplatPath) {\n  let pathMatches = getPathContributingMatches(matches);\n  // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n  // match so we include splat values for \".\" links.  See:\n  // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n  if (v7_relativeSplatPath) {\n    return pathMatches.map((match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase);\n  }\n  return pathMatches.map(match => match.pathnameBase);\n}\n/**\n * @private\n */\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n  if (isPathRelative === void 0) {\n    isPathRelative = false;\n  }\n  let to;\n  if (typeof toArg === \"string\") {\n    to = parsePath(toArg);\n  } else {\n    to = _extends({}, toArg);\n    invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n    invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n    invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n  }\n  let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n  let toPathname = isEmptyPath ? \"/\" : to.pathname;\n  let from;\n  // Routing is relative to the current pathname if explicitly requested.\n  //\n  // If a pathname is explicitly provided in `to`, it should be relative to the\n  // route context. This is explained in `Note on `<Link to>` values` in our\n  // migration guide from v5 as a means of disambiguation between `to` values\n  // that begin with `/` and those that do not. However, this is problematic for\n  // `to` values that do not provide a pathname. `to` can simply be a search or\n  // hash string, in which case we should assume that the navigation is relative\n  // to the current location's pathname and *not* the route pathname.\n  if (toPathname == null) {\n    from = locationPathname;\n  } else {\n    let routePathnameIndex = routePathnames.length - 1;\n    // With relative=\"route\" (the default), each leading .. segment means\n    // \"go up one route\" instead of \"go up one URL segment\".  This is a key\n    // difference from how <a href> works and a major reason we call this a\n    // \"to\" value instead of a \"href\".\n    if (!isPathRelative && toPathname.startsWith(\"..\")) {\n      let toSegments = toPathname.split(\"/\");\n      while (toSegments[0] === \"..\") {\n        toSegments.shift();\n        routePathnameIndex -= 1;\n      }\n      to.pathname = toSegments.join(\"/\");\n    }\n    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n  }\n  let path = resolvePath(to, from);\n  // Ensure the pathname has a trailing slash if the original \"to\" had one\n  let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n  // Or if this was a link to the current path which has a trailing slash\n  let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n  if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n    path.pathname += \"/\";\n  }\n  return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n  // Empty strings should be treated the same as / paths\n  return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\n */\nconst json = function json(data, init) {\n  if (init === void 0) {\n    init = {};\n  }\n  let responseInit = typeof init === \"number\" ? {\n    status: init\n  } : init;\n  let headers = new Headers(responseInit.headers);\n  if (!headers.has(\"Content-Type\")) {\n    headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n  }\n  return new Response(JSON.stringify(data), _extends({}, responseInit, {\n    headers\n  }));\n};\nclass DataWithResponseInit {\n  constructor(data, init) {\n    this.type = \"DataWithResponseInit\";\n    this.data = data;\n    this.init = init || null;\n  }\n}\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nfunction data(data, init) {\n  return new DataWithResponseInit(data, typeof init === \"number\" ? {\n    status: init\n  } : init);\n}\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n  constructor(data, responseInit) {\n    this.pendingKeysSet = new Set();\n    this.subscribers = new Set();\n    this.deferredKeys = [];\n    invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n    // Set up an AbortController + Promise we can race against to exit early\n    // cancellation\n    let reject;\n    this.abortPromise = new Promise((_, r) => reject = r);\n    this.controller = new AbortController();\n    let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n    this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n    this.controller.signal.addEventListener(\"abort\", onAbort);\n    this.data = Object.entries(data).reduce((acc, _ref2) => {\n      let [key, value] = _ref2;\n      return Object.assign(acc, {\n        [key]: this.trackPromise(key, value)\n      });\n    }, {});\n    if (this.done) {\n      // All incoming values were resolved\n      this.unlistenAbortSignal();\n    }\n    this.init = responseInit;\n  }\n  trackPromise(key, value) {\n    if (!(value instanceof Promise)) {\n      return value;\n    }\n    this.deferredKeys.push(key);\n    this.pendingKeysSet.add(key);\n    // We store a little wrapper promise that will be extended with\n    // _data/_error props upon resolve/reject\n    let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n    // Register rejection listeners to avoid uncaught promise rejections on\n    // errors or aborted deferred values\n    promise.catch(() => {});\n    Object.defineProperty(promise, \"_tracked\", {\n      get: () => true\n    });\n    return promise;\n  }\n  onSettle(promise, key, error, data) {\n    if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n      this.unlistenAbortSignal();\n      Object.defineProperty(promise, \"_error\", {\n        get: () => error\n      });\n      return Promise.reject(error);\n    }\n    this.pendingKeysSet.delete(key);\n    if (this.done) {\n      // Nothing left to abort!\n      this.unlistenAbortSignal();\n    }\n    // If the promise was resolved/rejected with undefined, we'll throw an error as you\n    // should always resolve with a value or null\n    if (error === undefined && data === undefined) {\n      let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n      Object.defineProperty(promise, \"_error\", {\n        get: () => undefinedError\n      });\n      this.emit(false, key);\n      return Promise.reject(undefinedError);\n    }\n    if (data === undefined) {\n      Object.defineProperty(promise, \"_error\", {\n        get: () => error\n      });\n      this.emit(false, key);\n      return Promise.reject(error);\n    }\n    Object.defineProperty(promise, \"_data\", {\n      get: () => data\n    });\n    this.emit(false, key);\n    return data;\n  }\n  emit(aborted, settledKey) {\n    this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n  }\n  subscribe(fn) {\n    this.subscribers.add(fn);\n    return () => this.subscribers.delete(fn);\n  }\n  cancel() {\n    this.controller.abort();\n    this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n    this.emit(true);\n  }\n  async resolveData(signal) {\n    let aborted = false;\n    if (!this.done) {\n      let onAbort = () => this.cancel();\n      signal.addEventListener(\"abort\", onAbort);\n      aborted = await new Promise(resolve => {\n        this.subscribe(aborted => {\n          signal.removeEventListener(\"abort\", onAbort);\n          if (aborted || this.done) {\n            resolve(aborted);\n          }\n        });\n      });\n    }\n    return aborted;\n  }\n  get done() {\n    return this.pendingKeysSet.size === 0;\n  }\n  get unwrappedData() {\n    invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n    return Object.entries(this.data).reduce((acc, _ref3) => {\n      let [key, value] = _ref3;\n      return Object.assign(acc, {\n        [key]: unwrapTrackedPromise(value)\n      });\n    }, {});\n  }\n  get pendingKeys() {\n    return Array.from(this.pendingKeysSet);\n  }\n}\nfunction isTrackedPromise(value) {\n  return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n  if (!isTrackedPromise(value)) {\n    return value;\n  }\n  if (value._error) {\n    throw value._error;\n  }\n  return value._data;\n}\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\n */\nconst defer = function defer(data, init) {\n  if (init === void 0) {\n    init = {};\n  }\n  let responseInit = typeof init === \"number\" ? {\n    status: init\n  } : init;\n  return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n  if (init === void 0) {\n    init = 302;\n  }\n  let responseInit = init;\n  if (typeof responseInit === \"number\") {\n    responseInit = {\n      status: responseInit\n    };\n  } else if (typeof responseInit.status === \"undefined\") {\n    responseInit.status = 302;\n  }\n  let headers = new Headers(responseInit.headers);\n  headers.set(\"Location\", url);\n  return new Response(null, _extends({}, responseInit, {\n    headers\n  }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n  return response;\n};\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst replace = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Replace\", \"true\");\n  return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n  constructor(status, statusText, data, internal) {\n    if (internal === void 0) {\n      internal = false;\n    }\n    this.status = status;\n    this.statusText = statusText || \"\";\n    this.internal = internal;\n    if (data instanceof Error) {\n      this.data = data.toString();\n      this.error = data;\n    } else {\n      this.data = data;\n    }\n  }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n  return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n  state: \"idle\",\n  location: undefined,\n  formMethod: undefined,\n  formAction: undefined,\n  formEncType: undefined,\n  formData: undefined,\n  json: undefined,\n  text: undefined\n};\nconst IDLE_FETCHER = {\n  state: \"idle\",\n  data: undefined,\n  formMethod: undefined,\n  formAction: undefined,\n  formEncType: undefined,\n  formData: undefined,\n  json: undefined,\n  text: undefined\n};\nconst IDLE_BLOCKER = {\n  state: \"unblocked\",\n  proceed: undefined,\n  reset: undefined,\n  location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n  hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n  const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n  const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n  const isServer = !isBrowser;\n  invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n  let mapRouteProperties;\n  if (init.mapRouteProperties) {\n    mapRouteProperties = init.mapRouteProperties;\n  } else if (init.detectErrorBoundary) {\n    // If they are still using the deprecated version, wrap it with the new API\n    let detectErrorBoundary = init.detectErrorBoundary;\n    mapRouteProperties = route => ({\n      hasErrorBoundary: detectErrorBoundary(route)\n    });\n  } else {\n    mapRouteProperties = defaultMapRouteProperties;\n  }\n  // Routes keyed by ID\n  let manifest = {};\n  // Routes in tree format for matching\n  let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n  let inFlightDataRoutes;\n  let basename = init.basename || \"/\";\n  let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n  let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n  // Config driven behavior flags\n  let future = _extends({\n    v7_fetcherPersist: false,\n    v7_normalizeFormMethod: false,\n    v7_partialHydration: false,\n    v7_prependBasename: false,\n    v7_relativeSplatPath: false,\n    v7_skipActionErrorRevalidation: false\n  }, init.future);\n  // Cleanup function for history\n  let unlistenHistory = null;\n  // Externally-provided functions to call on all state changes\n  let subscribers = new Set();\n  // Externally-provided object to hold scroll restoration locations during routing\n  let savedScrollPositions = null;\n  // Externally-provided function to get scroll restoration keys\n  let getScrollRestorationKey = null;\n  // Externally-provided function to get current scroll position\n  let getScrollPosition = null;\n  // One-time flag to control the initial hydration scroll restoration.  Because\n  // we don't get the saved positions from <ScrollRestoration /> until _after_\n  // the initial render, we need to manually trigger a separate updateState to\n  // send along the restoreScrollPosition\n  // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n  // SSR did the initial scroll restoration.\n  let initialScrollRestored = init.hydrationData != null;\n  let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n  let initialMatchesIsFOW = false;\n  let initialErrors = null;\n  if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n    // If we do not match a user-provided-route, fall back to the root\n    // to allow the error boundary to take over\n    let error = getInternalRouterError(404, {\n      pathname: init.history.location.pathname\n    });\n    let {\n      matches,\n      route\n    } = getShortCircuitMatches(dataRoutes);\n    initialMatches = matches;\n    initialErrors = {\n      [route.id]: error\n    };\n  }\n  // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n  // our initial match is a splat route, clear them out so we run through lazy\n  // discovery on hydration in case there's a more accurate lazy route match.\n  // In SSR apps (with `hydrationData`), we expect that the server will send\n  // up the proper matched routes so we don't want to run lazy discovery on\n  // initial hydration and want to hydrate into the splat route.\n  if (initialMatches && !init.hydrationData) {\n    let fogOfWar = checkFogOfWar(initialMatches, dataRoutes, init.history.location.pathname);\n    if (fogOfWar.active) {\n      initialMatches = null;\n    }\n  }\n  let initialized;\n  if (!initialMatches) {\n    initialized = false;\n    initialMatches = [];\n    // If partial hydration and fog of war is enabled, we will be running\n    // `patchRoutesOnNavigation` during hydration so include any partial matches as\n    // the initial matches so we can properly render `HydrateFallback`'s\n    if (future.v7_partialHydration) {\n      let fogOfWar = checkFogOfWar(null, dataRoutes, init.history.location.pathname);\n      if (fogOfWar.active && fogOfWar.matches) {\n        initialMatchesIsFOW = true;\n        initialMatches = fogOfWar.matches;\n      }\n    }\n  } else if (initialMatches.some(m => m.route.lazy)) {\n    // All initialMatches need to be loaded before we're ready.  If we have lazy\n    // functions around still then we'll need to run them in initialize()\n    initialized = false;\n  } else if (!initialMatches.some(m => m.route.loader)) {\n    // If we've got no loaders to run, then we're good to go\n    initialized = true;\n  } else if (future.v7_partialHydration) {\n    // If partial hydration is enabled, we're initialized so long as we were\n    // provided with hydrationData for every route with a loader, and no loaders\n    // were marked for explicit hydration\n    let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n    let errors = init.hydrationData ? init.hydrationData.errors : null;\n    // If errors exist, don't consider routes below the boundary\n    if (errors) {\n      let idx = initialMatches.findIndex(m => errors[m.route.id] !== undefined);\n      initialized = initialMatches.slice(0, idx + 1).every(m => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n    } else {\n      initialized = initialMatches.every(m => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n    }\n  } else {\n    // Without partial hydration - we're initialized if we were provided any\n    // hydrationData - which is expected to be complete\n    initialized = init.hydrationData != null;\n  }\n  let router;\n  let state = {\n    historyAction: init.history.action,\n    location: init.history.location,\n    matches: initialMatches,\n    initialized,\n    navigation: IDLE_NAVIGATION,\n    // Don't restore on initial updateState() if we were SSR'd\n    restoreScrollPosition: init.hydrationData != null ? false : null,\n    preventScrollReset: false,\n    revalidation: \"idle\",\n    loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n    actionData: init.hydrationData && init.hydrationData.actionData || null,\n    errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n    fetchers: new Map(),\n    blockers: new Map()\n  };\n  // -- Stateful internal variables to manage navigations --\n  // Current navigation in progress (to be committed in completeNavigation)\n  let pendingAction = Action.Pop;\n  // Should the current navigation prevent the scroll reset if scroll cannot\n  // be restored?\n  let pendingPreventScrollReset = false;\n  // AbortController for the active navigation\n  let pendingNavigationController;\n  // Should the current navigation enable document.startViewTransition?\n  let pendingViewTransitionEnabled = false;\n  // Store applied view transitions so we can apply them on POP\n  let appliedViewTransitions = new Map();\n  // Cleanup function for persisting applied transitions to sessionStorage\n  let removePageHideEventListener = null;\n  // We use this to avoid touching history in completeNavigation if a\n  // revalidation is entirely uninterrupted\n  let isUninterruptedRevalidation = false;\n  // Use this internal flag to force revalidation of all loaders:\n  //  - submissions (completed or interrupted)\n  //  - useRevalidator()\n  //  - X-Remix-Revalidate (from redirect)\n  let isRevalidationRequired = false;\n  // Use this internal array to capture routes that require revalidation due\n  // to a cancelled deferred on action submission\n  let cancelledDeferredRoutes = [];\n  // Use this internal array to capture fetcher loads that were cancelled by an\n  // action navigation and require revalidation\n  let cancelledFetcherLoads = new Set();\n  // AbortControllers for any in-flight fetchers\n  let fetchControllers = new Map();\n  // Track loads based on the order in which they started\n  let incrementingLoadId = 0;\n  // Track the outstanding pending navigation data load to be compared against\n  // the globally incrementing load when a fetcher load lands after a completed\n  // navigation\n  let pendingNavigationLoadId = -1;\n  // Fetchers that triggered data reloads as a result of their actions\n  let fetchReloadIds = new Map();\n  // Fetchers that triggered redirect navigations\n  let fetchRedirectIds = new Set();\n  // Most recent href/match for fetcher.load calls for fetchers\n  let fetchLoadMatches = new Map();\n  // Ref-count mounted fetchers so we know when it's ok to clean them up\n  let activeFetchers = new Map();\n  // Fetchers that have requested a delete when using v7_fetcherPersist,\n  // they'll be officially removed after they return to idle\n  let deletedFetchers = new Set();\n  // Store DeferredData instances for active route matches.  When a\n  // route loader returns defer() we stick one in here.  Then, when a nested\n  // promise resolves we update loaderData.  If a new navigation starts we\n  // cancel active deferreds for eliminated routes.\n  let activeDeferreds = new Map();\n  // Store blocker functions in a separate Map outside of router state since\n  // we don't need to update UI state if they change\n  let blockerFunctions = new Map();\n  // Flag to ignore the next history update, so we can revert the URL change on\n  // a POP navigation that was blocked by the user without touching router state\n  let unblockBlockerHistoryUpdate = undefined;\n  // Initialize the router, all side effects should be kicked off from here.\n  // Implemented as a Fluent API for ease of:\n  //   let router = createRouter(init).initialize();\n  function initialize() {\n    // If history informs us of a POP navigation, start the navigation but do not update\n    // state.  We'll update our own state once the navigation completes\n    unlistenHistory = init.history.listen(_ref => {\n      let {\n        action: historyAction,\n        location,\n        delta\n      } = _ref;\n      // Ignore this event if it was just us resetting the URL from a\n      // blocked POP navigation\n      if (unblockBlockerHistoryUpdate) {\n        unblockBlockerHistoryUpdate();\n        unblockBlockerHistoryUpdate = undefined;\n        return;\n      }\n      warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs.  This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n      let blockerKey = shouldBlockNavigation({\n        currentLocation: state.location,\n        nextLocation: location,\n        historyAction\n      });\n      if (blockerKey && delta != null) {\n        // Restore the URL to match the current UI, but don't update router state\n        let nextHistoryUpdatePromise = new Promise(resolve => {\n          unblockBlockerHistoryUpdate = resolve;\n        });\n        init.history.go(delta * -1);\n        // Put the blocker into a blocked state\n        updateBlocker(blockerKey, {\n          state: \"blocked\",\n          location,\n          proceed() {\n            updateBlocker(blockerKey, {\n              state: \"proceeding\",\n              proceed: undefined,\n              reset: undefined,\n              location\n            });\n            // Re-do the same POP navigation we just blocked, after the url\n            // restoration is also complete.  See:\n            // https://github.com/remix-run/react-router/issues/11613\n            nextHistoryUpdatePromise.then(() => init.history.go(delta));\n          },\n          reset() {\n            let blockers = new Map(state.blockers);\n            blockers.set(blockerKey, IDLE_BLOCKER);\n            updateState({\n              blockers\n            });\n          }\n        });\n        return;\n      }\n      return startNavigation(historyAction, location);\n    });\n    if (isBrowser) {\n      // FIXME: This feels gross.  How can we cleanup the lines between\n      // scrollRestoration/appliedTransitions persistance?\n      restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n      let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n      routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n      removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n    }\n    // Kick off initial data load if needed.  Use Pop to avoid modifying history\n    // Note we don't do any handling of lazy here.  For SPA's it'll get handled\n    // in the normal navigation flow.  For SSR it's expected that lazy modules are\n    // resolved prior to router creation since we can't go into a fallbackElement\n    // UI for SSR'd apps\n    if (!state.initialized) {\n      startNavigation(Action.Pop, state.location, {\n        initialHydration: true\n      });\n    }\n    return router;\n  }\n  // Clean up a router and it's side effects\n  function dispose() {\n    if (unlistenHistory) {\n      unlistenHistory();\n    }\n    if (removePageHideEventListener) {\n      removePageHideEventListener();\n    }\n    subscribers.clear();\n    pendingNavigationController && pendingNavigationController.abort();\n    state.fetchers.forEach((_, key) => deleteFetcher(key));\n    state.blockers.forEach((_, key) => deleteBlocker(key));\n  }\n  // Subscribe to state updates for the router\n  function subscribe(fn) {\n    subscribers.add(fn);\n    return () => subscribers.delete(fn);\n  }\n  // Update our state and notify the calling context of the change\n  function updateState(newState, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    state = _extends({}, state, newState);\n    // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n    // can be removed\n    let completedFetchers = [];\n    let deletedFetchersKeys = [];\n    if (future.v7_fetcherPersist) {\n      state.fetchers.forEach((fetcher, key) => {\n        if (fetcher.state === \"idle\") {\n          if (deletedFetchers.has(key)) {\n            // Unmounted from the UI and can be totally removed\n            deletedFetchersKeys.push(key);\n          } else {\n            // Returned to idle but still mounted in the UI, so semi-remains for\n            // revalidations and such\n            completedFetchers.push(key);\n          }\n        }\n      });\n    }\n    // Remove any lingering deleted fetchers that have already been removed\n    // from state.fetchers\n    deletedFetchers.forEach(key => {\n      if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n        deletedFetchersKeys.push(key);\n      }\n    });\n    // Iterate over a local copy so that if flushSync is used and we end up\n    // removing and adding a new subscriber due to the useCallback dependencies,\n    // we don't get ourselves into a loop calling the new subscriber immediately\n    [...subscribers].forEach(subscriber => subscriber(state, {\n      deletedFetchers: deletedFetchersKeys,\n      viewTransitionOpts: opts.viewTransitionOpts,\n      flushSync: opts.flushSync === true\n    }));\n    // Remove idle fetchers from state since we only care about in-flight fetchers.\n    if (future.v7_fetcherPersist) {\n      completedFetchers.forEach(key => state.fetchers.delete(key));\n      deletedFetchersKeys.forEach(key => deleteFetcher(key));\n    } else {\n      // We already called deleteFetcher() on these, can remove them from this\n      // Set now that we've handed the keys off to the data layer\n      deletedFetchersKeys.forEach(key => deletedFetchers.delete(key));\n    }\n  }\n  // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n  // and setting state.[historyAction/location/matches] to the new route.\n  // - Location is a required param\n  // - Navigation will always be set to IDLE_NAVIGATION\n  // - Can pass any other state in newState\n  function completeNavigation(location, newState, _temp) {\n    var _location$state, _location$state2;\n    let {\n      flushSync\n    } = _temp === void 0 ? {} : _temp;\n    // Deduce if we're in a loading/actionReload state:\n    // - We have committed actionData in the store\n    // - The current navigation was a mutation submission\n    // - We're past the submitting state and into the loading state\n    // - The location being loaded is not the result of a redirect\n    let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n    let actionData;\n    if (newState.actionData) {\n      if (Object.keys(newState.actionData).length > 0) {\n        actionData = newState.actionData;\n      } else {\n        // Empty actionData -> clear prior actionData due to an action error\n        actionData = null;\n      }\n    } else if (isActionReload) {\n      // Keep the current data if we're wrapping up the action reload\n      actionData = state.actionData;\n    } else {\n      // Clear actionData on any other completed navigations\n      actionData = null;\n    }\n    // Always preserve any existing loaderData from re-used routes\n    let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n    // On a successful navigation we can assume we got through all blockers\n    // so we can start fresh\n    let blockers = state.blockers;\n    if (blockers.size > 0) {\n      blockers = new Map(blockers);\n      blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n    }\n    // Always respect the user flag.  Otherwise don't reset on mutation\n    // submission navigations unless they redirect\n    let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n    // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n    if (inFlightDataRoutes) {\n      dataRoutes = inFlightDataRoutes;\n      inFlightDataRoutes = undefined;\n    }\n    if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n      init.history.push(location, location.state);\n    } else if (pendingAction === Action.Replace) {\n      init.history.replace(location, location.state);\n    }\n    let viewTransitionOpts;\n    // On POP, enable transitions if they were enabled on the original navigation\n    if (pendingAction === Action.Pop) {\n      // Forward takes precedence so they behave like the original navigation\n      let priorPaths = appliedViewTransitions.get(state.location.pathname);\n      if (priorPaths && priorPaths.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: state.location,\n          nextLocation: location\n        };\n      } else if (appliedViewTransitions.has(location.pathname)) {\n        // If we don't have a previous forward nav, assume we're popping back to\n        // the new location and enable if that location previously enabled\n        viewTransitionOpts = {\n          currentLocation: location,\n          nextLocation: state.location\n        };\n      }\n    } else if (pendingViewTransitionEnabled) {\n      // Store the applied transition on PUSH/REPLACE\n      let toPaths = appliedViewTransitions.get(state.location.pathname);\n      if (toPaths) {\n        toPaths.add(location.pathname);\n      } else {\n        toPaths = new Set([location.pathname]);\n        appliedViewTransitions.set(state.location.pathname, toPaths);\n      }\n      viewTransitionOpts = {\n        currentLocation: state.location,\n        nextLocation: location\n      };\n    }\n    updateState(_extends({}, newState, {\n      actionData,\n      loaderData,\n      historyAction: pendingAction,\n      location,\n      initialized: true,\n      navigation: IDLE_NAVIGATION,\n      revalidation: \"idle\",\n      restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n      preventScrollReset,\n      blockers\n    }), {\n      viewTransitionOpts,\n      flushSync: flushSync === true\n    });\n    // Reset stateful navigation vars\n    pendingAction = Action.Pop;\n    pendingPreventScrollReset = false;\n    pendingViewTransitionEnabled = false;\n    isUninterruptedRevalidation = false;\n    isRevalidationRequired = false;\n    cancelledDeferredRoutes = [];\n  }\n  // Trigger a navigation event, which can either be a numerical POP or a PUSH\n  // replace with an optional submission\n  async function navigate(to, opts) {\n    if (typeof to === \"number\") {\n      init.history.go(to);\n      return;\n    }\n    let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n    let {\n      path,\n      submission,\n      error\n    } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n    let currentLocation = state.location;\n    let nextLocation = createLocation(state.location, path, opts && opts.state);\n    // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n    // URL from window.location, so we need to encode it here so the behavior\n    // remains the same as POP and non-data-router usages.  new URL() does all\n    // the same encoding we'd get from a history.pushState/window.location read\n    // without having to touch history\n    nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n    let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n    let historyAction = Action.Push;\n    if (userReplace === true) {\n      historyAction = Action.Replace;\n    } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n      // By default on submissions to the current location we REPLACE so that\n      // users don't have to double-click the back button to get to the prior\n      // location.  If the user redirects to a different location from the\n      // action/loader this will be ignored and the redirect will be a PUSH\n      historyAction = Action.Replace;\n    }\n    let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n    let flushSync = (opts && opts.flushSync) === true;\n    let blockerKey = shouldBlockNavigation({\n      currentLocation,\n      nextLocation,\n      historyAction\n    });\n    if (blockerKey) {\n      // Put the blocker into a blocked state\n      updateBlocker(blockerKey, {\n        state: \"blocked\",\n        location: nextLocation,\n        proceed() {\n          updateBlocker(blockerKey, {\n            state: \"proceeding\",\n            proceed: undefined,\n            reset: undefined,\n            location: nextLocation\n          });\n          // Send the same navigation through\n          navigate(to, opts);\n        },\n        reset() {\n          let blockers = new Map(state.blockers);\n          blockers.set(blockerKey, IDLE_BLOCKER);\n          updateState({\n            blockers\n          });\n        }\n      });\n      return;\n    }\n    return await startNavigation(historyAction, nextLocation, {\n      submission,\n      // Send through the formData serialization error if we have one so we can\n      // render at the right error boundary after we match routes\n      pendingError: error,\n      preventScrollReset,\n      replace: opts && opts.replace,\n      enableViewTransition: opts && opts.viewTransition,\n      flushSync\n    });\n  }\n  // Revalidate all current loaders.  If a navigation is in progress or if this\n  // is interrupted by a navigation, allow this to \"succeed\" by calling all\n  // loaders during the next loader round\n  function revalidate() {\n    interruptActiveLoads();\n    updateState({\n      revalidation: \"loading\"\n    });\n    // If we're currently submitting an action, we don't need to start a new\n    // navigation, we'll just let the follow up loader execution call all loaders\n    if (state.navigation.state === \"submitting\") {\n      return;\n    }\n    // If we're currently in an idle state, start a new navigation for the current\n    // action/location and mark it as uninterrupted, which will skip the history\n    // update in completeNavigation\n    if (state.navigation.state === \"idle\") {\n      startNavigation(state.historyAction, state.location, {\n        startUninterruptedRevalidation: true\n      });\n      return;\n    }\n    // Otherwise, if we're currently in a loading state, just start a new\n    // navigation to the navigation.location but do not trigger an uninterrupted\n    // revalidation so that history correctly updates once the navigation completes\n    startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n      overrideNavigation: state.navigation,\n      // Proxy through any rending view transition\n      enableViewTransition: pendingViewTransitionEnabled === true\n    });\n  }\n  // Start a navigation to the given action/location.  Can optionally provide a\n  // overrideNavigation which will override the normalLoad in the case of a redirect\n  // navigation\n  async function startNavigation(historyAction, location, opts) {\n    // Abort any in-progress navigations and start a new one. Unset any ongoing\n    // uninterrupted revalidations unless told otherwise, since we want this\n    // new navigation to update history normally\n    pendingNavigationController && pendingNavigationController.abort();\n    pendingNavigationController = null;\n    pendingAction = historyAction;\n    isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n    // Save the current scroll position every time we start a new navigation,\n    // and track whether we should reset scroll on completion\n    saveScrollPosition(state.location, state.matches);\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n    pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let loadingNavigation = opts && opts.overrideNavigation;\n    let matches = opts != null && opts.initialHydration && state.matches && state.matches.length > 0 && !initialMatchesIsFOW ?\n    // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n    state.matches : matchRoutes(routesToUse, location, basename);\n    let flushSync = (opts && opts.flushSync) === true;\n    // Short circuit if it's only a hash change and not a revalidation or\n    // mutation submission.\n    //\n    // Ignore on initial page loads because since the initial hydration will always\n    // be \"same hash\".  For example, on /page#hash and submit a <Form method=\"post\">\n    // which will default to a navigation to /page\n    if (matches && state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n      completeNavigation(location, {\n        matches\n      }, {\n        flushSync\n      });\n      return;\n    }\n    let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n    // Short circuit with a 404 on the root error boundary if we match nothing\n    if (!matches) {\n      let {\n        error,\n        notFoundMatches,\n        route\n      } = handleNavigational404(location.pathname);\n      completeNavigation(location, {\n        matches: notFoundMatches,\n        loaderData: {},\n        errors: {\n          [route.id]: error\n        }\n      }, {\n        flushSync\n      });\n      return;\n    }\n    // Create a controller/Request for this navigation\n    pendingNavigationController = new AbortController();\n    let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n    let pendingActionResult;\n    if (opts && opts.pendingError) {\n      // If we have a pendingError, it means the user attempted a GET submission\n      // with binary FormData so assign here and skip to handleLoaders.  That\n      // way we handle calling loaders above the boundary etc.  It's not really\n      // different from an actionError in that sense.\n      pendingActionResult = [findNearestBoundary(matches).route.id, {\n        type: ResultType.error,\n        error: opts.pendingError\n      }];\n    } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n      // Call action if we received an action submission\n      let actionResult = await handleAction(request, location, opts.submission, matches, fogOfWar.active, {\n        replace: opts.replace,\n        flushSync\n      });\n      if (actionResult.shortCircuited) {\n        return;\n      }\n      // If we received a 404 from handleAction, it's because we couldn't lazily\n      // discover the destination route so we don't want to call loaders\n      if (actionResult.pendingActionResult) {\n        let [routeId, result] = actionResult.pendingActionResult;\n        if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {\n          pendingNavigationController = null;\n          completeNavigation(location, {\n            matches: actionResult.matches,\n            loaderData: {},\n            errors: {\n              [routeId]: result.error\n            }\n          });\n          return;\n        }\n      }\n      matches = actionResult.matches || matches;\n      pendingActionResult = actionResult.pendingActionResult;\n      loadingNavigation = getLoadingNavigation(location, opts.submission);\n      flushSync = false;\n      // No need to do fog of war matching again on loader execution\n      fogOfWar.active = false;\n      // Create a GET request for the loaders\n      request = createClientSideRequest(init.history, request.url, request.signal);\n    }\n    // Call loaders\n    let {\n      shortCircuited,\n      matches: updatedMatches,\n      loaderData,\n      errors\n    } = await handleLoaders(request, location, matches, fogOfWar.active, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionResult);\n    if (shortCircuited) {\n      return;\n    }\n    // Clean up now that the action/loaders have completed.  Don't clean up if\n    // we short circuited because pendingNavigationController will have already\n    // been assigned to a new controller for the next navigation\n    pendingNavigationController = null;\n    completeNavigation(location, _extends({\n      matches: updatedMatches || matches\n    }, getActionDataForCommit(pendingActionResult), {\n      loaderData,\n      errors\n    }));\n  }\n  // Call the action matched by the leaf route for this navigation and handle\n  // redirects/errors\n  async function handleAction(request, location, submission, matches, isFogOfWar, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    interruptActiveLoads();\n    // Put us in a submitting state\n    let navigation = getSubmittingNavigation(location, submission);\n    updateState({\n      navigation\n    }, {\n      flushSync: opts.flushSync === true\n    });\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);\n      if (discoverResult.type === \"aborted\") {\n        return {\n          shortCircuited: true\n        };\n      } else if (discoverResult.type === \"error\") {\n        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n        return {\n          matches: discoverResult.partialMatches,\n          pendingActionResult: [boundaryId, {\n            type: ResultType.error,\n            error: discoverResult.error\n          }]\n        };\n      } else if (!discoverResult.matches) {\n        let {\n          notFoundMatches,\n          error,\n          route\n        } = handleNavigational404(location.pathname);\n        return {\n          matches: notFoundMatches,\n          pendingActionResult: [route.id, {\n            type: ResultType.error,\n            error\n          }]\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    // Call our action and get the result\n    let result;\n    let actionMatch = getTargetMatch(matches, location);\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      result = {\n        type: ResultType.error,\n        error: getInternalRouterError(405, {\n          method: request.method,\n          pathname: location.pathname,\n          routeId: actionMatch.route.id\n        })\n      };\n    } else {\n      let results = await callDataStrategy(\"action\", state, request, [actionMatch], matches, null);\n      result = results[actionMatch.route.id];\n      if (request.signal.aborted) {\n        return {\n          shortCircuited: true\n        };\n      }\n    }\n    if (isRedirectResult(result)) {\n      let replace;\n      if (opts && opts.replace != null) {\n        replace = opts.replace;\n      } else {\n        // If the user didn't explicity indicate replace behavior, replace if\n        // we redirected to the exact same location we're currently at to avoid\n        // double back-buttons\n        let location = normalizeRedirectLocation(result.response.headers.get(\"Location\"), new URL(request.url), basename, init.history);\n        replace = location === state.location.pathname + state.location.search;\n      }\n      await startRedirectNavigation(request, result, true, {\n        submission,\n        replace\n      });\n      return {\n        shortCircuited: true\n      };\n    }\n    if (isDeferredResult(result)) {\n      throw getInternalRouterError(400, {\n        type: \"defer-action\"\n      });\n    }\n    if (isErrorResult(result)) {\n      // Store off the pending error - we use it to determine which loaders\n      // to call and will commit it when we complete the navigation\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n      // By default, all submissions to the current location are REPLACE\n      // navigations, but if the action threw an error that'll be rendered in\n      // an errorElement, we fall back to PUSH so that the user can use the\n      // back button to get back to the pre-submission form location to try\n      // again\n      if ((opts && opts.replace) !== true) {\n        pendingAction = Action.Push;\n      }\n      return {\n        matches,\n        pendingActionResult: [boundaryMatch.route.id, result]\n      };\n    }\n    return {\n      matches,\n      pendingActionResult: [actionMatch.route.id, result]\n    };\n  }\n  // Call all applicable loaders for the given matches, handling redirects,\n  // errors, etc.\n  async function handleLoaders(request, location, matches, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace, initialHydration, flushSync, pendingActionResult) {\n    // Figure out the right navigation we want to use for data loading\n    let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n    // If this was a redirect from an action we don't have a \"submission\" but\n    // we have it on the loading navigation so use that if available\n    let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n    // If this is an uninterrupted revalidation, we remain in our current idle\n    // state.  If not, we need to switch to our loading state and load data,\n    // preserving any new action data or existing action data (in the case of\n    // a revalidation interrupting an actionReload)\n    // If we have partialHydration enabled, then don't update the state for the\n    // initial data load since it's not a \"navigation\"\n    let shouldUpdateNavigationState = !isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration);\n    // When fog of war is enabled, we enter our `loading` state earlier so we\n    // can discover new routes during the `loading` state.  We skip this if\n    // we've already run actions since we would have done our matching already.\n    // If the children() function threw then, we want to proceed with the\n    // partial matches it discovered.\n    if (isFogOfWar) {\n      if (shouldUpdateNavigationState) {\n        let actionData = getUpdatedActionData(pendingActionResult);\n        updateState(_extends({\n          navigation: loadingNavigation\n        }, actionData !== undefined ? {\n          actionData\n        } : {}), {\n          flushSync\n        });\n      }\n      let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);\n      if (discoverResult.type === \"aborted\") {\n        return {\n          shortCircuited: true\n        };\n      } else if (discoverResult.type === \"error\") {\n        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n        return {\n          matches: discoverResult.partialMatches,\n          loaderData: {},\n          errors: {\n            [boundaryId]: discoverResult.error\n          }\n        };\n      } else if (!discoverResult.matches) {\n        let {\n          error,\n          notFoundMatches,\n          route\n        } = handleNavigational404(location.pathname);\n        return {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error\n          }\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult);\n    // Cancel pending deferreds for no-longer-matched routes or routes we're\n    // about to reload.  Note that if this is an action reload we would have\n    // already cancelled all pending deferreds so this would be a no-op\n    cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));\n    pendingNavigationLoadId = ++incrementingLoadId;\n    // Short circuit if we have no loaders to run\n    if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n      let updatedFetchers = markFetchRedirectsDone();\n      completeNavigation(location, _extends({\n        matches,\n        loaderData: {},\n        // Commit pending error if we're short circuiting\n        errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n          [pendingActionResult[0]]: pendingActionResult[1].error\n        } : null\n      }, getActionDataForCommit(pendingActionResult), updatedFetchers ? {\n        fetchers: new Map(state.fetchers)\n      } : {}), {\n        flushSync\n      });\n      return {\n        shortCircuited: true\n      };\n    }\n    if (shouldUpdateNavigationState) {\n      let updates = {};\n      if (!isFogOfWar) {\n        // Only update navigation/actionNData if we didn't already do it above\n        updates.navigation = loadingNavigation;\n        let actionData = getUpdatedActionData(pendingActionResult);\n        if (actionData !== undefined) {\n          updates.actionData = actionData;\n        }\n      }\n      if (revalidatingFetchers.length > 0) {\n        updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n      }\n      updateState(updates, {\n        flushSync\n      });\n    }\n    revalidatingFetchers.forEach(rf => {\n      abortFetcher(rf.key);\n      if (rf.controller) {\n        // Fetchers use an independent AbortController so that aborting a fetcher\n        // (via deleteFetcher) does not abort the triggering navigation that\n        // triggered the revalidation\n        fetchControllers.set(rf.key, rf.controller);\n      }\n    });\n    // Proxy navigation abort through to revalidation fetchers\n    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n    }\n    let {\n      loaderResults,\n      fetcherResults\n    } = await callLoadersAndMaybeResolveData(state, matches, matchesToLoad, revalidatingFetchers, request);\n    if (request.signal.aborted) {\n      return {\n        shortCircuited: true\n      };\n    }\n    // Clean up _after_ loaders have completed.  Don't clean up if we short\n    // circuited because fetchControllers would have been aborted and\n    // reassigned to new controllers for the next navigation\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n    }\n    revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));\n    // If any loaders returned a redirect Response, start a new REPLACE navigation\n    let redirect = findRedirect(loaderResults);\n    if (redirect) {\n      await startRedirectNavigation(request, redirect.result, true, {\n        replace\n      });\n      return {\n        shortCircuited: true\n      };\n    }\n    redirect = findRedirect(fetcherResults);\n    if (redirect) {\n      // If this redirect came from a fetcher make sure we mark it in\n      // fetchRedirectIds so it doesn't get revalidated on the next set of\n      // loader executions\n      fetchRedirectIds.add(redirect.key);\n      await startRedirectNavigation(request, redirect.result, true, {\n        replace\n      });\n      return {\n        shortCircuited: true\n      };\n    }\n    // Process and commit output from loaders\n    let {\n      loaderData,\n      errors\n    } = processLoaderData(state, matches, loaderResults, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds);\n    // Wire up subscribers to update loaderData as promises settle\n    activeDeferreds.forEach((deferredData, routeId) => {\n      deferredData.subscribe(aborted => {\n        // Note: No need to updateState here since the TrackedPromise on\n        // loaderData is stable across resolve/reject\n        // Remove this instance if we were aborted or if promises have settled\n        if (aborted || deferredData.done) {\n          activeDeferreds.delete(routeId);\n        }\n      });\n    });\n    // Preserve SSR errors during partial hydration\n    if (future.v7_partialHydration && initialHydration && state.errors) {\n      errors = _extends({}, state.errors, errors);\n    }\n    let updatedFetchers = markFetchRedirectsDone();\n    let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n    let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n    return _extends({\n      matches,\n      loaderData,\n      errors\n    }, shouldUpdateFetchers ? {\n      fetchers: new Map(state.fetchers)\n    } : {});\n  }\n  function getUpdatedActionData(pendingActionResult) {\n    if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n      // This is cast to `any` currently because `RouteData`uses any and it\n      // would be a breaking change to use any.\n      // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n      return {\n        [pendingActionResult[0]]: pendingActionResult[1].data\n      };\n    } else if (state.actionData) {\n      if (Object.keys(state.actionData).length === 0) {\n        return null;\n      } else {\n        return state.actionData;\n      }\n    }\n  }\n  function getUpdatedRevalidatingFetchers(revalidatingFetchers) {\n    revalidatingFetchers.forEach(rf => {\n      let fetcher = state.fetchers.get(rf.key);\n      let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);\n      state.fetchers.set(rf.key, revalidatingFetcher);\n    });\n    return new Map(state.fetchers);\n  }\n  // Trigger a fetcher load/submit for the given fetcher key\n  function fetch(key, routeId, href, opts) {\n    if (isServer) {\n      throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n    }\n    abortFetcher(key);\n    let flushSync = (opts && opts.flushSync) === true;\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);\n    let matches = matchRoutes(routesToUse, normalizedPath, basename);\n    let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n    if (!matches) {\n      setFetcherError(key, routeId, getInternalRouterError(404, {\n        pathname: normalizedPath\n      }), {\n        flushSync\n      });\n      return;\n    }\n    let {\n      path,\n      submission,\n      error\n    } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n    if (error) {\n      setFetcherError(key, routeId, error, {\n        flushSync\n      });\n      return;\n    }\n    let match = getTargetMatch(matches, path);\n    let preventScrollReset = (opts && opts.preventScrollReset) === true;\n    if (submission && isMutationMethod(submission.formMethod)) {\n      handleFetcherAction(key, routeId, path, match, matches, fogOfWar.active, flushSync, preventScrollReset, submission);\n      return;\n    }\n    // Store off the match so we can call it's shouldRevalidate on subsequent\n    // revalidations\n    fetchLoadMatches.set(key, {\n      routeId,\n      path\n    });\n    handleFetcherLoader(key, routeId, path, match, matches, fogOfWar.active, flushSync, preventScrollReset, submission);\n  }\n  // Call the action for the matched fetcher.submit(), and then handle redirects,\n  // errors, and revalidation\n  async function handleFetcherAction(key, routeId, path, match, requestMatches, isFogOfWar, flushSync, preventScrollReset, submission) {\n    interruptActiveLoads();\n    fetchLoadMatches.delete(key);\n    function detectAndHandle405Error(m) {\n      if (!m.route.action && !m.route.lazy) {\n        let error = getInternalRouterError(405, {\n          method: submission.formMethod,\n          pathname: path,\n          routeId: routeId\n        });\n        setFetcherError(key, routeId, error, {\n          flushSync\n        });\n        return true;\n      }\n      return false;\n    }\n    if (!isFogOfWar && detectAndHandle405Error(match)) {\n      return;\n    }\n    // Put this fetcher into it's submitting state\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n      flushSync\n    });\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(requestMatches, new URL(fetchRequest.url).pathname, fetchRequest.signal, key);\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        setFetcherError(key, routeId, discoverResult.error, {\n          flushSync\n        });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(key, routeId, getInternalRouterError(404, {\n          pathname: path\n        }), {\n          flushSync\n        });\n        return;\n      } else {\n        requestMatches = discoverResult.matches;\n        match = getTargetMatch(requestMatches, path);\n        if (detectAndHandle405Error(match)) {\n          return;\n        }\n      }\n    }\n    // Call the action for the fetcher\n    fetchControllers.set(key, abortController);\n    let originatingLoadId = incrementingLoadId;\n    let actionResults = await callDataStrategy(\"action\", state, fetchRequest, [match], requestMatches, key);\n    let actionResult = actionResults[match.route.id];\n    if (fetchRequest.signal.aborted) {\n      // We can delete this so long as we weren't aborted by our own fetcher\n      // re-submit which would have put _new_ controller is in fetchControllers\n      if (fetchControllers.get(key) === abortController) {\n        fetchControllers.delete(key);\n      }\n      return;\n    }\n    // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n    // or redirects processed for unmounted fetchers so we just revert them to\n    // idle\n    if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n      if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n        updateFetcherState(key, getDoneFetcher(undefined));\n        return;\n      }\n      // Let SuccessResult's fall through for revalidation\n    } else {\n      if (isRedirectResult(actionResult)) {\n        fetchControllers.delete(key);\n        if (pendingNavigationLoadId > originatingLoadId) {\n          // A new navigation was kicked off after our action started, so that\n          // should take precedence over this redirect navigation.  We already\n          // set isRevalidationRequired so all loaders for the new route should\n          // fire unless opted out via shouldRevalidate\n          updateFetcherState(key, getDoneFetcher(undefined));\n          return;\n        } else {\n          fetchRedirectIds.add(key);\n          updateFetcherState(key, getLoadingFetcher(submission));\n          return startRedirectNavigation(fetchRequest, actionResult, false, {\n            fetcherSubmission: submission,\n            preventScrollReset\n          });\n        }\n      }\n      // Process any non-redirect errors thrown\n      if (isErrorResult(actionResult)) {\n        setFetcherError(key, routeId, actionResult.error);\n        return;\n      }\n    }\n    if (isDeferredResult(actionResult)) {\n      throw getInternalRouterError(400, {\n        type: \"defer-action\"\n      });\n    }\n    // Start the data load for current matches, or the next location if we're\n    // in the middle of a navigation\n    let nextLocation = state.navigation.location || state.location;\n    let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n    invariant(matches, \"Didn't find any matches after fetcher action\");\n    let loadId = ++incrementingLoadId;\n    fetchReloadIds.set(key, loadId);\n    let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n    state.fetchers.set(key, loadFetcher);\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, [match.route.id, actionResult]);\n    // Put all revalidating fetchers into the loading state, except for the\n    // current fetcher which we want to keep in it's current loading state which\n    // contains it's action submission info + action data\n    revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {\n      let staleKey = rf.key;\n      let existingFetcher = state.fetchers.get(staleKey);\n      let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);\n      state.fetchers.set(staleKey, revalidatingFetcher);\n      abortFetcher(staleKey);\n      if (rf.controller) {\n        fetchControllers.set(staleKey, rf.controller);\n      }\n    });\n    updateState({\n      fetchers: new Map(state.fetchers)\n    });\n    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));\n    abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n    let {\n      loaderResults,\n      fetcherResults\n    } = await callLoadersAndMaybeResolveData(state, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n    if (abortController.signal.aborted) {\n      return;\n    }\n    abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n    fetchReloadIds.delete(key);\n    fetchControllers.delete(key);\n    revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));\n    let redirect = findRedirect(loaderResults);\n    if (redirect) {\n      return startRedirectNavigation(revalidationRequest, redirect.result, false, {\n        preventScrollReset\n      });\n    }\n    redirect = findRedirect(fetcherResults);\n    if (redirect) {\n      // If this redirect came from a fetcher make sure we mark it in\n      // fetchRedirectIds so it doesn't get revalidated on the next set of\n      // loader executions\n      fetchRedirectIds.add(redirect.key);\n      return startRedirectNavigation(revalidationRequest, redirect.result, false, {\n        preventScrollReset\n      });\n    }\n    // Process and commit output from loaders\n    let {\n      loaderData,\n      errors\n    } = processLoaderData(state, matches, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n    // Since we let revalidations complete even if the submitting fetcher was\n    // deleted, only put it back to idle if it hasn't been deleted\n    if (state.fetchers.has(key)) {\n      let doneFetcher = getDoneFetcher(actionResult.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n    abortStaleFetchLoads(loadId);\n    // If we are currently in a navigation loading state and this fetcher is\n    // more recent than the navigation, we want the newer data so abort the\n    // navigation and complete it with the fetcher data\n    if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n      invariant(pendingAction, \"Expected pending action\");\n      pendingNavigationController && pendingNavigationController.abort();\n      completeNavigation(state.navigation.location, {\n        matches,\n        loaderData,\n        errors,\n        fetchers: new Map(state.fetchers)\n      });\n    } else {\n      // otherwise just update with the fetcher data, preserving any existing\n      // loaderData for loaders that did not need to reload.  We have to\n      // manually merge here since we aren't going through completeNavigation\n      updateState({\n        errors,\n        loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n        fetchers: new Map(state.fetchers)\n      });\n      isRevalidationRequired = false;\n    }\n  }\n  // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n  async function handleFetcherLoader(key, routeId, path, match, matches, isFogOfWar, flushSync, preventScrollReset, submission) {\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {\n      flushSync\n    });\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(matches, new URL(fetchRequest.url).pathname, fetchRequest.signal, key);\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        setFetcherError(key, routeId, discoverResult.error, {\n          flushSync\n        });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(key, routeId, getInternalRouterError(404, {\n          pathname: path\n        }), {\n          flushSync\n        });\n        return;\n      } else {\n        matches = discoverResult.matches;\n        match = getTargetMatch(matches, path);\n      }\n    }\n    // Call the loader for this fetcher route match\n    fetchControllers.set(key, abortController);\n    let originatingLoadId = incrementingLoadId;\n    let results = await callDataStrategy(\"loader\", state, fetchRequest, [match], matches, key);\n    let result = results[match.route.id];\n    // Deferred isn't supported for fetcher loads, await everything and treat it\n    // as a normal load.  resolveDeferredData will return undefined if this\n    // fetcher gets aborted, so we just leave result untouched and short circuit\n    // below if that happens\n    if (isDeferredResult(result)) {\n      result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n    }\n    // We can delete this so long as we weren't aborted by our our own fetcher\n    // re-load which would have put _new_ controller is in fetchControllers\n    if (fetchControllers.get(key) === abortController) {\n      fetchControllers.delete(key);\n    }\n    if (fetchRequest.signal.aborted) {\n      return;\n    }\n    // We don't want errors bubbling up or redirects followed for unmounted\n    // fetchers, so short circuit here if it was removed from the UI\n    if (deletedFetchers.has(key)) {\n      updateFetcherState(key, getDoneFetcher(undefined));\n      return;\n    }\n    // If the loader threw a redirect Response, start a new REPLACE navigation\n    if (isRedirectResult(result)) {\n      if (pendingNavigationLoadId > originatingLoadId) {\n        // A new navigation was kicked off after our loader started, so that\n        // should take precedence over this redirect navigation\n        updateFetcherState(key, getDoneFetcher(undefined));\n        return;\n      } else {\n        fetchRedirectIds.add(key);\n        await startRedirectNavigation(fetchRequest, result, false, {\n          preventScrollReset\n        });\n        return;\n      }\n    }\n    // Process any non-redirect errors thrown\n    if (isErrorResult(result)) {\n      setFetcherError(key, routeId, result.error);\n      return;\n    }\n    invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n    // Put the fetcher back into an idle state\n    updateFetcherState(key, getDoneFetcher(result.data));\n  }\n  /**\n   * Utility function to handle redirects returned from an action or loader.\n   * Normally, a redirect \"replaces\" the navigation that triggered it.  So, for\n   * example:\n   *\n   *  - user is on /a\n   *  - user clicks a link to /b\n   *  - loader for /b redirects to /c\n   *\n   * In a non-JS app the browser would track the in-flight navigation to /b and\n   * then replace it with /c when it encountered the redirect response.  In\n   * the end it would only ever update the URL bar with /c.\n   *\n   * In client-side routing using pushState/replaceState, we aim to emulate\n   * this behavior and we also do not update history until the end of the\n   * navigation (including processed redirects).  This means that we never\n   * actually touch history until we've processed redirects, so we just use\n   * the history action from the original navigation (PUSH or REPLACE).\n   */\n  async function startRedirectNavigation(request, redirect, isNavigation, _temp2) {\n    let {\n      submission,\n      fetcherSubmission,\n      preventScrollReset,\n      replace\n    } = _temp2 === void 0 ? {} : _temp2;\n    if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n      isRevalidationRequired = true;\n    }\n    let location = redirect.response.headers.get(\"Location\");\n    invariant(location, \"Expected a Location header on the redirect Response\");\n    location = normalizeRedirectLocation(location, new URL(request.url), basename, init.history);\n    let redirectLocation = createLocation(state.location, location, {\n      _isRedirect: true\n    });\n    if (isBrowser) {\n      let isDocumentReload = false;\n      if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n        // Hard reload if the response contained X-Remix-Reload-Document\n        isDocumentReload = true;\n      } else if (ABSOLUTE_URL_REGEX.test(location)) {\n        const url = init.history.createURL(location);\n        isDocumentReload =\n        // Hard reload if it's an absolute URL to a new origin\n        url.origin !== routerWindow.location.origin ||\n        // Hard reload if it's an absolute URL that does not match our basename\n        stripBasename(url.pathname, basename) == null;\n      }\n      if (isDocumentReload) {\n        if (replace) {\n          routerWindow.location.replace(location);\n        } else {\n          routerWindow.location.assign(location);\n        }\n        return;\n      }\n    }\n    // There's no need to abort on redirects, since we don't detect the\n    // redirect until the action/loaders have settled\n    pendingNavigationController = null;\n    let redirectHistoryAction = replace === true || redirect.response.headers.has(\"X-Remix-Replace\") ? Action.Replace : Action.Push;\n    // Use the incoming submission if provided, fallback on the active one in\n    // state.navigation\n    let {\n      formMethod,\n      formAction,\n      formEncType\n    } = state.navigation;\n    if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n      submission = getSubmissionFromNavigation(state.navigation);\n    }\n    // If this was a 307/308 submission we want to preserve the HTTP method and\n    // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n    // redirected location\n    let activeSubmission = submission || fetcherSubmission;\n    if (redirectPreserveMethodStatusCodes.has(redirect.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        submission: _extends({}, activeSubmission, {\n          formAction: location\n        }),\n        // Preserve these flags across redirects\n        preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : undefined\n      });\n    } else {\n      // If we have a navigation submission, we will preserve it through the\n      // redirect navigation\n      let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        overrideNavigation,\n        // Send fetcher submissions through for shouldRevalidate\n        fetcherSubmission,\n        // Preserve these flags across redirects\n        preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : undefined\n      });\n    }\n  }\n  // Utility wrapper for calling dataStrategy client-side without having to\n  // pass around the manifest, mapRouteProperties, etc.\n  async function callDataStrategy(type, state, request, matchesToLoad, matches, fetcherKey) {\n    let results;\n    let dataResults = {};\n    try {\n      results = await callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties);\n    } catch (e) {\n      // If the outer dataStrategy method throws, just return the error for all\n      // matches - and it'll naturally bubble to the root\n      matchesToLoad.forEach(m => {\n        dataResults[m.route.id] = {\n          type: ResultType.error,\n          error: e\n        };\n      });\n      return dataResults;\n    }\n    for (let [routeId, result] of Object.entries(results)) {\n      if (isRedirectDataStrategyResultResult(result)) {\n        let response = result.result;\n        dataResults[routeId] = {\n          type: ResultType.redirect,\n          response: normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, future.v7_relativeSplatPath)\n        };\n      } else {\n        dataResults[routeId] = await convertDataStrategyResultToDataResult(result);\n      }\n    }\n    return dataResults;\n  }\n  async function callLoadersAndMaybeResolveData(state, matches, matchesToLoad, fetchersToLoad, request) {\n    let currentMatches = state.matches;\n    // Kick off loaders and fetchers in parallel\n    let loaderResultsPromise = callDataStrategy(\"loader\", state, request, matchesToLoad, matches, null);\n    let fetcherResultsPromise = Promise.all(fetchersToLoad.map(async f => {\n      if (f.matches && f.match && f.controller) {\n        let results = await callDataStrategy(\"loader\", state, createClientSideRequest(init.history, f.path, f.controller.signal), [f.match], f.matches, f.key);\n        let result = results[f.match.route.id];\n        // Fetcher results are keyed by fetcher key from here on out, not routeId\n        return {\n          [f.key]: result\n        };\n      } else {\n        return Promise.resolve({\n          [f.key]: {\n            type: ResultType.error,\n            error: getInternalRouterError(404, {\n              pathname: f.path\n            })\n          }\n        });\n      }\n    }));\n    let loaderResults = await loaderResultsPromise;\n    let fetcherResults = (await fetcherResultsPromise).reduce((acc, r) => Object.assign(acc, r), {});\n    await Promise.all([resolveNavigationDeferredResults(matches, loaderResults, request.signal, currentMatches, state.loaderData), resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad)]);\n    return {\n      loaderResults,\n      fetcherResults\n    };\n  }\n  function interruptActiveLoads() {\n    // Every interruption triggers a revalidation\n    isRevalidationRequired = true;\n    // Cancel pending route-level deferreds and mark cancelled routes for\n    // revalidation\n    cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n    // Abort in-flight fetcher loads\n    fetchLoadMatches.forEach((_, key) => {\n      if (fetchControllers.has(key)) {\n        cancelledFetcherLoads.add(key);\n      }\n      abortFetcher(key);\n    });\n  }\n  function updateFetcherState(key, fetcher, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    state.fetchers.set(key, fetcher);\n    updateState({\n      fetchers: new Map(state.fetchers)\n    }, {\n      flushSync: (opts && opts.flushSync) === true\n    });\n  }\n  function setFetcherError(key, routeId, error, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    let boundaryMatch = findNearestBoundary(state.matches, routeId);\n    deleteFetcher(key);\n    updateState({\n      errors: {\n        [boundaryMatch.route.id]: error\n      },\n      fetchers: new Map(state.fetchers)\n    }, {\n      flushSync: (opts && opts.flushSync) === true\n    });\n  }\n  function getFetcher(key) {\n    activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n    // If this fetcher was previously marked for deletion, unmark it since we\n    // have a new instance\n    if (deletedFetchers.has(key)) {\n      deletedFetchers.delete(key);\n    }\n    return state.fetchers.get(key) || IDLE_FETCHER;\n  }\n  function deleteFetcher(key) {\n    let fetcher = state.fetchers.get(key);\n    // Don't abort the controller if this is a deletion of a fetcher.submit()\n    // in it's loading phase since - we don't want to abort the corresponding\n    // revalidation and want them to complete and land\n    if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n      abortFetcher(key);\n    }\n    fetchLoadMatches.delete(key);\n    fetchReloadIds.delete(key);\n    fetchRedirectIds.delete(key);\n    // If we opted into the flag we can clear this now since we're calling\n    // deleteFetcher() at the end of updateState() and we've already handed the\n    // deleted fetcher keys off to the data layer.\n    // If not, we're eagerly calling deleteFetcher() and we need to keep this\n    // Set populated until the next updateState call, and we'll clear\n    // `deletedFetchers` then\n    if (future.v7_fetcherPersist) {\n      deletedFetchers.delete(key);\n    }\n    cancelledFetcherLoads.delete(key);\n    state.fetchers.delete(key);\n  }\n  function deleteFetcherAndUpdateState(key) {\n    let count = (activeFetchers.get(key) || 0) - 1;\n    if (count <= 0) {\n      activeFetchers.delete(key);\n      deletedFetchers.add(key);\n      if (!future.v7_fetcherPersist) {\n        deleteFetcher(key);\n      }\n    } else {\n      activeFetchers.set(key, count);\n    }\n    updateState({\n      fetchers: new Map(state.fetchers)\n    });\n  }\n  function abortFetcher(key) {\n    let controller = fetchControllers.get(key);\n    if (controller) {\n      controller.abort();\n      fetchControllers.delete(key);\n    }\n  }\n  function markFetchersDone(keys) {\n    for (let key of keys) {\n      let fetcher = getFetcher(key);\n      let doneFetcher = getDoneFetcher(fetcher.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n  function markFetchRedirectsDone() {\n    let doneKeys = [];\n    let updatedFetchers = false;\n    for (let key of fetchRedirectIds) {\n      let fetcher = state.fetchers.get(key);\n      invariant(fetcher, \"Expected fetcher: \" + key);\n      if (fetcher.state === \"loading\") {\n        fetchRedirectIds.delete(key);\n        doneKeys.push(key);\n        updatedFetchers = true;\n      }\n    }\n    markFetchersDone(doneKeys);\n    return updatedFetchers;\n  }\n  function abortStaleFetchLoads(landedId) {\n    let yeetedKeys = [];\n    for (let [key, id] of fetchReloadIds) {\n      if (id < landedId) {\n        let fetcher = state.fetchers.get(key);\n        invariant(fetcher, \"Expected fetcher: \" + key);\n        if (fetcher.state === \"loading\") {\n          abortFetcher(key);\n          fetchReloadIds.delete(key);\n          yeetedKeys.push(key);\n        }\n      }\n    }\n    markFetchersDone(yeetedKeys);\n    return yeetedKeys.length > 0;\n  }\n  function getBlocker(key, fn) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n    if (blockerFunctions.get(key) !== fn) {\n      blockerFunctions.set(key, fn);\n    }\n    return blocker;\n  }\n  function deleteBlocker(key) {\n    state.blockers.delete(key);\n    blockerFunctions.delete(key);\n  }\n  // Utility function to update blockers, ensuring valid state transitions\n  function updateBlocker(key, newBlocker) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n    // Poor mans state machine :)\n    // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n    invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n    let blockers = new Map(state.blockers);\n    blockers.set(key, newBlocker);\n    updateState({\n      blockers\n    });\n  }\n  function shouldBlockNavigation(_ref2) {\n    let {\n      currentLocation,\n      nextLocation,\n      historyAction\n    } = _ref2;\n    if (blockerFunctions.size === 0) {\n      return;\n    }\n    // We ony support a single active blocker at the moment since we don't have\n    // any compelling use cases for multi-blocker yet\n    if (blockerFunctions.size > 1) {\n      warning(false, \"A router only supports one blocker at a time\");\n    }\n    let entries = Array.from(blockerFunctions.entries());\n    let [blockerKey, blockerFunction] = entries[entries.length - 1];\n    let blocker = state.blockers.get(blockerKey);\n    if (blocker && blocker.state === \"proceeding\") {\n      // If the blocker is currently proceeding, we don't need to re-check\n      // it and can let this navigation continue\n      return;\n    }\n    // At this point, we know we're unblocked/blocked so we need to check the\n    // user-provided blocker function\n    if (blockerFunction({\n      currentLocation,\n      nextLocation,\n      historyAction\n    })) {\n      return blockerKey;\n    }\n  }\n  function handleNavigational404(pathname) {\n    let error = getInternalRouterError(404, {\n      pathname\n    });\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let {\n      matches,\n      route\n    } = getShortCircuitMatches(routesToUse);\n    // Cancel all pending deferred on 404s since we don't keep any routes\n    cancelActiveDeferreds();\n    return {\n      notFoundMatches: matches,\n      route,\n      error\n    };\n  }\n  function cancelActiveDeferreds(predicate) {\n    let cancelledRouteIds = [];\n    activeDeferreds.forEach((dfd, routeId) => {\n      if (!predicate || predicate(routeId)) {\n        // Cancel the deferred - but do not remove from activeDeferreds here -\n        // we rely on the subscribers to do that so our tests can assert proper\n        // cleanup via _internalActiveDeferreds\n        dfd.cancel();\n        cancelledRouteIds.push(routeId);\n        activeDeferreds.delete(routeId);\n      }\n    });\n    return cancelledRouteIds;\n  }\n  // Opt in to capturing and reporting scroll positions during navigations,\n  // used by the <ScrollRestoration> component\n  function enableScrollRestoration(positions, getPosition, getKey) {\n    savedScrollPositions = positions;\n    getScrollPosition = getPosition;\n    getScrollRestorationKey = getKey || null;\n    // Perform initial hydration scroll restoration, since we miss the boat on\n    // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n    // and therefore have no savedScrollPositions available\n    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n      initialScrollRestored = true;\n      let y = getSavedScrollPosition(state.location, state.matches);\n      if (y != null) {\n        updateState({\n          restoreScrollPosition: y\n        });\n      }\n    }\n    return () => {\n      savedScrollPositions = null;\n      getScrollPosition = null;\n      getScrollRestorationKey = null;\n    };\n  }\n  function getScrollKey(location, matches) {\n    if (getScrollRestorationKey) {\n      let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));\n      return key || location.key;\n    }\n    return location.key;\n  }\n  function saveScrollPosition(location, matches) {\n    if (savedScrollPositions && getScrollPosition) {\n      let key = getScrollKey(location, matches);\n      savedScrollPositions[key] = getScrollPosition();\n    }\n  }\n  function getSavedScrollPosition(location, matches) {\n    if (savedScrollPositions) {\n      let key = getScrollKey(location, matches);\n      let y = savedScrollPositions[key];\n      if (typeof y === \"number\") {\n        return y;\n      }\n    }\n    return null;\n  }\n  function checkFogOfWar(matches, routesToUse, pathname) {\n    if (patchRoutesOnNavigationImpl) {\n      if (!matches) {\n        let fogMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n        return {\n          active: true,\n          matches: fogMatches || []\n        };\n      } else {\n        if (Object.keys(matches[0].params).length > 0) {\n          // If we matched a dynamic param or a splat, it might only be because\n          // we haven't yet discovered other routes that would match with a\n          // higher score.  Call patchRoutesOnNavigation just to be sure\n          let partialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n          return {\n            active: true,\n            matches: partialMatches\n          };\n        }\n      }\n    }\n    return {\n      active: false,\n      matches: null\n    };\n  }\n  async function discoverRoutes(matches, pathname, signal, fetcherKey) {\n    if (!patchRoutesOnNavigationImpl) {\n      return {\n        type: \"success\",\n        matches\n      };\n    }\n    let partialMatches = matches;\n    while (true) {\n      let isNonHMR = inFlightDataRoutes == null;\n      let routesToUse = inFlightDataRoutes || dataRoutes;\n      let localManifest = manifest;\n      try {\n        await patchRoutesOnNavigationImpl({\n          signal,\n          path: pathname,\n          matches: partialMatches,\n          fetcherKey,\n          patch: (routeId, children) => {\n            if (signal.aborted) return;\n            patchRoutesImpl(routeId, children, routesToUse, localManifest, mapRouteProperties);\n          }\n        });\n      } catch (e) {\n        return {\n          type: \"error\",\n          error: e,\n          partialMatches\n        };\n      } finally {\n        // If we are not in the middle of an HMR revalidation and we changed the\n        // routes, provide a new identity so when we `updateState` at the end of\n        // this navigation/fetch `router.routes` will be a new identity and\n        // trigger a re-run of memoized `router.routes` dependencies.\n        // HMR will already update the identity and reflow when it lands\n        // `inFlightDataRoutes` in `completeNavigation`\n        if (isNonHMR && !signal.aborted) {\n          dataRoutes = [...dataRoutes];\n        }\n      }\n      if (signal.aborted) {\n        return {\n          type: \"aborted\"\n        };\n      }\n      let newMatches = matchRoutes(routesToUse, pathname, basename);\n      if (newMatches) {\n        return {\n          type: \"success\",\n          matches: newMatches\n        };\n      }\n      let newPartialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n      // Avoid loops if the second pass results in the same partial matches\n      if (!newPartialMatches || partialMatches.length === newPartialMatches.length && partialMatches.every((m, i) => m.route.id === newPartialMatches[i].route.id)) {\n        return {\n          type: \"success\",\n          matches: null\n        };\n      }\n      partialMatches = newPartialMatches;\n    }\n  }\n  function _internalSetRoutes(newRoutes) {\n    manifest = {};\n    inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);\n  }\n  function patchRoutes(routeId, children) {\n    let isNonHMR = inFlightDataRoutes == null;\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties);\n    // If we are not in the middle of an HMR revalidation and we changed the\n    // routes, provide a new identity and trigger a reflow via `updateState`\n    // to re-run memoized `router.routes` dependencies.\n    // HMR will already update the identity and reflow when it lands\n    // `inFlightDataRoutes` in `completeNavigation`\n    if (isNonHMR) {\n      dataRoutes = [...dataRoutes];\n      updateState({});\n    }\n  }\n  router = {\n    get basename() {\n      return basename;\n    },\n    get future() {\n      return future;\n    },\n    get state() {\n      return state;\n    },\n    get routes() {\n      return dataRoutes;\n    },\n    get window() {\n      return routerWindow;\n    },\n    initialize,\n    subscribe,\n    enableScrollRestoration,\n    navigate,\n    fetch,\n    revalidate,\n    // Passthrough to history-aware createHref used by useHref so we get proper\n    // hash-aware URLs in DOM paths\n    createHref: to => init.history.createHref(to),\n    encodeLocation: to => init.history.encodeLocation(to),\n    getFetcher,\n    deleteFetcher: deleteFetcherAndUpdateState,\n    dispose,\n    getBlocker,\n    deleteBlocker,\n    patchRoutes,\n    _internalFetchControllers: fetchControllers,\n    _internalActiveDeferreds: activeDeferreds,\n    // TODO: Remove setRoutes, it's temporary to avoid dealing with\n    // updating the tree while validating the update algorithm.\n    _internalSetRoutes\n  };\n  return router;\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\nconst UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction createStaticHandler(routes, opts) {\n  invariant(routes.length > 0, \"You must provide a non-empty routes array to createStaticHandler\");\n  let manifest = {};\n  let basename = (opts ? opts.basename : null) || \"/\";\n  let mapRouteProperties;\n  if (opts != null && opts.mapRouteProperties) {\n    mapRouteProperties = opts.mapRouteProperties;\n  } else if (opts != null && opts.detectErrorBoundary) {\n    // If they are still using the deprecated version, wrap it with the new API\n    let detectErrorBoundary = opts.detectErrorBoundary;\n    mapRouteProperties = route => ({\n      hasErrorBoundary: detectErrorBoundary(route)\n    });\n  } else {\n    mapRouteProperties = defaultMapRouteProperties;\n  }\n  // Config driven behavior flags\n  let future = _extends({\n    v7_relativeSplatPath: false,\n    v7_throwAbortReason: false\n  }, opts ? opts.future : null);\n  let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);\n  /**\n   * The query() method is intended for document requests, in which we want to\n   * call an optional action and potentially multiple loaders for all nested\n   * routes.  It returns a StaticHandlerContext object, which is very similar\n   * to the router state (location, loaderData, actionData, errors, etc.) and\n   * also adds SSR-specific information such as the statusCode and headers\n   * from action/loaders Responses.\n   *\n   * It _should_ never throw and should report all errors through the\n   * returned context.errors object, properly associating errors to their error\n   * boundary.  Additionally, it tracks _deepestRenderedBoundaryId which can be\n   * used to emulate React error boundaries during SSr by performing a second\n   * pass only down to the boundaryId.\n   *\n   * The one exception where we do not return a StaticHandlerContext is when a\n   * redirect response is returned or thrown from any action/loader.  We\n   * propagate that out and return the raw Response so the HTTP server can\n   * return it directly.\n   *\n   * - `opts.requestContext` is an optional server context that will be passed\n   *   to actions/loaders in the `context` parameter\n   * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n   *   the bubbling of errors which allows single-fetch-type implementations\n   *   where the client will handle the bubbling and we may need to return data\n   *   for the handling route\n   */\n  async function query(request, _temp3) {\n    let {\n      requestContext,\n      skipLoaderErrorBubbling,\n      dataStrategy\n    } = _temp3 === void 0 ? {} : _temp3;\n    let url = new URL(request.url);\n    let method = request.method;\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename);\n    // SSR supports HEAD requests while SPA doesn't\n    if (!isValidMethod(method) && method !== \"HEAD\") {\n      let error = getInternalRouterError(405, {\n        method\n      });\n      let {\n        matches: methodNotAllowedMatches,\n        route\n      } = getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: methodNotAllowedMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {},\n        activeDeferreds: null\n      };\n    } else if (!matches) {\n      let error = getInternalRouterError(404, {\n        pathname: location.pathname\n      });\n      let {\n        matches: notFoundMatches,\n        route\n      } = getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: notFoundMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {},\n        activeDeferreds: null\n      };\n    }\n    let result = await queryImpl(request, location, matches, requestContext, dataStrategy || null, skipLoaderErrorBubbling === true, null);\n    if (isResponse(result)) {\n      return result;\n    }\n    // When returning StaticHandlerContext, we patch back in the location here\n    // since we need it for React Context.  But this helps keep our submit and\n    // loadRouteData operating on a Request instead of a Location\n    return _extends({\n      location,\n      basename\n    }, result);\n  }\n  /**\n   * The queryRoute() method is intended for targeted route requests, either\n   * for fetch ?_data requests or resource route requests.  In this case, we\n   * are only ever calling a single action or loader, and we are returning the\n   * returned value directly.  In most cases, this will be a Response returned\n   * from the action/loader, but it may be a primitive or other value as well -\n   * and in such cases the calling context should handle that accordingly.\n   *\n   * We do respect the throw/return differentiation, so if an action/loader\n   * throws, then this method will throw the value.  This is important so we\n   * can do proper boundary identification in Remix where a thrown Response\n   * must go to the Catch Boundary but a returned Response is happy-path.\n   *\n   * One thing to note is that any Router-initiated Errors that make sense\n   * to associate with a status code will be thrown as an ErrorResponse\n   * instance which include the raw Error, such that the calling context can\n   * serialize the error as they see fit while including the proper response\n   * code.  Examples here are 404 and 405 errors that occur prior to reaching\n   * any user-defined loaders.\n   *\n   * - `opts.routeId` allows you to specify the specific route handler to call.\n   *   If not provided the handler will determine the proper route by matching\n   *   against `request.url`\n   * - `opts.requestContext` is an optional server context that will be passed\n   *    to actions/loaders in the `context` parameter\n   */\n  async function queryRoute(request, _temp4) {\n    let {\n      routeId,\n      requestContext,\n      dataStrategy\n    } = _temp4 === void 0 ? {} : _temp4;\n    let url = new URL(request.url);\n    let method = request.method;\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename);\n    // SSR supports HEAD requests while SPA doesn't\n    if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n      throw getInternalRouterError(405, {\n        method\n      });\n    } else if (!matches) {\n      throw getInternalRouterError(404, {\n        pathname: location.pathname\n      });\n    }\n    let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n    if (routeId && !match) {\n      throw getInternalRouterError(403, {\n        pathname: location.pathname,\n        routeId\n      });\n    } else if (!match) {\n      // This should never hit I don't think?\n      throw getInternalRouterError(404, {\n        pathname: location.pathname\n      });\n    }\n    let result = await queryImpl(request, location, matches, requestContext, dataStrategy || null, false, match);\n    if (isResponse(result)) {\n      return result;\n    }\n    let error = result.errors ? Object.values(result.errors)[0] : undefined;\n    if (error !== undefined) {\n      // If we got back result.errors, that means the loader/action threw\n      // _something_ that wasn't a Response, but it's not guaranteed/required\n      // to be an `instanceof Error` either, so we have to use throw here to\n      // preserve the \"error\" state outside of queryImpl.\n      throw error;\n    }\n    // Pick off the right state value to return\n    if (result.actionData) {\n      return Object.values(result.actionData)[0];\n    }\n    if (result.loaderData) {\n      var _result$activeDeferre;\n      let data = Object.values(result.loaderData)[0];\n      if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {\n        data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n      }\n      return data;\n    }\n    return undefined;\n  }\n  async function queryImpl(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch) {\n    invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n    try {\n      if (isMutationMethod(request.method.toLowerCase())) {\n        let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch != null);\n        return result;\n      }\n      let result = await loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch);\n      return isResponse(result) ? result : _extends({}, result, {\n        actionData: null,\n        actionHeaders: {}\n      });\n    } catch (e) {\n      // If the user threw/returned a Response in callLoaderOrAction for a\n      // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n      // and then return or throw the raw Response here accordingly\n      if (isDataStrategyResult(e) && isResponse(e.result)) {\n        if (e.type === ResultType.error) {\n          throw e.result;\n        }\n        return e.result;\n      }\n      // Redirects are always returned since they don't propagate to catch\n      // boundaries\n      if (isRedirectResponse(e)) {\n        return e;\n      }\n      throw e;\n    }\n  }\n  async function submit(request, matches, actionMatch, requestContext, dataStrategy, skipLoaderErrorBubbling, isRouteRequest) {\n    let result;\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      let error = getInternalRouterError(405, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: actionMatch.route.id\n      });\n      if (isRouteRequest) {\n        throw error;\n      }\n      result = {\n        type: ResultType.error,\n        error\n      };\n    } else {\n      let results = await callDataStrategy(\"action\", request, [actionMatch], matches, isRouteRequest, requestContext, dataStrategy);\n      result = results[actionMatch.route.id];\n      if (request.signal.aborted) {\n        throwStaticHandlerAbortedError(request, isRouteRequest, future);\n      }\n    }\n    if (isRedirectResult(result)) {\n      // Uhhhh - this should never happen, we should always throw these from\n      // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n      // can get back on the \"throw all redirect responses\" train here should\n      // this ever happen :/\n      throw new Response(null, {\n        status: result.response.status,\n        headers: {\n          Location: result.response.headers.get(\"Location\")\n        }\n      });\n    }\n    if (isDeferredResult(result)) {\n      let error = getInternalRouterError(400, {\n        type: \"defer-action\"\n      });\n      if (isRouteRequest) {\n        throw error;\n      }\n      result = {\n        type: ResultType.error,\n        error\n      };\n    }\n    if (isRouteRequest) {\n      // Note: This should only be non-Response values if we get here, since\n      // isRouteRequest should throw any Response received in callLoaderOrAction\n      if (isErrorResult(result)) {\n        throw result.error;\n      }\n      return {\n        matches: [actionMatch],\n        loaderData: {},\n        actionData: {\n          [actionMatch.route.id]: result.data\n        },\n        errors: null,\n        // Note: statusCode + headers are unused here since queryRoute will\n        // return the raw Response or value\n        statusCode: 200,\n        loaderHeaders: {},\n        actionHeaders: {},\n        activeDeferreds: null\n      };\n    }\n    // Create a GET request for the loaders\n    let loaderRequest = new Request(request.url, {\n      headers: request.headers,\n      redirect: request.redirect,\n      signal: request.signal\n    });\n    if (isErrorResult(result)) {\n      // Store off the pending error - we use it to determine which loaders\n      // to call and will commit it when we complete the navigation\n      let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n      let context = await loadRouteData(loaderRequest, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, null, [boundaryMatch.route.id, result]);\n      // action status codes take precedence over loader status codes\n      return _extends({}, context, {\n        statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n        actionData: null,\n        actionHeaders: _extends({}, result.headers ? {\n          [actionMatch.route.id]: result.headers\n        } : {})\n      });\n    }\n    let context = await loadRouteData(loaderRequest, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, null);\n    return _extends({}, context, {\n      actionData: {\n        [actionMatch.route.id]: result.data\n      }\n    }, result.statusCode ? {\n      statusCode: result.statusCode\n    } : {}, {\n      actionHeaders: result.headers ? {\n        [actionMatch.route.id]: result.headers\n      } : {}\n    });\n  }\n  async function loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, pendingActionResult) {\n    let isRouteRequest = routeMatch != null;\n    // Short circuit if we have no loaders to run (queryRoute())\n    if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {\n      throw getInternalRouterError(400, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: routeMatch == null ? void 0 : routeMatch.route.id\n      });\n    }\n    let requestMatches = routeMatch ? [routeMatch] : pendingActionResult && isErrorResult(pendingActionResult[1]) ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]) : matches;\n    let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);\n    // Short circuit if we have no loaders to run (query())\n    if (matchesToLoad.length === 0) {\n      return {\n        matches,\n        // Add a null for all matched routes for proper revalidation on the client\n        loaderData: matches.reduce((acc, m) => Object.assign(acc, {\n          [m.route.id]: null\n        }), {}),\n        errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n          [pendingActionResult[0]]: pendingActionResult[1].error\n        } : null,\n        statusCode: 200,\n        loaderHeaders: {},\n        activeDeferreds: null\n      };\n    }\n    let results = await callDataStrategy(\"loader\", request, matchesToLoad, matches, isRouteRequest, requestContext, dataStrategy);\n    if (request.signal.aborted) {\n      throwStaticHandlerAbortedError(request, isRouteRequest, future);\n    }\n    // Process and commit output from loaders\n    let activeDeferreds = new Map();\n    let context = processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling);\n    // Add a null for any non-loader matches for proper revalidation on the client\n    let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));\n    matches.forEach(match => {\n      if (!executedLoaders.has(match.route.id)) {\n        context.loaderData[match.route.id] = null;\n      }\n    });\n    return _extends({}, context, {\n      matches,\n      activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null\n    });\n  }\n  // Utility wrapper for calling dataStrategy server-side without having to\n  // pass around the manifest, mapRouteProperties, etc.\n  async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, requestContext, dataStrategy) {\n    let results = await callDataStrategyImpl(dataStrategy || defaultDataStrategy, type, null, request, matchesToLoad, matches, null, manifest, mapRouteProperties, requestContext);\n    let dataResults = {};\n    await Promise.all(matches.map(async match => {\n      if (!(match.route.id in results)) {\n        return;\n      }\n      let result = results[match.route.id];\n      if (isRedirectDataStrategyResultResult(result)) {\n        let response = result.result;\n        // Throw redirects and let the server handle them with an HTTP redirect\n        throw normalizeRelativeRoutingRedirectResponse(response, request, match.route.id, matches, basename, future.v7_relativeSplatPath);\n      }\n      if (isResponse(result.result) && isRouteRequest) {\n        // For SSR single-route requests, we want to hand Responses back\n        // directly without unwrapping\n        throw result;\n      }\n      dataResults[match.route.id] = await convertDataStrategyResultToDataResult(result);\n    }));\n    return dataResults;\n  }\n  return {\n    dataRoutes,\n    query,\n    queryRoute\n  };\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nfunction getStaticContextFromError(routes, context, error) {\n  let newContext = _extends({}, context, {\n    statusCode: isRouteErrorResponse(error) ? error.status : 500,\n    errors: {\n      [context._deepestRenderedBoundaryId || routes[0].id]: error\n    }\n  });\n  return newContext;\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest, future) {\n  if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n    throw request.signal.reason;\n  }\n  let method = isRouteRequest ? \"queryRoute\" : \"query\";\n  throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n}\nfunction isSubmissionNavigation(opts) {\n  return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== undefined);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {\n  let contextualMatches;\n  let activeRouteMatch;\n  if (fromRouteId) {\n    // Grab matches up to the calling route so our route-relative logic is\n    // relative to the correct source route\n    contextualMatches = [];\n    for (let match of matches) {\n      contextualMatches.push(match);\n      if (match.route.id === fromRouteId) {\n        activeRouteMatch = match;\n        break;\n      }\n    }\n  } else {\n    contextualMatches = matches;\n    activeRouteMatch = matches[matches.length - 1];\n  }\n  // Resolve the relative path\n  let path = resolveTo(to ? to : \".\", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n  // When `to` is not specified we inherit search/hash from the current\n  // location, unlike when to=\".\" and we just inherit the path.\n  // See https://github.com/remix-run/remix/issues/927\n  if (to == null) {\n    path.search = location.search;\n    path.hash = location.hash;\n  }\n  // Account for `?index` params when routing to the current location\n  if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n    let nakedIndex = hasNakedIndexQuery(path.search);\n    if (activeRouteMatch.route.index && !nakedIndex) {\n      // Add one when we're targeting an index route\n      path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n    } else if (!activeRouteMatch.route.index && nakedIndex) {\n      // Remove existing ones when we're not\n      let params = new URLSearchParams(path.search);\n      let indexValues = params.getAll(\"index\");\n      params.delete(\"index\");\n      indexValues.filter(v => v).forEach(v => params.append(\"index\", v));\n      let qs = params.toString();\n      path.search = qs ? \"?\" + qs : \"\";\n    }\n  }\n  // If we're operating within a basename, prepend it to the pathname.  If\n  // this is a root navigation, then just use the raw basename which allows\n  // the basename to have full control over the presence of a trailing slash\n  // on root actions\n  if (prependBasename && basename !== \"/\") {\n    path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n  return createPath(path);\n}\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n  // Return location verbatim on non-submission navigations\n  if (!opts || !isSubmissionNavigation(opts)) {\n    return {\n      path\n    };\n  }\n  if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n    return {\n      path,\n      error: getInternalRouterError(405, {\n        method: opts.formMethod\n      })\n    };\n  }\n  let getInvalidBodyError = () => ({\n    path,\n    error: getInternalRouterError(400, {\n      type: \"invalid-body\"\n    })\n  });\n  // Create a Submission on non-GET navigations\n  let rawFormMethod = opts.formMethod || \"get\";\n  let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n  let formAction = stripHashFromPath(path);\n  if (opts.body !== undefined) {\n    if (opts.formEncType === \"text/plain\") {\n      // text only support POST/PUT/PATCH/DELETE submissions\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n      let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?\n      // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n      Array.from(opts.body.entries()).reduce((acc, _ref3) => {\n        let [name, value] = _ref3;\n        return \"\" + acc + name + \"=\" + value + \"\\n\";\n      }, \"\") : String(opts.body);\n      return {\n        path,\n        submission: {\n          formMethod,\n          formAction,\n          formEncType: opts.formEncType,\n          formData: undefined,\n          json: undefined,\n          text\n        }\n      };\n    } else if (opts.formEncType === \"application/json\") {\n      // json only supports POST/PUT/PATCH/DELETE submissions\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n      try {\n        let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n        return {\n          path,\n          submission: {\n            formMethod,\n            formAction,\n            formEncType: opts.formEncType,\n            formData: undefined,\n            json,\n            text: undefined\n          }\n        };\n      } catch (e) {\n        return getInvalidBodyError();\n      }\n    }\n  }\n  invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n  let searchParams;\n  let formData;\n  if (opts.formData) {\n    searchParams = convertFormDataToSearchParams(opts.formData);\n    formData = opts.formData;\n  } else if (opts.body instanceof FormData) {\n    searchParams = convertFormDataToSearchParams(opts.body);\n    formData = opts.body;\n  } else if (opts.body instanceof URLSearchParams) {\n    searchParams = opts.body;\n    formData = convertSearchParamsToFormData(searchParams);\n  } else if (opts.body == null) {\n    searchParams = new URLSearchParams();\n    formData = new FormData();\n  } else {\n    try {\n      searchParams = new URLSearchParams(opts.body);\n      formData = convertSearchParamsToFormData(searchParams);\n    } catch (e) {\n      return getInvalidBodyError();\n    }\n  }\n  let submission = {\n    formMethod,\n    formAction,\n    formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n    formData,\n    json: undefined,\n    text: undefined\n  };\n  if (isMutationMethod(submission.formMethod)) {\n    return {\n      path,\n      submission\n    };\n  }\n  // Flatten submission onto URLSearchParams for GET submissions\n  let parsedPath = parsePath(path);\n  // On GET navigation submissions we can drop the ?index param from the\n  // resulting location since all loaders will run.  But fetcher GET submissions\n  // only run a single loader so we need to preserve any incoming ?index params\n  if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n    searchParams.append(\"index\", \"\");\n  }\n  parsedPath.search = \"?\" + searchParams;\n  return {\n    path: createPath(parsedPath),\n    submission\n  };\n}\n// Filter out all routes at/below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId, includeBoundary) {\n  if (includeBoundary === void 0) {\n    includeBoundary = false;\n  }\n  let index = matches.findIndex(m => m.route.id === boundaryId);\n  if (index >= 0) {\n    return matches.slice(0, includeBoundary ? index + 1 : index);\n  }\n  return matches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, initialHydration, skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {\n  let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : undefined;\n  let currentUrl = history.createURL(state.location);\n  let nextUrl = history.createURL(location);\n  // Pick navigation matches that are net-new or qualify for revalidation\n  let boundaryMatches = matches;\n  if (initialHydration && state.errors) {\n    // On initial hydration, only consider matches up to _and including_ the boundary.\n    // This is inclusive to handle cases where a server loader ran successfully,\n    // a child server loader bubbled up to this route, but this route has\n    // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n    // we have a complete version of `loaderData`\n    boundaryMatches = getLoaderMatchesUntilBoundary(matches, Object.keys(state.errors)[0], true);\n  } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n    // If an action threw an error, we call loaders up to, but not including the\n    // boundary\n    boundaryMatches = getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]);\n  }\n  // Don't revalidate loaders by default after action 4xx/5xx responses\n  // when the flag is enabled.  They can still opt-into revalidation via\n  // `shouldRevalidate` via `actionResult`\n  let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : undefined;\n  let shouldSkipRevalidation = skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n  let navigationMatches = boundaryMatches.filter((match, index) => {\n    let {\n      route\n    } = match;\n    if (route.lazy) {\n      // We haven't loaded this route yet so we don't know if it's got a loader!\n      return true;\n    }\n    if (route.loader == null) {\n      return false;\n    }\n    if (initialHydration) {\n      return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n    }\n    // Always call the loader on new route instances and pending defer cancellations\n    if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {\n      return true;\n    }\n    // This is the default implementation for when we revalidate.  If the route\n    // provides it's own implementation, then we give them full control but\n    // provide this value so they can leverage it if needed after they check\n    // their own specific use cases\n    let currentRouteMatch = state.matches[index];\n    let nextRouteMatch = match;\n    return shouldRevalidateLoader(match, _extends({\n      currentUrl,\n      currentParams: currentRouteMatch.params,\n      nextUrl,\n      nextParams: nextRouteMatch.params\n    }, submission, {\n      actionResult,\n      actionStatus,\n      defaultShouldRevalidate: shouldSkipRevalidation ? false :\n      // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n      isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||\n      // Search params affect all loaders\n      currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n    }));\n  });\n  // Pick fetcher.loads that need to be revalidated\n  let revalidatingFetchers = [];\n  fetchLoadMatches.forEach((f, key) => {\n    // Don't revalidate:\n    //  - on initial hydration (shouldn't be any fetchers then anyway)\n    //  - if fetcher won't be present in the subsequent render\n    //    - no longer matches the URL (v7_fetcherPersist=false)\n    //    - was unmounted but persisted due to v7_fetcherPersist=true\n    if (initialHydration || !matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n      return;\n    }\n    let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n    // If the fetcher path no longer matches, push it in with null matches so\n    // we can trigger a 404 in callLoadersAndMaybeResolveData.  Note this is\n    // currently only a use-case for Remix HMR where the route tree can change\n    // at runtime and remove a route previously loaded via a fetcher\n    if (!fetcherMatches) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: null,\n        match: null,\n        controller: null\n      });\n      return;\n    }\n    // Revalidating fetchers are decoupled from the route matches since they\n    // load from a static href.  They revalidate based on explicit revalidation\n    // (submission, useRevalidator, or X-Remix-Revalidate)\n    let fetcher = state.fetchers.get(key);\n    let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n    let shouldRevalidate = false;\n    if (fetchRedirectIds.has(key)) {\n      // Never trigger a revalidation of an actively redirecting fetcher\n      shouldRevalidate = false;\n    } else if (cancelledFetcherLoads.has(key)) {\n      // Always mark for revalidation if the fetcher was cancelled\n      cancelledFetcherLoads.delete(key);\n      shouldRevalidate = true;\n    } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === undefined) {\n      // If the fetcher hasn't ever completed loading yet, then this isn't a\n      // revalidation, it would just be a brand new load if an explicit\n      // revalidation is required\n      shouldRevalidate = isRevalidationRequired;\n    } else {\n      // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n      // to explicit revalidations only\n      shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n        currentUrl,\n        currentParams: state.matches[state.matches.length - 1].params,\n        nextUrl,\n        nextParams: matches[matches.length - 1].params\n      }, submission, {\n        actionResult,\n        actionStatus,\n        defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired\n      }));\n    }\n    if (shouldRevalidate) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: fetcherMatches,\n        match: fetcherMatch,\n        controller: new AbortController()\n      });\n    }\n  });\n  return [navigationMatches, revalidatingFetchers];\n}\nfunction shouldLoadRouteOnHydration(route, loaderData, errors) {\n  // We dunno if we have a loader - gotta find out!\n  if (route.lazy) {\n    return true;\n  }\n  // No loader, nothing to initialize\n  if (!route.loader) {\n    return false;\n  }\n  let hasData = loaderData != null && loaderData[route.id] !== undefined;\n  let hasError = errors != null && errors[route.id] !== undefined;\n  // Don't run if we error'd during SSR\n  if (!hasData && hasError) {\n    return false;\n  }\n  // Explicitly opting-in to running on hydration\n  if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n    return true;\n  }\n  // Otherwise, run if we're not yet initialized with anything\n  return !hasData && !hasError;\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n  let isNew =\n  // [a] -> [a, b]\n  !currentMatch ||\n  // [a, b] -> [a, c]\n  match.route.id !== currentMatch.route.id;\n  // Handle the case that we don't have data for a re-used route, potentially\n  // from a prior error or from a cancelled pending deferred\n  let isMissingData = currentLoaderData[match.route.id] === undefined;\n  // Always load if this is a net-new route or we don't yet have data\n  return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n  let currentPath = currentMatch.route.path;\n  return (\n    // param change for this match, /users/123 -> /users/456\n    currentMatch.pathname !== match.pathname ||\n    // splat param changed, which is not present in match.path\n    // e.g. /files/images/avatar.jpg -> files/finances.xls\n    currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n  );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n  if (loaderMatch.route.shouldRevalidate) {\n    let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n    if (typeof routeChoice === \"boolean\") {\n      return routeChoice;\n    }\n  }\n  return arg.defaultShouldRevalidate;\n}\nfunction patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties) {\n  var _childrenToPatch;\n  let childrenToPatch;\n  if (routeId) {\n    let route = manifest[routeId];\n    invariant(route, \"No route found to patch children into: routeId = \" + routeId);\n    if (!route.children) {\n      route.children = [];\n    }\n    childrenToPatch = route.children;\n  } else {\n    childrenToPatch = routesToUse;\n  }\n  // Don't patch in routes we already know about so that `patch` is idempotent\n  // to simplify user-land code. This is useful because we re-call the\n  // `patchRoutesOnNavigation` function for matched routes with params.\n  let uniqueChildren = children.filter(newRoute => !childrenToPatch.some(existingRoute => isSameRoute(newRoute, existingRoute)));\n  let newRoutes = convertRoutesToDataRoutes(uniqueChildren, mapRouteProperties, [routeId || \"_\", \"patch\", String(((_childrenToPatch = childrenToPatch) == null ? void 0 : _childrenToPatch.length) || \"0\")], manifest);\n  childrenToPatch.push(...newRoutes);\n}\nfunction isSameRoute(newRoute, existingRoute) {\n  // Most optimal check is by id\n  if (\"id\" in newRoute && \"id\" in existingRoute && newRoute.id === existingRoute.id) {\n    return true;\n  }\n  // Second is by pathing differences\n  if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {\n    return false;\n  }\n  // Pathless layout routes are trickier since we need to check children.\n  // If they have no children then they're the same as far as we can tell\n  if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {\n    return true;\n  }\n  // Otherwise, we look to see if every child in the new route is already\n  // represented in the existing route's children\n  return newRoute.children.every((aChild, i) => {\n    var _existingRoute$childr;\n    return (_existingRoute$childr = existingRoute.children) == null ? void 0 : _existingRoute$childr.some(bChild => isSameRoute(aChild, bChild));\n  });\n}\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(route, mapRouteProperties, manifest) {\n  if (!route.lazy) {\n    return;\n  }\n  let lazyRoute = await route.lazy();\n  // If the lazy route function was executed and removed by another parallel\n  // call then we can return - first lazy() to finish wins because the return\n  // value of lazy is expected to be static\n  if (!route.lazy) {\n    return;\n  }\n  let routeToUpdate = manifest[route.id];\n  invariant(routeToUpdate, \"No route found in manifest\");\n  // Update the route in place.  This should be safe because there's no way\n  // we could yet be sitting on this route as we can't get there without\n  // resolving lazy() first.\n  //\n  // This is different than the HMR \"update\" use-case where we may actively be\n  // on the route being updated.  The main concern boils down to \"does this\n  // mutation affect any ongoing navigations or any current state.matches\n  // values?\".  If not, it should be safe to update in place.\n  let routeUpdates = {};\n  for (let lazyRouteProperty in lazyRoute) {\n    let staticRouteValue = routeToUpdate[lazyRouteProperty];\n    let isPropertyStaticallyDefined = staticRouteValue !== undefined &&\n    // This property isn't static since it should always be updated based\n    // on the route updates\n    lazyRouteProperty !== \"hasErrorBoundary\";\n    warning(!isPropertyStaticallyDefined, \"Route \\\"\" + routeToUpdate.id + \"\\\" has a static property \\\"\" + lazyRouteProperty + \"\\\" \" + \"defined but its lazy function is also returning a value for this property. \" + (\"The lazy route property \\\"\" + lazyRouteProperty + \"\\\" will be ignored.\"));\n    if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n      routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n    }\n  }\n  // Mutate the route with the provided updates.  Do this first so we pass\n  // the updated version to mapRouteProperties\n  Object.assign(routeToUpdate, routeUpdates);\n  // Mutate the `hasErrorBoundary` property on the route based on the route\n  // updates and remove the `lazy` function so we don't resolve the lazy\n  // route again.\n  Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {\n    lazy: undefined\n  }));\n}\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy(_ref4) {\n  let {\n    matches\n  } = _ref4;\n  let matchesToLoad = matches.filter(m => m.shouldLoad);\n  let results = await Promise.all(matchesToLoad.map(m => m.resolve()));\n  return results.reduce((acc, result, i) => Object.assign(acc, {\n    [matchesToLoad[i].route.id]: result\n  }), {});\n}\nasync function callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties, requestContext) {\n  let loadRouteDefinitionsPromises = matches.map(m => m.route.lazy ? loadLazyRouteModule(m.route, mapRouteProperties, manifest) : undefined);\n  let dsMatches = matches.map((match, i) => {\n    let loadRoutePromise = loadRouteDefinitionsPromises[i];\n    let shouldLoad = matchesToLoad.some(m => m.route.id === match.route.id);\n    // `resolve` encapsulates route.lazy(), executing the loader/action,\n    // and mapping return values/thrown errors to a `DataStrategyResult`.  Users\n    // can pass a callback to take fine-grained control over the execution\n    // of the loader/action\n    let resolve = async handlerOverride => {\n      if (handlerOverride && request.method === \"GET\" && (match.route.lazy || match.route.loader)) {\n        shouldLoad = true;\n      }\n      return shouldLoad ? callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, requestContext) : Promise.resolve({\n        type: ResultType.data,\n        result: undefined\n      });\n    };\n    return _extends({}, match, {\n      shouldLoad,\n      resolve\n    });\n  });\n  // Send all matches here to allow for a middleware-type implementation.\n  // handler will be a no-op for unneeded routes and we filter those results\n  // back out below.\n  let results = await dataStrategyImpl({\n    matches: dsMatches,\n    request,\n    params: matches[0].params,\n    fetcherKey,\n    context: requestContext\n  });\n  // Wait for all routes to load here but 'swallow the error since we want\n  // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n  // called from `match.resolve()`\n  try {\n    await Promise.all(loadRouteDefinitionsPromises);\n  } catch (e) {\n    // No-op\n  }\n  return results;\n}\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, staticContext) {\n  let result;\n  let onReject;\n  let runHandler = handler => {\n    // Setup a promise we can race against so that abort signals short circuit\n    let reject;\n    // This will never resolve so safe to type it as Promise<DataStrategyResult> to\n    // satisfy the function return value\n    let abortPromise = new Promise((_, r) => reject = r);\n    onReject = () => reject();\n    request.signal.addEventListener(\"abort\", onReject);\n    let actualHandler = ctx => {\n      if (typeof handler !== \"function\") {\n        return Promise.reject(new Error(\"You cannot call the handler for a route which defines a boolean \" + (\"\\\"\" + type + \"\\\" [routeId: \" + match.route.id + \"]\")));\n      }\n      return handler({\n        request,\n        params: match.params,\n        context: staticContext\n      }, ...(ctx !== undefined ? [ctx] : []));\n    };\n    let handlerPromise = (async () => {\n      try {\n        let val = await (handlerOverride ? handlerOverride(ctx => actualHandler(ctx)) : actualHandler());\n        return {\n          type: \"data\",\n          result: val\n        };\n      } catch (e) {\n        return {\n          type: \"error\",\n          result: e\n        };\n      }\n    })();\n    return Promise.race([handlerPromise, abortPromise]);\n  };\n  try {\n    let handler = match.route[type];\n    // If we have a route.lazy promise, await that first\n    if (loadRoutePromise) {\n      if (handler) {\n        // Run statically defined handler in parallel with lazy()\n        let handlerError;\n        let [value] = await Promise.all([\n        // If the handler throws, don't let it immediately bubble out,\n        // since we need to let the lazy() execution finish so we know if this\n        // route has a boundary that can handle the error\n        runHandler(handler).catch(e => {\n          handlerError = e;\n        }), loadRoutePromise]);\n        if (handlerError !== undefined) {\n          throw handlerError;\n        }\n        result = value;\n      } else {\n        // Load lazy route module, then run any returned handler\n        await loadRoutePromise;\n        handler = match.route[type];\n        if (handler) {\n          // Handler still runs even if we got interrupted to maintain consistency\n          // with un-abortable behavior of handler execution on non-lazy or\n          // previously-lazy-loaded routes\n          result = await runHandler(handler);\n        } else if (type === \"action\") {\n          let url = new URL(request.url);\n          let pathname = url.pathname + url.search;\n          throw getInternalRouterError(405, {\n            method: request.method,\n            pathname,\n            routeId: match.route.id\n          });\n        } else {\n          // lazy() route has no loader to run.  Short circuit here so we don't\n          // hit the invariant below that errors on returning undefined.\n          return {\n            type: ResultType.data,\n            result: undefined\n          };\n        }\n      }\n    } else if (!handler) {\n      let url = new URL(request.url);\n      let pathname = url.pathname + url.search;\n      throw getInternalRouterError(404, {\n        pathname\n      });\n    } else {\n      result = await runHandler(handler);\n    }\n    invariant(result.result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n  } catch (e) {\n    // We should already be catching and converting normal handler executions to\n    // DataStrategyResults and returning them, so anything that throws here is an\n    // unexpected error we still need to wrap\n    return {\n      type: ResultType.error,\n      result: e\n    };\n  } finally {\n    if (onReject) {\n      request.signal.removeEventListener(\"abort\", onReject);\n    }\n  }\n  return result;\n}\nasync function convertDataStrategyResultToDataResult(dataStrategyResult) {\n  let {\n    result,\n    type\n  } = dataStrategyResult;\n  if (isResponse(result)) {\n    let data;\n    try {\n      let contentType = result.headers.get(\"Content-Type\");\n      // Check between word boundaries instead of startsWith() due to the last\n      // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n      if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n        if (result.body == null) {\n          data = null;\n        } else {\n          data = await result.json();\n        }\n      } else {\n        data = await result.text();\n      }\n    } catch (e) {\n      return {\n        type: ResultType.error,\n        error: e\n      };\n    }\n    if (type === ResultType.error) {\n      return {\n        type: ResultType.error,\n        error: new ErrorResponseImpl(result.status, result.statusText, data),\n        statusCode: result.status,\n        headers: result.headers\n      };\n    }\n    return {\n      type: ResultType.data,\n      data,\n      statusCode: result.status,\n      headers: result.headers\n    };\n  }\n  if (type === ResultType.error) {\n    if (isDataWithResponseInit(result)) {\n      var _result$init3, _result$init4;\n      if (result.data instanceof Error) {\n        var _result$init, _result$init2;\n        return {\n          type: ResultType.error,\n          error: result.data,\n          statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status,\n          headers: (_result$init2 = result.init) != null && _result$init2.headers ? new Headers(result.init.headers) : undefined\n        };\n      }\n      // Convert thrown data() to ErrorResponse instances\n      return {\n        type: ResultType.error,\n        error: new ErrorResponseImpl(((_result$init3 = result.init) == null ? void 0 : _result$init3.status) || 500, undefined, result.data),\n        statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n        headers: (_result$init4 = result.init) != null && _result$init4.headers ? new Headers(result.init.headers) : undefined\n      };\n    }\n    return {\n      type: ResultType.error,\n      error: result,\n      statusCode: isRouteErrorResponse(result) ? result.status : undefined\n    };\n  }\n  if (isDeferredData(result)) {\n    var _result$init5, _result$init6;\n    return {\n      type: ResultType.deferred,\n      deferredData: result,\n      statusCode: (_result$init5 = result.init) == null ? void 0 : _result$init5.status,\n      headers: ((_result$init6 = result.init) == null ? void 0 : _result$init6.headers) && new Headers(result.init.headers)\n    };\n  }\n  if (isDataWithResponseInit(result)) {\n    var _result$init7, _result$init8;\n    return {\n      type: ResultType.data,\n      data: result.data,\n      statusCode: (_result$init7 = result.init) == null ? void 0 : _result$init7.status,\n      headers: (_result$init8 = result.init) != null && _result$init8.headers ? new Headers(result.init.headers) : undefined\n    };\n  }\n  return {\n    type: ResultType.data,\n    data: result\n  };\n}\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, v7_relativeSplatPath) {\n  let location = response.headers.get(\"Location\");\n  invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n  if (!ABSOLUTE_URL_REGEX.test(location)) {\n    let trimmedMatches = matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1);\n    location = normalizeTo(new URL(request.url), trimmedMatches, basename, true, location, v7_relativeSplatPath);\n    response.headers.set(\"Location\", location);\n  }\n  return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename, historyInstance) {\n  // Match Chrome's behavior:\n  // https://github.com/chromium/chromium/blob/216dbeb61db0c667e62082e5f5400a32d6983df3/content/public/common/url_utils.cc#L82\n  let invalidProtocols = [\"about:\", \"blob:\", \"chrome:\", \"chrome-untrusted:\", \"content:\", \"data:\", \"devtools:\", \"file:\", \"filesystem:\",\n  // eslint-disable-next-line no-script-url\n  \"javascript:\"];\n  if (ABSOLUTE_URL_REGEX.test(location)) {\n    // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n    let normalizedLocation = location;\n    let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n    if (invalidProtocols.includes(url.protocol)) {\n      throw new Error(\"Invalid redirect location\");\n    }\n    let isSameBasename = stripBasename(url.pathname, basename) != null;\n    if (url.origin === currentUrl.origin && isSameBasename) {\n      return url.pathname + url.search + url.hash;\n    }\n  }\n  try {\n    let url = historyInstance.createURL(location);\n    if (invalidProtocols.includes(url.protocol)) {\n      throw new Error(\"Invalid redirect location\");\n    }\n  } catch (e) {}\n  return location;\n}\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches.  During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(history, location, signal, submission) {\n  let url = history.createURL(stripHashFromPath(location)).toString();\n  let init = {\n    signal\n  };\n  if (submission && isMutationMethod(submission.formMethod)) {\n    let {\n      formMethod,\n      formEncType\n    } = submission;\n    // Didn't think we needed this but it turns out unlike other methods, patch\n    // won't be properly normalized to uppercase and results in a 405 error.\n    // See: https://fetch.spec.whatwg.org/#concept-method\n    init.method = formMethod.toUpperCase();\n    if (formEncType === \"application/json\") {\n      init.headers = new Headers({\n        \"Content-Type\": formEncType\n      });\n      init.body = JSON.stringify(submission.json);\n    } else if (formEncType === \"text/plain\") {\n      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n      init.body = submission.text;\n    } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n      init.body = convertFormDataToSearchParams(submission.formData);\n    } else {\n      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n      init.body = submission.formData;\n    }\n  }\n  return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n  let searchParams = new URLSearchParams();\n  for (let [key, value] of formData.entries()) {\n    // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n    searchParams.append(key, typeof value === \"string\" ? value : value.name);\n  }\n  return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n  let formData = new FormData();\n  for (let [key, value] of searchParams.entries()) {\n    formData.append(key, value);\n  }\n  return formData;\n}\nfunction processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling) {\n  // Fill in loaderData/errors from our loaders\n  let loaderData = {};\n  let errors = null;\n  let statusCode;\n  let foundError = false;\n  let loaderHeaders = {};\n  let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : undefined;\n  // Process loader results into state.loaderData/state.errors\n  matches.forEach(match => {\n    if (!(match.route.id in results)) {\n      return;\n    }\n    let id = match.route.id;\n    let result = results[id];\n    invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n    if (isErrorResult(result)) {\n      let error = result.error;\n      // If we have a pending action error, we report it at the highest-route\n      // that throws a loader error, and then clear it out to indicate that\n      // it was consumed\n      if (pendingError !== undefined) {\n        error = pendingError;\n        pendingError = undefined;\n      }\n      errors = errors || {};\n      if (skipLoaderErrorBubbling) {\n        errors[id] = error;\n      } else {\n        // Look upwards from the matched route for the closest ancestor error\n        // boundary, defaulting to the root match.  Prefer higher error values\n        // if lower errors bubble to the same boundary\n        let boundaryMatch = findNearestBoundary(matches, id);\n        if (errors[boundaryMatch.route.id] == null) {\n          errors[boundaryMatch.route.id] = error;\n        }\n      }\n      // Clear our any prior loaderData for the throwing route\n      loaderData[id] = undefined;\n      // Once we find our first (highest) error, we set the status code and\n      // prevent deeper status codes from overriding\n      if (!foundError) {\n        foundError = true;\n        statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    } else {\n      if (isDeferredResult(result)) {\n        activeDeferreds.set(id, result.deferredData);\n        loaderData[id] = result.deferredData.data;\n        // Error status codes always override success status codes, but if all\n        // loaders are successful we take the deepest status code.\n        if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n          statusCode = result.statusCode;\n        }\n        if (result.headers) {\n          loaderHeaders[id] = result.headers;\n        }\n      } else {\n        loaderData[id] = result.data;\n        // Error status codes always override success status codes, but if all\n        // loaders are successful we take the deepest status code.\n        if (result.statusCode && result.statusCode !== 200 && !foundError) {\n          statusCode = result.statusCode;\n        }\n        if (result.headers) {\n          loaderHeaders[id] = result.headers;\n        }\n      }\n    }\n  });\n  // If we didn't consume the pending action error (i.e., all loaders\n  // resolved), then consume it here.  Also clear out any loaderData for the\n  // throwing route\n  if (pendingError !== undefined && pendingActionResult) {\n    errors = {\n      [pendingActionResult[0]]: pendingError\n    };\n    loaderData[pendingActionResult[0]] = undefined;\n  }\n  return {\n    loaderData,\n    errors,\n    statusCode: statusCode || 200,\n    loaderHeaders\n  };\n}\nfunction processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds) {\n  let {\n    loaderData,\n    errors\n  } = processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, false // This method is only called client side so we always want to bubble\n  );\n  // Process results from our revalidating fetchers\n  revalidatingFetchers.forEach(rf => {\n    let {\n      key,\n      match,\n      controller\n    } = rf;\n    let result = fetcherResults[key];\n    invariant(result, \"Did not find corresponding fetcher result\");\n    // Process fetcher non-redirect errors\n    if (controller && controller.signal.aborted) {\n      // Nothing to do for aborted fetchers\n      return;\n    } else if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n      if (!(errors && errors[boundaryMatch.route.id])) {\n        errors = _extends({}, errors, {\n          [boundaryMatch.route.id]: result.error\n        });\n      }\n      state.fetchers.delete(key);\n    } else if (isRedirectResult(result)) {\n      // Should never get here, redirects should get processed above, but we\n      // keep this to type narrow to a success result in the else\n      invariant(false, \"Unhandled fetcher revalidation redirect\");\n    } else if (isDeferredResult(result)) {\n      // Should never get here, deferred data should be awaited for fetchers\n      // in resolveDeferredResults\n      invariant(false, \"Unhandled fetcher deferred data\");\n    } else {\n      let doneFetcher = getDoneFetcher(result.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n  });\n  return {\n    loaderData,\n    errors\n  };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n  let mergedLoaderData = _extends({}, newLoaderData);\n  for (let match of matches) {\n    let id = match.route.id;\n    if (newLoaderData.hasOwnProperty(id)) {\n      if (newLoaderData[id] !== undefined) {\n        mergedLoaderData[id] = newLoaderData[id];\n      }\n    } else if (loaderData[id] !== undefined && match.route.loader) {\n      // Preserve existing keys not included in newLoaderData and where a loader\n      // wasn't removed by HMR\n      mergedLoaderData[id] = loaderData[id];\n    }\n    if (errors && errors.hasOwnProperty(id)) {\n      // Don't keep any loader data below the boundary\n      break;\n    }\n  }\n  return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n  if (!pendingActionResult) {\n    return {};\n  }\n  return isErrorResult(pendingActionResult[1]) ? {\n    // Clear out prior actionData on errors\n    actionData: {}\n  } : {\n    actionData: {\n      [pendingActionResult[0]]: pendingActionResult[1].data\n    }\n  };\n}\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(matches, routeId) {\n  let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n  return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n  // Prefer a root layout route if present, otherwise shim in a route object\n  let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === \"/\") || {\n    id: \"__shim-error-route__\"\n  };\n  return {\n    matches: [{\n      params: {},\n      pathname: \"\",\n      pathnameBase: \"\",\n      route\n    }],\n    route\n  };\n}\nfunction getInternalRouterError(status, _temp5) {\n  let {\n    pathname,\n    routeId,\n    method,\n    type,\n    message\n  } = _temp5 === void 0 ? {} : _temp5;\n  let statusText = \"Unknown Server Error\";\n  let errorMessage = \"Unknown @remix-run/router error\";\n  if (status === 400) {\n    statusText = \"Bad Request\";\n    if (method && pathname && routeId) {\n      errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n    } else if (type === \"defer-action\") {\n      errorMessage = \"defer() is not supported in actions\";\n    } else if (type === \"invalid-body\") {\n      errorMessage = \"Unable to encode submission body\";\n    }\n  } else if (status === 403) {\n    statusText = \"Forbidden\";\n    errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n  } else if (status === 404) {\n    statusText = \"Not Found\";\n    errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n  } else if (status === 405) {\n    statusText = \"Method Not Allowed\";\n    if (method && pathname && routeId) {\n      errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n    } else if (method) {\n      errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n    }\n  }\n  return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results) {\n  let entries = Object.entries(results);\n  for (let i = entries.length - 1; i >= 0; i--) {\n    let [key, result] = entries[i];\n    if (isRedirectResult(result)) {\n      return {\n        key,\n        result\n      };\n    }\n  }\n}\nfunction stripHashFromPath(path) {\n  let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n  return createPath(_extends({}, parsedPath, {\n    hash: \"\"\n  }));\n}\nfunction isHashChangeOnly(a, b) {\n  if (a.pathname !== b.pathname || a.search !== b.search) {\n    return false;\n  }\n  if (a.hash === \"\") {\n    // /page -> /page#hash\n    return b.hash !== \"\";\n  } else if (a.hash === b.hash) {\n    // /page#hash -> /page#hash\n    return true;\n  } else if (b.hash !== \"\") {\n    // /page#hash -> /page#other\n    return true;\n  }\n  // If the hash is removed the browser will re-perform a request to the server\n  // /page#hash -> /page\n  return false;\n}\nfunction isDataStrategyResult(result) {\n  return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === ResultType.data || result.type === ResultType.error);\n}\nfunction isRedirectDataStrategyResultResult(result) {\n  return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isDeferredResult(result) {\n  return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n  return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n  return (result && result.type) === ResultType.redirect;\n}\nfunction isDataWithResponseInit(value) {\n  return typeof value === \"object\" && value != null && \"type\" in value && \"data\" in value && \"init\" in value && value.type === \"DataWithResponseInit\";\n}\nfunction isDeferredData(value) {\n  let deferred = value;\n  return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n  return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectResponse(result) {\n  if (!isResponse(result)) {\n    return false;\n  }\n  let status = result.status;\n  let location = result.headers.get(\"Location\");\n  return status >= 300 && status <= 399 && location != null;\n}\nfunction isValidMethod(method) {\n  return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n  return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveNavigationDeferredResults(matches, results, signal, currentMatches, currentLoaderData) {\n  let entries = Object.entries(results);\n  for (let index = 0; index < entries.length; index++) {\n    let [routeId, result] = entries[index];\n    let match = matches.find(m => (m == null ? void 0 : m.route.id) === routeId);\n    // If we don't have a match, then we can have a deferred result to do\n    // anything with.  This is for revalidating fetchers where the route was\n    // removed during HMR\n    if (!match) {\n      continue;\n    }\n    let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n    let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n    if (isDeferredResult(result) && isRevalidatingLoader) {\n      // Note: we do not have to touch activeDeferreds here since we race them\n      // against the signal in resolveDeferredData and they'll get aborted\n      // there if needed\n      await resolveDeferredData(result, signal, false).then(result => {\n        if (result) {\n          results[routeId] = result;\n        }\n      });\n    }\n  }\n}\nasync function resolveFetcherDeferredResults(matches, results, revalidatingFetchers) {\n  for (let index = 0; index < revalidatingFetchers.length; index++) {\n    let {\n      key,\n      routeId,\n      controller\n    } = revalidatingFetchers[index];\n    let result = results[key];\n    let match = matches.find(m => (m == null ? void 0 : m.route.id) === routeId);\n    // If we don't have a match, then we can have a deferred result to do\n    // anything with.  This is for revalidating fetchers where the route was\n    // removed during HMR\n    if (!match) {\n      continue;\n    }\n    if (isDeferredResult(result)) {\n      // Note: we do not have to touch activeDeferreds here since we race them\n      // against the signal in resolveDeferredData and they'll get aborted\n      // there if needed\n      invariant(controller, \"Expected an AbortController for revalidating fetcher deferred result\");\n      await resolveDeferredData(result, controller.signal, true).then(result => {\n        if (result) {\n          results[key] = result;\n        }\n      });\n    }\n  }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n  if (unwrap === void 0) {\n    unwrap = false;\n  }\n  let aborted = await result.deferredData.resolveData(signal);\n  if (aborted) {\n    return;\n  }\n  if (unwrap) {\n    try {\n      return {\n        type: ResultType.data,\n        data: result.deferredData.unwrappedData\n      };\n    } catch (e) {\n      // Handle any TrackedPromise._error values encountered while unwrapping\n      return {\n        type: ResultType.error,\n        error: e\n      };\n    }\n  }\n  return {\n    type: ResultType.data,\n    data: result.deferredData.data\n  };\n}\nfunction hasNakedIndexQuery(search) {\n  return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n  let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n  if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n    // Return the leaf index route when index is present\n    return matches[matches.length - 1];\n  }\n  // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n  // pathless layout routes)\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n  let {\n    formMethod,\n    formAction,\n    formEncType,\n    text,\n    formData,\n    json\n  } = navigation;\n  if (!formMethod || !formAction || !formEncType) {\n    return;\n  }\n  if (text != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: undefined,\n      json: undefined,\n      text\n    };\n  } else if (formData != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData,\n      json: undefined,\n      text: undefined\n    };\n  } else if (json !== undefined) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: undefined,\n      json,\n      text: undefined\n    };\n  }\n}\nfunction getLoadingNavigation(location, submission) {\n  if (submission) {\n    let navigation = {\n      state: \"loading\",\n      location,\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text\n    };\n    return navigation;\n  } else {\n    let navigation = {\n      state: \"loading\",\n      location,\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined,\n      json: undefined,\n      text: undefined\n    };\n    return navigation;\n  }\n}\nfunction getSubmittingNavigation(location, submission) {\n  let navigation = {\n    state: \"submitting\",\n    location,\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text\n  };\n  return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n  if (submission) {\n    let fetcher = {\n      state: \"loading\",\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text,\n      data\n    };\n    return fetcher;\n  } else {\n    let fetcher = {\n      state: \"loading\",\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined,\n      json: undefined,\n      text: undefined,\n      data\n    };\n    return fetcher;\n  }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n  let fetcher = {\n    state: \"submitting\",\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text,\n    data: existingFetcher ? existingFetcher.data : undefined\n  };\n  return fetcher;\n}\nfunction getDoneFetcher(data) {\n  let fetcher = {\n    state: \"idle\",\n    formMethod: undefined,\n    formAction: undefined,\n    formEncType: undefined,\n    formData: undefined,\n    json: undefined,\n    text: undefined,\n    data\n  };\n  return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n  try {\n    let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n    if (sessionPositions) {\n      let json = JSON.parse(sessionPositions);\n      for (let [k, v] of Object.entries(json || {})) {\n        if (v && Array.isArray(v)) {\n          transitions.set(k, new Set(v || []));\n        }\n      }\n    }\n  } catch (e) {\n    // no-op, use default empty object\n  }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n  if (transitions.size > 0) {\n    let json = {};\n    for (let [k, v] of transitions) {\n      json[k] = [...v];\n    }\n    try {\n      _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));\n    } catch (error) {\n      warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n    }\n  }\n}\n//#endregion\n\nexport { AbortedDeferredError, Action, IDLE_BLOCKER, IDLE_FETCHER, IDLE_NAVIGATION, UNSAFE_DEFERRED_SYMBOL, DeferredData as UNSAFE_DeferredData, ErrorResponseImpl as UNSAFE_ErrorResponseImpl, convertRouteMatchToUiMatch as UNSAFE_convertRouteMatchToUiMatch, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, decodePath as UNSAFE_decodePath, getResolveToMatches as UNSAFE_getResolveToMatches, invariant as UNSAFE_invariant, warning as UNSAFE_warning, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, createStaticHandler, data, defer, generatePath, getStaticContextFromError, getToPathname, isDataWithResponseInit, isDeferredData, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, redirectDocument, replace, resolvePath, resolveTo, stripBasename };\n//# sourceMappingURL=router.js.map\n","/**\n * React Router v6.30.3\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { UNSAFE_invariant, joinPaths, matchPath, UNSAFE_decodePath, UNSAFE_getResolveToMatches, UNSAFE_warning, resolveTo, parsePath, matchRoutes, Action, UNSAFE_convertRouteMatchToUiMatch, stripBasename, IDLE_BLOCKER, isRouteErrorResponse, createMemoryHistory, AbortedDeferredError, createRouter } from '@remix-run/router';\nexport { AbortedDeferredError, Action as NavigationType, createPath, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, replace, resolvePath } from '@remix-run/router';\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nconst DataRouterContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n  DataRouterContext.displayName = \"DataRouter\";\n}\nconst DataRouterStateContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\nconst AwaitContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n  AwaitContext.displayName = \"Await\";\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\n\nconst NavigationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n  NavigationContext.displayName = \"Navigation\";\n}\nconst LocationContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n  LocationContext.displayName = \"Location\";\n}\nconst RouteContext = /*#__PURE__*/React.createContext({\n  outlet: null,\n  matches: [],\n  isDataRoute: false\n});\nif (process.env.NODE_ENV !== \"production\") {\n  RouteContext.displayName = \"Route\";\n}\nconst RouteErrorContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nfunction useHref(to, _temp) {\n  let {\n    relative\n  } = _temp === void 0 ? {} : _temp;\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n  // router loaded. We can help them understand how to avoid that.\n  \"useHref() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n  let {\n    basename,\n    navigator\n  } = React.useContext(NavigationContext);\n  let {\n    hash,\n    pathname,\n    search\n  } = useResolvedPath(to, {\n    relative\n  });\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n  return navigator.createHref({\n    pathname: joinedPathname,\n    search,\n    hash\n  });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nfunction useInRouterContext() {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nfunction useLocation() {\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n  // router loaded. We can help them understand how to avoid that.\n  \"useLocation() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nfunction useNavigationType() {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nfunction useMatch(pattern) {\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n  // router loaded. We can help them understand how to avoid that.\n  \"useMatch() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n  let {\n    pathname\n  } = useLocation();\n  return React.useMemo(() => matchPath(pattern, UNSAFE_decodePath(pathname)), [pathname, pattern]);\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\n\nconst navigateEffectWarning = \"You should call navigate() in a React.useEffect(), not when \" + \"your component is first rendered.\";\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(cb) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nfunction useNavigate() {\n  let {\n    isDataRoute\n  } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n  // router loaded. We can help them understand how to avoid that.\n  \"useNavigate() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let {\n    basename,\n    future,\n    navigator\n  } = React.useContext(NavigationContext);\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let {\n    pathname: locationPathname\n  } = useLocation();\n  let routePathnamesJson = JSON.stringify(UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath));\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React.useCallback(function (to, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(activeRef.current, navigateEffectWarning) : void 0;\n\n    // Short circuit here since if this happens on first render the navigate\n    // is useless because we haven't wired up our history listener yet\n    if (!activeRef.current) return;\n    if (typeof to === \"number\") {\n      navigator.go(to);\n      return;\n    }\n    let path = resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, options.relative === \"path\");\n\n    // If we're operating within a basename, prepend it to the pathname prior\n    // to handing off to history (but only if we're not in a data router,\n    // otherwise it'll prepend the basename inside of the router).\n    // If this is a root navigation, then we navigate to the raw basename\n    // which allows the basename to have full control over the presence of a\n    // trailing slash on root links\n    if (dataRouterContext == null && basename !== \"/\") {\n      path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n    }\n    (!!options.replace ? navigator.replace : navigator.push)(path, options.state, options);\n  }, [basename, navigator, routePathnamesJson, locationPathname, dataRouterContext]);\n  return navigate;\n}\nconst OutletContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nfunction useOutletContext() {\n  return React.useContext(OutletContext);\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nfunction useOutlet(context) {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return /*#__PURE__*/React.createElement(OutletContext.Provider, {\n      value: context\n    }, outlet);\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nfunction useParams() {\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? routeMatch.params : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nfunction useResolvedPath(to, _temp2) {\n  let {\n    relative\n  } = _temp2 === void 0 ? {} : _temp2;\n  let {\n    future\n  } = React.useContext(NavigationContext);\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let {\n    pathname: locationPathname\n  } = useLocation();\n  let routePathnamesJson = JSON.stringify(UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath));\n  return React.useMemo(() => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, relative === \"path\"), [to, routePathnamesJson, locationPathname, relative]);\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nfunction useRoutes(routes, locationArg) {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nfunction useRoutesImpl(routes, locationArg, dataRouterState, future) {\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n  // router loaded. We can help them understand how to avoid that.\n  \"useRoutes() may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n  let {\n    navigator\n  } = React.useContext(NavigationContext);\n  let {\n    matches: parentMatches\n  } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n  if (process.env.NODE_ENV !== \"production\") {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = parentRoute && parentRoute.path || \"\";\n    warningOnce(parentPathname, !parentRoute || parentPath.endsWith(\"*\"), \"You rendered descendant <Routes> (or called `useRoutes()`) at \" + (\"\\\"\" + parentPathname + \"\\\" (under <Route path=\\\"\" + parentPath + \"\\\">) but the \") + \"parent route path has no trailing \\\"*\\\". This means if you navigate \" + \"deeper, the parent won't match anymore and therefore the child \" + \"routes will never render.\\n\\n\" + (\"Please change the parent <Route path=\\\"\" + parentPath + \"\\\"> to <Route \") + (\"path=\\\"\" + (parentPath === \"/\" ? \"*\" : parentPath + \"/*\") + \"\\\">.\"));\n  }\n  let locationFromContext = useLocation();\n  let location;\n  if (locationArg) {\n    var _parsedLocationArg$pa;\n    let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n    !(parentPathnameBase === \"/\" || ((_parsedLocationArg$pa = parsedLocationArg.pathname) == null ? void 0 : _parsedLocationArg$pa.startsWith(parentPathnameBase))) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"When overriding the location using `<Routes location>` or `useRoutes(routes, location)`, \" + \"the location pathname must begin with the portion of the URL pathname that was \" + (\"matched by all parent routes. The current pathname base is \\\"\" + parentPathnameBase + \"\\\" \") + (\"but pathname \\\"\" + parsedLocationArg.pathname + \"\\\" was given in the `location` prop.\")) : UNSAFE_invariant(false) : void 0;\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n  let pathname = location.pathname || \"/\";\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n  let matches = matchRoutes(routes, {\n    pathname: remainingPathname\n  });\n  if (process.env.NODE_ENV !== \"production\") {\n    process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(parentRoute || matches != null, \"No routes matched location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \") : void 0;\n    process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(matches == null || matches[matches.length - 1].route.element !== undefined || matches[matches.length - 1].route.Component !== undefined || matches[matches.length - 1].route.lazy !== undefined, \"Matched leaf route at location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \" + \"does not have an element or Component. This means it will render an <Outlet /> with a \" + \"null value by default resulting in an \\\"empty\\\" page.\") : void 0;\n  }\n  let renderedMatches = _renderMatches(matches && matches.map(match => Object.assign({}, match, {\n    params: Object.assign({}, parentParams, match.params),\n    pathname: joinPaths([parentPathnameBase,\n    // Re-encode pathnames that were decoded inside matchRoutes\n    navigator.encodeLocation ? navigator.encodeLocation(match.pathname).pathname : match.pathname]),\n    pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([parentPathnameBase,\n    // Re-encode pathnames that were decoded inside matchRoutes\n    navigator.encodeLocation ? navigator.encodeLocation(match.pathnameBase).pathname : match.pathnameBase])\n  })), parentMatches, dataRouterState, future);\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return /*#__PURE__*/React.createElement(LocationContext.Provider, {\n      value: {\n        location: _extends({\n          pathname: \"/\",\n          search: \"\",\n          hash: \"\",\n          state: null,\n          key: \"default\"\n        }, location),\n        navigationType: Action.Pop\n      }\n    }, renderedMatches);\n  }\n  return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error) ? error.status + \" \" + error.statusText : error instanceof Error ? error.message : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = {\n    padding: \"0.5rem\",\n    backgroundColor: lightgrey\n  };\n  let codeStyles = {\n    padding: \"2px 4px\",\n    backgroundColor: lightgrey\n  };\n  let devInfo = null;\n  if (process.env.NODE_ENV !== \"production\") {\n    console.error(\"Error handled by React Router default ErrorBoundary:\", error);\n    devInfo = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"p\", null, \"\\uD83D\\uDCBF Hey developer \\uD83D\\uDC4B\"), /*#__PURE__*/React.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /*#__PURE__*/React.createElement(\"code\", {\n      style: codeStyles\n    }, \"ErrorBoundary\"), \" or\", \" \", /*#__PURE__*/React.createElement(\"code\", {\n      style: codeStyles\n    }, \"errorElement\"), \" prop on your route.\"));\n  }\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"h2\", null, \"Unexpected Application Error!\"), /*#__PURE__*/React.createElement(\"h3\", {\n    style: {\n      fontStyle: \"italic\"\n    }\n  }, message), stack ? /*#__PURE__*/React.createElement(\"pre\", {\n    style: preStyles\n  }, stack) : null, devInfo);\n}\nconst defaultErrorElement = /*#__PURE__*/React.createElement(DefaultErrorComponent, null);\nclass RenderErrorBoundary extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error\n    };\n  }\n  static getDerivedStateFromError(error) {\n    return {\n      error: error\n    };\n  }\n  static getDerivedStateFromProps(props, state) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation\n    };\n  }\n  componentDidCatch(error, errorInfo) {\n    console.error(\"React Router caught the following error during render\", error, errorInfo);\n  }\n  render() {\n    return this.state.error !== undefined ? /*#__PURE__*/React.createElement(RouteContext.Provider, {\n      value: this.props.routeContext\n    }, /*#__PURE__*/React.createElement(RouteErrorContext.Provider, {\n      value: this.state.error,\n      children: this.props.component\n    })) : this.props.children;\n  }\n}\nfunction RenderedRoute(_ref) {\n  let {\n    routeContext,\n    match,\n    children\n  } = _ref;\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n  return /*#__PURE__*/React.createElement(RouteContext.Provider, {\n    value: routeContext\n  }, children);\n}\nfunction _renderMatches(matches, parentMatches, dataRouterState, future) {\n  var _dataRouterState;\n  if (parentMatches === void 0) {\n    parentMatches = [];\n  }\n  if (dataRouterState === void 0) {\n    dataRouterState = null;\n  }\n  if (future === void 0) {\n    future = null;\n  }\n  if (matches == null) {\n    var _future;\n    if (!dataRouterState) {\n      return null;\n    }\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches;\n    } else if ((_future = future) != null && _future.v7_partialHydration && parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnNavigation`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches;\n    } else {\n      return null;\n    }\n  }\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = (_dataRouterState = dataRouterState) == null ? void 0 : _dataRouterState.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(m => m.route.id && (errors == null ? void 0 : errors[m.route.id]) !== undefined);\n    !(errorIndex >= 0) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"Could not find a matching route for errors on route IDs: \" + Object.keys(errors).join(\",\")) : UNSAFE_invariant(false) : void 0;\n    renderedMatches = renderedMatches.slice(0, Math.min(renderedMatches.length, errorIndex + 1));\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n      if (match.route.id) {\n        let {\n          loaderData,\n          errors\n        } = dataRouterState;\n        let needsToRunLoader = match.route.loader && loaderData[match.route.id] === undefined && (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error;\n    let shouldRenderHydrateFallback = false;\n    let errorElement = null;\n    let hydrateFallbackElement = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\"route-fallback\", false, \"No `HydrateFallback` element provided to render during initial hydration\");\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = /*#__PURE__*/React.createElement(match.route.Component, null);\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return /*#__PURE__*/React.createElement(RenderedRoute, {\n        match: match,\n        routeContext: {\n          outlet,\n          matches,\n          isDataRoute: dataRouterState != null\n        },\n        children: children\n      });\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /*#__PURE__*/React.createElement(RenderErrorBoundary, {\n      location: dataRouterState.location,\n      revalidation: dataRouterState.revalidation,\n      component: errorElement,\n      error: error,\n      children: getChildren(),\n      routeContext: {\n        outlet: null,\n        matches,\n        isDataRoute: true\n      }\n    }) : getChildren();\n  }, null);\n}\nvar DataRouterHook = /*#__PURE__*/function (DataRouterHook) {\n  DataRouterHook[\"UseBlocker\"] = \"useBlocker\";\n  DataRouterHook[\"UseRevalidator\"] = \"useRevalidator\";\n  DataRouterHook[\"UseNavigateStable\"] = \"useNavigate\";\n  return DataRouterHook;\n}(DataRouterHook || {});\nvar DataRouterStateHook = /*#__PURE__*/function (DataRouterStateHook) {\n  DataRouterStateHook[\"UseBlocker\"] = \"useBlocker\";\n  DataRouterStateHook[\"UseLoaderData\"] = \"useLoaderData\";\n  DataRouterStateHook[\"UseActionData\"] = \"useActionData\";\n  DataRouterStateHook[\"UseRouteError\"] = \"useRouteError\";\n  DataRouterStateHook[\"UseNavigation\"] = \"useNavigation\";\n  DataRouterStateHook[\"UseRouteLoaderData\"] = \"useRouteLoaderData\";\n  DataRouterStateHook[\"UseMatches\"] = \"useMatches\";\n  DataRouterStateHook[\"UseRevalidator\"] = \"useRevalidator\";\n  DataRouterStateHook[\"UseNavigateStable\"] = \"useNavigate\";\n  DataRouterStateHook[\"UseRouteId\"] = \"useRouteId\";\n  return DataRouterStateHook;\n}(DataRouterStateHook || {});\nfunction getDataRouterConsoleError(hookName) {\n  return hookName + \" must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.\";\n}\nfunction useDataRouterContext(hookName) {\n  let ctx = React.useContext(DataRouterContext);\n  !ctx ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n  return ctx;\n}\nfunction useDataRouterState(hookName) {\n  let state = React.useContext(DataRouterStateContext);\n  !state ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n  return state;\n}\nfunction useRouteContext(hookName) {\n  let route = React.useContext(RouteContext);\n  !route ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  !thisRoute.route.id ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, hookName + \" can only be used on routes that contain a unique \\\"id\\\"\") : UNSAFE_invariant(false) : void 0;\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nfunction useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nfunction useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nfunction useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(() => ({\n    revalidate: dataRouterContext.router.revalidate,\n    state: state.revalidation\n  }), [dataRouterContext.router.revalidate, state.revalidation]);\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nfunction useMatches() {\n  let {\n    matches,\n    loaderData\n  } = useDataRouterState(DataRouterStateHook.UseMatches);\n  return React.useMemo(() => matches.map(m => UNSAFE_convertRouteMatchToUiMatch(m, loaderData)), [matches, loaderData]);\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nfunction useLoaderData() {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\"You cannot `useLoaderData` in an errorElement (routeId: \" + routeId + \")\");\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nfunction useRouteLoaderData(routeId) {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nfunction useActionData() {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nfunction useRouteError() {\n  var _state$errors;\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return (_state$errors = state.errors) == null ? void 0 : _state$errors[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nfunction useAsyncValue() {\n  let value = React.useContext(AwaitContext);\n  return value == null ? void 0 : value._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nfunction useAsyncError() {\n  let value = React.useContext(AwaitContext);\n  return value == null ? void 0 : value._error;\n}\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nfunction useBlocker(shouldBlock) {\n  let {\n    router,\n    basename\n  } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback(arg => {\n    if (typeof shouldBlock !== \"function\") {\n      return !!shouldBlock;\n    }\n    if (basename === \"/\") {\n      return shouldBlock(arg);\n    }\n\n    // If they provided us a function and we've got an active basename, strip\n    // it from the locations we expose to the user to match the behavior of\n    // useLocation\n    let {\n      currentLocation,\n      nextLocation,\n      historyAction\n    } = arg;\n    return shouldBlock({\n      currentLocation: _extends({}, currentLocation, {\n        pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n      }),\n      nextLocation: _extends({}, nextLocation, {\n        pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n      }),\n      historyAction\n    });\n  }, [basename, shouldBlock]);\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable() {\n  let {\n    router\n  } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React.useCallback(function (to, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(activeRef.current, navigateEffectWarning) : void 0;\n\n    // Short circuit here since if this happens on first render the navigate\n    // is useless because we haven't wired up our router subscriber yet\n    if (!activeRef.current) return;\n    if (typeof to === \"number\") {\n      router.navigate(to);\n    } else {\n      router.navigate(to, _extends({\n        fromRouteId: id\n      }, options));\n    }\n  }, [router, id]);\n  return navigate;\n}\nconst alreadyWarned$1 = {};\nfunction warningOnce(key, cond, message) {\n  if (!cond && !alreadyWarned$1[key]) {\n    alreadyWarned$1[key] = true;\n    process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, message) : void 0;\n  }\n}\n\nconst alreadyWarned = {};\nfunction warnOnce(key, message) {\n  if (process.env.NODE_ENV !== \"production\" && !alreadyWarned[message]) {\n    alreadyWarned[message] = true;\n    console.warn(message);\n  }\n}\nconst logDeprecation = (flag, msg, link) => warnOnce(flag, \"\\u26A0\\uFE0F React Router Future Flag Warning: \" + msg + \". \" + (\"You can use the `\" + flag + \"` future flag to opt-in early. \") + (\"For more information, see \" + link + \".\"));\nfunction logV6DeprecationWarnings(renderFuture, routerFuture) {\n  if ((renderFuture == null ? void 0 : renderFuture.v7_startTransition) === undefined) {\n    logDeprecation(\"v7_startTransition\", \"React Router will begin wrapping state updates in `React.startTransition` in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\");\n  }\n  if ((renderFuture == null ? void 0 : renderFuture.v7_relativeSplatPath) === undefined && (!routerFuture || routerFuture.v7_relativeSplatPath === undefined)) {\n    logDeprecation(\"v7_relativeSplatPath\", \"Relative route resolution within Splat routes is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\");\n  }\n  if (routerFuture) {\n    if (routerFuture.v7_fetcherPersist === undefined) {\n      logDeprecation(\"v7_fetcherPersist\", \"The persistence behavior of fetchers is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\");\n    }\n    if (routerFuture.v7_normalizeFormMethod === undefined) {\n      logDeprecation(\"v7_normalizeFormMethod\", \"Casing of `formMethod` fields is being normalized to uppercase in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\");\n    }\n    if (routerFuture.v7_partialHydration === undefined) {\n      logDeprecation(\"v7_partialHydration\", \"`RouterProvider` hydration behavior is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\");\n    }\n    if (routerFuture.v7_skipActionErrorRevalidation === undefined) {\n      logDeprecation(\"v7_skipActionErrorRevalidation\", \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\");\n    }\n  }\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nfunction RouterProvider(_ref) {\n  let {\n    fallbackElement,\n    router,\n    future\n  } = _ref;\n  let [state, setStateImpl] = React.useState(router.state);\n  let {\n    v7_startTransition\n  } = future || {};\n  let setState = React.useCallback(newState => {\n    if (v7_startTransition && startTransitionImpl) {\n      startTransitionImpl(() => setStateImpl(newState));\n    } else {\n      setStateImpl(newState);\n    }\n  }, [setStateImpl, v7_startTransition]);\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n  React.useEffect(() => {\n    process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(fallbackElement == null || !router.future.v7_partialHydration, \"`<RouterProvider fallbackElement>` is deprecated when using \" + \"`v7_partialHydration`, use a `HydrateFallback` component instead\") : void 0;\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  let navigator = React.useMemo(() => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: n => router.navigate(n),\n      push: (to, state, opts) => router.navigate(to, {\n        state,\n        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n      }),\n      replace: (to, state, opts) => router.navigate(to, {\n        replace: true,\n        state,\n        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n      })\n    };\n  }, [router]);\n  let basename = router.basename || \"/\";\n  let dataRouterContext = React.useMemo(() => ({\n    router,\n    navigator,\n    static: false,\n    basename\n  }), [router, navigator, basename]);\n  React.useEffect(() => logV6DeprecationWarnings(future, router.future), [router, future]);\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DataRouterContext.Provider, {\n    value: dataRouterContext\n  }, /*#__PURE__*/React.createElement(DataRouterStateContext.Provider, {\n    value: state\n  }, /*#__PURE__*/React.createElement(Router, {\n    basename: basename,\n    location: state.location,\n    navigationType: state.historyAction,\n    navigator: navigator,\n    future: {\n      v7_relativeSplatPath: router.future.v7_relativeSplatPath\n    }\n  }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/React.createElement(DataRoutes, {\n    routes: router.routes,\n    future: router.future,\n    state: state\n  }) : fallbackElement))), null);\n}\nfunction DataRoutes(_ref2) {\n  let {\n    routes,\n    future,\n    state\n  } = _ref2;\n  return useRoutesImpl(routes, undefined, state, future);\n}\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/v6/router-components/memory-router\n */\nfunction MemoryRouter(_ref3) {\n  let {\n    basename,\n    children,\n    initialEntries,\n    initialIndex,\n    future\n  } = _ref3;\n  let historyRef = React.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true\n    });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location\n  });\n  let {\n    v7_startTransition\n  } = future || {};\n  let setState = React.useCallback(newState => {\n    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n  }, [setStateImpl, v7_startTransition]);\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n  return /*#__PURE__*/React.createElement(Router, {\n    basename: basename,\n    children: children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history,\n    future: future\n  });\n}\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/v6/components/navigate\n */\nfunction Navigate(_ref4) {\n  let {\n    to,\n    replace,\n    state,\n    relative\n  } = _ref4;\n  !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, // TODO: This error is probably because they somehow have 2 versions of\n  // the router loaded. We can help them understand how to avoid that.\n  \"<Navigate> may be used only in the context of a <Router> component.\") : UNSAFE_invariant(false) : void 0;\n  let {\n    future,\n    static: isStatic\n  } = React.useContext(NavigationContext);\n  process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(!isStatic, \"<Navigate> must not be used on the initial render in a <StaticRouter>. \" + \"This is a no-op, but you should modify your code so the <Navigate> is \" + \"only ever rendered in response to some user interaction or state change.\") : void 0;\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let {\n    pathname: locationPathname\n  } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(to, UNSAFE_getResolveToMatches(matches, future.v7_relativeSplatPath), locationPathname, relative === \"path\");\n  let jsonPath = JSON.stringify(path);\n  React.useEffect(() => navigate(JSON.parse(jsonPath), {\n    replace,\n    state,\n    relative\n  }), [navigate, jsonPath, relative, replace, state]);\n  return null;\n}\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/v6/components/outlet\n */\nfunction Outlet(props) {\n  return useOutlet(props.context);\n}\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/v6/components/route\n */\nfunction Route(_props) {\n  process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"A <Route> is only ever to be used as the child of <Routes> element, \" + \"never rendered directly. Please wrap your <Route> in a <Routes>.\") : UNSAFE_invariant(false) ;\n}\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/v6/router-components/router\n */\nfunction Router(_ref5) {\n  let {\n    basename: basenameProp = \"/\",\n    children = null,\n    location: locationProp,\n    navigationType = Action.Pop,\n    navigator,\n    static: staticProp = false,\n    future\n  } = _ref5;\n  !!useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"You cannot render a <Router> inside another <Router>.\" + \" You should never have more than one in your app.\") : UNSAFE_invariant(false) : void 0;\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(() => ({\n    basename,\n    navigator,\n    static: staticProp,\n    future: _extends({\n      v7_relativeSplatPath: false\n    }, future)\n  }), [basename, future, navigator, staticProp]);\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\"\n  } = locationProp;\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n    if (trailingPathname == null) {\n      return null;\n    }\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key\n      },\n      navigationType\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n  process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(locationContext != null, \"<Router basename=\\\"\" + basename + \"\\\"> is not able to match the URL \" + (\"\\\"\" + pathname + search + hash + \"\\\" because it does not start with the \") + \"basename, so the <Router> won't render anything.\") : void 0;\n  if (locationContext == null) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(NavigationContext.Provider, {\n    value: navigationContext\n  }, /*#__PURE__*/React.createElement(LocationContext.Provider, {\n    children: children,\n    value: locationContext\n  }));\n}\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/v6/components/routes\n */\nfunction Routes(_ref6) {\n  let {\n    children,\n    location\n  } = _ref6;\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nfunction Await(_ref7) {\n  let {\n    children,\n    errorElement,\n    resolve\n  } = _ref7;\n  return /*#__PURE__*/React.createElement(AwaitErrorBoundary, {\n    resolve: resolve,\n    errorElement: errorElement\n  }, /*#__PURE__*/React.createElement(ResolveAwait, null, children));\n}\nvar AwaitRenderStatus = /*#__PURE__*/function (AwaitRenderStatus) {\n  AwaitRenderStatus[AwaitRenderStatus[\"pending\"] = 0] = \"pending\";\n  AwaitRenderStatus[AwaitRenderStatus[\"success\"] = 1] = \"success\";\n  AwaitRenderStatus[AwaitRenderStatus[\"error\"] = 2] = \"error\";\n  return AwaitRenderStatus;\n}(AwaitRenderStatus || {});\nconst neverSettledPromise = new Promise(() => {});\nclass AwaitErrorBoundary extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      error: null\n    };\n  }\n  static getDerivedStateFromError(error) {\n    return {\n      error\n    };\n  }\n  componentDidCatch(error, errorInfo) {\n    console.error(\"<Await> caught the following error during render\", error, errorInfo);\n  }\n  render() {\n    let {\n      children,\n      errorElement,\n      resolve\n    } = this.props;\n    let promise = null;\n    let status = AwaitRenderStatus.pending;\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", {\n        get: () => true\n      });\n      Object.defineProperty(promise, \"_data\", {\n        get: () => resolve\n      });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", {\n        get: () => true\n      });\n      Object.defineProperty(promise, \"_error\", {\n        get: () => renderError\n      });\n    } else if (resolve._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status = \"_error\" in promise ? AwaitRenderStatus.error : \"_data\" in promise ? AwaitRenderStatus.success : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", {\n        get: () => true\n      });\n      promise = resolve.then(data => Object.defineProperty(resolve, \"_data\", {\n        get: () => data\n      }), error => Object.defineProperty(resolve, \"_error\", {\n        get: () => error\n      }));\n    }\n    if (status === AwaitRenderStatus.error && promise._error instanceof AbortedDeferredError) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return /*#__PURE__*/React.createElement(AwaitContext.Provider, {\n        value: promise,\n        children: errorElement\n      });\n    }\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return /*#__PURE__*/React.createElement(AwaitContext.Provider, {\n        value: promise,\n        children: children\n      });\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait(_ref8) {\n  let {\n    children\n  } = _ref8;\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, toRender);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/v6/utils/create-routes-from-children\n */\nfunction createRoutesFromChildren(children, parentPath) {\n  if (parentPath === void 0) {\n    parentPath = [];\n  }\n  let routes = [];\n  React.Children.forEach(children, (element, index) => {\n    if (! /*#__PURE__*/React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n    let treePath = [...parentPath, index];\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(routes, createRoutesFromChildren(element.props.children, treePath));\n      return;\n    }\n    !(element.type === Route) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"[\" + (typeof element.type === \"string\" ? element.type : element.type.name) + \"] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>\") : UNSAFE_invariant(false) : void 0;\n    !(!element.props.index || !element.props.children) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"An index route cannot have child routes.\") : UNSAFE_invariant(false) : void 0;\n    let route = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary: element.props.ErrorBoundary != null || element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy\n    };\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(element.props.children, treePath);\n    }\n    routes.push(route);\n  });\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nfunction renderMatches(matches) {\n  return _renderMatches(matches);\n}\n\nfunction mapRouteProperties(route) {\n  let updates = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null\n  };\n  if (route.Component) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (route.element) {\n        process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"You should not include both `Component` and `element` on your route - \" + \"`Component` will be used.\") : void 0;\n      }\n    }\n    Object.assign(updates, {\n      element: /*#__PURE__*/React.createElement(route.Component),\n      Component: undefined\n    });\n  }\n  if (route.HydrateFallback) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (route.hydrateFallbackElement) {\n        process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" + \"`HydrateFallback` will be used.\") : void 0;\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: /*#__PURE__*/React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined\n    });\n  }\n  if (route.ErrorBoundary) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (route.errorElement) {\n        process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" + \"`ErrorBoundary` will be used.\") : void 0;\n      }\n    }\n    Object.assign(updates, {\n      errorElement: /*#__PURE__*/React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined\n    });\n  }\n  return updates;\n}\nfunction createMemoryRouter(routes, opts) {\n  return createRouter({\n    basename: opts == null ? void 0 : opts.basename,\n    future: _extends({}, opts == null ? void 0 : opts.future, {\n      v7_prependBasename: true\n    }),\n    history: createMemoryHistory({\n      initialEntries: opts == null ? void 0 : opts.initialEntries,\n      initialIndex: opts == null ? void 0 : opts.initialIndex\n    }),\n    hydrationData: opts == null ? void 0 : opts.hydrationData,\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts == null ? void 0 : opts.dataStrategy,\n    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation\n  }).initialize();\n}\n\nexport { Await, MemoryRouter, Navigate, Outlet, Route, Router, RouterProvider, Routes, DataRouterContext as UNSAFE_DataRouterContext, DataRouterStateContext as UNSAFE_DataRouterStateContext, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, logV6DeprecationWarnings as UNSAFE_logV6DeprecationWarnings, mapRouteProperties as UNSAFE_mapRouteProperties, useRouteId as UNSAFE_useRouteId, useRoutesImpl as UNSAFE_useRoutesImpl, createMemoryRouter, createRoutesFromChildren, createRoutesFromChildren as createRoutesFromElements, renderMatches, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes };\n//# sourceMappingURL=index.js.map\n","/**\n * React Router DOM v6.30.3\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_logV6DeprecationWarnings, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, replace, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';\nexport { UNSAFE_ErrorResponseImpl } from '@remix-run/router';\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n  return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n  return event.button === 0 && (\n  // Ignore everything but left clicks\n  !target || target === \"_self\") &&\n  // Let browser handle \"target=_blank\" etc.\n  !isModifiedEvent(event) // Ignore clicks with modifier keys\n  ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n *   let searchParams = new URLSearchParams([\n *     ['sort', 'name'],\n *     ['sort', 'price']\n *   ]);\n *\n * you can do:\n *\n *   let searchParams = createSearchParams({\n *     sort: ['name', 'price']\n *   });\n */\nfunction createSearchParams(init) {\n  if (init === void 0) {\n    init = \"\";\n  }\n  return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n    let value = init[key];\n    return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n  }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n  let searchParams = createSearchParams(locationSearch);\n  if (defaultSearchParams) {\n    // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n    // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n    // web extensions. Relevant Bugzilla tickets:\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n    defaultSearchParams.forEach((_, key) => {\n      if (!searchParams.has(key)) {\n        defaultSearchParams.getAll(key).forEach(value => {\n          searchParams.append(key, value);\n        });\n      }\n    });\n  }\n  return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n  if (_formDataSupportsSubmitter === null) {\n    try {\n      new FormData(document.createElement(\"form\"),\n      // @ts-expect-error if FormData supports the submitter parameter, this will throw\n      0);\n      _formDataSupportsSubmitter = false;\n    } catch (e) {\n      _formDataSupportsSubmitter = true;\n    }\n  }\n  return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n  if (encType != null && !supportedFormEncTypes.has(encType)) {\n    process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for `<Form>`/`<fetcher.Form>` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n    return null;\n  }\n  return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n  let method;\n  let action;\n  let encType;\n  let formData;\n  let body;\n  if (isFormElement(target)) {\n    // When grabbing the action from the element, it will have had the basename\n    // prefixed to ensure non-JS scenarios work, so strip it since we'll\n    // re-prefix in the router\n    let attr = target.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n    formData = new FormData(target);\n  } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n    let form = target.form;\n    if (form == null) {\n      throw new Error(\"Cannot submit a <button> or <input type=\\\"submit\\\"> without a <form>\");\n    }\n    // <button>/<input type=\"submit\"> may override attributes of <form>\n    // When grabbing the action from the element, it will have had the basename\n    // prefixed to ensure non-JS scenarios work, so strip it since we'll\n    // re-prefix in the router\n    let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n    // Build a FormData object populated from a form and submitter\n    formData = new FormData(form, target);\n    // If this browser doesn't support the `FormData(el, submitter)` format,\n    // then tack on the submitter value at the end.  This is a lightweight\n    // solution that is not 100% spec compliant.  For complete support in older\n    // browsers, consider using the `formdata-submitter-polyfill` package\n    if (!isFormDataSubmitterSupported()) {\n      let {\n        name,\n        type,\n        value\n      } = target;\n      if (type === \"image\") {\n        let prefix = name ? name + \".\" : \"\";\n        formData.append(prefix + \"x\", \"0\");\n        formData.append(prefix + \"y\", \"0\");\n      } else if (name) {\n        formData.append(name, value);\n      }\n    }\n  } else if (isHtmlElement(target)) {\n    throw new Error(\"Cannot submit element that is not <form>, <button>, or \" + \"<input type=\\\"submit|image\\\">\");\n  } else {\n    method = defaultMethod;\n    action = null;\n    encType = defaultEncType;\n    body = target;\n  }\n  // Send body for <Form encType=\"text/plain\" so we encode it into text\n  if (formData && encType === \"text/plain\") {\n    body = formData;\n    formData = undefined;\n  }\n  return {\n    action,\n    method: method.toLowerCase(),\n    encType,\n    formData,\n    body\n  };\n}\n\nconst _excluded = [\"onClick\", \"relative\", \"reloadDocument\", \"replace\", \"state\", \"target\", \"to\", \"preventScrollReset\", \"viewTransition\"],\n  _excluded2 = [\"aria-current\", \"caseSensitive\", \"className\", \"end\", \"style\", \"to\", \"viewTransition\", \"children\"],\n  _excluded3 = [\"fetcherKey\", \"navigate\", \"reloadDocument\", \"replace\", \"state\", \"method\", \"action\", \"onSubmit\", \"relative\", \"preventScrollReset\", \"viewTransition\"];\n// HEY YOU! DON'T TOUCH THIS VARIABLE!\n//\n// It is replaced with the proper version at build time via a babel plugin in\n// the rollup config.\n//\n// Export a global property onto the window for React Router detection by the\n// Core Web Vitals Technology Report.  This way they can configure the `wappalyzer`\n// to detect and properly classify live websites as being built with React Router:\n// https://github.com/HTTPArchive/wappalyzer/blob/main/src/technologies/r.json\nconst REACT_ROUTER_VERSION = \"6\";\ntry {\n  window.__reactRouterVersion = REACT_ROUTER_VERSION;\n} catch (e) {\n  // no-op\n}\nfunction createBrowserRouter(routes, opts) {\n  return createRouter({\n    basename: opts == null ? void 0 : opts.basename,\n    future: _extends({}, opts == null ? void 0 : opts.future, {\n      v7_prependBasename: true\n    }),\n    history: createBrowserHistory({\n      window: opts == null ? void 0 : opts.window\n    }),\n    hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n    routes,\n    mapRouteProperties: UNSAFE_mapRouteProperties,\n    dataStrategy: opts == null ? void 0 : opts.dataStrategy,\n    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation,\n    window: opts == null ? void 0 : opts.window\n  }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n  return createRouter({\n    basename: opts == null ? void 0 : opts.basename,\n    future: _extends({}, opts == null ? void 0 : opts.future, {\n      v7_prependBasename: true\n    }),\n    history: createHashHistory({\n      window: opts == null ? void 0 : opts.window\n    }),\n    hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n    routes,\n    mapRouteProperties: UNSAFE_mapRouteProperties,\n    dataStrategy: opts == null ? void 0 : opts.dataStrategy,\n    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation,\n    window: opts == null ? void 0 : opts.window\n  }).initialize();\n}\nfunction parseHydrationData() {\n  var _window;\n  let state = (_window = window) == null ? void 0 : _window.__staticRouterHydrationData;\n  if (state && state.errors) {\n    state = _extends({}, state, {\n      errors: deserializeErrors(state.errors)\n    });\n  }\n  return state;\n}\nfunction deserializeErrors(errors) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    // Hey you!  If you change this, please change the corresponding logic in\n    // serializeErrors in react-router-dom/server.tsx :)\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new UNSAFE_ErrorResponseImpl(val.status, val.statusText, val.data, val.internal === true);\n    } else if (val && val.__type === \"Error\") {\n      // Attempt to reconstruct the right type of Error (i.e., ReferenceError)\n      if (val.__subType) {\n        let ErrorConstructor = window[val.__subType];\n        if (typeof ErrorConstructor === \"function\") {\n          try {\n            // @ts-expect-error\n            let error = new ErrorConstructor(val.message);\n            // Wipe away the client-side stack trace.  Nothing to fill it in with\n            // because we don't serialize SSR stack traces for security reasons\n            error.stack = \"\";\n            serialized[key] = error;\n          } catch (e) {\n            // no-op - fall through and create a normal Error\n          }\n        }\n      }\n      if (serialized[key] == null) {\n        let error = new Error(val.message);\n        // Wipe away the client-side stack trace.  Nothing to fill it in with\n        // because we don't serialize SSR stack traces for security reasons\n        error.stack = \"\";\n        serialized[key] = error;\n      }\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\nconst ViewTransitionContext = /*#__PURE__*/React.createContext({\n  isTransitioning: false\n});\nif (process.env.NODE_ENV !== \"production\") {\n  ViewTransitionContext.displayName = \"ViewTransition\";\n}\nconst FetchersContext = /*#__PURE__*/React.createContext(new Map());\nif (process.env.NODE_ENV !== \"production\") {\n  FetchersContext.displayName = \"Fetchers\";\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\nconst FLUSH_SYNC = \"flushSync\";\nconst flushSyncImpl = ReactDOM[FLUSH_SYNC];\nconst USE_ID = \"useId\";\nconst useIdImpl = React[USE_ID];\nfunction startTransitionSafe(cb) {\n  if (startTransitionImpl) {\n    startTransitionImpl(cb);\n  } else {\n    cb();\n  }\n}\nfunction flushSyncSafe(cb) {\n  if (flushSyncImpl) {\n    flushSyncImpl(cb);\n  } else {\n    cb();\n  }\n}\nclass Deferred {\n  constructor() {\n    this.status = \"pending\";\n    this.promise = new Promise((resolve, reject) => {\n      this.resolve = value => {\n        if (this.status === \"pending\") {\n          this.status = \"resolved\";\n          resolve(value);\n        }\n      };\n      this.reject = reason => {\n        if (this.status === \"pending\") {\n          this.status = \"rejected\";\n          reject(reason);\n        }\n      };\n    });\n  }\n}\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nfunction RouterProvider(_ref) {\n  let {\n    fallbackElement,\n    router,\n    future\n  } = _ref;\n  let [state, setStateImpl] = React.useState(router.state);\n  let [pendingState, setPendingState] = React.useState();\n  let [vtContext, setVtContext] = React.useState({\n    isTransitioning: false\n  });\n  let [renderDfd, setRenderDfd] = React.useState();\n  let [transition, setTransition] = React.useState();\n  let [interruption, setInterruption] = React.useState();\n  let fetcherData = React.useRef(new Map());\n  let {\n    v7_startTransition\n  } = future || {};\n  let optInStartTransition = React.useCallback(cb => {\n    if (v7_startTransition) {\n      startTransitionSafe(cb);\n    } else {\n      cb();\n    }\n  }, [v7_startTransition]);\n  let setState = React.useCallback((newState, _ref2) => {\n    let {\n      deletedFetchers,\n      flushSync: flushSync,\n      viewTransitionOpts: viewTransitionOpts\n    } = _ref2;\n    newState.fetchers.forEach((fetcher, key) => {\n      if (fetcher.data !== undefined) {\n        fetcherData.current.set(key, fetcher.data);\n      }\n    });\n    deletedFetchers.forEach(key => fetcherData.current.delete(key));\n    let isViewTransitionUnavailable = router.window == null || router.window.document == null || typeof router.window.document.startViewTransition !== \"function\";\n    // If this isn't a view transition or it's not available in this browser,\n    // just update and be done with it\n    if (!viewTransitionOpts || isViewTransitionUnavailable) {\n      if (flushSync) {\n        flushSyncSafe(() => setStateImpl(newState));\n      } else {\n        optInStartTransition(() => setStateImpl(newState));\n      }\n      return;\n    }\n    // flushSync + startViewTransition\n    if (flushSync) {\n      // Flush through the context to mark DOM elements as transition=ing\n      flushSyncSafe(() => {\n        // Cancel any pending transitions\n        if (transition) {\n          renderDfd && renderDfd.resolve();\n          transition.skipTransition();\n        }\n        setVtContext({\n          isTransitioning: true,\n          flushSync: true,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation\n        });\n      });\n      // Update the DOM\n      let t = router.window.document.startViewTransition(() => {\n        flushSyncSafe(() => setStateImpl(newState));\n      });\n      // Clean up after the animation completes\n      t.finished.finally(() => {\n        flushSyncSafe(() => {\n          setRenderDfd(undefined);\n          setTransition(undefined);\n          setPendingState(undefined);\n          setVtContext({\n            isTransitioning: false\n          });\n        });\n      });\n      flushSyncSafe(() => setTransition(t));\n      return;\n    }\n    // startTransition + startViewTransition\n    if (transition) {\n      // Interrupting an in-progress transition, cancel and let everything flush\n      // out, and then kick off a new transition from the interruption state\n      renderDfd && renderDfd.resolve();\n      transition.skipTransition();\n      setInterruption({\n        state: newState,\n        currentLocation: viewTransitionOpts.currentLocation,\n        nextLocation: viewTransitionOpts.nextLocation\n      });\n    } else {\n      // Completed navigation update with opted-in view transitions, let 'er rip\n      setPendingState(newState);\n      setVtContext({\n        isTransitioning: true,\n        flushSync: false,\n        currentLocation: viewTransitionOpts.currentLocation,\n        nextLocation: viewTransitionOpts.nextLocation\n      });\n    }\n  }, [router.window, transition, renderDfd, fetcherData, optInStartTransition]);\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n  // When we start a view transition, create a Deferred we can use for the\n  // eventual \"completed\" render\n  React.useEffect(() => {\n    if (vtContext.isTransitioning && !vtContext.flushSync) {\n      setRenderDfd(new Deferred());\n    }\n  }, [vtContext]);\n  // Once the deferred is created, kick off startViewTransition() to update the\n  // DOM and then wait on the Deferred to resolve (indicating the DOM update has\n  // happened)\n  React.useEffect(() => {\n    if (renderDfd && pendingState && router.window) {\n      let newState = pendingState;\n      let renderPromise = renderDfd.promise;\n      let transition = router.window.document.startViewTransition(async () => {\n        optInStartTransition(() => setStateImpl(newState));\n        await renderPromise;\n      });\n      transition.finished.finally(() => {\n        setRenderDfd(undefined);\n        setTransition(undefined);\n        setPendingState(undefined);\n        setVtContext({\n          isTransitioning: false\n        });\n      });\n      setTransition(transition);\n    }\n  }, [optInStartTransition, pendingState, renderDfd, router.window]);\n  // When the new location finally renders and is committed to the DOM, this\n  // effect will run to resolve the transition\n  React.useEffect(() => {\n    if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n      renderDfd.resolve();\n    }\n  }, [renderDfd, transition, state.location, pendingState]);\n  // If we get interrupted with a new navigation during a transition, we skip\n  // the active transition, let it cleanup, then kick it off again here\n  React.useEffect(() => {\n    if (!vtContext.isTransitioning && interruption) {\n      setPendingState(interruption.state);\n      setVtContext({\n        isTransitioning: true,\n        flushSync: false,\n        currentLocation: interruption.currentLocation,\n        nextLocation: interruption.nextLocation\n      });\n      setInterruption(undefined);\n    }\n  }, [vtContext.isTransitioning, interruption]);\n  React.useEffect(() => {\n    process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(fallbackElement == null || !router.future.v7_partialHydration, \"`<RouterProvider fallbackElement>` is deprecated when using \" + \"`v7_partialHydration`, use a `HydrateFallback` component instead\") : void 0;\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  let navigator = React.useMemo(() => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: n => router.navigate(n),\n      push: (to, state, opts) => router.navigate(to, {\n        state,\n        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n      }),\n      replace: (to, state, opts) => router.navigate(to, {\n        replace: true,\n        state,\n        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n      })\n    };\n  }, [router]);\n  let basename = router.basename || \"/\";\n  let dataRouterContext = React.useMemo(() => ({\n    router,\n    navigator,\n    static: false,\n    basename\n  }), [router, navigator, basename]);\n  let routerFuture = React.useMemo(() => ({\n    v7_relativeSplatPath: router.future.v7_relativeSplatPath\n  }), [router.future.v7_relativeSplatPath]);\n  React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future, router.future), [future, router.future]);\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(UNSAFE_DataRouterContext.Provider, {\n    value: dataRouterContext\n  }, /*#__PURE__*/React.createElement(UNSAFE_DataRouterStateContext.Provider, {\n    value: state\n  }, /*#__PURE__*/React.createElement(FetchersContext.Provider, {\n    value: fetcherData.current\n  }, /*#__PURE__*/React.createElement(ViewTransitionContext.Provider, {\n    value: vtContext\n  }, /*#__PURE__*/React.createElement(Router, {\n    basename: basename,\n    location: state.location,\n    navigationType: state.historyAction,\n    navigator: navigator,\n    future: routerFuture\n  }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/React.createElement(MemoizedDataRoutes, {\n    routes: router.routes,\n    future: router.future,\n    state: state\n  }) : fallbackElement))))), null);\n}\n// Memoize to avoid re-renders when updating `ViewTransitionContext`\nconst MemoizedDataRoutes = /*#__PURE__*/React.memo(DataRoutes);\nfunction DataRoutes(_ref3) {\n  let {\n    routes,\n    future,\n    state\n  } = _ref3;\n  return UNSAFE_useRoutesImpl(routes, undefined, state, future);\n}\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nfunction BrowserRouter(_ref4) {\n  let {\n    basename,\n    children,\n    future,\n    window\n  } = _ref4;\n  let historyRef = React.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createBrowserHistory({\n      window,\n      v5Compat: true\n    });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location\n  });\n  let {\n    v7_startTransition\n  } = future || {};\n  let setState = React.useCallback(newState => {\n    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n  }, [setStateImpl, v7_startTransition]);\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future), [future]);\n  return /*#__PURE__*/React.createElement(Router, {\n    basename: basename,\n    children: children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history,\n    future: future\n  });\n}\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nfunction HashRouter(_ref5) {\n  let {\n    basename,\n    children,\n    future,\n    window\n  } = _ref5;\n  let historyRef = React.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createHashHistory({\n      window,\n      v5Compat: true\n    });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location\n  });\n  let {\n    v7_startTransition\n  } = future || {};\n  let setState = React.useCallback(newState => {\n    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n  }, [setStateImpl, v7_startTransition]);\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future), [future]);\n  return /*#__PURE__*/React.createElement(Router, {\n    basename: basename,\n    children: children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history,\n    future: future\n  });\n}\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter(_ref6) {\n  let {\n    basename,\n    children,\n    future,\n    history\n  } = _ref6;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location\n  });\n  let {\n    v7_startTransition\n  } = future || {};\n  let setState = React.useCallback(newState => {\n    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n  }, [setStateImpl, v7_startTransition]);\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future), [future]);\n  return /*#__PURE__*/React.createElement(Router, {\n    basename: basename,\n    children: children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history,\n    future: future\n  });\n}\nif (process.env.NODE_ENV !== \"production\") {\n  HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\nconst isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n/**\n * The public API for rendering a history-aware `<a>`.\n */\nconst Link = /*#__PURE__*/React.forwardRef(function LinkWithRef(_ref7, ref) {\n  let {\n      onClick,\n      relative,\n      reloadDocument,\n      replace,\n      state,\n      target,\n      to,\n      preventScrollReset,\n      viewTransition\n    } = _ref7,\n    rest = _objectWithoutPropertiesLoose(_ref7, _excluded);\n  let {\n    basename\n  } = React.useContext(UNSAFE_NavigationContext);\n  // Rendered into <a href> for absolute URLs\n  let absoluteHref;\n  let isExternal = false;\n  if (typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to)) {\n    // Render the absolute href server- and client-side\n    absoluteHref = to;\n    // Only check for external origins client-side\n    if (isBrowser) {\n      try {\n        let currentUrl = new URL(window.location.href);\n        let targetUrl = to.startsWith(\"//\") ? new URL(currentUrl.protocol + to) : new URL(to);\n        let path = stripBasename(targetUrl.pathname, basename);\n        if (targetUrl.origin === currentUrl.origin && path != null) {\n          // Strip the protocol/origin/basename for same-origin absolute URLs\n          to = path + targetUrl.search + targetUrl.hash;\n        } else {\n          isExternal = true;\n        }\n      } catch (e) {\n        // We can't do external URL detection without a valid URL\n        process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"<Link to=\\\"\" + to + \"\\\"> contains an invalid URL which will probably break \" + \"when clicked - please update to a valid URL path.\") : void 0;\n      }\n    }\n  }\n  // Rendered into <a href> for relative URLs\n  let href = useHref(to, {\n    relative\n  });\n  let internalOnClick = useLinkClickHandler(to, {\n    replace,\n    state,\n    target,\n    preventScrollReset,\n    relative,\n    viewTransition\n  });\n  function handleClick(event) {\n    if (onClick) onClick(event);\n    if (!event.defaultPrevented) {\n      internalOnClick(event);\n    }\n  }\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line jsx-a11y/anchor-has-content\n    React.createElement(\"a\", _extends({}, rest, {\n      href: absoluteHref || href,\n      onClick: isExternal || reloadDocument ? onClick : handleClick,\n      ref: ref,\n      target: target\n    }))\n  );\n});\nif (process.env.NODE_ENV !== \"production\") {\n  Link.displayName = \"Link\";\n}\n/**\n * A `<Link>` wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = /*#__PURE__*/React.forwardRef(function NavLinkWithRef(_ref8, ref) {\n  let {\n      \"aria-current\": ariaCurrentProp = \"page\",\n      caseSensitive = false,\n      className: classNameProp = \"\",\n      end = false,\n      style: styleProp,\n      to,\n      viewTransition,\n      children\n    } = _ref8,\n    rest = _objectWithoutPropertiesLoose(_ref8, _excluded2);\n  let path = useResolvedPath(to, {\n    relative: rest.relative\n  });\n  let location = useLocation();\n  let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n  let {\n    navigator,\n    basename\n  } = React.useContext(UNSAFE_NavigationContext);\n  let isTransitioning = routerState != null &&\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  useViewTransitionState(path) && viewTransition === true;\n  let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;\n  let locationPathname = location.pathname;\n  let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n  if (!caseSensitive) {\n    locationPathname = locationPathname.toLowerCase();\n    nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n    toPathname = toPathname.toLowerCase();\n  }\n  if (nextLocationPathname && basename) {\n    nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n  }\n  // If the `to` has a trailing slash, look at that exact spot.  Otherwise,\n  // we're looking for a slash _after_ what's in `to`.  For example:\n  //\n  // <NavLink to=\"/users\"> and <NavLink to=\"/users/\">\n  // both want to look for a / at index 6 to match URL `/users/matt`\n  const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n  let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n  let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n  let renderProps = {\n    isActive,\n    isPending,\n    isTransitioning\n  };\n  let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n  let className;\n  if (typeof classNameProp === \"function\") {\n    className = classNameProp(renderProps);\n  } else {\n    // If the className prop is not a function, we use a default `active`\n    // class for <NavLink />s that are active. In v5 `active` was the default\n    // value for `activeClassName`, but we are removing that API and can still\n    // use the old default behavior for a cleaner upgrade path and keep the\n    // simple styling rules working as they currently do.\n    className = [classNameProp, isActive ? \"active\" : null, isPending ? \"pending\" : null, isTransitioning ? \"transitioning\" : null].filter(Boolean).join(\" \");\n  }\n  let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n  return /*#__PURE__*/React.createElement(Link, _extends({}, rest, {\n    \"aria-current\": ariaCurrent,\n    className: className,\n    ref: ref,\n    style: style,\n    to: to,\n    viewTransition: viewTransition\n  }), typeof children === \"function\" ? children(renderProps) : children);\n});\nif (process.env.NODE_ENV !== \"production\") {\n  NavLink.displayName = \"NavLink\";\n}\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nconst Form = /*#__PURE__*/React.forwardRef((_ref9, forwardedRef) => {\n  let {\n      fetcherKey,\n      navigate,\n      reloadDocument,\n      replace,\n      state,\n      method = defaultMethod,\n      action,\n      onSubmit,\n      relative,\n      preventScrollReset,\n      viewTransition\n    } = _ref9,\n    props = _objectWithoutPropertiesLoose(_ref9, _excluded3);\n  let submit = useSubmit();\n  let formAction = useFormAction(action, {\n    relative\n  });\n  let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n  let submitHandler = event => {\n    onSubmit && onSubmit(event);\n    if (event.defaultPrevented) return;\n    event.preventDefault();\n    let submitter = event.nativeEvent.submitter;\n    let submitMethod = (submitter == null ? void 0 : submitter.getAttribute(\"formmethod\")) || method;\n    submit(submitter || event.currentTarget, {\n      fetcherKey,\n      method: submitMethod,\n      navigate,\n      replace,\n      state,\n      relative,\n      preventScrollReset,\n      viewTransition\n    });\n  };\n  return /*#__PURE__*/React.createElement(\"form\", _extends({\n    ref: forwardedRef,\n    method: formMethod,\n    action: formAction,\n    onSubmit: reloadDocument ? onSubmit : submitHandler\n  }, props));\n});\nif (process.env.NODE_ENV !== \"production\") {\n  Form.displayName = \"Form\";\n}\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nfunction ScrollRestoration(_ref10) {\n  let {\n    getKey,\n    storageKey\n  } = _ref10;\n  useScrollRestoration({\n    getKey,\n    storageKey\n  });\n  return null;\n}\nif (process.env.NODE_ENV !== \"production\") {\n  ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\nvar DataRouterHook;\n(function (DataRouterHook) {\n  DataRouterHook[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n  DataRouterHook[\"UseSubmit\"] = \"useSubmit\";\n  DataRouterHook[\"UseSubmitFetcher\"] = \"useSubmitFetcher\";\n  DataRouterHook[\"UseFetcher\"] = \"useFetcher\";\n  DataRouterHook[\"useViewTransitionState\"] = \"useViewTransitionState\";\n})(DataRouterHook || (DataRouterHook = {}));\nvar DataRouterStateHook;\n(function (DataRouterStateHook) {\n  DataRouterStateHook[\"UseFetcher\"] = \"useFetcher\";\n  DataRouterStateHook[\"UseFetchers\"] = \"useFetchers\";\n  DataRouterStateHook[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n})(DataRouterStateHook || (DataRouterStateHook = {}));\n// Internal hooks\nfunction getDataRouterConsoleError(hookName) {\n  return hookName + \" must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.\";\n}\nfunction useDataRouterContext(hookName) {\n  let ctx = React.useContext(UNSAFE_DataRouterContext);\n  !ctx ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n  return ctx;\n}\nfunction useDataRouterState(hookName) {\n  let state = React.useContext(UNSAFE_DataRouterStateContext);\n  !state ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n  return state;\n}\n// External hooks\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nfunction useLinkClickHandler(to, _temp) {\n  let {\n    target,\n    replace: replaceProp,\n    state,\n    preventScrollReset,\n    relative,\n    viewTransition\n  } = _temp === void 0 ? {} : _temp;\n  let navigate = useNavigate();\n  let location = useLocation();\n  let path = useResolvedPath(to, {\n    relative\n  });\n  return React.useCallback(event => {\n    if (shouldProcessLinkClick(event, target)) {\n      event.preventDefault();\n      // If the URL hasn't changed, a regular <a> will do a replace instead of\n      // a push, so do the same here unless the replace prop is explicitly set\n      let replace = replaceProp !== undefined ? replaceProp : createPath(location) === createPath(path);\n      navigate(to, {\n        replace,\n        state,\n        preventScrollReset,\n        relative,\n        viewTransition\n      });\n    }\n  }, [location, navigate, path, replaceProp, state, target, to, preventScrollReset, relative, viewTransition]);\n}\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nfunction useSearchParams(defaultInit) {\n  process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(typeof URLSearchParams !== \"undefined\", \"You cannot use the `useSearchParams` hook in a browser that does not \" + \"support the URLSearchParams API. If you need to support Internet \" + \"Explorer 11, we recommend you load a polyfill such as \" + \"https://github.com/ungap/url-search-params.\") : void 0;\n  let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n  let hasSetSearchParamsRef = React.useRef(false);\n  let location = useLocation();\n  let searchParams = React.useMemo(() =>\n  // Only merge in the defaults if we haven't yet called setSearchParams.\n  // Once we call that we want those to take precedence, otherwise you can't\n  // remove a param with setSearchParams({}) if it has an initial value\n  getSearchParamsForLocation(location.search, hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current), [location.search]);\n  let navigate = useNavigate();\n  let setSearchParams = React.useCallback((nextInit, navigateOptions) => {\n    const newSearchParams = createSearchParams(typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit);\n    hasSetSearchParamsRef.current = true;\n    navigate(\"?\" + newSearchParams, navigateOptions);\n  }, [navigate, searchParams]);\n  return [searchParams, setSearchParams];\n}\nfunction validateClientSideSubmission() {\n  if (typeof document === \"undefined\") {\n    throw new Error(\"You are calling submit during the server render. \" + \"Try calling submit within a `useEffect` or callback instead.\");\n  }\n}\nlet fetcherId = 0;\nlet getUniqueFetcherId = () => \"__\" + String(++fetcherId) + \"__\";\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nfunction useSubmit() {\n  let {\n    router\n  } = useDataRouterContext(DataRouterHook.UseSubmit);\n  let {\n    basename\n  } = React.useContext(UNSAFE_NavigationContext);\n  let currentRouteId = UNSAFE_useRouteId();\n  return React.useCallback(function (target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    validateClientSideSubmission();\n    let {\n      action,\n      method,\n      encType,\n      formData,\n      body\n    } = getFormSubmissionInfo(target, basename);\n    if (options.navigate === false) {\n      let key = options.fetcherKey || getUniqueFetcherId();\n      router.fetch(key, currentRouteId, options.action || action, {\n        preventScrollReset: options.preventScrollReset,\n        formData,\n        body,\n        formMethod: options.method || method,\n        formEncType: options.encType || encType,\n        flushSync: options.flushSync\n      });\n    } else {\n      router.navigate(options.action || action, {\n        preventScrollReset: options.preventScrollReset,\n        formData,\n        body,\n        formMethod: options.method || method,\n        formEncType: options.encType || encType,\n        replace: options.replace,\n        state: options.state,\n        fromRouteId: currentRouteId,\n        flushSync: options.flushSync,\n        viewTransition: options.viewTransition\n      });\n    }\n  }, [router, basename, currentRouteId]);\n}\n// v7: Eventually we should deprecate this entirely in favor of using the\n// router method directly?\nfunction useFormAction(action, _temp2) {\n  let {\n    relative\n  } = _temp2 === void 0 ? {} : _temp2;\n  let {\n    basename\n  } = React.useContext(UNSAFE_NavigationContext);\n  let routeContext = React.useContext(UNSAFE_RouteContext);\n  !routeContext ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFormAction must be used inside a RouteContext\") : UNSAFE_invariant(false) : void 0;\n  let [match] = routeContext.matches.slice(-1);\n  // Shallow clone path so we can modify it below, otherwise we modify the\n  // object referenced by useMemo inside useResolvedPath\n  let path = _extends({}, useResolvedPath(action ? action : \".\", {\n    relative\n  }));\n  // If no action was specified, browsers will persist current search params\n  // when determining the path, so match that behavior\n  // https://github.com/remix-run/remix/issues/927\n  let location = useLocation();\n  if (action == null) {\n    // Safe to write to this directly here since if action was undefined, we\n    // would have called useResolvedPath(\".\") which will never include a search\n    path.search = location.search;\n    // When grabbing search params from the URL, remove any included ?index param\n    // since it might not apply to our contextual route.  We add it back based\n    // on match.route.index below\n    let params = new URLSearchParams(path.search);\n    let indexValues = params.getAll(\"index\");\n    let hasNakedIndexParam = indexValues.some(v => v === \"\");\n    if (hasNakedIndexParam) {\n      params.delete(\"index\");\n      indexValues.filter(v => v).forEach(v => params.append(\"index\", v));\n      let qs = params.toString();\n      path.search = qs ? \"?\" + qs : \"\";\n    }\n  }\n  if ((!action || action === \".\") && match.route.index) {\n    path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n  }\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the form action.  If this is a root navigation, then just use\n  // the raw basename which allows the basename to have full control over the\n  // presence of a trailing slash on root actions\n  if (basename !== \"/\") {\n    path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n  return createPath(path);\n}\n// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nfunction useFetcher(_temp3) {\n  var _route$matches;\n  let {\n    key\n  } = _temp3 === void 0 ? {} : _temp3;\n  let {\n    router\n  } = useDataRouterContext(DataRouterHook.UseFetcher);\n  let state = useDataRouterState(DataRouterStateHook.UseFetcher);\n  let fetcherData = React.useContext(FetchersContext);\n  let route = React.useContext(UNSAFE_RouteContext);\n  let routeId = (_route$matches = route.matches[route.matches.length - 1]) == null ? void 0 : _route$matches.route.id;\n  !fetcherData ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher must be used inside a FetchersContext\") : UNSAFE_invariant(false) : void 0;\n  !route ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher must be used inside a RouteContext\") : UNSAFE_invariant(false) : void 0;\n  !(routeId != null) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher can only be used on routes that contain a unique \\\"id\\\"\") : UNSAFE_invariant(false) : void 0;\n  // Fetcher key handling\n  // OK to call conditionally to feature detect `useId`\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  let defaultKey = useIdImpl ? useIdImpl() : \"\";\n  let [fetcherKey, setFetcherKey] = React.useState(key || defaultKey);\n  if (key && key !== fetcherKey) {\n    setFetcherKey(key);\n  } else if (!fetcherKey) {\n    // We will only fall through here when `useId` is not available\n    setFetcherKey(getUniqueFetcherId());\n  }\n  // Registration/cleanup\n  React.useEffect(() => {\n    router.getFetcher(fetcherKey);\n    return () => {\n      // Tell the router we've unmounted - if v7_fetcherPersist is enabled this\n      // will not delete immediately but instead queue up a delete after the\n      // fetcher returns to an `idle` state\n      router.deleteFetcher(fetcherKey);\n    };\n  }, [router, fetcherKey]);\n  // Fetcher additions\n  let load = React.useCallback((href, opts) => {\n    !routeId ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"No routeId available for fetcher.load()\") : UNSAFE_invariant(false) : void 0;\n    router.fetch(fetcherKey, routeId, href, opts);\n  }, [fetcherKey, routeId, router]);\n  let submitImpl = useSubmit();\n  let submit = React.useCallback((target, opts) => {\n    submitImpl(target, _extends({}, opts, {\n      navigate: false,\n      fetcherKey\n    }));\n  }, [fetcherKey, submitImpl]);\n  let FetcherForm = React.useMemo(() => {\n    let FetcherForm = /*#__PURE__*/React.forwardRef((props, ref) => {\n      return /*#__PURE__*/React.createElement(Form, _extends({}, props, {\n        navigate: false,\n        fetcherKey: fetcherKey,\n        ref: ref\n      }));\n    });\n    if (process.env.NODE_ENV !== \"production\") {\n      FetcherForm.displayName = \"fetcher.Form\";\n    }\n    return FetcherForm;\n  }, [fetcherKey]);\n  // Exposed FetcherWithComponents\n  let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n  let data = fetcherData.get(fetcherKey);\n  let fetcherWithComponents = React.useMemo(() => _extends({\n    Form: FetcherForm,\n    submit,\n    load\n  }, fetcher, {\n    data\n  }), [FetcherForm, submit, load, fetcher, data]);\n  return fetcherWithComponents;\n}\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nfunction useFetchers() {\n  let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n  return Array.from(state.fetchers.entries()).map(_ref11 => {\n    let [key, fetcher] = _ref11;\n    return _extends({}, fetcher, {\n      key\n    });\n  });\n}\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions = {};\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration(_temp4) {\n  let {\n    getKey,\n    storageKey\n  } = _temp4 === void 0 ? {} : _temp4;\n  let {\n    router\n  } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n  let {\n    restoreScrollPosition,\n    preventScrollReset\n  } = useDataRouterState(DataRouterStateHook.UseScrollRestoration);\n  let {\n    basename\n  } = React.useContext(UNSAFE_NavigationContext);\n  let location = useLocation();\n  let matches = useMatches();\n  let navigation = useNavigation();\n  // Trigger manual scroll restoration while we're active\n  React.useEffect(() => {\n    window.history.scrollRestoration = \"manual\";\n    return () => {\n      window.history.scrollRestoration = \"auto\";\n    };\n  }, []);\n  // Save positions on pagehide\n  usePageHide(React.useCallback(() => {\n    if (navigation.state === \"idle\") {\n      let key = (getKey ? getKey(location, matches) : null) || location.key;\n      savedScrollPositions[key] = window.scrollY;\n    }\n    try {\n      sessionStorage.setItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY, JSON.stringify(savedScrollPositions));\n    } catch (error) {\n      process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (\" + error + \").\") : void 0;\n    }\n    window.history.scrollRestoration = \"auto\";\n  }, [storageKey, getKey, navigation.state, location, matches]));\n  // Read in any saved scroll locations\n  if (typeof document !== \"undefined\") {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      try {\n        let sessionPositions = sessionStorage.getItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY);\n        if (sessionPositions) {\n          savedScrollPositions = JSON.parse(sessionPositions);\n        }\n      } catch (e) {\n        // no-op, use default empty object\n      }\n    }, [storageKey]);\n    // Enable scroll restoration in the router\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      let getKeyWithoutBasename = getKey && basename !== \"/\" ? (location, matches) => getKey( // Strip the basename to match useLocation()\n      _extends({}, location, {\n        pathname: stripBasename(location.pathname, basename) || location.pathname\n      }), matches) : getKey;\n      let disableScrollRestoration = router == null ? void 0 : router.enableScrollRestoration(savedScrollPositions, () => window.scrollY, getKeyWithoutBasename);\n      return () => disableScrollRestoration && disableScrollRestoration();\n    }, [router, basename, getKey]);\n    // Restore scrolling when state.restoreScrollPosition changes\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      // Explicit false means don't do anything (used for submissions)\n      if (restoreScrollPosition === false) {\n        return;\n      }\n      // been here before, scroll to it\n      if (typeof restoreScrollPosition === \"number\") {\n        window.scrollTo(0, restoreScrollPosition);\n        return;\n      }\n      // try to scroll to the hash\n      if (location.hash) {\n        let el = document.getElementById(decodeURIComponent(location.hash.slice(1)));\n        if (el) {\n          el.scrollIntoView();\n          return;\n        }\n      }\n      // Don't reset if this navigation opted out\n      if (preventScrollReset === true) {\n        return;\n      }\n      // otherwise go to the top on new locations\n      window.scrollTo(0, 0);\n    }, [location, restoreScrollPosition, preventScrollReset]);\n  }\n}\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction useBeforeUnload(callback, options) {\n  let {\n    capture\n  } = options || {};\n  React.useEffect(() => {\n    let opts = capture != null ? {\n      capture\n    } : undefined;\n    window.addEventListener(\"beforeunload\", callback, opts);\n    return () => {\n      window.removeEventListener(\"beforeunload\", callback, opts);\n    };\n  }, [callback, capture]);\n}\n/**\n * Setup a callback to be fired on the window's `pagehide` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.  This event is better supported than beforeunload across browsers.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction usePageHide(callback, options) {\n  let {\n    capture\n  } = options || {};\n  React.useEffect(() => {\n    let opts = capture != null ? {\n      capture\n    } : undefined;\n    window.addEventListener(\"pagehide\", callback, opts);\n    return () => {\n      window.removeEventListener(\"pagehide\", callback, opts);\n    };\n  }, [callback, capture]);\n}\n/**\n * Wrapper around useBlocker to show a window.confirm prompt to users instead\n * of building a custom UI with useBlocker.\n *\n * Warning: This has *a lot of rough edges* and behaves very differently (and\n * very incorrectly in some cases) across browsers if user click addition\n * back/forward navigations while the confirm is open.  Use at your own risk.\n */\nfunction usePrompt(_ref12) {\n  let {\n    when,\n    message\n  } = _ref12;\n  let blocker = useBlocker(when);\n  React.useEffect(() => {\n    if (blocker.state === \"blocked\") {\n      let proceed = window.confirm(message);\n      if (proceed) {\n        // This timeout is needed to avoid a weird \"race\" on POP navigations\n        // between the `window.history` revert navigation and the result of\n        // `window.confirm`\n        setTimeout(blocker.proceed, 0);\n      } else {\n        blocker.reset();\n      }\n    }\n  }, [blocker, message]);\n  React.useEffect(() => {\n    if (blocker.state === \"blocked\" && !when) {\n      blocker.reset();\n    }\n  }, [blocker, when]);\n}\n/**\n * Return a boolean indicating if there is an active view transition to the\n * given href.  You can use this value to render CSS classes or viewTransitionName\n * styles onto your elements\n *\n * @param href The destination href\n * @param [opts.relative] Relative routing type (\"route\" | \"path\")\n */\nfunction useViewTransitionState(to, opts) {\n  if (opts === void 0) {\n    opts = {};\n  }\n  let vtContext = React.useContext(ViewTransitionContext);\n  !(vtContext != null) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  \" + \"Did you accidentally import `RouterProvider` from `react-router`?\") : UNSAFE_invariant(false) : void 0;\n  let {\n    basename\n  } = useDataRouterContext(DataRouterHook.useViewTransitionState);\n  let path = useResolvedPath(to, {\n    relative: opts.relative\n  });\n  if (!vtContext.isTransitioning) {\n    return false;\n  }\n  let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n  let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n  // Transition is active if we're going to or coming from the indicated\n  // destination.  This ensures that other PUSH navigations that reverse\n  // an indicated transition apply.  I.e., on the list view you have:\n  //\n  //   <NavLink to=\"/details/1\" viewTransition>\n  //\n  // If you click the breadcrumb back to the list view:\n  //\n  //   <NavLink to=\"/list\" viewTransition>\n  //\n  // We should apply the transition because it's indicated as active going\n  // from /list -> /details/1 and therefore should be active on the reverse\n  // (even though this isn't strictly a POP reverse)\n  return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\n//#endregion\n\nexport { BrowserRouter, Form, HashRouter, Link, NavLink, RouterProvider, ScrollRestoration, FetchersContext as UNSAFE_FetchersContext, ViewTransitionContext as UNSAFE_ViewTransitionContext, useScrollRestoration as UNSAFE_useScrollRestoration, createBrowserRouter, createHashRouter, createSearchParams, HistoryRouter as unstable_HistoryRouter, usePrompt as unstable_usePrompt, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLinkClickHandler, useSearchParams, useSubmit, useViewTransitionState };\n//# sourceMappingURL=index.js.map\n","import { createSearchParams, type URLSearchParamsInit } from \"react-router-dom\";\nimport { Codec } from \"./getCodec\";\n\nexport type { URLSearchParamsInit };\nexport const toStringEncoded = (params: URLSearchParamsInit, codec: Codec) =>\n  `${codec.param}=${codec.encode(`${createSearchParams(params)}`)}`;\n","export type LoggerLevelString = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport type LoggerLevel = LoggerLevelString | number;\n\nexport const loggerLevelOrder: Record<LoggerLevelString, number> = {\n  debug: 0,\n  info: 1,\n  warn: 2,\n  error: 3,\n};\n\n/**\n * BufferedLogger\n *\n * Buffers log calls until a level is set, then flushes buffered messages\n * at or above that level and logs subsequent calls immediately.\n *\n * @example\n * ```ts\n * import { BufferedLogger } from './buffered-logger';\n *\n * const logger = new BufferedLogger();\n *\n * // These calls are buffered\n * logger.debug('debug before init');\n * logger.info('info before init');\n *\n * // Initialize log level and flush buffer\n * logger.setLevel('info');\n *\n * // Only \"info\" and above were flushed; debug was dropped\n *\n * // Subsequent calls log immediately\n * logger.debug('this won’t show');\n * logger.warn('this will show as warning');\n * ```\n *\n * @method setLevel\n * @param {'debug'|'info'|'warn'|'error'} level — minimum level to log\n *\n * @method debug\n * @param {...any} args — arguments forwarded to console.debug\n *\n * @method info\n * @param {...any} args — arguments forwarded to console.info\n *\n * @method warn\n * @param {...any} args — arguments forwarded to console.warn\n *\n * @method error\n * @param {...any} args — arguments forwarded to console.error\n */\n\nexport class Logger {\n  private buffer: Array<{ level: LoggerLevelString; args: unknown[] }> = [];\n  private currentLevelNum = loggerLevelOrder.info;\n  private ready = false;\n\n  constructor(level?: LoggerLevel) {\n    if (level !== undefined) this.init(level);\n  }\n\n  init(level: LoggerLevel): void {\n    this.currentLevelNum =\n      typeof level === \"number\"\n        ? level\n        : loggerLevelOrder[level] ?? this.currentLevelNum;\n    this.ready = true;\n    this.flush();\n  }\n\n  private shouldLog(lvl: LoggerLevelString): boolean {\n    return loggerLevelOrder[lvl] >= this.currentLevelNum;\n  }\n\n  private flush(): void {\n    for (const { level, args } of this.buffer) {\n      if (this.shouldLog(level)) console[level](...args);\n    }\n    this.buffer = [];\n  }\n\n  private record(lvl: LoggerLevelString, ...args: unknown[]): void {\n    if (!this.ready) {\n      this.buffer.push({ level: lvl, args });\n    } else if (this.shouldLog(lvl)) {\n      console[lvl](...args);\n    }\n  }\n\n  debug = (...args: unknown[]) => this.record(\"debug\", ...args);\n  info = (...args: unknown[]) => this.record(\"info\", ...args);\n  warn = (...args: unknown[]) => this.record(\"warn\", ...args);\n  error = (...args: unknown[]) => this.record(\"error\", ...args);\n}\n","export const GRAPH_APP = {\n    QUERY_PARAM: {\n        NODES: `nodes[]`\n    }\n};\n","import { ZodError } from 'zod';\n\ninterface ZodErrorMessageElement {\n  code: string;\n  path: Array<string | number>;\n  message: string;\n}\n\nexport const renderErrorToHtml = (\n  error: unknown,\n  context: string = ''\n): void => {\n  console.error(error);\n\n  if (error instanceof ZodError) {\n    const issues = JSON.parse(error.message) as ZodErrorMessageElement[];\n    const prettyPrint = issues.map(\n      ({ code, path, message }) =>\n        `${code}@[${path.join('.')}] — ${message}`\n    );\n\n    document.body.innerHTML = `\n      <style>\n        /* Neutral, minimal styling */\n        body {\n          font-family: sans-serif;\n          margin: 20px;\n          color: #333;\n        }\n        h1 {\n          font-size: 1.5em;\n          margin-bottom: 0.5em;\n        }\n        pre {\n          background-color: #eee;\n          padding: 10px;\n          border: 1px solid #ccc;\n          overflow: auto;\n          font-size: 0.75em;\n        }\n        details {\n          margin-top: 1em;\n        }\n      </style>\n      <h1>Configuration Error</h1>\n      <p>An error occurred while parsing the configuration:</p>\n      <pre>${prettyPrint.join('\\n')}</pre>\n      <details>\n        <summary>Full error</summary>\n        <pre>${error}</pre>\n      </details>\n    `;\n  } else {\n    document.body.innerHTML = `\n      <h1>Unexpected Error${context ? `: ${context}` : ''}</h1>\n      <pre>${\n        error instanceof Error ? error.message : String(error)\n      }</pre>\n    `;\n  }\n};\n","import { z, ZodError, ZodTypeAny } from \"zod\";\n\nexport function parseOrThrowWithInput<TSchema extends ZodTypeAny>(\n  schema: TSchema,\n  data: unknown\n): z.output<TSchema> {\n  try {\n    return schema.parse(data);\n  } catch (err) {\n    if (err instanceof ZodError) {\n      // attach the raw data for debugging\n      (err as ZodError & { input: unknown }).input = data;\n    }\n    throw err;\n  }\n}\n","import { IconButton, Button, Box } from \"@mui/material\";\nexport const mui = { IconButton, Button, Box };\nimport \"./main.css\";\n\nexport { default as useDebounce } from \"./hooks/useDebounce\";\nexport { default as useExtendedTheme } from \"./hooks/useExtendedTheme\";\n\n// V1\nexport * from \"./components/data-display\";\nexport * from \"./components/feedback\";\nexport * from \"./components/inputs\";\nexport * from \"./components/buttons\";\nexport * from \"./components/layout\";\nexport * from \"./components/surfaces\";\nexport * from \"./theme\";\nexport * from \"./components/utils/index\";\nexport * from \"./components/Brand/index\";\nexport * from \"./components/SearchAutocompleteDialog\";\nexport { default as TeliTypeIcon } from \"./components/TypeIcon/TypeIcon\";\n\n// Component library\nexport * from \"./feature-components/Map\";\nexport * from \"./feature-components/InsetInMap\";\nexport * from \"./feature-components/Map/v2/primitives/MapCanvas/MapCanvas\";\nexport * from \"./feature-components/Map/v2/primitives/LayerSelector/LayerSelector\";\nexport * from \"./feature-components/Map/v2/composites/BasicMap/BasicMap\";\nexport * from \"./feature-components/Map/v2/types\";\nexport * from \"./feature-components/Map/v2/utils\";\n\n// Candidate Packages\nexport * from \"./utils/authorize-flow/exports\";\n\nexport * from \"./utils/preferred-label-lib\";\n\n// PROPOSED @telicent-oss/utils-lib\nexport {\n  // getCodec\n  getCodec,\n  type Codec,\n  base64Codec,\n  uriComponentCodec,\n  // schemaAndTypes\n  ENCODE_SEARCH_PARAMS_MODES_Schema,\n  type ENCODE_SEARCH_PARAMS_MODES_Type,\n  // toStringEncoded\n  toStringEncoded,\n  type URLSearchParamsInit,\n  GRAPH_APP,\n  // Logger\n  type LoggerLevelString,\n  type LoggerLevel,\n  loggerLevelOrder,\n  Logger,\n} from \"./utils/utils-lib/src/index\";\n\nexport { renderErrorToHtml } from \"./utils/renderErrorToHtml/renderErrorToHtml\";\nexport { parseOrThrowWithInput } from \"./utils/utils-lib/src/parseOrThrowWithInput/parseOrThrowWithInput\";\n","export default {}"],"names":["formatMuiErrorMessage","_extends","t","r","_objectWithoutPropertiesLoose","StyleSheet","WEBKIT","hash","length","trim","replace","index","begin","end","array","root","parse","offset","character","reference","characters","x","z","memoize","cache","identifierWithPointTracking","toRules","getRules","compat","removeLabel","prefix","prefixer","createCache","node","stylis","styles","g","p","w","A","reactIs_production_min","hasSymbol","typeOf","Element","Fragment","Portal","isElement","reactIs_development","reactIsModule","require$$0","require$$1","reactIs","isBrowser","classNames","registerStyles","isStringTag","insertStyles","isCustomProperty","isProcessableValue","processStyleValue","match","p1","p2","unitless","keyframes","next","asString","hashString","syncFallback","create","React","withEmotionCache","forwardRef","useContext","ThemeContext","createEmotionProps","Insertion","_ref","jsx","Emotion","css","toString","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","shouldForwardProp","createStyled","styled","hasOwnProperty","source","from","s","has","values","location","error","ReactIs","assign","require$$2","require$$3","require$$4","throwOnDirectAccess","i","checker","iterator","isSymbol","propTypesModule","config","jsxRuntimeModule","_jsx","isEmpty","GlobalStyles","defaultTheme","emStyled","style","emSerializeStyles","isPlainObject","prototype","deepmerge","_excluded","start","merge","prev","capitalize","_formatMuiErrorMessage","getStyleValue","transform","abs","getValue","compose","breakpointsValues","styleFunctionSx","nested","applyStyles","createTheme","isObjectEmpty","useTheme","systemDefaultTheme","useThemeWithoutDefault","serializeStyles","styleArg","MuiGlobalStyles","defaultGenerator","createClassNameGenerator","ClassNameGenerator","o","clsx","Box","globalStateClasses","generateUtilityClass","generateUtilityClasses","getDisplayName","ForwardRef","Memo","_excluded2","_excluded3","shallowLayer","lowercaseFirstLetter","resolveTheme","defaultOverridesResolver","processStyleArg","rootShouldForwardProp","slotShouldForwardProp","processStyles","overridesResolver","styledEngineStyled","defaultProps","getThemeProps","useThemeProps","useEnhancedEffect","matchMedia","clamp","min","max","clampWrapper","hexToRgb","color","decomposeColor","recomposeColor","alpha","isClassComponent","elementTypeAcceptingRef","propTypes","refType","debounce","ownerDocument","globalId","useGlobalId","maybeReactUseId","useId","useControlled","useEventCallback","useForkRef","UNINITIALIZED","useLazyRef","EMPTY","useOnMount","Timeout","useTimeout","validator","composeClasses","isHostComponent","appendOwnerState","extractEventHandlers","omitEventHandlers","mergeSlotProps","joinedClasses","mergedStyle","props","resolveComponentProps","useSlotProps","ThemeProvider","useDefaultProps","usePrivateTheme","MuiThemeProvider","StyledEngineThemeContext","_jsxs","defaultCreateStyledComponent","systemStyled","useThemePropsDefault","useThemePropsSystem","useUtilityClasses","maxWidth","Container","Stack","Grid","_interopRequireDefault","module","hslToRgb","int","warning","backgroundColor","light","lighten","darken","success","getContrastRatio","round","height","isString","isNumber","systemCreateTheme","useThemeSystem","systemUseThemeProps","createStyled_1","_default","_styledEngine","_interopRequireWildcard","_getRequireWildcardCache","e","SystemThemeProvider","useSystemDefaultProps","SvgIcon","setPrototypeOf","removeClass","forceReflow","Transition","render","pt","noop","addClass","addOneClass","removeOneClass","CSSTransition","baseClassName","mapper","isValidElement","Children","cloneElement","TransitionGroup","easing","Collapse","isHorizontal","Paper","_","_t","_t2","_t3","_t4","TouchRipple","pulsate","disabled","ButtonBase","handleKeyDown","IconButton","getBackgroundColor","Alert","icon","CloseIcon","Typography","position","AppBar","stringify","value","onChange","origin","warn","main","isHTMLElement","name","effect","width","contains","getComputedStyle","window","mathMax","mathMin","toPaddingObject","padding","arrow","popperOffsets","popper","computeStyles","html","body","clippingParents","multiply","allPlacements","placements","placement","flip","_loop","_i","checks","hide","distance","preventOverflow","merged","defaultModifiers","createPopper","options","state","noopFn","getContainer","ReactDOM","resolveAnchorEl","PopperTooltip","Popper","transition","BasePopper","ListSubheader","Chip","TextareaAutosize","boxSizing","border","innerHeight","outerHeight","SystemGlobalStyles","InputBase","Input","_excluded4","Autocomplete","ClearIcon","ArrowDropDownIcon","index2","loaded","Avatar","Fade","Backdrop","Button","Card","CardActions","CardContent","CardHeader","SwitchBase","Checkbox","CircularProgress","defaultStyles","fixedElements","getTransitionProps","Modal","_ref2","Dialog","DialogActions","DialogContent","DialogTitle","Divider","Slide","anchor","Drawer","inputBaseRootOverridesResolver","InputBaseInput","inputBaseInputOverridesResolver","FilledInput","margin","FormControl","AsteriskComponent","FormControlLabel","_span","FormHelperText","FormLabel","wrap","Grow","duration","InputAdornment","InputLabel","LinearProgress","List","ListItemButton","ListItemSecondaryAction","ListItem","ListItemIcon","ListItemText","nextItem","previousItem","moveFocus","MenuList","isFragment","PaperBase","Popover","top","left","bottom","right","Menu","MenuItem","NativeSelectInput","NotchedOutlineRoot","borderColor","OutlinedInput","SelectInput","open","Select","Skeleton","Tooltip","childrenProps","Switch","Tab","Toolbar","TabScrollButton","Tabs","children","conditionalElements","TextField","ToggleButton","useDebounce","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","setTimeout","clearTimeout","useExtendedTheme","ReactJSXRuntime.Fragment","ReactJSXRuntime.jsx","jsxs","ReactJSXRuntime.jsxs","BinIcon","iconProps","MUISvgIcon","XIcon","DataServiceIcon","svgIconProps","DataSetIcon","DragHandleIcon","FloppyDiskIcon","GridIcon","InfoIcon","MapIcon","MinusCircleIcon","PlayIcon","PlusCircleIcon","TelicentBrand","theme","palette","mode","appName","beta","startChild","endChild","version","isElevated","disableBrand","href","target","isInteractive","Boolean","linkProps","component","rel","MUIAppBar","borderRadius","background","default","MUIBox","display","gridTemplateColumns","alignItems","minHeight","px","justifySelf","minWidth","MUIStack","cursor","textDecoration","MUITypography","fontFamily","fontSize","fontWeight","toUpperCase","py","bgcolor","primary","contrastText","lineHeight","whiteSpace","AppChrome","appBarProps","MUIContainer","components","MuiAppBar","styleOverrides","overflow","variantSx","outlined","BoxImpl","variant","sx","rest","BoxRaw","consumerSx","Array","isArray","composedSx","containerProps","FlexBox","ref","FlexGrid","FlexGridItem","TelicentMark","transparentBg","TelicentHorizontalSVG","UserIcon","_defineProperty","_toPropertyKey","ownKeys","_objectSpread2","_toPrimitive","lt","At","r$1","ua","PRODUCTION","coerce","toArray","icons","shims","aliases","arr","styles$1","noop$1","noop$2","comment","abstract","parser","prefixes","mask","getPrefix","content","providers","parse$1","createElement","log","faTrashCan","faTrashAlt","faMessage","faCommentAlt","faFileLines","faFileAlt","faFileText","faCalendarDays","faCalendarAlt","faHandPointRight","faFaceSmileBeam","faSmileBeam","faFaceGrinStars","faGrinStars","faAddressBook","faContactBook","faComments","faPaste","faFileClipboard","faFaceGrinTongueSquint","faGrinTongueSquint","faFaceFlushed","faFlushed","faSquareCaretRight","faCaretSquareRight","faSquareMinus","faMinusSquare","faCompass","faSquareCaretDown","faCaretSquareDown","faFaceKissBeam","faKissBeam","faLightbulb","faFlag","faSquareCheck","faCheckSquare","faCircleDot","faDotCircle","faFaceDizzy","faDizzy","faFutbol","faFutbolBall","faSoccerBall","faPenToSquare","faEdit","faHourglassHalf","faHourglass2","faEyeSlash","faHand","faHandPaper","faHandSpock","faFaceKiss","faKiss","faFaceGrinTongue","faGrinTongue","faChessBishop","faFaceGrinWink","faGrinWink","faFaceGrinWide","faGrinAlt","faFaceFrownOpen","faFrownOpen","faHandPointUp","faBookmark","faHandPointDown","faFolder","faFolderBlank","faUser","faSquareCaretLeft","faCaretSquareLeft","faStar","faChessKnight","faFaceLaughSquint","faLaughSquint","faFaceLaugh","faLaugh","faFolderOpen","faClipboard","faChessQueen","faHandBackFist","faHandRock","faSquareCaretUp","faCaretSquareUp","faChartBar","faBarChart","faWindowRestore","faSquarePlus","faPlusSquare","faImage","faFolderClosed","faLemon","faHandshake","faGem","faCirclePlay","faPlayCircle","faCircleCheck","faCheckCircle","faCircleStop","faStopCircle","faIdBadge","faFaceLaughBeam","faLaughBeam","faRegistered","faAddressCard","faContactCard","faVcard","faFaceTired","faTired","faFontAwesome","faFontAwesomeFlag","faFontAwesomeLogoFull","faFaceSmileWink","faSmileWink","faFileWord","faFilePowerpoint","faEnvelopeOpen","faFileZipper","faFileArchive","faSquare","faSnowflake","faNewspaper","faFaceKissWinkHeart","faKissWinkHeart","faStarHalfStroke","faStarHalfAlt","faFileExcel","faFaceGrinBeam","faGrinBeam","faObjectUngroup","faCircleRight","faArrowAltCircleRight","faFaceRollingEyes","faMehRollingEyes","faObjectGroup","faHeart","faFaceSurprise","faSurprise","faCirclePause","faPauseCircle","faCircle","faCircleUp","faArrowAltCircleUp","faFileAudio","faFileImage","faCircleQuestion","faQuestionCircle","faFaceMehBlank","faMehBlank","faEye","faFaceSadCry","faSadCry","faFileCode","faWindowMaximize","faFaceFrown","faFrown","faFloppyDisk","faSave","faCommentDots","faCommenting","faFaceGrinSquint","faGrinSquint","faHandPointer","faHandScissors","faFaceGrinTears","faGrinTears","faCalendarXmark","faCalendarTimes","faFileVideo","faFilePdf","faComment","faEnvelope","faHourglass","faHourglassEmpty","faCalendarCheck","faHardDrive","faHdd","faFaceGrinSquintTears","faGrinSquintTears","faRectangleList","faListAlt","faCalendarPlus","faCircleLeft","faArrowAltCircleLeft","faMoneyBill1","faMoneyBillAlt","faClock","faClockFour","faKeyboard","faClosedCaptioning","faImages","faFaceGrin","faGrin","faFaceMeh","faMeh","faIdCard","faDriversLicense","faSun","faFaceLaughWink","faLaughWink","faCircleDown","faArrowAltCircleDown","faThumbsDown","faChessPawn","faCreditCard","faCreditCardAlt","faBell","faFile","faHospital","faHospitalAlt","faHospitalWide","faChessRook","faStarHalf","faChessKing","faCircleUser","faUserCircle","faCopy","faShareFromSquare","faShareSquare","faCopyright","faMap","faBellSlash","faHandLizard","faFaceSmile","faSmile","faHandPeace","faFaceGrinHearts","faGrinHearts","faBuilding","faFaceGrinBeamSweat","faGrinBeamSweat","faMoon","faCalendar","faFaceGrinTongueWink","faGrinTongueWink","faClone","faFaceAngry","faAngry","faRectangleXmark","faRectangleTimes","faTimesRectangle","faWindowClose","faPaperPlane","faLifeRing","faFaceGrimace","faGrimace","faCalendarMinus","faCircleXmark","faTimesCircle","faXmarkCircle","faThumbsUp","faWindowMinimize","faSquareFull","faNoteSticky","faStickyNote","faFaceSadTear","faSadTear","faHandPointLeft","ClockIcon","_css","process","env","NODE_ENV","DownArrow","faAngleDown","Download","faDownload","SearchIcon","faIconProps","faMagnifyingGlass","Text","textProps","H1","headingProps","H2","H3","H4","H5","H6","listProps","MUIList","listItemProps","MUIListItem","listItemButtonProps","MUIListItemButton","listItemIconProps","MUIListItemIcon","MUIListItemText","util","objectUtil","defaultErrorMap","errorUtil","errorMap","ctx","result","shape","issues","types","schemas","elements","processed","ZodFirstPartyTypeKind","MUIIconButton","AppSwitchLibrarySchema","zod","object","id","string","url","_EMOTION_STRINGIFIED_CSS_ERROR__","AppSwitch","apps","anchorEl","setAnchorEl","handleClick","event","currentTarget","handleClose","undefined","MUIMenu","map","app","validateAppsSchema","safeParse","formattedErrors","issue","path","message","errorMsg","join","MUIMenuItem","marginX","marginTop","chipProps","MUIChip","MUIDivider","IESType","iconClass","className","role","borderWidth","borderStyle","justifyContent","plugins","initialState","listener","registryContainer","useInstanceEventHandler","getActiveElement","buffer","multiSelect","TreeItemContent","TreeItem","Icon","RichTreeView","TreeView","alwaysExpandedIds","treeViewProps","expandedItems","setExpandedItems","highlightingStyle","itemIds","Set","marginY","UserProfile","fullName","xs","sm","md","lg","xl","textOverflow","MUIAvatar","DownArrowIcon","paper","filter","horizontal","vertical","UserProfileContent","TitleAndContent","title","UserStatus","MUIGrid","DropdownButtonMenuItem","onClick","faIcon","selected","DropdownButton","ariaLabel","menuItems","selectedMenuItem","setSelectedMenuItem","find","menuItem","linearProgressProps","LinearProgressRaw","Spinner","onClose","otherProps","MuiDialog","SkeletonRaw","StyledToggleButton","MUIToggleButton","TooltipToggleButton","tooltip","MUITooltip","modifiers","PrimaryButton","buttonProps","SecondaryButton","disableElevation","MUIButton","TertiaryButton","tertiary","TextButton","displayName","Link","opacity","marginLeft","marginRight","transitionDuration","transitionProperty","transitionTimingFunction","EditableTextField","onSave","errorText","helperText","label","fullWidth","isEditing","setIsEditing","tempValue","setTempValue","handleEdit","handleSave","handleCancel","MuiTextField","required","footer","renderOption","reactId","selectedId","labelId","helperTextId","openInternal","setOpenInternal","isOpenControlled","openProp","handleOpen","onOpen","closeMenu","useCallback","MUISelect","option","my","listStyle","stopPropagation","key","SingleAutocomplete","placeholder","size","MuiAutocomplete","val","params","MultipleAutocomplete","selectedOptions","getTagProps","pl","multiple","labelPlacement","switchElement","MuiSwitch","now","char","neighbors","LocalizationProvider","PickersToolbar","token","DatePickerToolbar","useOpenPickerButtonAriaLabel","MuiPopper","MuiPaper","FocusTrap","BaseFocusTrap","inView","previousView","PickersLayout","queryResponse","cursorPosition","isFieldFocused","valueStr","syncSelectionToDOM","_formatErrorMessage","PickersSectionList","PickersInputBase","InputRoot","PickersOutlinedInput","PickersFilledInput","PickersInput","PickersTextField","InputProps","readOnly","onClear","clearable","clearButtonPosition","openPickerButtonPosition","openPickerAriaLabel","other","mergedInputProps","materialMajor","MuiInputAdornment","MuiIconButton","MuiClearIcon","DateField","PickersDay","MonthCalendarButton","MonthCalendar","YearCalendarButton","YearCalendar","PickersArrowSwitcher","PickersCalendarHeader","DateCalendar","DesktopDatePicker","_a","MobileDatePicker","DatePicker","this","n","u","S","a","M","m","f","l","$","y","v","D","d","c","h","L","textFieldProps","AdapterDayjs","MuiDatePicker","textField","DateTimeField","DateTimePickerTabs","PickersToolbarText","PickersToolbarButton","DigitalClock","MultiSectionDigitalClockSection","hasValue","MultiSectionDigitalClock","DesktopDateTimePickerLayout","DesktopDateTimePicker","MobileDateTimePicker","DateTimePicker","MuiDateTimePicker","checked","MuiCheckbox","CopyToClipboard","text","successMsg","testFailure","setIcon","setMessage","setOpen","handleTooltipClose","Error","navigator","clipboard","writeText","faCheck","errorMessage","tooltipClasses","MiniSearchBox","loading","endIcon","onSearch","onTogglePopOver","onFocus","onBlur","progressProps","inputProps","isFocused","setIsFocused","handleOnFocus","handleOnBlur","MUICircularProgress","StyledPopper","MiniSearchAutocomplete","onKeyDown","freeSolo","autocompleteProps","getRootProps","getInputProps","getListboxProps","getOptionProps","popupOpen","groupedOptions","useAutocomplete","cancelIcon","encodeURIComponent","rootRef","WebkitAppearance","MUIPopper","MUIPaper","backgroundImage","maxHeight","optionProps","isRecentSearch","faClockRotateLeft","SearchBox","autoFocus","inputRef","borderRightWidth","borderTopLeftRadius","borderBottomLeftRadius","paddingInline","borderTopRightRadius","borderBottomRightRadius","cardProps","MUICard","cardHeaderProps","MUICardHeader","MUICardContent","MUICardAction","isFunction","getPrefix_1","_shims","nodeInterop","scale","identifier","_domFns","ownerWindow","log_1","DraggableCore_1","require$$5","require$$6","DraggableCore","exports","_propTypes","_reactDom","_positionFns","require$$7","_log","require$$8","Draggable","cjsModule","__assign","memo","useMemo","__extends","extendStatics","b","snap","gap","innerWidth","Resizable","flushSync","PureComponent","Rnd","directions","self","FloatingPanelContext","createContext","FloatingPanelProvider","panels","setPanels","toggleVisibility","prevStates","minimised","visible","get","useFloatingPanelContext","context","Panel","count","iconBeforeTitle","targetId","dragHandle","menu","visibility","flexDirection","flex","paddingRight","pr","pb","borderRight","borderBottom","zIndex","DraggableFloatingPanel","bounds","defaultPosition","dragHandleClassName","MIN_SIZE","grey","bottomRight","FloatingPanelToggleButton","useFloatingPanels","getPanels","Object","keys","FloatingPanel","DraggablePanel","Provider","PopOver","MUIPopOver","MuiToolbar","paddingX","paddingY","DataNavy","dark","DocumentPink","common","black","GraphOrange","darkMain","lightMain","AdminBlue","Blank","white","UIThemeSchema","enum","THEME_COLORS","AVATAR_OVERRIDES","MuiAvatar","variants","generateButtonOverrides","uiTheme","MuiButton","spacing","outlinedInherit","boxShadow","shadows","outlinedPrimary","startIcon","generateCardOverrides","_uiTheme","MuiCard","MuiCardContent","MuiCardActions","TYPOGRAPHY_TOKENS","h1","fontStyle","letterSpacing","h2","h3","body1","body2","subtitle1","BREAKPOINT_VALUES","MUI_BREAKPOINTS","fonts","heading","TYPOGRAPHY_STYLE_OVERRIDES","h4","h5","h6","button","textTransform","FONT_FACES_CSS","SpaceGroteskRegularWoff2","SpaceGroteskMediumWoff2","FigtreeRegularWoff2","FigtreeMediumWoff2","FigtreeBoldWoff2","generateComponentOverrides","componentOverrides","MuiMenuItem","tag","marginBottom","listbox","MuiCssBaseline","divider","freeGlobal","global","freeSelf","apply","objectProto","Buffer","Symbol","Uint8Array","nativeMax","Map","isObject","isBuffer","isType","isTypedArray","eq","objectToString","isObjectLike","sources","baseLightPalette","secondary","baseDarkPalette","createLightPalette","themePalette","createDarkPalette","createThemePure","createMUITheme","breakpoints","typography","fromEntries","skipCache","UIThemeProvider","MUIThemeProvider","MUICssBaseline","reactElementSchema","type","function","symbol","passthrough","number","null","optional","allModalPropsSchema","boolean","closeAfterTransition","any","componentsProps","container","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","manager","onBackdropClick","onTransitionEnter","onTransitionExit","BackdropComponent","BackdropProps","slots","slotProps","modalPropsSchema","omit","hideCloseButton","MUIModal","ErrorFallbackText","ErrorFallbackWrapper","ErrorFallback","Brand","isJumbo","textAlign","mb","RecentSearchesWrapper","RecentSearches","nothingFoundText","SearchAutocomplete","autoHighlight","getOptionKey","getOptionLabel","inputValue","isOptionEqualToValue","listboxMaxHeight","loadingText","onInputChange","openOnFocus","startAdornment","endAdornment","SearchAutocompleteDialog","searchAutocompleteProps","SearchResults","totalResults","getSizeProps","base","getDisabledStyles","isDisabled","disabledStyles","TypeIcon","hasIcon","alt","bordericon","iconFallbackText","Component","factory","shared","maplibregl","define","P","E","R","G","gt","xt","St","Ct","Et","Ft","Lt","Yt","Wt","In","Zn","Xn","Yn","k","I","C","B","ma","ga","wa","Ia","mo","bc","V","F","T","O","U","q","j","N","Z","K","J","X","Y","H","W","Q","tt","splitURIForNamespaceAndTerm","URL","namespace","term","pathname","substring","split","pop","console","BASE32_CODES","BASE32_CODES_DICT","charAt","ENCODE_AUTO","MIN_LAT","MAX_LAT","MIN_LON","MAX_LON","SIGFIG_HASH_LENGTH","encode","latitude","longitude","numberOfChars","decSigFigsLat","decSigFigsLong","numberOfSigFigs","Math","chars","mid","bits","bitsTotal","hash_value","minLon","maxLon","minLat","maxLat","code","push","encode_int","bitDepth","combinedBits","decode_bbox","hash_string","isLon","hashValue","toLowerCase","bit","decode_bbox_int","hashInt","latBit","lonBit","step","get_bit","pow","decode","bbox","lat","lon","latErr","lonErr","decode_int","hash_int","neighbor","direction","lonLat","neighborLat","neighborLon","ensure_valid_lon","ensure_valid_lat","neighbor_int","lonlat","neighbor_lat","neighbor_lon","hashstringLength","neighborHashList","encodeNeighbor","neighborLatDir","neighborLonDir","neighbors_int","neighborHashIntList","encodeNeighbor_int","bboxes","hashSouthWest","hashNorthEast","latLon","perLat","perLon","boxSouthWest","boxNorthEast","latStep","lonStep","hashList","bboxes_int","latlon","geohash","encode_uint64","decode_uint64","decode_bbox_uint64","getLabelCharacters","checkIsValidPosition","recursiveFlatten","reduce","acc","concat","getCoordinates","geometry","coordinates","calculateBounds","markers","polygons","LngLatBounds","feature","forEach","coord","extend","LngLat","marker","useMapCanvas","geoPolygons","mapRef","useRef","setCursor","offsetRef","resetCursor","fitMarkerAndPolygonBounds","current","features","selectedMarkers","uri","selectedPolygons","polygon","properties","iso3166_a3","endsWith","resize","fitBounds","maxZoom","leading","trailing","onLoad","onDragStart","onDragEnd","onMouseEnter","onMouseLeave","setOffset","off","useMap","cloneTransform","layer","useIsomorphicLayoutEffect","useLayoutEffect","mapLib","useImperativeHandle","Marker","createPortal","assert","layout","paint","createLayer","Layer","Source","_useMap","_Map","_Layer","_Source","hasOwn","GEOJSON","FEATURE_COLLECTION","ResultsMarkers","findByClassUri","DocumentMarker","labelCharacters","isSelected","includes","handleOnClick","polygonOutline","labels","POLYGON_LAYERS","PolygonMarkers","geometryCollection","layers","MapBoxSourceSchema","image","MapCanvasContext","MapCanvasProvider","initialMapStyleConfig","setSelected","mapConfig","tileSets","data","vectorStylesArr","vectorStyles","styleSelector","useMapCanvasContext","W_H_100","MapCanvas","initialViewState","defaultStyle","attributionControl","onClickMarker","polygonLayers","el","DEFAULT_VIEW","zoom","DEFAULT_GEO_POLYGONS","BasicMap","Image","src","LayerSelectorPresentationalButton","selectedIndex","onClickDropdown","extendedTheme","isOpen","JSON","faAngleUp","LayerSelectorPresentationalPopOver","onCloseDropdown","onListItemClick","item","useLayerSelector","setSelectedIndex","handleClickDropdown","cycleSelection","handleCloseDropdown","nextIndex","handleListItemClick","LayerSelector","hook","FeatureMap","PresentationalButton","ml","LayerSelectorInsetInMap","ButtonZoomIn","ButtonZoomOut","MapToggleButtonPresentational","STYLES","HACK_NO_BORDER","TabButton","dataTestId","BoxSx","PaperSx","pointerEvents","NAME","resolveWidth","drawerWidth","styleWidth","defaultWidth","parsed","parseFloat","String","Number","isFinite","DrawerPresentational","onToggle","PaperProps","defaultPaperSx","mergedPaperSx","MuiDrawer","elevation","square","overflowY","drawer","useDrawer","args","initialOpen","containerRef","openDrawer","closeDrawer","toggleDrawer","onVisibilityChange","drawerProps","ControlArea","posStyles","Background","Content","workspace","InsetInMap","controlArea","entries","createOrUpdate","equals","intersects","wrapX","projection","x2","squaredDistance","binarySearch","compare","arrayEquals","listeners","Event","EventTarget","EventType","add","rotate","METERS_PER_UNIT","RADIUS","EXTENT","PROJECTIONS","E2","fromLonLat","a2","makeUTMTransforms","makeUTMProjection","disable","addProj","addTransformFunc","getProj","makeProjection","toEPSG4326","equivalent","getTransformFunc","makeTransforms","t1","t2","EPSG3857_PROJECTIONS","EPSG4326_PROJECTIONS","a1","b1","b2","translate","fromString","tmpTransform","createTransform","clone","extent","getProjection","composeTransform","squaredDx","getFeaturesById","ids","getSource","getFeatureById","fitToFeature","getGeometry","view","getView","worldExtent","getExtent","worldWidth","getWidth","normalizeX","Point","coords","geomExtent","x0","x1","span","wrappedX0","centerX","fit","fitToFeatures","combinedExtent","refCenterX","geom","delta","worldShift","shifted","shiftedExtent","Property","passive","all","always","canvasPool","getCacheKey","iconImageCache","iconCache","getIconImage","fontWeights","measureContext","measureText","CanvasInstruction","fillInstruction","p3","PolygonBuilder","Builder","ImageBuilder","LineStringBuilder","TextBuilder","measureAndCacheTextWidth","line","p4","strokeInstruction","applyTransform","transformSetFromArray","ii","willReadFrequently","blue","transforms","renderFeature","toTransformString","RenderEventType","intersectsExtent","getSquaredRenderTolerance","defaultRenderOrder","wrapCoordinateX","wrapExtentX","CanvasBuilderGroup","getRenderTolerance","right2","BooleanType","NumberType","StringType","ColorType","NumberArrayType","colorFromString","validators","interpolateNumber","Circle","evaluator","none","linearRingss","tmpPoint","linearRingArea","forEachSegment","reverseCoordinates","linearRing","linearRingsArea","linearRings","rotateCoordinate","addCoordinate","polygonFromExtent","centerNone","rotationNone","coordinatesEqual","layerState","RBush","toStyleFunction","set","addSelectInteraction","onSelect","select","condition","click","feat","original","baseStyles","addInteraction","on","evt","DEFAULT_PIN_SVG","btoa","Style","fill","Fill","stroke","Stroke","CircleStyle","radius","findVectorLayerById","deg2rad","rgba","test","UnitBezier","t0","op","size1","isFunction$1","functionType","newEvent","defaults","centroid","centroidFromPointers","scaleCoordinate","callback","order","defaultControls","defaultInteractions","viewport","equalsExtent","ends","linearRingssArea","linearRingssCenter","xhr","RBush_","allStrategy","transformedRequest","VectorTile","expressions","functions","spec","createFilter","getFonts","imageUrl","load","write","equivalentProjection","Geometry","PBF","xPos","yPos","applyMatrix","renderReprojected","createTileCoord","cacheSize","dx","dy","frameState","CanvasExecutorGroup","tile","resetTransform","scaleTransform","translateTransform","sourceState","DECIMALS","resolution","pixelRatio","createOrUpdateTileRange","createOrUpdateTileCoord","getTileGridForProjection","scaleSize","output","tileCoordHash","requestJSONP","Tile","bufferExtent","pixel","encoding","updateSource","glStyle","targetSource","applyStylefunction","resolve","reject","_colorWithOpacity","VectorTileSource","Raster","bboxStrategy","getDefaultOverlayStyle","geomType","getType","getOverlayVectorLayer","VectorSource","Polygon","Feature","meta","VectorLayer","kind","getBaseVectorTileLayer","layerConfig","provider","mapLayer","LayerGroup","styleUrl","accessToken","attachMeta","previewImage","tileUrlFunction","tileCoord","arcgisStyleUrl","sourceProjection","VectorTileLayer","attributions","format","MVT","tileGrid","createXYZ","tileSize","layerWithMeta","applyStyle","customLayer","getBaseRasterLayer","TileLayer","XYZ","getMeta","MARKER_LAYER_ID","POLYGON_LAYER_ID","attachTileLoadErrorLogging","onError","detachers","un","ensureView","center","info","View","constrainResolution","minZoom","createDefaultControls","olDefaultControls","attribution","buildControls","controls","createControls","olControls","showZoom","Zoom","showRotate","Rotate","showFullScreen","FullScreen","createMap","OlMap","MapCanvasV2","onFeatureClick","mapInstanceRef","mapReady","setMapReady","viewRef","setTarget","getLayerGroup","setLayers","Collection","detach","getLayers","markerLayer","debug","getId","removeInteraction","onOpenChange","menuId","anchorOrigin","transformOrigin","autoFocusSelected","findIndex","ariaControls","autoFocusItem","opt","idx","dividerAbove","resolveVisibleBaseLayerIndex","storedLabel","localStorage","getItem","baseLayers","storedIndex","configIndex","LayerSelectorV2","initialIndex","startsWith","selectedMeta","handleSelect","setItem","setVisible","bl","btnProps","svgPathCache","inflightLoads","loaders","registerFaIconLoader","loader","unshift","classToIconName","faClass","parts","isIconDefinition","freeLoader","iconName","mod","candidate","resolveFaIconPath","status","ensureFaIconPath","promise","def","delete","expected","found","cmds","ICON_PLACEMENT","cx","cy","svgToDataUrl","svg","makePinSvg","innerSvg","scaleAndCenterPath","extractPathD","rawSvg","cleanSvg","pathTagStart","indexOf","dAttrStart","dataStart","dataEnd","slice","getPathBBox","commands","makeAbsolute","parseSVG","minX","Infinity","minY","maxX","maxY","points","y1","y2","makeCircleSvg","strokeWidth","inner","makeIconOnlySvg","iconGenerators","pin","circle","MARKER_SCALE","getMarkerScale","getIconGenerator","getGeneratedOlIcon","useFallback","fallbackText","generator","markerToOLFeature","gh","setId","markerStyle","markerType","setStyle","ensureLayers","layerConfigs","layerPromises","baseRasterLayer","setZIndex","baseVectorTileLayer","overlayVectorLayer","setDeclutter","Promise","polygonToOLFeature","MultiPolygon","mapLegacyConfigToLayers","legacy","tileset","extractMarkerIcons","ensureMarkerIconsLoaded","BasicMapV2","mapInstance","showLayerSelector","effectiveLayers","mapStyleOptions","overlayVectorLayers","cancelled","onLayersReady","clear","markerFeatures","addFeatures","polygonFeatures","polygonLayer","getFeatures","zoomIn","currentZoom","getZoom","setZoom","zoomOut","panToFeature","panToFeatures","_ignored","restProps","MarkerAnchor","CENTER","BOTTOM_MIDDLE","TOP_MIDDLE","anchorMap","AuthEvent","AUTHENTICATED","REAUTHENTICATED","USER_CHANGED","UNAUTHORIZED","lastMessage","BroadcastChannel","onmessage","onAuthEvent","broadcastAuthEvent","postMessage","close","require","cookies","AuthServerOAuth2Client","AuthContext","extractRedirectFromState","rawState","URLSearchParams","search","redirect","csrf","encodedUrl","searchParams","redirectUrl","atob","setupOAuthEventListeners","OAuth2Client","onAuthSuccess","onAuthError","handleOAuthSuccess","handleOAuthError","handleOAuthCallback","customEvent","detail","callbackUrl","callbackResult","handleCallback","addEventListener","OAUTH_SUCCESS","OAUTH_ERROR","cleanup","removeEventListener","normalizePathname","normalized","parseAbsoluteUrl","trimmed","matchCurrentUri","targetUrl","currentUrl","currentPath","targetPath","err","isAuthRedirect","needles","redirectUri","popupRedirectUri","some","needle","registerAuthSync","queryClient","baseUrl","refetchQueries","stale","delimiter","AxiosError","utils","toFormData","build","append","FormData","Blob","platform","isFormData","isFileList","AxiosHeaders","isCancel","mergeConfig","_config","CanceledError","signal","done","Request","Response","ReadableStream","TextEncoder","withCredentials","fetch","fetchAdapter.getFetch","getAdapter","adapters","VERSION","transitional","Axios","CancelToken","spread","isAxiosError","HttpStatusCode","formatPayload","headers","ct","withSessionHandling","instance","keysToInvalidate","authClient","adapter","fullUrl","baseURL","sendOnce","makeAuthenticatedRequest","toJSON","method","skipAutoLogout","response","unsubscribe","retryAfterAuth","then","retryResponse","retryText","retryData","statusText","request","catch","responseText","interceptors","use","res","invalidateQueries","queryKey","exact","createRequestApi","axios","requestApi","createApi","createAuthHandlers","client","setUser","setError","locationPath","onSuccess","profile","getUserInfo","isPopupFlow","opener","runAsync","asyncFn","setLoading","mounted","wrapped","AuthProvider","apiUrl","user","setClient","initialised","setInitialised","cleanupAuth","cleanupSync","cleanupCheck","isStandardCallback","isPopupCallback","authenticated","isAuthenticated","login","api","loginWithPopup","logout","useAuth","AuthRedirectUri","hasOpener","isPopup","parent","finishPopupFlow","Callback","clientId","CustomEvent","dispatchEvent","AuthModal","debounceMs","alreadyTriggered","setIsOpen","handleLoginClick","handleCloseClick","splitURIBaseAndTerm","rawString","input","addSpaces","str","PreferredLabelCache","initPromise","init","ontologyService","getAllPreferredLabels","preferredLabelLookup","freeze","humanFriendlyType","base64Codec","param","uriComponentCodec","getCodec","ENCODE_SEARCH_PARAMS_MODES_Schema","Action","ResultType","UNSAFE_invariant","UNSAFE_getResolveToMatches","UNSAFE_warning","DataRouterHook","DataRouterStateHook","getDataRouterConsoleError","useDataRouterContext","UNSAFE_NavigationContext","UNSAFE_DataRouterStateContext","UNSAFE_DataRouterContext","UNSAFE_useRouteId","UNSAFE_RouteContext","toStringEncoded","codec","createSearchParams","loggerLevelOrder","Logger","constructor","level","currentLevelNum","ready","record","flush","shouldLog","lvl","GRAPH_APP","QUERY_PARAM","NODES","renderErrorToHtml","ZodError","prettyPrint","document","innerHTML","parseOrThrowWithInput","schema","mui"],"mappings":"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,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG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IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","x_google_ignoreList":[0,1,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,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,405,429,430,431,432,433,434,435,436,437,438,439,440,442,448,449,450,451,452,453,454,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,706,707,708,709,710,711,712,713,714,715,716,717,747,766,767,771,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,797,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1039,1046,1047,1057,1058,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1127,1128,1129]}